summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/firebeat.c
diff options
context:
space:
mode:
author R. Belmont <rb6502@users.noreply.github.com>2012-11-18 15:15:04 +0000
committer R. Belmont <rb6502@users.noreply.github.com>2012-11-18 15:15:04 +0000
commit004b5f52fa25e39ecd893aaad72289b4946a35ef (patch)
tree5195fe2d0aa94af3c0e63c80f288c1777bc47c16 /src/mame/drivers/firebeat.c
parentd0282eec2ad625a6474a0045390a00f41faf843f (diff)
firebeat: temporary hack to switch display lists correctly for the ParaParaParadise games (nw)
Diffstat (limited to 'src/mame/drivers/firebeat.c')
-rw-r--r--src/mame/drivers/firebeat.c28
1 files changed, 26 insertions, 2 deletions
diff --git a/src/mame/drivers/firebeat.c b/src/mame/drivers/firebeat.c
index f17dece379b..1fc5d456b7f 100644
--- a/src/mame/drivers/firebeat.c
+++ b/src/mame/drivers/firebeat.c
@@ -126,7 +126,7 @@
at any point during the frame. It's mainly used to call display lists, which is where
the display list addresses come from. Some games use it to send other commands, so
it appears to be a 4-dword FIFO or something along those lines.
-*/
+*/
#include "emu.h"
#include "cpu/m68000/m68000.h"
@@ -729,7 +729,29 @@ static void GCU_w(running_machine &machine, int chip, UINT32 offset, UINT32 data
break;
}
- case 0x40: /* ??? */
+ case 0x40: /* framebuffer config */
+ // HACK: switch display lists at the right times for the ParaParaParadise games until we
+ // do the video emulation properly
+ if (mame_strnicmp(machine.system().name, "pp", 2) == 0)
+ {
+ switch (data)
+ {
+ case 0x00080000: // post
+ state->m_layer = 0;
+ break;
+
+ case 0x00008400: // startup tests
+ if (state->m_layer != 2)
+ {
+ state->m_layer = 1;
+ }
+ break;
+
+ case 0x00068400: // game & svc menu
+ state->m_layer = 2;
+ break;
+ }
+ }
break;
//case 0x44: /* ??? */
@@ -2014,6 +2036,8 @@ MACHINE_RESET_MEMBER(firebeat_state,firebeat)
sound[i] = m_flash[1]->read(i);
sound[i+0x200000] = m_flash[2]->read(i);
}
+
+ m_layer = 0;
}
const rtc65271_interface firebeat_rtc =