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); } }