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); }
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); }
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); } }
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); }
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(); }
static WRITE8_HANDLER( wardner_ramrom_bank_sw ) { if (wardner_membank != data) { int bankaddress = 0; UINT8 *RAM = memory_region(REGION_CPU1); wardner_membank = data; if (data) { memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0x8000, 0xffff, 0, 0, MRA8_BANK1); switch (data) { case 2: bankaddress = 0x10000; break; case 3: bankaddress = 0x18000; break; case 4: bankaddress = 0x20000; break; case 5: bankaddress = 0x28000; break; case 7: bankaddress = 0x38000; break; case 1: bankaddress = 0x08000; break; /* not used */ case 6: bankaddress = 0x30000; break; /* not used */ default: bankaddress = 0x00000; break; /* not used */ } memory_set_bankptr(1,&RAM[bankaddress]); } else { memory_set_bankptr(1,&RAM[0x0000]); memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0x8000, 0x8fff, 0, 0, wardner_sprite_r); memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0xa000, 0xadff, 0, 0, paletteram_r); memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0xae00, 0xafff, 0, 0, MRA8_BANK2); memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0xc000, 0xc7ff, 0, 0, MRA8_BANK3); memory_set_bankptr(2, rambase_ae00); memory_set_bankptr(3, rambase_c000); } } }
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( ghunter ) { seibu_sound_decrypt(REGION_CPU3, 0x2000); seibu_adpcm_decrypt(REGION_SOUND1); memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0x80000, 0x80001, 0, 0, ghunter_trackball_low_r); memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0xb0000, 0xb0001, 0, 0, ghunter_trackball_high_r); }
static DRIVER_INIT( atarifb4 ) { /* Tell the video code to draw the plays for this version */ atarifb_game = 2; memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0x4000, 0x4000, 0, 0, atarifb4_in0_r); memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0x4001, 0x4001, 0, 0, input_port_1_r); memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0x4002, 0x4002, 0, 0, atarifb4_in2_r); }
/* 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 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); }
ROM_END int device_load_fnvision_cart(mess_image *image, mame_file *file) { /* Cartridge Image format ====================== - The first 16K is read into 8000 - BFFF. If the cart file is less than 16k then the cartridge is read into 8000, then replicated to fill up the 16k (eg. a 4k cartridge file is written to 8000 - 8FFF, then replicated at 9000-9FFF, A000-AFFF and B000-BFFF). - The next 16k is read into 4000 - 7FFF. If this extra bit is less than 16k, then the data is replicated throughout 4000 - 7FFF. For example, an 18k cartridge dump has its first 16k read and written into memory at 8000-BFFF. The remaining 2K is written into 4000-47FF, then replicated 8 times to appear at 4800, 5000, 5800, 6000, 6800, 7000 and 7800. */ if (file) { int size = mame_fread(file, memory_region(REGION_CPU1) + 0x8000, 0x4000); switch (size) { case 0x1000: memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0x8000, 0x8fff, 0, 0x3000, MRA8_ROM); break; case 0x2000: memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0x8000, 0x9fff, 0, 0x2000, MRA8_ROM); break; case 0x4000: size = mame_fread(file, memory_region(REGION_CPU1) + 0x4000, 0x4000); switch (size) { case 0x0800: memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0x4000, 0x47ff, 0, 0x3800, MRA8_ROM); break; case 0x1000: memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0x4000, 0x4fff, 0, 0x3000, MRA8_ROM); break; case 0x2000: memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0x4000, 0x5fff, 0, 0x2000, MRA8_ROM); break; } break; } } return 0; }
static DRIVER_INIT( afire ) { UINT8 *rom = memory_region(REGION_CPU1); int i; for(i = 0xd000; i < 0x10000; i++) rom[i] = rom[i] ^ 0xff; /* set up protection handlers */ memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0xa003, 0xa003, 0, 0, shoot_r); memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0xa004, 0xa004, 0, 0, afire_coin_prot_r); }
ROM_END /************************************* * * Driver initialization * *************************************/ static DRIVER_INIT( asteroib ) { memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0x2000, 0x2000, 0, 0, asteroib_IN0_r); memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0x2003, 0x2003, 0, 0, input_port_3_r); }
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; } }
ROM_END /************************************* * * Game-specific driver inits * *************************************/ static DRIVER_INIT( seawolf2 ) { memory_install_read8_handler(0, ADDRESS_SPACE_IO, 0x10, 0x10, 0, 0xff00, seawolf2_controller2_r); memory_install_read8_handler(0, ADDRESS_SPACE_IO, 0x11, 0x11, 0, 0xff00, seawolf2_controller1_r); }
ROM_END /************************************* * * Driver initialization * *************************************/ static DRIVER_INIT( ataxx ) { /* initialize the default EEPROM state */ static const UINT16 ataxx_eeprom_data[] = { 0x09,0x0101, 0x0a,0x0104, 0x0b,0x0401, 0x0c,0x0101, 0x0d,0x0004, 0x13,0x0100, 0x14,0x5a04, 0xffff }; ataxx_init_eeprom(0x00, ataxx_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, 0x03, 0, 0, ataxx_trackball_r); }
static DRIVER_INIT( combasc ) { /* joystick instead of trackball */ memory_install_read8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0x0404, 0x0404, 0, 0, input_port_4_r); combasc_init_common(); }
ROM_END static DRIVER_INIT( popflame ) { /* install a handler to catch protection checks */ memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x9000, 0x9000, 0, 0, popflame_protection_r); }
ROM_END static DRIVER_INIT( popflame ) { /* install a handler to catch protection checks */ memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0x9000, 0x9000, 0, 0, popflame_protection_r); }
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); }
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 ); }
/* 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 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; } }
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 static DRIVER_INIT( abattle ) { /* use the protection prom to decrypt the roms */ UINT8 *rom = memory_region(REGION_CPU1); UINT8 *prom = memory_region(REGION_USER1); int i; for(i = 0xd000; i < 0x10000; i++) { rom[i] = prom[rom[i]]; } /* set up protection handlers */ memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0xa003, 0xa003, 0, 0, shoot_r); memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0xa004, 0xa004, 0, 0, abattle_coin_prot_r); }
ROM_END DRIVER_INIT(witch) { UINT8 *ROM = (UINT8 *)memory_region(REGION_CPU1); memory_set_bankptr(1,&ROM[0x10000+UNBANKED_SIZE]); memory_install_read8_handler(1, ADDRESS_SPACE_PROGRAM, 0x7000, 0x700f, 0, 0, prot_read_700x); }
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); }
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( 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); }