public static void MWriteWord_lhb(int address, short value) { address &= 0xffffff; if (address >= 0x010000 && address + 1 <= 0x010001) { lhb_okibank_w((ushort)value); } else if (address >= 0x100000 && address + 1 <= 0x103fff) { int offset = address - 0x100000; Generic.generic_nvram[offset] = (byte)(value >> 8); Generic.generic_nvram[offset + 1] = (byte)value; } else if (address >= 0x200000 && address + 1 <= 0x200fff) { int offset = (address - 0x200000) / 2; priority_ram[offset] = (ushort)value; } else if (address >= 0x300000 && address + 1 <= 0x3fffff) { int offset = (address - 0x300000) / 2; igs011_layers_w(offset, (ushort)value); } else if (address >= 0x400000 && address + 1 <= 0x401fff) { int offset = (address - 0x400000) / 2; igs011_palette(offset, (ushort)value); } else if (address >= 0x600000 && address + 1 <= 0x600001) { OKI6295.okim6295_data_0_lsb_w((byte)value); } else if (address >= 0x700002 && address + 1 <= 0x700003) { lhb_inputs_w((ushort)value); } else if (address >= 0x820000 && address + 1 <= 0x820001) { igs011_priority_w((ushort)value); } else if (address >= 0x838000 && address + 1 <= 0x838001) { lhb_irq_enable_w((ushort)value); } else if (address >= 0x840000 && address + 1 <= 0x840001) { igs_dips_w((ushort)value); } else if (address >= 0x858000 && address + 1 <= 0x858001) { igs011_blit_x_w((ushort)value); } else if (address >= 0x858800 && address + 1 <= 0x858801) { igs011_blit_y_w((ushort)value); } else if (address >= 0x859000 && address + 1 <= 0x859001) { igs011_blit_w_w((ushort)value); } else if (address >= 0x859800 && address + 1 <= 0x859801) { igs011_blit_h_w((ushort)value); } else if (address >= 0x85a000 && address + 1 <= 0x85a001) { igs011_blit_gfx_lo_w((ushort)value); } else if (address >= 0x85a800 && address + 1 <= 0x85a801) { igs011_blit_gfx_hi_w((ushort)value); } else if (address >= 0x85b000 && address + 1 <= 0x85b001) { igs011_blit_flags_w((ushort)value); } else if (address >= 0x85b800 && address + 1 <= 0x85b801) { igs011_blit_pen_w((ushort)value); } else if (address >= 0x85c000 && address + 1 <= 0x85c001) { igs011_blit_depth_w((ushort)value); } }
public static void MWriteWord(int address, short value) { address &= 0xffffff; if (address >= 0x100000 && address + 1 <= 0x103fff) { int offset = address - 0x100000; Generic.generic_nvram[offset] = (byte)(value >> 8); Generic.generic_nvram[offset + 1] = (byte)value; } else if (address >= 0x200000 && address + 1 <= 0x200fff) { int offset = (address - 0x200000) / 2; priority_ram[offset] = (ushort)value; } else if (address >= 0x400000 && address + 1 <= 0x401fff) { int offset = (address - 0x400000) / 2; igs011_palette(offset, (ushort)value); } else if (address >= 0x600000 && address + 1 <= 0x600001) { OKI6295.okim6295_data_0_lsb_w((byte)value); } else if (address >= 0x700000 && address + 1 <= 0x700001) { igs_YM3812_control_port_0_w((byte)value); } else if (address >= 0x700002 && address + 1 <= 0x700003) { igs_YM3812_write_port_0_w((byte)value); } else if (address >= 0x800000 && address + 1 <= 0x800003) { int offset = (address - 0x800000) / 2; drgnwrld_igs003_w(offset, (ushort)value); } else if (address >= 0xa20000 && address + 1 <= 0xa20001) { igs011_priority_w((ushort)value); } else if (address >= 0xa40000 && address + 1 <= 0xa40001) { igs_dips_w((ushort)value); } else if (address >= 0xa58000 && address + 1 <= 0xa58001) { igs011_blit_x_w((ushort)value); } else if (address >= 0xa58800 && address + 1 <= 0xa58801) { igs011_blit_y_w((ushort)value); } else if (address >= 0xa59000 && address + 1 <= 0xa59001) { igs011_blit_w_w((ushort)value); } else if (address >= 0xa59800 && address + 1 <= 0xa59801) { igs011_blit_h_w((ushort)value); } else if (address >= 0xa5a000 && address + 1 <= 0xa5a001) { igs011_blit_gfx_lo_w((ushort)value); } else if (address >= 0xa5a800 && address + 1 <= 0xa5a801) { igs011_blit_gfx_hi_w((ushort)value); } else if (address >= 0xa5b000 && address + 1 <= 0xa5b001) { igs011_blit_flags_w((ushort)value); } else if (address >= 0xa5b800 && address + 1 <= 0xa5b801) { igs011_blit_pen_w((ushort)value); } else if (address >= 0xa5c000 && address + 1 <= 0xa5c001) { igs011_blit_depth_w((ushort)value); } }
public static void MWriteByte_lhb(int address, sbyte value) { address &= 0xffffff; if (address >= 0x010000 && address <= 0x010001) { if ((address & 1) == 0) { lhb_okibank_w((byte)value); } } else if (address >= 0x100000 && address <= 0x103fff) { int offset = address - 0x100000; Generic.generic_nvram[offset] = (byte)value; } else if (address >= 0x200000 && address <= 0x200fff) { int offset = (address - 0x200000) / 2; if ((address & 1) == 0) { priority_ram[offset] = (ushort)((value << 8) | (priority_ram[offset] & 0xff)); } else if ((address & 1) == 1) { priority_ram[offset] = (ushort)((priority_ram[offset] & 0xff00) | (byte)value); } } else if (address >= 0x300000 && address <= 0x3fffff) { int offset = address - 0x300000; igs011_layers_w(offset, (byte)value); } else if (address >= 0x400000 && address <= 0x401fff) { int offset = address - 0x400000; igs011_palette(offset, (byte)value); } else if (address >= 0x600000 && address <= 0x600001) { if (address == 0x600001) { OKI6295.okim6295_data_0_lsb_w((byte)value); } } else if (address >= 0x700002 && address <= 0x700003) { int offset = address - 0x700002; lhb_inputs_w(offset, (byte)value); } else if (address >= 0x820000 && address <= 0x820001) { int offset = address - 0x820000; igs011_priority_w(offset, (byte)value); } else if (address >= 0x838000 && address <= 0x838001) { int offset = address - 0x838000; lhb_irq_enable_w(offset, (byte)value); } else if (address >= 0x840000 && address <= 0x840001) { int offset = address - 0x840000; igs_dips_w(offset, (byte)value); } else if (address >= 0x858000 && address <= 0x858001) { int offset = address - 0x858000; igs011_blit_x_w(offset, (byte)value); } else if (address >= 0x858800 && address <= 0x858801) { int offset = address - 0x858800; igs011_blit_y_w(offset, (byte)value); } else if (address >= 0x859000 && address <= 0x859001) { int offset = address - 0x859000; igs011_blit_w_w(offset, (byte)value); } else if (address >= 0x859800 && address <= 0x859801) { int offset = address - 0x859800; igs011_blit_h_w(offset, (byte)value); } else if (address >= 0x85a000 && address <= 0x85a001) { int offset = address - 0x85a000; igs011_blit_gfx_lo_w(offset, (byte)value); } else if (address >= 0x85a800 && address <= 0x85a801) { int offset = address - 0x85a800; igs011_blit_gfx_hi_w(offset, (byte)value); } else if (address >= 0x85b000 && address <= 0x85b001) { int i1 = 1; //igs011_blit_flags_w((byte)value); } else if (address >= 0x85b800 && address <= 0x85b801) { int offset = address - 0x85b800; igs011_blit_pen_w(offset, (byte)value); } else if (address >= 0x85c000 && address <= 0x85c001) { int offset = address - 0x85c000; igs011_blit_depth_w(offset, (byte)value); } }