From 0c522d46f850063ae00d5055aa13cefb5fc11e49 Mon Sep 17 00:00:00 2001 From: angelosa Date: Sun, 27 May 2018 21:06:25 +0200 Subject: tatsumi.cpp: removed an ugly kludge in Round Up 5, fixes soft resets [Angelo Salese] (Also demoted to not working for obvious reasons) --- src/mame/drivers/tatsumi.cpp | 45 ++++++++++++++++++++++++++------------------ src/mame/includes/tatsumi.h | 1 + src/mame/machine/tatsumi.cpp | 3 +++ src/mame/video/tatsumi.cpp | 2 +- 4 files changed, 32 insertions(+), 19 deletions(-) diff --git a/src/mame/drivers/tatsumi.cpp b/src/mame/drivers/tatsumi.cpp index badf319fe19..7c2f9102b76 100644 --- a/src/mame/drivers/tatsumi.cpp +++ b/src/mame/drivers/tatsumi.cpp @@ -11,23 +11,32 @@ a similar sprite chip (TZB215 on Apache 3, TZB315 on others). Other graphics (road, sky, bg/fg layers) all differ between games. - Todo: - Sprite rotation - Finish road layer (Round Up 5) - Implement road layer (Apache 3, Cycle Warriors) - BG layer(s) (Cycle Warriors) - BG layer (Round Up 5) - May be driven by missing VRAM data - Round Up 5 always boots with a coin inserted - Round Up 5 doesn't survive a reset - Dip switches - Various other things.. - Combine Big Fight & CycleWarriors video routines - currently each - game uses different sized tilemaps - these are probably software - controlled rather than hardwired, but I don't think either game - changes the size at runtime. - Big Fight/Cyclewarriors - misc graphics problems. - Cyclewarriors - test mode text does not appear as it needs a -256 Y scroll offset from somewhere. - + TODO: + - Sprite rotation + - Round Up 5: Finish road layer. + Tunnel sections are borderline unplayable, plus slopes are ugly to watch. + - Apache 3: road layer, has twelve rotation registers! + - Cycle Warriors: transparent road layer on sidelines, wrong mask_data? + - Missing BG layer (Round Up 5) - banked VRAM data from somewhere!? + - Round Up 5: always boots with a coin inserted + - (fixed) Round Up 5 doesn't survive a reset + - (fixed?) Cycle Warriors: test mode text does not appear as it needs a -256 Y + scroll offset from somewhere. + - Cycle Warriors: sometimes it draws garbage on character select or even hangs + depending on where player coins up, most likely caused by miscommunication with sub CPU? + - Cycle Warriors: ranking screen is completely wrong; + - Cycle Warriors: ugly orange color on character select and briefing screens, layer disable? + - Combine Big Fight & CycleWarriors video routines - currently each + game uses different sized tilemaps - these are probably software + controlled rather than hardwired, but I don't think either game + changes the size at runtime. + - Apache 3 (Kana): wrong colors for most sprites in city stage (buildings/trees), + checkable in attract mode; + - Split these games into individual drivers, write new devices for video routines. + - Dip switches + - Various other things.. + + reference of bigfight : https://youtu.be/aUUoUCr6yhk Emulation by Bryan McPhail, mish@tendril.co.uk @@ -1494,7 +1503,7 @@ void cyclwarr_state::init_cyclwarr() /* ** 1987 grayout - Gray Out (not dumped yet) */ GAME( 1988, apache3, 0, apache3, apache3, apache3_state, init_apache3, ROT0, "Tatsumi", "Apache 3", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) GAME( 1988, apache3a, apache3, apache3, apache3, apache3_state, init_apache3, ROT0, "Tatsumi (Kana Corporation license)", "Apache 3 (Kana Corporation license)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) -GAMEL(1989, roundup5, 0, roundup5, roundup5, roundup5_state, init_roundup5, ROT0, "Tatsumi", "Round Up 5 - Super Delta Force", MACHINE_IMPERFECT_GRAPHICS, layout_roundup5 ) +GAMEL(1989, roundup5, 0, roundup5, roundup5, roundup5_state, init_roundup5, ROT0, "Tatsumi", "Round Up 5 - Super Delta Force", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING, layout_roundup5 ) GAME( 1991, cyclwarr, 0, cyclwarr, cyclwarr, cyclwarr_state, init_cyclwarr, ROT0, "Tatsumi", "Cycle Warriors (rev C)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) // Rev C & B CPU code GAME( 1991, cyclwarra, cyclwarr, cyclwarr, cyclwarb, cyclwarr_state, init_cyclwarr, ROT0, "Tatsumi", "Cycle Warriors (rev B)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) // Rev B & A CPU code GAME( 1992, bigfight, 0, bigfight, bigfight, cyclwarr_state, init_cyclwarr, ROT0, "Tatsumi", "Big Fight - Big Trouble In The Atlantic Ocean", MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/includes/tatsumi.h b/src/mame/includes/tatsumi.h index 186ed7d7029..7e8b9bf6766 100644 --- a/src/mame/includes/tatsumi.h +++ b/src/mame/includes/tatsumi.h @@ -152,6 +152,7 @@ public: void roundup5_68000_map(address_map &map); void roundup5_v30_map(address_map &map); void roundup5_z80_map(address_map &map); + private: void draw_road(bitmap_rgb32 &bitmap, const rectangle &cliprect, bitmap_ind8 &shadow_bitmap); diff --git a/src/mame/machine/tatsumi.cpp b/src/mame/machine/tatsumi.cpp index e861d47a2bb..e044a011c17 100644 --- a/src/mame/machine/tatsumi.cpp +++ b/src/mame/machine/tatsumi.cpp @@ -265,7 +265,9 @@ READ16_MEMBER(tatsumi_state::tatsumi_v30_68000_r) /* Read from 68k RAM */ if ((m_control_word&0x1f)==0x18) { + #ifdef UNUSED_FUNCTION // hack to make roundup 5 boot + // doesn't seem necessary anymore, left for reference if (m_maincpu->pc()==0xec575) { uint8_t *dst = m_mainregion->base(); @@ -279,6 +281,7 @@ READ16_MEMBER(tatsumi_state::tatsumi_v30_68000_r) dst[BYTE_XOR_LE(0xfc524)]=0x46; dst[BYTE_XOR_LE(0xfc525)]=0x46; } + #endif return m_68k_ram[offset & 0x1fff]; } diff --git a/src/mame/video/tatsumi.cpp b/src/mame/video/tatsumi.cpp index 3c2e8931a4a..ebb58068256 100644 --- a/src/mame/video/tatsumi.cpp +++ b/src/mame/video/tatsumi.cpp @@ -1009,7 +1009,7 @@ uint32_t apache3_state::screen_update_apache3(screen_device &screen, bitmap_rgb3 bitmap.fill(m_palette->pen(0), cliprect); draw_sky(bitmap, cliprect, 256, m_apache3_rotate_ctrl[1]); -// draw_ground(machine(), bitmap, cliprect); +// draw_ground(bitmap, cliprect); draw_sprites(bitmap,cliprect,0, (m_sprite_control_ram[0x20]&0x1000) ? 0x1000 : 0); m_tx_layer->draw(screen, bitmap, cliprect, 0,0); return 0; -- cgit v1.2.3