Added cheap hack for Buriki One coin insertion, game is somehow playable with many gfx bugs

This commit is contained in:
Angelo Salese 2013-12-11 00:50:01 +00:00
parent a0ae2af969
commit 973fcfe671
2 changed files with 39 additions and 15 deletions

View File

@ -637,6 +637,14 @@ WRITE32_MEMBER(hng64_state::hng64_sysregs_w)
/* Fatal Fury Wild Ambition / Buriki One */ /* Fatal Fury Wild Ambition / Buriki One */
READ32_MEMBER(hng64_state::fight_io_r) READ32_MEMBER(hng64_state::fight_io_r)
{ {
/*
TODO: reads to i/o but coins doesn't work? Let's put a cheap hack for now
*/
if(ioport("SYSTEM")->read() & 0x00030000 && m_mcu_type == BURIKI_MCU)
{
space.write_byte(0xf3ce4, 1);
}
switch (offset*4) switch (offset*4)
{ {
case 0x000: return 0x00000400; case 0x000: return 0x00000400;
@ -765,7 +773,8 @@ READ32_MEMBER(hng64_state::hng64_dualport_r)
switch (m_mcu_type) switch (m_mcu_type)
{ {
case FIGHT_MCU: return fight_io_r(space, offset,0xffffffff); case FIGHT_MCU:
case BURIKI_MCU: return fight_io_r(space, offset,0xffffffff);
case SHOOT_MCU: return shoot_io_r(space, offset,0xffffffff); case SHOOT_MCU: return shoot_io_r(space, offset,0xffffffff);
case RACING_MCU: return racing_io_r(space, offset,0xffffffff); case RACING_MCU: return racing_io_r(space, offset,0xffffffff);
case SAMSHO_MCU: return samsho_io_r(space, offset,0xffffffff); case SAMSHO_MCU: return samsho_io_r(space, offset,0xffffffff);
@ -802,12 +811,10 @@ READ32_MEMBER(hng64_state::hng64_3d_1_r)
return m_3d_1[offset]; return m_3d_1[offset];
} }
#ifdef UNUSED_FUNCTION
WRITE32_MEMBER(hng64_state::hng64_3d_1_w) WRITE32_MEMBER(hng64_state::hng64_3d_1_w)
{ {
fatalerror("WRITE32_HANDLER( hng64_3d_1_w )\n"); COMBINE_DATA (&m_3d_1[offset]);
} }
#endif
READ32_MEMBER(hng64_state::hng64_3d_2_r) READ32_MEMBER(hng64_state::hng64_3d_2_r)
{ {
@ -816,7 +823,6 @@ READ32_MEMBER(hng64_state::hng64_3d_2_r)
WRITE32_MEMBER(hng64_state::hng64_3d_2_w) WRITE32_MEMBER(hng64_state::hng64_3d_2_w)
{ {
COMBINE_DATA (&m_3d_1[offset]);
COMBINE_DATA (&m_3d_2[offset]); COMBINE_DATA (&m_3d_2[offset]);
} }
@ -889,7 +895,9 @@ WRITE32_MEMBER(hng64_state::dl_upload_w)
WRITE32_MEMBER(hng64_state::dl_control_w) // This handles framebuffers WRITE32_MEMBER(hng64_state::dl_control_w) // This handles framebuffers
{ {
if(data & 2) // clear current buffer if(data & 2) // clear current buffer
{
clear3d(); clear3d();
}
// if(data & 1) // swap buffers // if(data & 1) // swap buffers
@ -944,7 +952,10 @@ READ32_MEMBER(hng64_state::tcram_r)
} }
/* Some games (namely sams64 after the title screen) tests bit 15 of this to be high, /* Some games (namely sams64 after the title screen) tests bit 15 of this to be high,
unknown purpose (vblank? related to the display list?). */ unknown purpose (vblank? related to the display list?).
bit 1 needs to be off, otherwise Fatal Fury WA locks up (FIFO full?)
*/
READ32_MEMBER(hng64_state::unk_vreg_r) READ32_MEMBER(hng64_state::unk_vreg_r)
{ {
return ++m_unk_vreg_toggle; return ++m_unk_vreg_toggle;
@ -1161,13 +1172,13 @@ static ADDRESS_MAP_START( hng_map, AS_PROGRAM, 32, hng64_state )
AM_RANGE(0x20200000, 0x20203fff) AM_RAM_WRITE(hng64_pal_w) AM_SHARE("paletteram") AM_RANGE(0x20200000, 0x20203fff) AM_RAM_WRITE(hng64_pal_w) AM_SHARE("paletteram")
AM_RANGE(0x20208000, 0x2020805f) AM_READWRITE(tcram_r, tcram_w) AM_SHARE("tcram") // Transition Control AM_RANGE(0x20208000, 0x2020805f) AM_READWRITE(tcram_r, tcram_w) AM_SHARE("tcram") // Transition Control
AM_RANGE(0x20300000, 0x203001ff) AM_RAM_WRITE(dl_w) AM_SHARE("dl") // 3d Display List AM_RANGE(0x20300000, 0x203001ff) AM_RAM_WRITE(dl_w) AM_SHARE("dl") // 3d Display List
AM_RANGE(0x20300200, 0x20300213) AM_WRITE(dl_upload_w) // 3d Display List Upload AM_RANGE(0x20300200, 0x20300203) AM_WRITE(dl_upload_w) // 3d Display List Upload
AM_RANGE(0x20300214, 0x20300217) AM_WRITE(dl_control_w) AM_RANGE(0x20300214, 0x20300217) AM_WRITE(dl_control_w)
AM_RANGE(0x20300218, 0x2030021b) AM_READ(unk_vreg_r) AM_RANGE(0x20300218, 0x2030021b) AM_READ(unk_vreg_r)
// 3d? // 3d?
AM_RANGE(0x30000000, 0x3000002f) AM_RAM AM_SHARE("3dregs") AM_RANGE(0x30000000, 0x3000002f) AM_RAM AM_SHARE("3dregs")
AM_RANGE(0x30100000, 0x3015ffff) AM_READWRITE(hng64_3d_1_r, hng64_3d_2_w) AM_SHARE("3d_1") // 3D Display Buffer A AM_RANGE(0x30100000, 0x3015ffff) AM_READWRITE(hng64_3d_1_r, hng64_3d_1_w) AM_SHARE("3d_1") // 3D Display Buffer A
AM_RANGE(0x30200000, 0x3025ffff) AM_READWRITE(hng64_3d_2_r, hng64_3d_2_w) AM_SHARE("3d_2") // 3D Display Buffer B AM_RANGE(0x30200000, 0x3025ffff) AM_READWRITE(hng64_3d_2_r, hng64_3d_2_w) AM_SHARE("3d_2") // 3D Display Buffer B
// Sound // Sound
@ -1631,6 +1642,12 @@ DRIVER_INIT_MEMBER(hng64_state,fatfurwa)
m_mcu_type = FIGHT_MCU; m_mcu_type = FIGHT_MCU;
} }
DRIVER_INIT_MEMBER(hng64_state,buriki)
{
DRIVER_INIT_CALL(hng64_fght);
m_mcu_type = BURIKI_MCU;
}
DRIVER_INIT_MEMBER(hng64_state,ss64) DRIVER_INIT_MEMBER(hng64_state,ss64)
{ {
DRIVER_INIT_CALL(hng64_fght); DRIVER_INIT_CALL(hng64_fght);
@ -2263,4 +2280,4 @@ GAME( 1998, xrally, hng64, hng64, hng64, hng64_state, hng64_race, ROT0, "SN
GAME( 1998, bbust2, hng64, hng64, bbust2, hng64_state, hng64_shoot, ROT0, "SNK", "Beast Busters 2nd Nightmare", GAME_NOT_WORKING|GAME_NO_SOUND ) /* 004 */ GAME( 1998, bbust2, hng64, hng64, bbust2, hng64_state, hng64_shoot, ROT0, "SNK", "Beast Busters 2nd Nightmare", GAME_NOT_WORKING|GAME_NO_SOUND ) /* 004 */
GAME( 1998, sams64_2, hng64, hng64, hng64, hng64_state, ss64, ROT0, "SNK", "Samurai Shodown: Warrior's Rage / Samurai Spirits 2: Asura Zanmaden", GAME_NOT_WORKING|GAME_NO_SOUND ) /* 005 */ GAME( 1998, sams64_2, hng64, hng64, hng64, hng64_state, ss64, ROT0, "SNK", "Samurai Shodown: Warrior's Rage / Samurai Spirits 2: Asura Zanmaden", GAME_NOT_WORKING|GAME_NO_SOUND ) /* 005 */
GAME( 1998, fatfurwa, hng64, hng64, hng64, hng64_state, fatfurwa, ROT0, "SNK", "Fatal Fury: Wild Ambition (rev.A)", GAME_NOT_WORKING|GAME_NO_SOUND ) /* 006 */ GAME( 1998, fatfurwa, hng64, hng64, hng64, hng64_state, fatfurwa, ROT0, "SNK", "Fatal Fury: Wild Ambition (rev.A)", GAME_NOT_WORKING|GAME_NO_SOUND ) /* 006 */
GAME( 1999, buriki, hng64, hng64, hng64, hng64_state, fatfurwa, ROT0, "SNK", "Buriki One (rev.B)", GAME_NOT_WORKING|GAME_NO_SOUND ) /* 007 */ GAME( 1999, buriki, hng64, hng64, hng64, hng64_state, buriki, ROT0, "SNK", "Buriki One (rev.B)", GAME_NOT_WORKING|GAME_NO_SOUND ) /* 007 */

View File

@ -1,9 +1,15 @@
#include "machine/msm6242.h" #include "machine/msm6242.h"
#define FIGHT_MCU 1 enum
#define SHOOT_MCU 2 {
#define RACING_MCU 3 FIGHT_MCU = 1,
#define SAMSHO_MCU 4 SHOOT_MCU,
RACING_MCU,
SAMSHO_MCU,
BURIKI_MCU
};
class hng64_state : public driver_device class hng64_state : public driver_device
{ {
@ -140,6 +146,7 @@ public:
DECLARE_WRITE32_MEMBER(hng64_dualport_w); DECLARE_WRITE32_MEMBER(hng64_dualport_w);
DECLARE_READ32_MEMBER(hng64_3d_1_r); DECLARE_READ32_MEMBER(hng64_3d_1_r);
DECLARE_READ32_MEMBER(hng64_3d_2_r); DECLARE_READ32_MEMBER(hng64_3d_2_r);
DECLARE_WRITE32_MEMBER(hng64_3d_1_w);
DECLARE_WRITE32_MEMBER(hng64_3d_2_w); DECLARE_WRITE32_MEMBER(hng64_3d_2_w);
DECLARE_WRITE32_MEMBER(dl_w); DECLARE_WRITE32_MEMBER(dl_w);
DECLARE_READ32_MEMBER(dl_r); DECLARE_READ32_MEMBER(dl_r);
@ -160,7 +167,6 @@ public:
DECLARE_WRITE32_MEMBER(hng64_sprite_clear_even_w); DECLARE_WRITE32_MEMBER(hng64_sprite_clear_even_w);
DECLARE_WRITE32_MEMBER(hng64_sprite_clear_odd_w); DECLARE_WRITE32_MEMBER(hng64_sprite_clear_odd_w);
DECLARE_WRITE32_MEMBER(trap_write); DECLARE_WRITE32_MEMBER(trap_write);
DECLARE_WRITE32_MEMBER(hng64_3d_1_w);
DECLARE_WRITE32_MEMBER(activate_3d_buffer); DECLARE_WRITE32_MEMBER(activate_3d_buffer);
DECLARE_READ8_MEMBER(hng64_comm_shared_r); DECLARE_READ8_MEMBER(hng64_comm_shared_r);
DECLARE_WRITE8_MEMBER(hng64_comm_shared_w); DECLARE_WRITE8_MEMBER(hng64_comm_shared_w);
@ -171,6 +177,7 @@ public:
DECLARE_WRITE8_MEMBER(hng64_comm_mmu_w); DECLARE_WRITE8_MEMBER(hng64_comm_mmu_w);
DECLARE_DRIVER_INIT(hng64_race); DECLARE_DRIVER_INIT(hng64_race);
DECLARE_DRIVER_INIT(fatfurwa); DECLARE_DRIVER_INIT(fatfurwa);
DECLARE_DRIVER_INIT(buriki);
DECLARE_DRIVER_INIT(hng64); DECLARE_DRIVER_INIT(hng64);
DECLARE_DRIVER_INIT(hng64_shoot); DECLARE_DRIVER_INIT(hng64_shoot);
DECLARE_DRIVER_INIT(ss64); DECLARE_DRIVER_INIT(ss64);