static DRIVER_INIT( beathead ) { /* initialize the common systems */ atarijsa_init(machine, "IN2", 0x0040); /* prepare the speedups */ speedup_data = memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x00000ae8, 0x00000aeb, 0, 0, speedup_r); movie_speedup_data = memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x00000804, 0x00000807, 0, 0, movie_speedup_r); }
static DRIVER_INIT( beathead ) { /* initialize the common systems */ atarigen_eeprom_default = NULL; atarijsa_init(1, 4, 2, 0x0040); atarijsa3_init_adpcm(REGION_SOUND1); /* prepare the speedups */ speedup_data = memory_install_read32_handler(0, ADDRESS_SPACE_PROGRAM, 0x00000ae8, 0x00000aeb, 0, 0, speedup_r); movie_speedup_data = memory_install_read32_handler(0, ADDRESS_SPACE_PROGRAM, 0x00000804, 0x00000807, 0, 0, movie_speedup_r); }
void install_decathlt_protection(void) { /* It uploads 2 tables here, then performs what looks like a number of transfers, setting a source address of some kind (scrambled?) and then making many reads from a single address */ memory_install_read32_handler(0, ADDRESS_SPACE_PROGRAM, 0x37FFFF0, 0x37FFFFF, 0, 0, decathlt_prot_r); memory_install_write32_handler(0, ADDRESS_SPACE_PROGRAM, 0x37FFFF0, 0x37FFFFF, 0, 0, decathlt_prot_w); /* It uploads 2 tables here too, but nothing else, mirror? unused? */ // memory_install_read32_handler(0, ADDRESS_SPACE_PROGRAM, 0x27FFFF0, 0x27FFFFF, 0, 0, decathlt_prot_r); // memory_install_write32_handler(0, ADDRESS_SPACE_PROGRAM, 0x27FFFF0, 0x27FFFFF, 0, 0, decathlt_prot_w); }
static MACHINE_INIT( kinst ) { /* set the fastest DRC options */ cpunum_set_info_int(0, CPUINFO_INT_MIPS3_DRC_OPTIONS, MIPS3DRC_FASTEST_OPTIONS); /* both games map one logical 4k page at address 0 to physical address 0x8090000 */ memory_install_read32_handler(0, ADDRESS_SPACE_PROGRAM, 0x00000000, 0x00000fff, 0, 0, MRA32_BANK1); memory_install_write32_handler(0, ADDRESS_SPACE_PROGRAM, 0x00000000, 0x00000fff, 0, 0, MWA32_BANK1); cpu_setbank(1, &rambase2[0x90000/4]); /* keep the DCS held in reset at startup */ dcs_reset_w(1); /* reset the IDE controller */ ide_controller_reset(0); /* set a safe base location for video */ video_base = &rambase[0x30000/4]; }
ROM_END /************************************* * * Driver initialization * *************************************/ static DRIVER_INIT( kinst ) { static const UINT8 kinst_control_map[8] = { 0,1,2,3,4,5,6,7 }; UINT8 *features; dcs_init(); /* set up the control register mapping */ control_map = kinst_control_map; /* spin up the hard disk */ ide_controller_init(0, &ide_intf); /* tweak the model number so we pass the check */ features = ide_get_features(0); features[27*2+0] = 0x54; features[27*2+1] = 0x53; features[28*2+0] = 0x31; features[28*2+1] = 0x39; features[29*2+0] = 0x30; features[29*2+1] = 0x35; features[30*2+0] = 0x47; features[30*2+1] = 0x41; features[31*2+0] = 0x20; features[31*2+1] = 0x20; /* optimize one of the non-standard loops */ kinst_speedup = memory_install_read32_handler(0, ADDRESS_SPACE_PROGRAM, 0x8808f5bc, 0x8808f5bf, 0, 0, kinst_speedup_r); }
static DRIVER_INIT( kinst2 ) { static const UINT8 kinst2_control_map[8] = { 2,4,1,0,3,5,6,7 }; UINT8 *features; // read: $80 on ki2 = $90 on ki // read: $88 on ki2 = $a0 on ki // write: $80 on ki2 = $90 on ki // write: $90 on ki2 = $88 on ki // write: $98 on ki2 = $80 on ki // write: $a0 on ki2 = $98 on ki dcs_init(); /* set up the control register mapping */ control_map = kinst2_control_map; /* spin up the hard disk */ ide_controller_init(0, &ide_intf); /* tweak the model number so we pass the check */ features = ide_get_features(0); features[10*2+0] = 0x30; features[10*2+1] = 0x30; features[11*2+0] = 0x54; features[11*2+1] = 0x53; features[12*2+0] = 0x31; features[12*2+1] = 0x39; features[13*2+0] = 0x30; features[13*2+1] = 0x35; features[14*2+0] = 0x47; features[14*2+1] = 0x41; /* optimize one of the non-standard loops */ kinst_speedup = memory_install_read32_handler(0, ADDRESS_SPACE_PROGRAM, 0x887ff544, 0x887ff547, 0, 0, kinst_speedup_r); }
static DRIVER_INIT( osman ) { memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0201010, 0x0201013, 0, 0, osman_speedup_r ); DRIVER_INIT_CALL(simpl156); }
static DRIVER_INIT( superchs ) { /* Speedup handlers */ memory_install_read32_handler(0, ADDRESS_SPACE_PROGRAM, 0x100000, 0x100003, 0, 0, main_cycle_r); memory_install_read16_handler(2, ADDRESS_SPACE_PROGRAM, 0x80000a, 0x80000b, 0, 0, sub_cycle_r); }
void install_standard_protection(void) { memory_install_read32_handler(0, ADDRESS_SPACE_PROGRAM, 0x4fffff0, 0x4ffffff, 0, 0, a_bus_ctrl_r); memory_install_write32_handler(0, ADDRESS_SPACE_PROGRAM, 0x04fffff0, 0x04ffffff, 0, 0, a_bus_ctrl_w); }