diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mame/drivers/taitogn.cpp | 11 | ||||
-rw-r--r-- | src/mame/drivers/zn.cpp | 421 | ||||
-rw-r--r-- | src/mame/machine/cat702.cpp | 11 | ||||
-rw-r--r-- | src/mame/machine/cat702.h | 9 |
4 files changed, 253 insertions, 199 deletions
diff --git a/src/mame/drivers/taitogn.cpp b/src/mame/drivers/taitogn.cpp index 1077996e020..09721eb3f00 100644 --- a/src/mame/drivers/taitogn.cpp +++ b/src/mame/drivers/taitogn.cpp @@ -392,7 +392,6 @@ public: DECLARE_DRIVER_INIT(coh3002t_nz); protected: - virtual void driver_start() override; virtual void machine_reset() override; private: @@ -592,14 +591,6 @@ READ32_MEMBER(taitogn_state::zsg2_ext_r) return 0; } -// Init and reset - -void taitogn_state::driver_start() -{ - m_cat702_1->init(tt10); - m_cat702_2->init(tt16); -} - void taitogn_state::machine_reset() { // halt sound CPU since it has no valid program at start @@ -680,9 +671,11 @@ static MACHINE_CONFIG_START( coh3002t, taitogn_state ) MCFG_DEVICE_ADD("cat702_1", CAT702, 0) MCFG_CAT702_DATAOUT_HANDLER(WRITELINE(taitogn_state, cat702_1_dataout)) + MCFG_CAT702_TRANSFORM_TABLE(tt10) MCFG_DEVICE_ADD("cat702_2", CAT702, 0) MCFG_CAT702_DATAOUT_HANDLER(WRITELINE(taitogn_state, cat702_2_dataout)) + MCFG_CAT702_TRANSFORM_TABLE(tt16) MCFG_DEVICE_ADD("zndip", ZNDIP, 0) MCFG_ZNDIP_DATAOUT_HANDLER(WRITELINE(taitogn_state, zndip_dataout)) diff --git a/src/mame/drivers/zn.cpp b/src/mame/drivers/zn.cpp index c4de6dc757f..dd5ad83ccc4 100644 --- a/src/mame/drivers/zn.cpp +++ b/src/mame/drivers/zn.cpp @@ -118,9 +118,6 @@ public: void atpsx_dma_write(UINT32 *p_n_psxram, UINT32 n_address, INT32 n_size ); void jdredd_vblank(screen_device &screen, bool vblank_state); -protected: - virtual void driver_start() override; - private: inline void ATTR_PRINTF(3,4) verboselog( int n_level, const char *s_fmt, ... ); inline void psxwriteword( UINT32 *p_n_psxram, UINT32 n_address, UINT16 n_data ); @@ -228,119 +225,6 @@ static const UINT8 tt07[ 8 ] = { 0x80, 0x10, 0xf1, 0x03, 0xfa, 0x38, 0x3c, 0xfc static const UINT8 kn01[ 8 ] = { 0xf8, 0xe1, 0xe2, 0xfe, 0x3c, 0x30, 0x70, 0x80 }; /* brute forced */ static const UINT8 kn02[ 8 ] = { 0x01, 0x18, 0xe2, 0xfe, 0x3c, 0x30, 0x70, 0x80 }; /* brute forced */ -static const struct -{ - const char *s_name; - const UINT8 *p_n_mainsec; - const UINT8 *p_n_gamesec; -} zn_config_table[] = -{ - { "nbajamex", ac01, ac02 }, /* black screen */ - { "jdredd", ac01, ac02 }, /* OK */ - { "jdreddb", ac01, ac02 }, /* OK */ - { "primrag2", tw01, tw02 }, /* locks up when starting a game */ - { "hvnsgate", at01, at02 }, /* OK */ - { "ts2", cp01, cp02 }, /* OK */ - { "ts2a", cp01, cp02 }, /* OK */ - { "ts2j", cp01, cp02 }, /* OK */ - { "starglad", cp01, cp03 }, /* OK */ - { "stargladj",cp01, cp03 }, /* OK */ - { "sfex", cp01, cp04 }, /* OK */ - { "sfexa", cp01, cp04 }, /* OK */ - { "sfexj", cp01, cp04 }, /* OK */ - { "sfexu", cp01, cp04 }, /* OK */ - { "sfexp", cp01, cp04 }, /* OK */ - { "sfexpu1", cp01, cp04 }, /* OK */ - { "sfexpj", cp01, cp04 }, /* OK */ - { "sfexpj1", cp01, cp04 }, /* OK */ - { "glpracr", cp01, cp05 }, /* OK */ - { "glpracrj", cp01, cp05 }, /* OK */ - { "rvschool", cp10, cp06 }, /* OK */ - { "rvschoolu",cp10, cp06 }, /* OK */ - { "rvschoola",cp10, cp06 }, /* OK */ - { "jgakuen", cp10, cp06 }, /* OK */ - { "plsmaswd", cp10, cp07 }, /* OK */ - { "stargld2", cp10, cp07 }, /* OK */ - { "plsmaswda",cp10, cp07 }, /* OK */ - { "sfex2", cp10, cp08 }, /* OK ( random crashes on garuda ) */ - { "sfex2j", cp10, cp08 }, /* OK ( random crashes on garuda ) */ - { "sfex2a", cp10, cp08 }, /* OK ( random crashes on garuda ) */ - { "sfex2h", cp10, cp08 }, /* OK ( random crashes on garuda ) */ - { "techromn", cp10, cp09 }, /* OK */ - { "techromnu",cp10, cp09 }, /* OK */ - { "kikaioh", cp10, cp09 }, /* OK */ - { "tgmj", cp10, cp11 }, /* OK */ - { "sfex2p", cp10, cp12 }, /* OK */ - { "sfex2pa", cp10, cp12 }, /* OK */ - { "sfex2pj", cp10, cp12 }, /* OK */ - { "sfex2ph", cp10, cp12 }, /* OK */ - { "strider2", cp10, cp13 }, /* OK ( random crashes on bosses ) */ - { "strider2a",cp10, cp13 }, /* OK ( random crashes on bosses ) */ - { "shiryu2", cp10, cp13 }, /* OK ( random crashes on bosses ) */ - { "beastrzr", et01, et02 }, /* OK */ - { "bldyroar", et01, et02 }, /* OK */ - { "beastrzrb",et01, et02 }, /* OK */ - { "bldyror2", et01, et03 }, /* OK */ - { "bldyror2u",et01, et03 }, /* OK */ - { "bldyror2a",et01, et03 }, /* OK */ - { "bldyror2j",et01, et03 }, /* OK */ - { "bam2", et01, et05 }, - { "glpracr2", mg01, mg02 }, /* locks up when starting a game/entering test mode */ - { "glpracr2j",mg01, mg02 }, /* locks up when starting a game/entering test mode */ - { "glpracr2l",mg01, mg02 }, /* locks up when starting a game/entering test mode */ - { "cbaj", mg01, mg03 }, /* OK */ - { "shngmtkb", mg01, mg04 }, /* OK */ - { "doapp", mg01, mg05 }, /* OK */ - { "flamegun", mg01, mg06 }, /* OK */ - { "flamegunj",mg01, mg06 }, /* OK */ - { "lpadv", mg01, mg07 }, - { "glpracr3", mg01, mg08 }, - { "glpracr3j",mg01, mg08 }, - { "tondemo", mg01, mg09 }, /* OK */ - { "1on1gov", mg01, mg10 }, /* OK */ - { "brvblade", mg01, mg11 }, /* OK */ - { "brvbladeu", mg01, mg11 }, /* OK */ - { "brvbladea", mg01, mg11 }, /* OK */ - { "brvbladej", mg01, mg11 }, /* OK */ - { "tblkkuzu", mg01, mg12 }, /* OK */ - { "tecmowcm", mg01, mg13 }, /* OK */ - { "mfjump", mg01, mg14 }, /* OK */ - { "sfchamp", tt01, tt02 }, /* OK */ - { "sfchampo", tt01, tt02 }, /* OK */ - { "sfchampu", tt01, tt02 }, /* OK */ - { "sfchampj", tt01, tt02 }, /* OK */ - { "psyforce", tt01, tt03 }, /* OK */ - { "psyforcej",tt01, tt03 }, /* OK */ - { "psyforcex",tt01, tt03 }, /* OK */ - { "raystorm", tt01, tt04 }, /* OK */ - { "raystormo",tt01, tt04 }, /* OK */ - { "raystormu",tt01, tt04 }, /* OK */ - { "raystormj",tt01, tt04 }, /* OK */ - { "ftimpact", tt01, tt05 }, /* OK */ - { "ftimpactu",tt01, tt05 }, /* OK */ - { "ftimpactj",tt01, tt05 }, /* OK */ - { "ftimpcta", tt01, tt05 }, /* OK */ - { "mgcldate", tt01, tt06 }, /* OK */ - { "mgcldtex", tt01, tt06 }, /* OK */ - { "gdarius", tt01, tt07 }, /* OK */ - { "gdariusb", tt01, tt07 }, /* OK */ - { "gdarius2", tt01, tt07 }, /* OK */ - { "aerofgts", kn01, kn02 }, /* OK */ - { "sncwgltd", kn01, kn02 }, /* OK */ - /* 2009-10 FP: to avoid crash when running BIOS sets alone, I added the entries below. */ - /* Now we get "Error B930 - Cannot Find Program Rom". Is this the correct way to handle them? */ - { "acpsx", ac01, ac02 }, - { "atpsx", tw01, tw02 }, - { "atluspsx", at01, at02 }, - { "cpzn1", cp01, cp02 }, - { "cpzn2", cp01, cp02 }, - { "psarc95", et01, et02 }, - { "tps", mg01, mg02 }, - { "taitofx1", tt01, tt02 }, - { "vspsx", kn01, kn02 }, - { nullptr, nullptr, nullptr } -}; - READ8_MEMBER(zn_state::znsecsel_r) { verboselog(2, "znsecsel_r( %08x, %08x )\n", offset, mem_mask ); @@ -441,23 +325,6 @@ static ADDRESS_MAP_START( zn_map, AS_PROGRAM, 32, zn_state ) AM_RANGE(0x1fb20000, 0x1fb20007) AM_READ16(unknown_r, 0xffffffff) ADDRESS_MAP_END -void zn_state::driver_start() -{ - int n_game; - - n_game = 0; - while( zn_config_table[ n_game ].s_name != nullptr ) - { - if( strcmp( machine().system().name, zn_config_table[ n_game ].s_name ) == 0 ) - { - m_cat702_1->init( zn_config_table[ n_game ].p_n_mainsec ); - m_cat702_2->init( zn_config_table[ n_game ].p_n_gamesec ); - break; - } - n_game++; - } -} - static MACHINE_CONFIG_START( zn1_1mb_vram, zn_state ) /* basic machine hardware */ @@ -735,10 +602,23 @@ static MACHINE_CONFIG_DERIVED( coh1000c, zn1_1mb_vram ) MCFG_QSOUND_ADD("qsound", QSOUND_CLOCK) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) + + MCFG_DEVICE_MODIFY("cat702_1") + MCFG_CAT702_TRANSFORM_TABLE(cp01) + MCFG_DEVICE_MODIFY("cat702_2") + MCFG_CAT702_TRANSFORM_TABLE(cp02) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED( starglad, coh1000c ) + MCFG_DEVICE_MODIFY("cat702_2") + MCFG_CAT702_TRANSFORM_TABLE(cp03) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( glpracr, coh1000c ) MCFG_MACHINE_RESET_OVERRIDE(zn_state, glpracr) + + MCFG_DEVICE_MODIFY("cat702_2") + MCFG_CAT702_TRANSFORM_TABLE(cp05) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( coh1002c, zn1_2mb_vram ) @@ -755,6 +635,11 @@ static MACHINE_CONFIG_DERIVED( coh1002c, zn1_2mb_vram ) MCFG_QSOUND_ADD("qsound", QSOUND_CLOCK) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) + + MCFG_DEVICE_MODIFY("cat702_1") + MCFG_CAT702_TRANSFORM_TABLE(cp01) + MCFG_DEVICE_MODIFY("cat702_2") + MCFG_CAT702_TRANSFORM_TABLE(cp04) MACHINE_CONFIG_END /* @@ -912,6 +797,41 @@ static MACHINE_CONFIG_DERIVED(coh3002c, zn2) MCFG_QSOUND_ADD("qsound", QSOUND_CLOCK) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) + + MCFG_DEVICE_MODIFY("cat702_1") + MCFG_CAT702_TRANSFORM_TABLE(cp10) + MCFG_DEVICE_MODIFY("cat702_2") + MCFG_CAT702_TRANSFORM_TABLE(cp06) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED(plsmaswd, coh3002c) + MCFG_DEVICE_MODIFY("cat702_2") + MCFG_CAT702_TRANSFORM_TABLE(cp07) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED(sfex2, coh3002c) + MCFG_DEVICE_MODIFY("cat702_2") + MCFG_CAT702_TRANSFORM_TABLE(cp08) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED(techromn, coh3002c) + MCFG_DEVICE_MODIFY("cat702_2") + MCFG_CAT702_TRANSFORM_TABLE(cp09) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED(tgmj, coh3002c) + MCFG_DEVICE_MODIFY("cat702_2") + MCFG_CAT702_TRANSFORM_TABLE(cp11) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED(sfex2p, coh3002c) + MCFG_DEVICE_MODIFY("cat702_2") + MCFG_CAT702_TRANSFORM_TABLE(cp12) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED(strider2, coh3002c) + MCFG_DEVICE_MODIFY("cat702_2") + MCFG_CAT702_TRANSFORM_TABLE(cp13) MACHINE_CONFIG_END /* @@ -1201,6 +1121,21 @@ static MACHINE_CONFIG_DERIVED( coh1000ta, zn1_1mb_vram ) MCFG_DEVICE_ADD("tc0140syt", TC0140SYT, 0) MCFG_TC0140SYT_MASTER_CPU("maincpu") MCFG_TC0140SYT_SLAVE_CPU("audiocpu") + + MCFG_DEVICE_MODIFY("cat702_1") + MCFG_CAT702_TRANSFORM_TABLE(tt01) + MCFG_DEVICE_MODIFY("cat702_2") + MCFG_CAT702_TRANSFORM_TABLE(tt02) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED( psyforce, coh1000ta ) + MCFG_DEVICE_MODIFY("cat702_2") + MCFG_CAT702_TRANSFORM_TABLE(tt03) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED( mgcldate, coh1000ta ) + MCFG_DEVICE_MODIFY("cat702_2") + MCFG_CAT702_TRANSFORM_TABLE(tt06) MACHINE_CONFIG_END WRITE8_MEMBER(zn_state::fx1b_fram_w) @@ -1254,6 +1189,16 @@ static MACHINE_CONFIG_DERIVED(coh1000tb, zn1_1mb_vram) MCFG_SOUND_ROUTE(1, "rspeaker", 0.45) MCFG_FRAGMENT_ADD(taito_zoom_sound) + + MCFG_DEVICE_MODIFY("cat702_1") + MCFG_CAT702_TRANSFORM_TABLE(tt01) + MCFG_DEVICE_MODIFY("cat702_2") + MCFG_CAT702_TRANSFORM_TABLE(tt04) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED(ftimpact, coh1000tb) + MCFG_DEVICE_MODIFY("cat702_2") + MCFG_CAT702_TRANSFORM_TABLE(tt05) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED(coh1002tb, zn1_2mb_vram) @@ -1274,6 +1219,11 @@ static MACHINE_CONFIG_DERIVED(coh1002tb, zn1_2mb_vram) MCFG_SOUND_ROUTE(1, "rspeaker", 0.45) MCFG_FRAGMENT_ADD(taito_zoom_sound) + + MCFG_DEVICE_MODIFY("cat702_1") + MCFG_CAT702_TRANSFORM_TABLE(tt01) + MCFG_DEVICE_MODIFY("cat702_2") + MCFG_CAT702_TRANSFORM_TABLE(tt07) MACHINE_CONFIG_END /* @@ -1509,6 +1459,11 @@ static MACHINE_CONFIG_DERIVED( coh1000w, zn1_2mb_vram ) MCFG_ATA_INTERFACE_IRQ_HANDLER(DEVWRITELINE("maincpu:irq", psxirq_device, intin10)) MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 5, psx_dma_read_delegate( FUNC( zn_state::atpsx_dma_read ), (zn_state *) owner ) ) MCFG_PSX_DMA_CHANNEL_WRITE( "maincpu", 5, psx_dma_write_delegate( FUNC( zn_state::atpsx_dma_write ), (zn_state *) owner ) ) + + MCFG_DEVICE_MODIFY("cat702_1") + MCFG_CAT702_TRANSFORM_TABLE(tw01) + MCFG_DEVICE_MODIFY("cat702_2") + MCFG_CAT702_TRANSFORM_TABLE(tw02) MACHINE_CONFIG_END /* @@ -1706,6 +1661,23 @@ static MACHINE_CONFIG_DERIVED(coh1002e, zn1_2mb_vram) MCFG_SOUND_ADD("ymf", YMF271, XTAL_16_9344MHz) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) + + MCFG_DEVICE_MODIFY("cat702_1") + MCFG_CAT702_TRANSFORM_TABLE(et01) + MCFG_DEVICE_MODIFY("cat702_2") + MCFG_CAT702_TRANSFORM_TABLE(et02) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED(bldyror2, coh1002e) + MCFG_DEVICE_MODIFY("cat702_2") + MCFG_CAT702_TRANSFORM_TABLE(et03) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED(brvblade, coh1002e) + MCFG_DEVICE_MODIFY("cat702_1") + MCFG_CAT702_TRANSFORM_TABLE(mg01) + MCFG_DEVICE_MODIFY("cat702_2") + MCFG_CAT702_TRANSFORM_TABLE(mg11) MACHINE_CONFIG_END @@ -1825,6 +1797,11 @@ static MACHINE_CONFIG_DERIVED( bam2, zn1_2mb_vram ) MCFG_CPU_PROGRAM_MAP(bam2_map) MCFG_MACHINE_RESET_OVERRIDE(zn_state, bam2) + + MCFG_DEVICE_MODIFY("cat702_1") + MCFG_CAT702_TRANSFORM_TABLE(et01) + MCFG_DEVICE_MODIFY("cat702_2") + MCFG_CAT702_TRANSFORM_TABLE(et05) MACHINE_CONFIG_END /* @@ -2137,16 +2114,20 @@ static MACHINE_CONFIG_DERIVED( coh1000a, zn1_2mb_vram ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(coh1000a_map) + MCFG_DEVICE_MODIFY("cat702_1") + MCFG_CAT702_TRANSFORM_TABLE(ac01) + MCFG_DEVICE_MODIFY("cat702_2") + MCFG_CAT702_TRANSFORM_TABLE(ac02) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( nbajamex, zn1_2mb_vram ) +static MACHINE_CONFIG_DERIVED( nbajamex, coh1000a ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(nbajamex_map) MCFG_MACHINE_RESET_OVERRIDE(zn_state, nbajamex) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( jdredd, zn1_2mb_vram ) +static MACHINE_CONFIG_DERIVED( jdredd, coh1000a ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(jdredd_map) @@ -2325,6 +2306,11 @@ static MACHINE_CONFIG_DERIVED(coh1001l, zn1_2mb_vram) MCFG_YMZ280B_IRQ_HANDLER(INPUTLINE("audiocpu", 2)) MCFG_SOUND_ROUTE(0, "lspeaker", 0.35) MCFG_SOUND_ROUTE(1, "rspeaker", 0.35) + + MCFG_DEVICE_MODIFY("cat702_1") + MCFG_CAT702_TRANSFORM_TABLE(at01) + MCFG_DEVICE_MODIFY("cat702_2") + MCFG_CAT702_TRANSFORM_TABLE(at02) MACHINE_CONFIG_END /* @@ -2363,6 +2349,11 @@ static MACHINE_CONFIG_DERIVED( coh1002v, zn1_2mb_vram ) MCFG_CPU_PROGRAM_MAP(coh1002v_map) MCFG_MACHINE_RESET_OVERRIDE(zn_state, coh1002v) + + MCFG_DEVICE_MODIFY("cat702_1") + MCFG_CAT702_TRANSFORM_TABLE(kn01) + MCFG_DEVICE_MODIFY("cat702_2") + MCFG_CAT702_TRANSFORM_TABLE(kn02) MACHINE_CONFIG_END /* @@ -2546,6 +2537,61 @@ static MACHINE_CONFIG_DERIVED( coh1002m, zn1_2mb_vram ) MCFG_CPU_PROGRAM_MAP(coh1002m_map) MCFG_MACHINE_RESET_OVERRIDE(zn_state, coh1002m) + + MCFG_DEVICE_MODIFY("cat702_1") + MCFG_CAT702_TRANSFORM_TABLE(mg01) + MCFG_DEVICE_MODIFY("cat702_2") + MCFG_CAT702_TRANSFORM_TABLE(mg02) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED( shngmtkb, coh1002m ) + MCFG_DEVICE_MODIFY("cat702_2") + MCFG_CAT702_TRANSFORM_TABLE(mg04) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED( doapp, coh1002m ) + MCFG_DEVICE_MODIFY("cat702_2") + MCFG_CAT702_TRANSFORM_TABLE(mg05) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED( flamegun, coh1002m ) + MCFG_DEVICE_MODIFY("cat702_2") + MCFG_CAT702_TRANSFORM_TABLE(mg06) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED( lpadv, coh1002m ) + MCFG_DEVICE_MODIFY("cat702_2") + MCFG_CAT702_TRANSFORM_TABLE(mg07) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED( glpracr3, coh1002m ) + MCFG_DEVICE_MODIFY("cat702_2") + MCFG_CAT702_TRANSFORM_TABLE(mg08) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED( tondemo, coh1002m ) + MCFG_DEVICE_MODIFY("cat702_2") + MCFG_CAT702_TRANSFORM_TABLE(mg09) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED( 1on1gov, coh1002m ) + MCFG_DEVICE_MODIFY("cat702_2") + MCFG_CAT702_TRANSFORM_TABLE(mg10) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED( tblkkuzu, coh1002m ) + MCFG_DEVICE_MODIFY("cat702_2") + MCFG_CAT702_TRANSFORM_TABLE(mg12) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED( tecmowcm, coh1002m ) + MCFG_DEVICE_MODIFY("cat702_2") + MCFG_CAT702_TRANSFORM_TABLE(mg13) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED( mfjump, coh1002m ) + MCFG_DEVICE_MODIFY("cat702_2") + MCFG_CAT702_TRANSFORM_TABLE(mg14) MACHINE_CONFIG_END READ8_MEMBER(zn_state::cbaj_sound_main_status_r) @@ -2609,6 +2655,9 @@ static MACHINE_CONFIG_DERIVED( coh1002msnd, coh1002m ) MCFG_SOUND_ADD("ymz", YMZ280B, XTAL_16_9344MHz) MCFG_SOUND_ROUTE(0, "lspeaker", 0.35) MCFG_SOUND_ROUTE(1, "rspeaker", 0.35) + + MCFG_DEVICE_MODIFY("cat702_2") + MCFG_CAT702_TRANSFORM_TABLE(mg03) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( coh1002ml, coh1002m ) @@ -4832,8 +4881,8 @@ GAME( 1995, cpzn1, 0, coh1000c, zn, driver_device, 0, ROT0, "Capcom GAME( 1995, ts2, cpzn1, coh1000c, zn6b, driver_device, 0, ROT0, "Capcom / Takara", "Battle Arena Toshinden 2 (USA 951124)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1995, ts2a, ts2, coh1000c, zn6b, driver_device, 0, ROT0, "Capcom / Takara", "Battle Arena Toshinden 2 (USA 951124) Older", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1995, ts2j, ts2, coh1000c, zn6b, driver_device, 0, ROT0, "Capcom / Takara", "Battle Arena Toshinden 2 (Japan 951124)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1996, starglad, cpzn1, coh1000c, zn6b, driver_device, 0, ROT0, "Capcom", "Star Gladiator Episode I: Final Crusade (USA 960627)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1996, stargladj, starglad, coh1000c, zn6b, driver_device, 0, ROT0, "Capcom", "Star Gladiator Episode I: Final Crusade (Japan 960627)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1996, starglad, cpzn1, starglad, zn6b, driver_device, 0, ROT0, "Capcom", "Star Gladiator Episode I: Final Crusade (USA 960627)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1996, stargladj, starglad, starglad, zn6b, driver_device, 0, ROT0, "Capcom", "Star Gladiator Episode I: Final Crusade (Japan 960627)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1996, glpracr, cpzn1, glpracr, zn, driver_device, 0, ROT0, "Tecmo", "Gallop Racer (English Ver 10.17.K)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1996, glpracrj, glpracr, glpracr, zn, driver_device, 0, ROT0, "Tecmo", "Gallop Racer (Japanese Ver 9.01.12)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1996, sfex, cpzn1, coh1002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX (Euro 961219)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) @@ -4856,24 +4905,24 @@ GAME( 1997, rvschool, cpzn2, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom GAME( 1997, rvschoolu, rvschool, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom", "Rival Schools: United By Fate (USA 971117)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1997, rvschoola, rvschool, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom", "Rival Schools: United By Fate (Asia 971117)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1997, jgakuen, rvschool, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom", "Shiritsu Justice Gakuen: Legion of Heroes (Japan 971117)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, sfex2, cpzn2, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 (USA 980526)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, sfex2a, sfex2, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 (Asia 980312)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, sfex2h, sfex2, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 (Hispanic 980312)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, sfex2j, sfex2, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 (Japan 980312)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, plsmaswd, cpzn2, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom", "Plasma Sword: Nightmare of Bilstein (USA 980316)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, plsmaswda, plsmaswd, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom", "Plasma Sword: Nightmare of Bilstein (Asia 980316)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, stargld2, plsmaswd, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom", "Star Gladiator 2: Nightmare of Bilstein (Japan 980316)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, tgmj, cpzn2, coh3002c, zn4w, driver_device, 0, ROT0, "Arika / Capcom", "Tetris The Grand Master (Japan 980710)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, techromn, cpzn2, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom", "Tech Romancer (Euro 980914)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, techromnu, techromn, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom", "Tech Romancer (USA 980914)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, kikaioh, techromn, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom", "Choukou Senki Kikaioh (Japan 980914)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, sfex2p, cpzn2, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 Plus (USA 990611)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, sfex2pa, sfex2p, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 Plus (Asia 990611)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, sfex2ph, sfex2p, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 Plus (Hispanic 990611)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, sfex2pj, sfex2p, coh3002c, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 Plus (Japan 990611)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, strider2, cpzn2, coh3002c, zn, driver_device, 0, ROT0, "Capcom", "Strider 2 (USA 991213)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // random hangs / crashes -GAME( 1999, strider2a, strider2, coh3002c, zn, driver_device, 0, ROT0, "Capcom", "Strider 2 (Asia 991213)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) -GAME( 1999, shiryu2, strider2, coh3002c, zn, driver_device, 0, ROT0, "Capcom", "Strider Hiryu 2 (Japan 991213)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) +GAME( 1998, sfex2, cpzn2, sfex2, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 (USA 980526)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, sfex2a, sfex2, sfex2, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 (Asia 980312)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, sfex2h, sfex2, sfex2, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 (Hispanic 980312)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, sfex2j, sfex2, sfex2, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 (Japan 980312)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, plsmaswd, cpzn2, plsmaswd, zn6b, driver_device, 0, ROT0, "Capcom", "Plasma Sword: Nightmare of Bilstein (USA 980316)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, plsmaswda, plsmaswd, plsmaswd, zn6b, driver_device, 0, ROT0, "Capcom", "Plasma Sword: Nightmare of Bilstein (Asia 980316)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, stargld2, plsmaswd, plsmaswd, zn6b, driver_device, 0, ROT0, "Capcom", "Star Gladiator 2: Nightmare of Bilstein (Japan 980316)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, tgmj, cpzn2, tgmj, zn4w, driver_device, 0, ROT0, "Arika / Capcom", "Tetris The Grand Master (Japan 980710)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, techromn, cpzn2, techromn, zn6b, driver_device, 0, ROT0, "Capcom", "Tech Romancer (Euro 980914)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, techromnu, techromn, techromn, zn6b, driver_device, 0, ROT0, "Capcom", "Tech Romancer (USA 980914)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, kikaioh, techromn, techromn, zn6b, driver_device, 0, ROT0, "Capcom", "Choukou Senki Kikaioh (Japan 980914)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, sfex2p, cpzn2, sfex2p, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 Plus (USA 990611)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, sfex2pa, sfex2p, sfex2p, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 Plus (Asia 990611)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, sfex2ph, sfex2p, sfex2p, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 Plus (Hispanic 990611)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, sfex2pj, sfex2p, sfex2p, zn6b, driver_device, 0, ROT0, "Capcom / Arika", "Street Fighter EX2 Plus (Japan 990611)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, strider2, cpzn2, strider2, zn, driver_device, 0, ROT0, "Capcom", "Strider 2 (USA 991213)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // random hangs / crashes +GAME( 1999, strider2a, strider2, strider2, zn, driver_device, 0, ROT0, "Capcom", "Strider 2 (Asia 991213)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) +GAME( 1999, shiryu2, strider2, strider2, zn, driver_device, 0, ROT0, "Capcom", "Strider Hiryu 2 (Japan 991213)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* Atari */ @@ -4882,7 +4931,7 @@ GAME( 1999, shiryu2, strider2, coh3002c, zn, driver_device, 0, ROT0, "Capcom /* it in every zip file */ GAME( 1996, atpsx, 0, coh1000w, zn, driver_device, 0, ROT0, "Atari", "Atari PSX", MACHINE_IS_BIOS_ROOT ) -GAME( 1996, primrag2, atpsx, coh1000w, primrag2, driver_device, 0, ROT0, "Atari", "Primal Rage 2 (Ver 0.36a)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) +GAME( 1996, primrag2, atpsx, coh1000w, primrag2, driver_device, 0, ROT0, "Atari", "Primal Rage 2 (Ver 0.36a)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // locks up when starting a game /* Acclaim */ @@ -4902,22 +4951,22 @@ GAME( 1996, jdreddb, jdredd, jdredd, jdredd, driver_device, 0, ROT0, "Accla /* it in every zip file */ GAME( 1997, tps, 0, coh1002m, zn, driver_device, 0, ROT0, "Tecmo", "TPS", MACHINE_IS_BIOS_ROOT ) -GAME( 1997, glpracr2, tps, coh1002m, zn, driver_device, 0, ROT0, "Tecmo", "Gallop Racer 2 (USA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) +GAME( 1997, glpracr2, tps, coh1002m, zn, driver_device, 0, ROT0, "Tecmo", "Gallop Racer 2 (USA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // locks up when starting a game/entering test mode GAME( 1997, glpracr2j, glpracr2, coh1002m, zn, driver_device, 0, ROT0, "Tecmo", "Gallop Racer 2 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) GAME( 1997, glpracr2l, glpracr2, coh1002ml, zn, driver_device, 0, ROT0, "Tecmo", "Gallop Racer 2 Link HW (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) -GAME( 1998, doapp, tps, coh1002m, zn, driver_device, 0, ROT0, "Tecmo", "Dead Or Alive ++ (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, doapp, tps, doapp, zn, driver_device, 0, ROT0, "Tecmo", "Dead Or Alive ++ (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1998, cbaj, tps, coh1002msnd, zn, driver_device, 0, ROT0, "UEP Systems", "Cool Boarders Arcade Jam", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, shngmtkb, tps, coh1002m, zn, driver_device, 0, ROT0, "Sunsoft / Activision", "Shanghai Matekibuyuu", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, tondemo, tps, coh1002m, zn, driver_device, 0, ROT0, "Tecmo", "Tondemo Crisis (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, glpracr3, tps, coh1002m, zn, driver_device, 0, ROT0, "Tecmo", "Gallop Racer 3 (Export)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, glpracr3j, glpracr3, coh1002m, zn, driver_device, 0, ROT0, "Tecmo", "Gallop Racer 3 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, flamegun, tps, coh1002m, zn, driver_device, 0, ROT0, "Gaps Inc.", "Flame Gunner", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, flamegunj, flamegun, coh1002m, zn, driver_device, 0, ROT0, "Gaps Inc.", "Flame Gunner (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, lpadv, tps, coh1002m, zn, driver_device, 0, ROT0, "Amuse World", "Logic Pro Adventure (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 2000, tblkkuzu, tps, coh1002m, zn, driver_device, 0, ROT0, "Tamsoft / D3 Publisher", "The Block Kuzushi (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 2000, 1on1gov, tps, coh1002m, zn, driver_device, 0, ROT0, "Tecmo", "1 on 1 Government (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 2000, tecmowcm, tps, coh1002m, zn, driver_device, 0, ROT0, "Tecmo", "Tecmo World Cup Millennium (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 2001, mfjump, tps, coh1002m, zn, driver_device, 0, ROT0, "Tecmo", "Monster Farm Jump (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, shngmtkb, tps, shngmtkb, zn, driver_device, 0, ROT0, "Sunsoft / Activision", "Shanghai Matekibuyuu", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, tondemo, tps, tondemo, zn, driver_device, 0, ROT0, "Tecmo", "Tondemo Crisis (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, glpracr3, tps, glpracr3, zn, driver_device, 0, ROT0, "Tecmo", "Gallop Racer 3 (Export)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, glpracr3j, glpracr3, glpracr3, zn, driver_device, 0, ROT0, "Tecmo", "Gallop Racer 3 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, flamegun, tps, flamegun, zn, driver_device, 0, ROT0, "Gaps Inc.", "Flame Gunner", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, flamegunj, flamegun, flamegun, zn, driver_device, 0, ROT0, "Gaps Inc.", "Flame Gunner (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, lpadv, tps, lpadv, zn, driver_device, 0, ROT0, "Amuse World", "Logic Pro Adventure (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 2000, tblkkuzu, tps, tblkkuzu, zn, driver_device, 0, ROT0, "Tamsoft / D3 Publisher", "The Block Kuzushi (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 2000, 1on1gov, tps, 1on1gov, zn, driver_device, 0, ROT0, "Tecmo", "1 on 1 Government (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 2000, tecmowcm, tps, tecmowcm, zn, driver_device, 0, ROT0, "Tecmo", "Tecmo World Cup Millennium (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 2001, mfjump, tps, mfjump, zn, driver_device, 0, ROT0, "Tecmo", "Monster Farm Jump (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* Video System */ @@ -4940,20 +4989,20 @@ GAME( 1995, sfchamp, taitofx1, coh1000ta, zn, driver_device, 0, ROT0, "Taito", GAME( 1995, sfchampo, sfchamp, coh1000ta, zn, driver_device, 0, ROT0, "Taito", "Super Football Champ (Ver 2.4O)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1995, sfchampu, sfchamp, coh1000ta, zn, driver_device, 0, ROT0, "Taito", "Super Football Champ (Ver 2.4A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1995, sfchampj, sfchamp, coh1000ta, zn, driver_device, 0, ROT0, "Taito", "Super Football Champ (Ver 2.4J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1995, psyforce, taitofx1, coh1000ta, zn, driver_device, 0, ROT0, "Taito", "Psychic Force (Ver 2.4O)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1995, psyforcej, psyforce, coh1000ta, zn, driver_device, 0, ROT0, "Taito", "Psychic Force (Ver 2.4J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1995, psyforcex, psyforce, coh1000ta, zn, driver_device, 0, ROT0, "Taito", "Psychic Force EX (Ver 2.0J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1996, mgcldate, mgcldtex, coh1000ta, zn, driver_device, 0, ROT0, "Taito", "Magical Date / Magical Date - dokidoki kokuhaku daisakusen (Ver 2.02J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1997, mgcldtex, taitofx1, coh1000ta, zn, driver_device, 0, ROT0, "Taito", "Magical Date EX / Magical Date - sotsugyou kokuhaku daisakusen (Ver 2.01J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1995, psyforce, taitofx1, psyforce, zn, driver_device, 0, ROT0, "Taito", "Psychic Force (Ver 2.4O)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1995, psyforcej, psyforce, psyforce, zn, driver_device, 0, ROT0, "Taito", "Psychic Force (Ver 2.4J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1995, psyforcex, psyforce, psyforce, zn, driver_device, 0, ROT0, "Taito", "Psychic Force EX (Ver 2.0J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1996, mgcldate, mgcldtex, mgcldate, zn, driver_device, 0, ROT0, "Taito", "Magical Date / Magical Date - dokidoki kokuhaku daisakusen (Ver 2.02J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1997, mgcldtex, taitofx1, mgcldate, zn, driver_device, 0, ROT0, "Taito", "Magical Date EX / Magical Date - sotsugyou kokuhaku daisakusen (Ver 2.01J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1996, raystorm, taitofx1, coh1000tb, zn, zn_state, coh1000tb, ROT0, "Taito", "Ray Storm (Ver 2.06A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1996, raystormo, raystorm, coh1000tb, zn, zn_state, coh1000tb, ROT0, "Taito", "Ray Storm (Ver 2.05O)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1996, raystormu, raystorm, coh1000tb, zn, zn_state, coh1000tb, ROT0, "Taito", "Ray Storm (Ver 2.05A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1996, raystormj, raystorm, coh1000tb, zn, zn_state, coh1000tb, ROT0, "Taito", "Ray Storm (Ver 2.05J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1996, ftimpact, ftimpcta, coh1000tb, zn, zn_state, coh1000tb, ROT0, "Taito", "Fighters' Impact (Ver 2.02O)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1996, ftimpactu, ftimpcta, coh1000tb, zn, zn_state, coh1000tb, ROT0, "Taito", "Fighters' Impact (Ver 2.02A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1996, ftimpactj, ftimpcta, coh1000tb, zn, zn_state, coh1000tb, ROT0, "Taito", "Fighters' Impact (Ver 2.02J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1997, ftimpcta, taitofx1, coh1000tb, zn, zn_state, coh1000tb, ROT0, "Taito", "Fighters' Impact A (Ver 2.00J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1996, ftimpact, ftimpcta, ftimpact, zn, zn_state, coh1000tb, ROT0, "Taito", "Fighters' Impact (Ver 2.02O)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1996, ftimpactu, ftimpcta, ftimpact, zn, zn_state, coh1000tb, ROT0, "Taito", "Fighters' Impact (Ver 2.02A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1996, ftimpactj, ftimpcta, ftimpact, zn, zn_state, coh1000tb, ROT0, "Taito", "Fighters' Impact (Ver 2.02J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1997, ftimpcta, taitofx1, ftimpact, zn, zn_state, coh1000tb, ROT0, "Taito", "Fighters' Impact A (Ver 2.00J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1997, gdarius, gdarius2, coh1002tb, zn, zn_state, coh1000tb, ROT0, "Taito", "G-Darius (Ver 2.01J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1997, gdariusb, gdarius2, coh1002tb, zn, zn_state, coh1000tb, ROT0, "Taito", "G-Darius (Ver 2.02A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1997, gdarius2, taitofx1, coh1002tb, zn, zn_state, coh1000tb, ROT0, "Taito", "G-Darius Ver.2 (Ver 2.03J)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) @@ -4970,16 +5019,16 @@ GAME( 1997, bldyroar, beastrzr, coh1002e, zn, driver_device, 0, ROT0, "Eighti GAME( 1997, beastrzrb, beastrzr, coh1002e, zn, driver_device, 0, ROT0, "bootleg", "Beastorizer (USA bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* The region on these is determined from the NVRAM, it can't be changed from the test menu, it's pre-programmed */ -GAME( 1998, bldyror2, psarc95, coh1002e, zn6b, driver_device, 0, ROT0, "Eighting / Raizing", "Bloody Roar 2 (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, bldyror2u, bldyror2, coh1002e, zn6b, driver_device, 0, ROT0, "Eighting / Raizing", "Bloody Roar 2 (USA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, bldyror2a, bldyror2, coh1002e, zn6b, driver_device, 0, ROT0, "Eighting / Raizing", "Bloody Roar 2 (Asia)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1998, bldyror2j, bldyror2, coh1002e, zn6b, driver_device, 0, ROT0, "Eighting / Raizing", "Bloody Roar 2 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, bldyror2, psarc95, bldyror2, zn6b, driver_device, 0, ROT0, "Eighting / Raizing", "Bloody Roar 2 (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, bldyror2u, bldyror2, bldyror2, zn6b, driver_device, 0, ROT0, "Eighting / Raizing", "Bloody Roar 2 (USA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, bldyror2a, bldyror2, bldyror2, zn6b, driver_device, 0, ROT0, "Eighting / Raizing", "Bloody Roar 2 (Asia)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1998, bldyror2j, bldyror2, bldyror2, zn6b, driver_device, 0, ROT0, "Eighting / Raizing", "Bloody Roar 2 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* The region on these is determined from the NVRAM, it can't be changed from the test menu, it's pre-programmed */ -GAME( 2000, brvblade, tps, coh1002e, zn, driver_device, 0, ROT270, "Eighting / Raizing", "Brave Blade (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 2000, brvbladeu, brvblade, coh1002e, zn, driver_device, 0, ROT270, "Eighting / Raizing", "Brave Blade (USA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 2000, brvbladea, brvblade, coh1002e, zn, driver_device, 0, ROT270, "Eighting / Raizing", "Brave Blade (Asia)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 2000, brvbladej, brvblade, coh1002e, zn, driver_device, 0, ROT270, "Eighting / Raizing", "Brave Blade (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 2000, brvblade, tps, brvblade, zn, driver_device, 0, ROT270, "Eighting / Raizing", "Brave Blade (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 2000, brvbladeu, brvblade, brvblade, zn, driver_device, 0, ROT270, "Eighting / Raizing", "Brave Blade (USA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 2000, brvbladea, brvblade, brvblade, zn, driver_device, 0, ROT270, "Eighting / Raizing", "Brave Blade (Asia)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 2000, brvbladej, brvblade, brvblade, zn, driver_device, 0, ROT270, "Eighting / Raizing", "Brave Blade (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* Bust a Move 2 uses the PSARC95 bios and ET series security but the top board is completely different */ GAME( 1999, bam2, psarc95, bam2, zn, driver_device, 0, ROT0, "Metro / Enix / Namco", "Bust a Move 2 (Japanese ROM ver. 1999/07/17 10:00:00)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) diff --git a/src/mame/machine/cat702.cpp b/src/mame/machine/cat702.cpp index c02c4394ce1..70c8398befb 100644 --- a/src/mame/machine/cat702.cpp +++ b/src/mame/machine/cat702.cpp @@ -90,6 +90,7 @@ const device_type CAT702 = &device_creator<cat702_device>; cat702_device::cat702_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : device_t(mconfig, CAT702, "CAT702", tag, owner, clock, "cat702", __FILE__), + m_transform(nullptr), m_dataout_handler(*this) { } @@ -159,9 +160,9 @@ void cat702_device::apply_sbox(const UINT8 *sbox) m_state = r; } -void cat702_device::init(const UINT8 *transform) +void cat702_device::static_set_transform_table(device_t &device, const UINT8 *transform) { - m_transform = transform; + downcast<cat702_device &>(device).m_transform = transform; } WRITE_LINE_MEMBER(cat702_device::write_select) @@ -214,3 +215,9 @@ WRITE_LINE_MEMBER(cat702_device::write_datain) { m_datain = state; } + +void cat702_device::device_validity_check(validity_checker &valid) const +{ + if (m_transform == nullptr) + osd_printf_error("No transform table provided\n"); +} diff --git a/src/mame/machine/cat702.h b/src/mame/machine/cat702.h index 4b93865239f..a116283b1b1 100644 --- a/src/mame/machine/cat702.h +++ b/src/mame/machine/cat702.h @@ -14,6 +14,11 @@ extern const device_type CAT702; #define MCFG_CAT702_DATAOUT_HANDLER(_devcb) \ devcb = &cat702_device::set_dataout_handler(*device, DEVCB_##_devcb); +#define MCFG_CAT702_TRANSFORM_TABLE(_table) \ + cat702_device::static_set_transform_table(*device, _table); + +class validity_checker; + class cat702_device : public device_t { public: @@ -21,8 +26,7 @@ public: // static configuration helpers template<class _Object> static devcb_base &set_dataout_handler(device_t &device, _Object object) { return downcast<cat702_device &>(device).m_dataout_handler.set_callback(object); } - - void init(const UINT8 *transform); // TODO: region + static void static_set_transform_table(device_t &device, const UINT8 *transform); // TODO: region DECLARE_WRITE_LINE_MEMBER(write_select); DECLARE_WRITE_LINE_MEMBER(write_datain); @@ -30,6 +34,7 @@ public: protected: virtual void device_start() override; + virtual void device_validity_check(validity_checker &valid) const override; private: UINT8 compute_sbox_coef(int sel, int bit); |