diff --git a/src/mame/drivers/seta2.cpp b/src/mame/drivers/seta2.cpp index 606c3053991..671cfbf7a20 100644 --- a/src/mame/drivers/seta2.cpp +++ b/src/mame/drivers/seta2.cpp @@ -10,7 +10,7 @@ CPU : TMP68301* or ColdFire + H8/3007 + PIC12C508 (for EVA2 & EVA3 PCBs) -Video : DX-101 +Video : DX-101 or X1-020 (for P0-113A & P0-121A PCBs, compatible?) DX-102 x3 Sound : X1-010 @@ -55,6 +55,10 @@ TODO: - Fix some graphics imperfections (e.g. color depth selection, "tilemap" sprites) [all done? - NS] - I added a kludge involving a -0x10 yoffset, this fixes the lifeline in myangel. I didn't find a better way to do it without breaking pzlbowl's title screen. +- 1 rightmost pixel columns are not drawn when zoomed + +gundamex: +- slowdowns, music tempo is incorrect mj4simai: - test mode doesn't work correctly, the grid is ok but when you press a key to go to the @@ -2281,7 +2285,7 @@ INTERRUPT_GEN_MEMBER(seta2_state::samshoot_interrupt) void seta2_state::seta2(machine_config &config) { - TMP68301(config, m_maincpu, XTAL(50'000'000)/3); // !! TMP68301 !! + TMP68301(config, m_maincpu, XTAL(50'000'000)/3); // Verified on some PCBs m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::mj4simai_map); m_maincpu->set_vblank_int("screen", FUNC(seta2_state::seta2_interrupt)); @@ -2304,16 +2308,30 @@ void seta2_state::seta2(machine_config &config) // sound hardware SPEAKER(config, "mono").front_center(); - x1_010_device &x1snd(X1_010(config, "x1snd", XTAL(50'000'000)/3)); // clock? + x1_010_device &x1snd(X1_010(config, "x1snd", XTAL(50'000'000)/3)); // Verified on some PCBs x1snd.add_route(ALL_OUTPUTS, "mono", 1.0); x1snd.set_addrmap(0, &seta2_state::x1_map); } +/* + P0-113A PCB has different sound/cpu input clock (32.53047MHz / 2, common input clock is 50MHz / 3) + and/or some PCB variant has uses this input clock? + reference: + https://youtu.be/6f-znVzcrmg, https://youtu.be/zJi_d463UQE (gundamex) + https://youtu.be/Ung9XeLisV0 (grdiansa) +*/ +void seta2_state::seta2_32m(machine_config &config) +{ + m_maincpu->set_clock(XTAL(32'530'470)/2); + subdevice("x1snd")->set_clock(XTAL(32'530'470)/2); +} + + void seta2_state::gundamex(machine_config &config) { seta2(config); - m_maincpu->set_clock(XTAL(32'530'470)/2); // verified + seta2_32m(config); m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::gundamex_map); downcast(*m_maincpu).in_parallel_callback().set(FUNC(seta2_state::gundamex_eeprom_r)); @@ -2323,21 +2341,24 @@ void seta2_state::gundamex(machine_config &config) // video hardware m_screen->set_visarea(0x00, 0x180-1, 0x000, 0x0e0-1); - - subdevice("x1snd")->set_clock(XTAL(32'530'470)/2); // verified; reference : https://youtu.be/6f-znVzcrmg } - +// run in P-FG01-1 PCB, uses common input clock for sound/cpu - 32.53047MHz XTAL not populated +// reference: https://youtu.be/qj-TyKyAAVY void seta2_state::grdians(machine_config &config) { seta2(config); - m_maincpu->set_clock(XTAL(32'530'470)/2); // verified m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::grdians_map); // video hardware m_screen->set_visarea(0x00, 0x130-1, 0x00, 0xe8 -1); +} - subdevice("x1snd")->set_clock(XTAL(32'530'470)/2); // verified; reference : https://youtu.be/Ung9XeLisV0 +// run in P0-113A PCB, different sound/cpu input clock compared to P-FG01-1 PCB, same as gundamex? +void seta2_state::grdiansa(machine_config &config) +{ + grdians(config); + seta2_32m(config); } @@ -4385,7 +4406,7 @@ ROM_END GAME( 1994, gundamex, 0, gundamex, gundamex, seta2_state, empty_init, ROT0, "Banpresto", "Mobile Suit Gundam EX Revue", 0 ) GAME( 1995, grdians, 0, grdians, grdians, seta2_state, empty_init, ROT0, "Winkysoft (Banpresto license)", "Guardians / Denjin Makai II (P-FG01-1 PCB)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, grdiansa, grdians, grdians, grdians, seta2_state, empty_init, ROT0, "Winkysoft (Banpresto license)", "Guardians / Denjin Makai II (P0-113A PCB)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, grdiansa, grdians, grdiansa, grdians, seta2_state, empty_init, ROT0, "Winkysoft (Banpresto license)", "Guardians / Denjin Makai II (P0-113A PCB)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) GAME( 1996, mj4simai, 0, seta2, mj4simai, mj4simai_state, empty_init, ROT0, "Maboroshi Ware", "Wakakusamonogatari Mahjong Yonshimai (Japan)", MACHINE_NO_COCKTAIL ) diff --git a/src/mame/includes/seta2.h b/src/mame/includes/seta2.h index 26d90f5c10f..cfc712d7a3b 100644 --- a/src/mame/includes/seta2.h +++ b/src/mame/includes/seta2.h @@ -43,7 +43,9 @@ public: { } void seta2(machine_config &config); + void seta2_32m(machine_config &config); void grdians(machine_config &config); + void grdiansa(machine_config &config); void myangel(machine_config &config); void penbros(machine_config &config); void pzlbowl(machine_config &config); @@ -58,6 +60,8 @@ public: void init_namcostr(); protected: + virtual void machine_start() override; + virtual void video_start() override; DECLARE_WRITE8_MEMBER(grdians_lockout_w); @@ -112,9 +116,6 @@ protected: void telpacfl_map(address_map &map); void x1_map(address_map &map); - virtual void machine_start() override; - virtual void video_start() override; - required_device m_maincpu; optional_device m_sub; required_device m_gfxdecode; diff --git a/src/mame/video/seta2.cpp b/src/mame/video/seta2.cpp index 4243a28bb4c..0151dc27abf 100644 --- a/src/mame/video/seta2.cpp +++ b/src/mame/video/seta2.cpp @@ -95,8 +95,8 @@ Offset: Bits: Value: - 0/2/4/6 Horizontal: Sync, Blank, DSPdot, Cycle (same as ssv.c?) - 8/a/c/e Vertical : Sync, Blank, DSPdot, Cycle (same as ssv.c?) + 0/2/4/6 Horizontal: Sync, Blank, DSPdot, Cycle (same as ssv.cpp?) + 8/a/c/e Vertical : Sync, Blank, DSPdot, Cycle (same as ssv.cpp?) 10 Offxet X low bits (sub pixels) 12 Offset X high bits (pixels)