Beispiel #1
0
		public Mapper(GameBoyMemoryBus bus)
		{
			if (bus == null) throw new ArgumentNullException();

			this.bus = bus;
			this.ramWriteInternalHandler = HandleRamWriteInternal;
			this.ramWriteHandler = HandleRamWrite;
		}
        internal void ResetRamWriteHandler()
        {
            MemoryWriteHandler handler = mapper != null ? mapper.RamWriteHandler : null;

            for (int i = 0xA0; i < 0xC0; i++)
            {
                segmentWriteHandlerArray[i] = handler;
            }
        }
        private void ResetRomWriteHandler()
        {
            MemoryWriteHandler handler = mapper != null ? new MemoryWriteHandler(mapper.HandleRomWrite) : null;

            for (int i = 0x00; i < 0x80; i++)
            {
                segmentWriteHandlerArray[i] = handler;
            }
        }
Beispiel #4
0
        public Mapper(GameBoyMemoryBus bus)
        {
            if (bus == null)
            {
                throw new ArgumentNullException();
            }

            this._bus = bus;
            this._ramWriteInternalHandler = HandleRamWriteInternal;
            this._ramWriteHandler         = HandleRamWrite;
        }
        /// <summary>Writes a <see cref="System.Byte"/> at the specified offset in Game Boy memory.</summary>
        /// <param name="offsetLow">The low byte of the offset.</param>
        /// <param name="offsetHigh">The high byte of the offset.</param>
        /// <param name="value">The value to write.</param>
        public unsafe void WriteByte(byte offsetLow, byte offsetHigh, byte value)
        {
            MemoryWriteHandler handler = segmentWriteHandlerArray[offsetHigh];

            if (handler != null)
            {
                handler(offsetLow, offsetHigh, value);
            }
            else
            {
                segmentArray[offsetHigh][offsetLow] = value;
            }
        }
        public unsafe void WriteByte(ushort offset, byte value)
        {
            MemoryWriteHandler handler = segmentWriteHandlerArray[offset >> 8];

            if (handler != null)
            {
                handler((byte)offset, (byte)(offset >> 8), value);
            }
            else
            {
                segmentArray[offset >> 8][offset & 0xFF] = value;
            }
        }