static void update_ti86_memory (void) { write8_handler wh; if (ti85_memory_page_0x4000 & 0x40) { memory_set_bankptr(2,ti86_ram + 0x004000*(ti85_memory_page_0x4000&0x07)); memory_set_bankptr(6,ti86_ram + 0x004000*(ti85_memory_page_0x4000&0x07)); wh = MWA8_BANK6; } else { memory_set_bankptr(2,memory_region(REGION_CPU1) + 0x010000 + 0x004000*(ti85_memory_page_0x4000&0x0f)); wh = MWA8_ROM; } memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0x4000, 0x7fff, 0, 0, wh); if (ti86_memory_page_0x8000 & 0x40) { memory_set_bankptr(3,ti86_ram + 0x004000*(ti86_memory_page_0x8000&0x07)); memory_set_bankptr(7,ti86_ram + 0x004000*(ti86_memory_page_0x8000&0x07)); wh = MWA8_BANK7; } else { memory_set_bankptr(3,memory_region(REGION_CPU1) + 0x010000 + 0x004000*(ti86_memory_page_0x8000&0x0f)); wh = MWA8_ROM; } memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0x8000, 0xbfff, 0, 0, wh); }
static void pet_common_driver_init (void) { int i; /* BIG HACK; need to phase out this retarded memory management */ if (!pet_memory) pet_memory = mess_ram; memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0x0000, mess_ram_size - 1, 0, 0, MRA8_BANK10); memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0x0000, mess_ram_size - 1, 0, 0, MWA8_BANK10); memory_set_bankptr(10, pet_memory); if (mess_ram_size < 0x8000) { memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, mess_ram_size, 0x7FFF, 0, 0, MRA8_NOP); memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, mess_ram_size, 0x7FFF, 0, 0, MWA8_NOP); } /* 2114 poweron ? 64 x 0xff, 64x 0, and so on */ for (i = 0; i < mess_ram_size; i += 0x40) { memset (pet_memory + i, i & 0x40 ? 0 : 0xff, 0x40); } /* pet clock */ timer_pulse(0.01, 0, pet_interrupt); via_config(0,&pet_via); pia_config(0,PIA_STANDARD_ORDERING,&pet_pia0); pia_config(1,PIA_STANDARD_ORDERING,&pet_pia1); cbm_ieee_open(); }
void mc10_init_machine(void) { mc10_keyboard_strobe = 0xff; /* NPW: Taken from Juergen's MC-10 attempt that I just noticed... */ if( readinputport(7) & 0x80 ) { memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0x5000, 0xbffe, 0, 0, MRA8_RAM); memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0x5000, 0xbffe, 0, 0, MWA8_RAM); } else { memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0x5000, 0xbffe, 0, 0, MRA8_NOP); memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0x5000, 0xbffe, 0, 0, MWA8_NOP); } /* Install DOS ROM ? */ if( readinputport(7) & 0x40 ) { mame_file_error filerr; mame_file *rom; filerr = mame_fopen(SEARCHPATH_IMAGE, "mc10ext.rom", OPEN_FLAG_READ, &rom); if( rom ) { mame_fread(rom, memory_region(REGION_CPU1) + 0xc000, 0x2000); mame_fclose(rom); } } else { memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0xc000, 0xdfff, 0, 0, MRA8_NOP); memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xc000, 0xdfff, 0, 0, MWA8_NOP); } }
ROM_END /*************************************************************************** Game driver(s) ***************************************************************************/ static void crimfght_banking( int lines ) { unsigned char *RAM = memory_region(REGION_CPU1); int offs = 0; /* bit 5 = select work RAM or palette */ if (lines & 0x20){ memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0x0000, 0x03ff, 0, 0, paletteram_r); /* palette */ memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0x0000, 0x03ff, 0, 0, paletteram_xBBBBBGGGGGRRRRR_swap_w); /* palette */ } else{ memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0x0000, 0x03ff, 0, 0, MRA8_RAM); /* RAM */ memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0x0000, 0x03ff, 0, 0, MWA8_RAM); /* RAM */ } /* bit 6 = enable char ROM reading through the video RAM */ K052109_set_RMRD_line((lines & 0x40) ? ASSERT_LINE : CLEAR_LINE); offs = 0x10000 + ( ( lines & 0x0f ) * 0x2000 ); cpu_setbank( 2, &RAM[offs] ); }
static DRIVER_INIT( bradley ) { memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0x400, 0x7ff, 0, 0, MRA8_RAM); memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0x400, 0x7ff, 0, 0, MWA8_RAM); memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0x1808, 0x1808, 0, 0, input_port_4_r); memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0x1809, 0x1809, 0, 0, input_port_5_r); memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0x180a, 0x180a, 0, 0, analog_data_r); memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0x1848, 0x1850, 0, 0, analog_select_w); }
static DRIVER_INIT( profpac ) { memory_install_read8_matchmask_handler(0, ADDRESS_SPACE_IO, 0x14, 0xff, 0, 0, profpac_io_1_r); memory_install_read8_matchmask_handler(0, ADDRESS_SPACE_IO, 0x15, 0xff, 0, 0, profpac_io_2_r); memory_install_write8_handler(0, ADDRESS_SPACE_IO, 0x50, 0x57, 0, 0xff00, astrocade_sound2_w); memory_install_write8_matchmask_handler(0, ADDRESS_SPACE_IO, 0x58, 0xff, 0, 0, astrocade_soundblock2_w); memory_install_write8_handler(0, ADDRESS_SPACE_IO, 0xbf, 0xbf, 0, 0xff00, profpac_page_select_w); memory_install_read8_handler(0, ADDRESS_SPACE_IO, 0xc3, 0xc3, 0, 0xff00, profpac_intercept_r ); memory_install_write8_handler(0, ADDRESS_SPACE_IO, 0xc0, 0xc5, 0, 0xff00, profpac_screenram_ctrl_w ); memory_install_write8_handler(0, ADDRESS_SPACE_IO, 0xf3, 0xf3, 0, 0xff00, profpac_banksw_w); }
ROM_END /************************************* * * Driver initialization * *************************************/ static DRIVER_INIT( arabian ) { memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xd34b, 0xd34b, 0, 0, custom_flip_w); memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xd400, 0xd401, 0, 0, custom_cocktail_w); }
static void pc_map_vga_memory(offs_t begin, offs_t end, read8_handler rh, write8_handler wh) { int buswidth; buswidth = cputype_databus_width(Machine->drv->cpu[0].cpu_type, ADDRESS_SPACE_PROGRAM); switch(buswidth) { case 8: memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0xA0000, 0xBFFFF, 0, 0, MRA8_NOP); memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xA0000, 0xBFFFF, 0, 0, MWA8_NOP); memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, begin, end, 0, 0, rh); memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, begin, end, 0, 0, wh); break; } }
static DRIVER_INIT( esb ) { /* init the slapstic */ slapstic_init(101); slapstic_source = &memory_region(REGION_CPU1)[0x14000]; slapstic_base = &memory_region(REGION_CPU1)[0x08000]; /* install an opcode base handler */ memory_set_opbase_handler(0, esb_setopbase); /* install read/write handlers for it */ memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0x8000, 0x9fff, 0, 0, esb_slapstic_r); memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0x8000, 0x9fff, 0, 0, esb_slapstic_w); /* install additional banking */ memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0xa000, 0xffff, 0, 0, MRA8_BANK2); /* prepare the mathbox */ starwars_is_esb = 1; swmathbox_init(); /* initialize banking */ memory_configure_bank(1, 0, 2, memory_region(REGION_CPU1) + 0x6000, 0x10000 - 0x6000); memory_set_bank(1, 0); memory_configure_bank(2, 0, 2, memory_region(REGION_CPU1) + 0xa000, 0x1c000 - 0xa000); memory_set_bank(2, 0); }
// MDRV_MACHINE_RESET(champbb2) MACHINE_DRIVER_END /* MCU handling */ static DRIVER_INIT(champbb2) { memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xa006, 0xa006, 0, 0, champbas_mcu_halt_w); }
static WRITE8_HANDLER(multigm3_switch_prg_rom) { /* switch PRG rom */ UINT8* dst = space->machine->region("maincpu")->base(); UINT8* src = space->machine->region("user1")->base(); if (data == 0xa8) { multigam_init_mmc3(space->machine, src + 0xa0000, 0x40000, 0x180); return; } else { memory_install_write8_handler(space, 0x8000, 0xffff, 0, 0, multigm3_mapper2_w ); memory_set_bankptr(space->machine, "bank10", space->machine->region("maincpu")->base() + 0x6000); } if (data & 0x80) { if (data & 0x01) { data &= ~0x01; } memcpy(&dst[0x8000], &src[(data & 0x7f) * 0x4000], 0x8000); } else { memcpy(&dst[0x8000], &src[data*0x4000], 0x4000); memcpy(&dst[0xc000], &src[data*0x4000], 0x4000); } };
ROM_END static DRIVER_INIT( iqblock ) { UINT8 *rom = memory_region(REGION_CPU1); int i; /* decrypt the program ROM */ for (i = 0;i < 0xf000;i++) { if ((i & 0x0282) != 0x0282) rom[i] ^= 0x01; if ((i & 0x0940) == 0x0940) rom[i] ^= 0x02; if ((i & 0x0090) == 0x0010) rom[i] ^= 0x20; } /* initialize pointers for I/O mapped RAM */ paletteram = rom + 0x12000; paletteram_2 = rom + 0x12800; iqblock_fgvideoram = rom + 0x16800; iqblock_bgvideoram = rom + 0x17000; memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xfe26, 0xfe26, 0, 0, iqblock_prot_w); iqblock_vidhrdw_type=1; }
static DRIVER_INIT( asylum ) { /* initialize the default EEPROM state */ static const UINT16 asylum_eeprom_data[] = { 0x02,0x0101, 0x03,0x0101, 0x04,0x0101, 0x05,0xffff, 0x06,0x0403, 0x07,0x0400, 0xffff }; ataxx_init_eeprom(0x00, asylum_eeprom_data, 0x00); leland_rotate_memory(0); leland_rotate_memory(1); /* asylum appears to have some extra RAM for the slave CPU */ memory_install_read8_handler(1, ADDRESS_SPACE_PROGRAM, 0xf000, 0xfffb, 0, 0, MRA8_RAM); memory_install_write8_handler(1, ADDRESS_SPACE_PROGRAM, 0xf000, 0xfffb, 0, 0, MWA8_RAM); /* set up additional input ports */ memory_install_read8_handler(0, ADDRESS_SPACE_IO, 0x0d, 0x0d, 0, 0, input_port_3_r); memory_install_read8_handler(0, ADDRESS_SPACE_IO, 0x0e, 0x0e, 0, 0, input_port_4_r); memory_install_read8_handler(0, ADDRESS_SPACE_IO, 0x0f, 0x0f, 0, 0, input_port_5_r); }
static DRIVER_INIT( indyheat ) { /* initialize the default EEPROM state */ static const UINT16 indyheat_eeprom_data[] = { 0x2c,0x0100, 0x2d,0x0401, 0x2e,0x05ff, 0x2f,0x4b4b, 0x30,0xfa4b, 0x31,0xfafa, 0xffff }; ataxx_init_eeprom(0x00, indyheat_eeprom_data, 0x00); leland_rotate_memory(0); leland_rotate_memory(1); /* set up additional input ports */ memory_install_read8_handler(0, ADDRESS_SPACE_IO, 0x00, 0x02, 0, 0, indyheat_wheel_r); memory_install_read8_handler(0, ADDRESS_SPACE_IO, 0x08, 0x0b, 0, 0, indyheat_analog_r); memory_install_read8_handler(0, ADDRESS_SPACE_IO, 0x0d, 0x0d, 0, 0, input_port_9_r); memory_install_read8_handler(0, ADDRESS_SPACE_IO, 0x0e, 0x0e, 0, 0, input_port_10_r); memory_install_read8_handler(0, ADDRESS_SPACE_IO, 0x0f, 0x0f, 0, 0, input_port_11_r); /* set up additional output ports */ memory_install_write8_handler(0, ADDRESS_SPACE_IO, 0x08, 0x0b, 0, 0, indyheat_analog_w); }
ROM_END static DRIVER_INIT( sidepckt ) { memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x3014, 0x3014, 0, 0, sidepckt_i8751_r ); memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x3018, 0x3018, 0, 0, sidepckt_i8751_w ); }
static DRIVER_INIT( wow ) { memory_install_read8_handler(0, ADDRESS_SPACE_IO, 0x12, 0x12, 0, 0xff00, wow_port_2_r); memory_install_read8_matchmask_handler(0, ADDRESS_SPACE_IO, 0x15, 0xff, 0, 0, wow_io_r); memory_install_read8_matchmask_handler(0, ADDRESS_SPACE_IO, 0x17, 0xff, 0, 0, wow_speech_r); memory_install_write8_handler(0, ADDRESS_SPACE_IO, 0x50, 0x57, 0, 0xff00, astrocade_sound2_w); memory_install_write8_matchmask_handler(0, ADDRESS_SPACE_IO, 0x58, 0xff, 0, 0, astrocade_soundblock2_w); }
static void common_init_machine(int base) { /* internal ram */ memory_configure_bank(1, 0, 1, mess_ram, 0); memory_set_bank(1, 0); /* expansion memory configuration */ switch (mess_ram_size) { case 18 * 1024: case 22 * 1024: case 32 * 1024: /* install 16KB memory expansion */ memory_install_read8_handler (0, ADDRESS_SPACE_PROGRAM, base, base + 0x3fff, 0, 0, MRA8_BANK2); memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, base, base + 0x3fff, 0, 0, MWA8_BANK2); memory_configure_bank(2, 0, 1, mess_ram + base - 0x7800, 0); memory_set_bank(2, 0); memory_install_read8_handler (0, ADDRESS_SPACE_PROGRAM, base + 0x4000, 0xffff, 0, 0, MRA8_NOP); memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, base + 0x4000, 0xffff, 0, 0, MWA8_NOP); break; case 66 * 1024: case 4098 * 1024: /* 64KB/4MB memory expansion */ /* install fixed first bank */ memory_install_read8_handler (0, ADDRESS_SPACE_PROGRAM, 0x8000, 0xbfff, 0, 0, MRA8_BANK2); memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0x8000, 0xbfff, 0, 0, MWA8_BANK2); memory_configure_bank(2, 0, 1, mess_ram + 0x800, 0); memory_set_bank(2, 0); /* install the others, dynamically banked in */ memory_install_read8_handler (0, ADDRESS_SPACE_PROGRAM, 0xc000, 0xffff, 0, 0, MRA8_BANK3); memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xc000, 0xffff, 0, 0, MWA8_BANK3); memory_configure_bank(3, 0, (mess_ram_size - 0x4800) / 0x4000, mess_ram + 0x4800, 0x4000); memory_set_bank(3, 0); break; default: /* no memory expansion */ memory_install_read8_handler (0, ADDRESS_SPACE_PROGRAM, base, 0xffff, 0, 0, MRA8_NOP); memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, base, 0xffff, 0, 0, MWA8_NOP); break; } }
/* to do support weired comparator settings */ static void hp48_config(void) { int begin, end; /* lowest priority first */ memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0, 0xfffff, 0, 0, MRA8_ROM); memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0, 0xfffff, 0, 0, MWA8_NOP); if (hp48s.mem[CARD1].adr!=-1) { begin=hp48s.mem[CARD1].adr&hp48s.mem[CARD1].size&~0xfff; end=begin|(hp48s.mem[CARD1].size^0xff000)|0xfff; if (end!=begin) { memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, begin, end, 0, 0, MRA8_BANK1); memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, begin, end, 0, 0, MWA8_BANK1); memory_set_bankptr(1, hp48_card1); } } if (hp48s.mem[CARD2].adr!=-1) { begin=hp48s.mem[CARD2].adr&hp48s.mem[CARD2].size&~0xfff; end=begin|(hp48s.mem[CARD2].size^0xff000)|0xfff; if (end!=begin) { memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, begin, end, 0, 0, MRA8_BANK2); memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, begin, end, 0, 0, MWA8_BANK2); memory_set_bankptr(2, hp48_card2); } } if (hp48s.mem[RAM].adr!=-1) { begin=hp48s.mem[RAM].adr&hp48s.mem[RAM].size&~0xfff; end=begin|(hp48s.mem[RAM].size^0xff000)|0xfff; if (end!=begin) { memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, begin, end, 0, 0, MRA8_BANK3); memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, begin, end, 0, 0, MWA8_BANK3); memory_set_bankptr(3, hp48_ram); } } if (hp48s.mem[HDW].adr!=-1) { memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, hp48s.mem[HDW].adr&~0x3f, hp48s.mem[HDW].adr|0x3f, 0, 0, hp48_read); memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, hp48s.mem[HDW].adr&~0x3f, hp48s.mem[HDW].adr|0x3f, 0, 0, hp48_write); } memory_set_context(0); }
static DRIVER_INIT( bradley ) { const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM); memory_install_ram(space, 0x400, 0x7ff, 0, 0, NULL); memory_install_read_port(space, 0x1808, 0x1808, 0, 0, "1808"); memory_install_read_port(space, 0x1809, 0x1809, 0, 0, "1809"); memory_install_read8_handler(space, 0x180a, 0x180a, 0, 0, analog_data_r); memory_install_write8_handler(space, 0x1848, 0x1850, 0, 0, analog_select_w); }
ROM_END /************************************* * * Driver-specific init * *************************************/ static DRIVER_INIT( mhavocrv ) { /* install the speech support that was only optionally stuffed for use */ /* in the Return to Vax hack */ memory_install_read8_handler(1, ADDRESS_SPACE_PROGRAM, 0x2800, 0x2800, 0, 0, mhavoc_port_1_sp_r); memory_install_write8_handler(1, ADDRESS_SPACE_PROGRAM, 0x5800, 0x5800, 0, 0, speech_data_w); memory_install_write8_handler(1, ADDRESS_SPACE_PROGRAM, 0x5900, 0x5900, 0, 0, speech_strobe_w); }
static void a7800_driver_init(int ispal, int lines) { ROM = memory_region(REGION_CPU1); a7800_ispal = ispal; a7800_lines = lines; /* standard banks */ memory_set_bankptr(5, &ROM[0x2040]); /* RAM0 */ memory_set_bankptr(6, &ROM[0x2140]); /* RAM1 */ memory_set_bankptr(7, &ROM[0x2000]); /* MAINRAM */ /* Brutal hack put in as a consequence of new memory system; fix this */ memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0x0480, 0x04FF, 0, 0, MRA8_BANK10); memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0x0480, 0x04FF, 0, 0, MWA8_BANK10); memory_set_bankptr(10, memory_region(REGION_CPU1) + 0x0480); memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0x1800, 0x27FF, 0, 0, MRA8_BANK11); memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0x1800, 0x27FF, 0, 0, MWA8_BANK11); memory_set_bankptr(11, memory_region(REGION_CPU1) + 0x1800); }
static DRIVER_INIT( bradley ) { memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x400, 0x7ff, 0, 0, (read8_space_func)SMH_BANK(1), (write8_space_func)SMH_BANK(1)); memory_set_bankptr(machine, 1, auto_alloc_array(machine, UINT8, 0x400)); memory_install_read_port_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1808, 0x1808, 0, 0, "1808"); memory_install_read_port_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1809, 0x1809, 0, 0, "1809"); memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x180a, 0x180a, 0, 0, analog_data_r); memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1848, 0x1850, 0, 0, analog_select_w); }
/* the other Dr. Korea game (Hexa, hexa.c) also appears to be derived from Arkanoid hardware */ ROM_START( tetrsark ) ROM_REGION( 0x18000, REGION_CPU1, 0 ) /* 64k for code + 32k for banked ROM */ ROM_LOAD( "ic17.1", 0x00000, 0x8000, CRC(1a505eda) SHA1(92f171a12cf0c326d29c244514718df04b998426) ) ROM_LOAD( "ic16.2", 0x08000, 0x8000, CRC(157bc4df) SHA1(b2c704148e7e3ca61ab51308ee0d66ea1088bff3) ) /* it doens't care if this is here?? */ ROM_REGION( 0x18000, REGION_GFX1, ROMREGION_DISPOSE ) ROM_LOAD( "ic64.3", 0x00000, 0x8000, CRC(c3e9b290) SHA1(6e99520606c654e531dbeb9a598cfbb443c24dff) ) ROM_LOAD( "ic63.4", 0x08000, 0x8000, CRC(de9a368f) SHA1(ffbb2479200648da3f3e7ab7cebcdb604f6dfb3d) ) ROM_LOAD( "ic62.5", 0x10000, 0x8000, CRC(c8e80a00) SHA1(4bee4c36ee768ae68ebc64e639fdc43f61c74f92) ) ROM_REGION( 0x0600, REGION_PROMS, 0 ) ROM_LOAD( "a75-07.bpr", 0x0000, 0x0200, CRC(0af8b289) SHA1(6bc589e8a609b4cf450aebedc8ce02d5d45c970f) ) /* red component */ ROM_LOAD( "a75-08.bpr", 0x0200, 0x0200, CRC(abb002fb) SHA1(c14f56b8ef103600862e7930709d293b0aa97a73) ) /* green component */ ROM_LOAD( "a75-09.bpr", 0x0400, 0x0200, CRC(a7c6c277) SHA1(adaa003dcd981576ea1cc5f697d709b2d6b2ea29) ) /* blue component */ ROM_END /* Driver Initialization */ static DRIVER_INIT( paddle2 ) { memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0xf002, 0xf002, 0, 0, paddle2_prot_r ); memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xd018, 0xd018, 0, 0, paddle2_prot_w ); memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0xd008, 0xd008, 0, 0, paddle2_track_kludge_r ); }
static void multigam_init_mapper02(running_machine *machine, UINT8* prg_base, int prg_size) { UINT8* mem = machine->region("maincpu")->base(); memcpy(mem + 0x8000, prg_base + prg_size - 0x8000, 0x8000); memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, multigam3_mapper02_rom_switch_w ); multigam_mapper02_prg_base = prg_base; multigam_mapper02_prg_size = prg_size; ppu2c0x_set_scanline_callback(machine->device("ppu"), 0); }
static DRIVER_INIT( demndrgn ) { memory_install_read8_handler(0, ADDRESS_SPACE_IO, 0x10, 0x10, 0, 0xff00, input_port_0_r ); /* 0x00 is the middle value, range is up to 0x7f, and down to 0x80 */ memory_install_read8_handler(0, ADDRESS_SPACE_IO, 0x11, 0x11, 0, 0xff00, demndrgn_move_r ); memory_install_read8_matchmask_handler(0, ADDRESS_SPACE_IO, 0x14, 0xff, 0, 0, demndrgn_io_r ); /* analog joystick, converted to digital in software */ /* 0x80 is the middle, values of > 0xd8 and < 0x28 are the thresholds */ memory_install_read8_handler(0, ADDRESS_SPACE_IO, 0x1c, 0x1c, 0, 0xff00, demndrgn_fire_x_r ); memory_install_read8_handler(0, ADDRESS_SPACE_IO, 0x1d, 0x1d, 0, 0xff00, demndrgn_fire_y_r ); memory_install_write8_handler(0, ADDRESS_SPACE_IO, 0x97, 0x97, 0, 0xff00, demndrgn_sound_w ); memory_install_write8_handler(0, ADDRESS_SPACE_IO, 0xbf, 0xbf, 0, 0xff00, profpac_page_select_w); memory_install_read8_handler(0, ADDRESS_SPACE_IO, 0xc3, 0xc3, 0, 0xff00, profpac_intercept_r ); memory_install_write8_handler(0, ADDRESS_SPACE_IO, 0xc0, 0xc5, 0, 0xff00, profpac_screenram_ctrl_w ); memory_install_write8_handler(0, ADDRESS_SPACE_IO, 0xf3, 0xf3, 0, 0xff00, profpac_banksw_w); }
/* I'm using the ROMs from exctscc2, national flags are wrong (ITA replaces USA) */ ROM_LOAD( "vr.5a", 0x0000, 0x2000, BAD_DUMP CRC(4ff1783d) SHA1(c45074864c3a4bcbf3a87d164027ae16dca53d9c) ) ROM_LOAD( "vr.5b", 0x2000, 0x2000, BAD_DUMP CRC(5605b60b) SHA1(19d5909896ae4a3d7552225c369d30475c56793b) ) ROM_LOAD( "vr.5c", 0x4000, 0x2000, BAD_DUMP CRC(1fb84ee6) SHA1(56ceb86c509be783f806403ac21e7c9684760d5f) ) ROM_REGION( 0x02000, REGION_GFX2, ROMREGION_DISPOSE ) ROM_LOAD( "vr.5k", 0x0000, 0x1000, BAD_DUMP CRC(1d37edfa) SHA1(184fa6dd7b1b3fff4c5fc19b42301ccb7979ac84) ) ROM_LOAD( "vr.5l", 0x1000, 0x1000, BAD_DUMP CRC(b97f396c) SHA1(4ffe512acf047230bd593911a615fc0ef66b481d) ) ROM_REGION( 0x0220, REGION_PROMS, 0 ) ROM_LOAD( "prom1.e1", 0x0000, 0x0020, CRC(d9b10bf0) SHA1(bc1263331968f4bf37eb70ec4f56a8cb763c29d2) ) /* palette */ ROM_LOAD( "prom2.8r", 0x0020, 0x0100, CRC(8a9c0edf) SHA1(8aad387e9409cff0eeb42eeb57e9ea88770a8c9a) ) /* lookup table */ ROM_LOAD( "prom3.k5", 0x0120, 0x0100, CRC(b5db1c2c) SHA1(900aaaac6b674a9c5c7b7804a4b0c3d5cce761aa) ) /* lookup table */ ROM_END ROM_START( exctscc2 ) ROM_REGION( 0x10000, REGION_CPU1, 0 ) /* 64k for code */ ROM_LOAD( "vr.3j", 0x0000, 0x2000, CRC(c6115362) SHA1(6a258631abd72ef6b8d7968bb4b2bc88e89e597d) ) ROM_LOAD( "vr.3k", 0x2000, 0x2000, CRC(de36ba00) SHA1(0a0d92e710b8c749f145571bc8a204609456d19d) ) ROM_LOAD( "vr.3l", 0x4000, 0x2000, CRC(1ddfdf65) SHA1(313d0a7f13fc2de15aa32492c38a59fbafad9f01) ) ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for code */ ROM_LOAD( "vr.7d", 0x0000, 0x2000, CRC(2c675a43) SHA1(aa0a8dbcae955e3da92c435202f2a1ed238c377e) ) ROM_LOAD( "vr.7e", 0x2000, 0x2000, CRC(e571873d) SHA1(2dfff24f5dac86e92612f40cf3642005c7f36ad3) ) ROM_LOAD( "8_d6.bin", 0x4000, 0x2000, CRC(88651ee1) SHA1(2052e1b3f9784439369f464e31f4a2b0d1bb0565) ) /* vr.7f */ ROM_LOAD( "7_c6.bin", 0x6000, 0x2000, CRC(6d51521e) SHA1(2809bd2e61f40dcd31d43c62520982bdcfb0a865) ) /* vr.7h */ ROM_LOAD( "1_a6.bin", 0x8000, 0x1000, CRC(20f2207e) SHA1(b1ed2237d0bd50ddbe593fd2fbff9f1d67c1eb11) ) /* vr.7k */ ROM_REGION( 0x06000, REGION_GFX1, ROMREGION_DISPOSE ) ROM_LOAD( "vr.5a", 0x0000, 0x2000, CRC(4ff1783d) SHA1(c45074864c3a4bcbf3a87d164027ae16dca53d9c) ) ROM_LOAD( "vr.5b", 0x2000, 0x2000, CRC(5605b60b) SHA1(19d5909896ae4a3d7552225c369d30475c56793b) ) ROM_LOAD( "vr.5c", 0x4000, 0x2000, CRC(1fb84ee6) SHA1(56ceb86c509be783f806403ac21e7c9684760d5f) ) ROM_REGION( 0x02000, REGION_GFX2, ROMREGION_DISPOSE ) ROM_LOAD( "vr.5k", 0x0000, 0x1000, CRC(1d37edfa) SHA1(184fa6dd7b1b3fff4c5fc19b42301ccb7979ac84) ) ROM_LOAD( "vr.5l", 0x1000, 0x1000, CRC(b97f396c) SHA1(4ffe512acf047230bd593911a615fc0ef66b481d) ) ROM_REGION( 0x0220, REGION_PROMS, 0 ) ROM_LOAD( "prom1.e1", 0x0000, 0x0020, CRC(d9b10bf0) SHA1(bc1263331968f4bf37eb70ec4f56a8cb763c29d2) ) /* palette */ ROM_LOAD( "prom2.8r", 0x0020, 0x0100, CRC(8a9c0edf) SHA1(8aad387e9409cff0eeb42eeb57e9ea88770a8c9a) ) /* lookup table */ ROM_LOAD( "prom3.k5", 0x0120, 0x0100, CRC(b5db1c2c) SHA1(900aaaac6b674a9c5c7b7804a4b0c3d5cce761aa) ) /* lookup table */ ROM_END /* The games need a different MCU control */ DRIVER_INIT( exctsccr ) { #if MCU_HACK memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xa006, 0xa006, 0, 0, exctsccr_mcu_control_w); #else mcu_patch_data = exctsccr_mcu_patch_data; #endif }
static DRIVER_INIT( cashquiz ) { UINT8 *ROM; int i; /* decrypt program code */ ROM = memory_region(machine, "maincpu"); for( i = 0; i < 0x4000; i++ ) ROM[i] = BITSWAP8(ROM[i],0,1,2,3,4,5,6,7); /* decrypt questions */ ROM = memory_region(machine, "user1"); for( i = 0; i < 0x40000; i++ ) ROM[i] = BITSWAP8(ROM[i],0,1,2,3,4,5,6,7); /* questions banking handlers */ memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4000, 0x4000, 0, 0, cashquiz_question_bank_high_w); memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4001, 0x4001, 0, 0, cashquiz_question_bank_low_w); // 8 independents banks for questions memory_install_read_bank(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x5000, 0x50ff, 0, 0, "bank1"); memory_install_read_bank(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x5100, 0x51ff, 0, 0, "bank2"); memory_install_read_bank(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x5200, 0x52ff, 0, 0, "bank3"); memory_install_read_bank(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x5300, 0x53ff, 0, 0, "bank4"); memory_install_read_bank(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x5400, 0x54ff, 0, 0, "bank5"); memory_install_read_bank(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x5500, 0x55ff, 0, 0, "bank6"); memory_install_read_bank(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x5600, 0x56ff, 0, 0, "bank7"); memory_install_read_bank(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x5700, 0x57ff, 0, 0, "bank8"); // setup default banks memory_set_bankptr(machine, "bank1", memory_region(machine, "user1") + 0x100*0 ); memory_set_bankptr(machine, "bank2", memory_region(machine, "user1") + 0x100*1 ); memory_set_bankptr(machine, "bank3", memory_region(machine, "user1") + 0x100*2 ); memory_set_bankptr(machine, "bank4", memory_region(machine, "user1") + 0x100*3 ); memory_set_bankptr(machine, "bank5", memory_region(machine, "user1") + 0x100*4 ); memory_set_bankptr(machine, "bank6", memory_region(machine, "user1") + 0x100*5 ); memory_set_bankptr(machine, "bank7", memory_region(machine, "user1") + 0x100*6 ); memory_set_bankptr(machine, "bank8", memory_region(machine, "user1") + 0x100*7 ); }
ROM_END static DRIVER_INIT( pettanp ) { // AM_RANGE(0xd80c, 0xd80c) AM_WRITE(MWA8_NOP) /* protection reset? */ // AM_RANGE(0xd80d, 0xd80d) AM_WRITE(protection_w) /* protection data write (pettanp) */ // AM_RANGE(0xd806, 0xd806) AM_READ(protection_r) /* protection data read (pettanp) */ /* Fujitsu MB8841 4-Bit MCU */ memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0xd806, 0xd806, 0, 0, pettanp_protection_r); memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0xd80d, 0xd80d, 0, 0, protection_w); }
ROM_END static DRIVER_INIT( pettanp ) { // AM_RANGE(0xd80c, 0xd80c) AM_WRITENOP /* protection reset? */ // AM_RANGE(0xd80d, 0xd80d) AM_WRITE(protection_w) /* protection data write (pettanp) */ // AM_RANGE(0xd806, 0xd806) AM_READ(protection_r) /* protection data read (pettanp) */ /* Fujitsu MB8841 4-Bit MCU */ memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xd806, 0xd806, 0, 0, pettanp_protection_r); memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xd80d, 0xd80d, 0, 0, protection_w); }
static DRIVER_INIT( gorf ) { /* This is part of the timing/interrupt hack stuff */ /* extern UINT8 *gorf_timer_ram; */ /* gorf_timer_ram = memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0xd0a5, 0xd0a5, 0, 0, gorf_timer_r); */ memory_install_read8_handler(0, ADDRESS_SPACE_IO, 0x12, 0x12, 0, 0xff00, gorf_port_2_r); memory_install_read8_matchmask_handler(0, ADDRESS_SPACE_IO, 0x15, 0xff, 0, 0, gorf_io_1_r); memory_install_read8_matchmask_handler(0, ADDRESS_SPACE_IO, 0x16, 0xff, 0, 0, gorf_io_2_r); memory_install_read8_matchmask_handler(0, ADDRESS_SPACE_IO, 0x17, 0xff, 0, 0, gorf_speech_r); memory_install_write8_handler(0, ADDRESS_SPACE_IO, 0x50, 0x57, 0, 0xff00, astrocade_sound2_w); memory_install_write8_matchmask_handler(0, ADDRESS_SPACE_IO, 0x58, 0xff, 0, 0, astrocade_soundblock2_w); }