diff --git a/src/mame/drivers/socrates.cpp b/src/mame/drivers/socrates.cpp index bff0533caf3..c80f2708d11 100644 --- a/src/mame/drivers/socrates.cpp +++ b/src/mame/drivers/socrates.cpp @@ -1373,70 +1373,24 @@ static MACHINE_CONFIG_START( socrates ) MCFG_SOFTWARE_LIST_ADD("cart_list", "socrates") MACHINE_CONFIG_END -static MACHINE_CONFIG_START( socrates_pal ) - /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", Z80, XTAL_26_601712MHz/6) /* Toshiba TMPZ84C00AP @ 4.433 MHz? /6 or 7 or 8? TODO: verify divider!*/ +static MACHINE_CONFIG_DERIVED( socrates_pal, socrates ) + MCFG_CPU_REPLACE("maincpu", Z80, XTAL_26_601712MHz/8) MCFG_CPU_PROGRAM_MAP(z80_mem) MCFG_CPU_IO_MAP(z80_io) MCFG_QUANTUM_TIME(attotime::from_hz(50)) MCFG_CPU_VBLANK_INT_DRIVER("screen", socrates_state, assert_irq) - //MCFG_MACHINE_START_OVERRIDE(socrates_state,socrates) - MCFG_DEVICE_ADD("rombank1", ADDRESS_MAP_BANK, 0) - MCFG_DEVICE_PROGRAM_MAP(socrates_rombank_map) - MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE) - MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(8) - MCFG_ADDRESS_MAP_BANK_STRIDE(0x4000) - - MCFG_DEVICE_ADD("rambank1", ADDRESS_MAP_BANK, 0) - MCFG_DEVICE_PROGRAM_MAP(socrates_rambank_map) - MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE) - MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(8) - MCFG_ADDRESS_MAP_BANK_STRIDE(0x4000) - - MCFG_DEVICE_ADD("rambank2", ADDRESS_MAP_BANK, 0) - MCFG_DEVICE_PROGRAM_MAP(socrates_rambank_map) - MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE) - MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(8) - MCFG_ADDRESS_MAP_BANK_STRIDE(0x4000) - - /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_REFRESH_RATE(50) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not accurate MCFG_SCREEN_SIZE(264, 238) // technically the screen size is 256x228 but super painter abuses what I suspect is a hardware bug to display repeated pixels of the very last pixel beyond this horizontal space, well into hblank MCFG_SCREEN_VISIBLE_AREA(0, 263, 0, 229) // the last few rows are usually cut off by the screen bottom but are indeed displayed if you mess with v-hold MCFG_SCREEN_UPDATE_DRIVER(socrates_state, screen_update_socrates) - MCFG_SCREEN_PALETTE("palette") - MCFG_PALETTE_ADD("palette", 256) - MCFG_PALETTE_INIT_OWNER(socrates_state, socrates) - - /* sound hardware */ - MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_SOUND_ADD("soc_snd", SOCRATES_SOUND, XTAL_26_601712MHz/(512+256)) // TODO: verify divider for pal mode + MCFG_SOUND_REPLACE("soc_snd", SOCRATES_SOUND, XTAL_26_601712MHz/(512+256)) // this is correct, as strange as it sounds. MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) - - MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "socrates_cart") - - /* Software lists */ - MCFG_SOFTWARE_LIST_ADD("cart_list", "socrates") MACHINE_CONFIG_END -/* This doesn't work for some reason. -static MACHINE_CONFIG_DERIVED( socrates_pal, socrates ) - MCFG_CPU_REPLACE("maincpu", Z80, XTAL_26_601712MHz/8) - MCFG_SCREEN_REPLACE("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(50) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) - MCFG_SCREEN_SIZE(264, 256) // technically the screen size is 256x228 but super painter abuses what I suspect is a hardware bug to display repeated pixels of the very last pixel beyond this horizontal space, well into hblank - MCFG_SCREEN_VISIBLE_AREA(0, 263, 0, 256) // the last few rows are usually cut off by the screen bottom but are indeed displayed if you mess with v-hold - MCFG_SCREEN_UPDATE_DRIVER(socrates_state, screen_update_socrates) - MCFG_SOUND_REPLACE("soc_snd", SOCRATES_SOUND, XTAL_26_601712MHz/(512+256)) // this is correct, as strange as it sounds. - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) -MACHINE_CONFIG_END -*/ - static MACHINE_CONFIG_START( iqunlimz ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_4MHz) /* not accurate */