示例#1
0
        public int ReadWord(int address)
        {
            //Debug.WriteLine( string.Format( "RW @ 0x{0:X8}", address ) );
            if ((address >= 0x08000000) && (address < 0x9FFFFFF))
            {
                address -= 0x08000000;
                fixed(byte *basePointer = _mainMemory)
                {
                    int *ptr = ( int * )(basePointer + address);

                    return(*ptr);
                }
            }
            else if ((address >= 0x00010000) && (address < 0x00013FFF))
            {
                address -= 0x00010000;
                fixed(byte *basePointer = _scratchPad)
                {
                    int *ptr = ( int * )(basePointer + address);

                    return(*ptr);
                }
            }
            else if ((address >= 0x04000000) && (address < 0x041FFFFF))
            {
                if (_frameBuffer != null)
                {
                    return(_frameBuffer.ReadWord(address));
                }
                else
                {
                    address -= 0x04000000;
                    fixed(byte *basePointer = _frameBufferBytes)
                    {
                        int *ptr = ( int * )(basePointer + address);

                        return(*ptr);
                    }
                }
            }
            else
            {
                Debugger.Break();
                return(0);
            }
        }