tatsumi.cpp: removed an ugly kludge in Round Up 5, fixes soft resets [Angelo Salese]

(Also demoted to not working for obvious reasons)
This commit is contained in:
angelosa 2018-05-27 21:06:25 +02:00
parent 553ce07ee1
commit 0c522d46f8
4 changed files with 31 additions and 18 deletions

View File

@ -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 )

View File

@ -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);

View File

@ -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];
}

View File

@ -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;