summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author angelosa <salese_corp_ltd@email.it>2018-05-27 21:06:25 +0200
committer angelosa <salese_corp_ltd@email.it>2018-05-27 21:08:00 +0200
commit0c522d46f850063ae00d5055aa13cefb5fc11e49 (patch)
tree8518732db0cb39ec02999212b897c5a0e1bbf880
parent553ce07ee1e23d08a33f10d463d48fbc3f3abc35 (diff)
tatsumi.cpp: removed an ugly kludge in Round Up 5, fixes soft resets [Angelo Salese]
(Also demoted to not working for obvious reasons)
-rw-r--r--src/mame/drivers/tatsumi.cpp45
-rw-r--r--src/mame/includes/tatsumi.h1
-rw-r--r--src/mame/machine/tatsumi.cpp3
-rw-r--r--src/mame/video/tatsumi.cpp2
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;