summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/namcos23.c
diff options
context:
space:
mode:
author Michaël Banaan Ananas <happppp@users.noreply.github.com>2012-10-24 20:51:40 +0000
committer Michaël Banaan Ananas <happppp@users.noreply.github.com>2012-10-24 20:51:40 +0000
commit3d8dcb86640e010a16d8898c688046cdea7360e3 (patch)
treed1cfb09e0198956eaf1088194508970bcd45061a /src/mame/drivers/namcos23.c
parentd72039d0e2c6d50a7f19726efc23835467ddc821 (diff)
some notes + reverted recent change to c361_r (was getting slowdowns in ram checks)
Diffstat (limited to 'src/mame/drivers/namcos23.c')
-rw-r--r--src/mame/drivers/namcos23.c24
1 files changed, 17 insertions, 7 deletions
diff --git a/src/mame/drivers/namcos23.c b/src/mame/drivers/namcos23.c
index 12e5bbcf170..528fb2a08a5 100644
--- a/src/mame/drivers/namcos23.c
+++ b/src/mame/drivers/namcos23.c
@@ -1238,11 +1238,13 @@ Notes:
#define S23_HSYNC (16666150)
#define S23_MODECLOCK (130205)
-#define MAIN_VBLANK_IRQ 1
-#define MAIN_C361_IRQ 2
-#define MAIN_SUBCPU_IRQ 4
-#define MAIN_C435_IRQ 8
-#define MAIN_C422_IRQ 16
+#define MAIN_VBLANK_IRQ 0x01
+#define MAIN_C361_IRQ 0x02
+#define MAIN_SUBCPU_IRQ 0x04
+#define MAIN_C435_IRQ 0x08
+#define MAIN_C422_IRQ 0x10
+#define MAIN_C450_IRQ 0x20
+#define MAIN_C451_IRQ 0x40
enum { MODEL, FLUSH };
@@ -1484,6 +1486,12 @@ void namcos23_state::update_main_interrupts(UINT32 cause)
// level 5: C422
if (changed & MAIN_C422_IRQ)
m_maincpu->set_input_line(MIPS3_IRQ3, (cause & MAIN_C422_IRQ) ? ASSERT_LINE : CLEAR_LINE);
+
+ // crszone(sys23ev2) has a different configuration, are they hardwired or configured by software? (where?)..
+ // level 3: C422/subcpu
+ // level 4: vblank
+ // level 5: C451/C361
+ // level 6: C450
}
static UINT16 nthword( const UINT32 *pSource, int offs )
@@ -1862,12 +1870,14 @@ READ16_MEMBER(namcos23_state::s23_c361_r)
{
switch (offset)
{
+ // current raster position
+ // how does it work exactly? it's not understood in namcos22 either (also has a c361)
case 5:
update_main_interrupts(m_main_irqcause & ~MAIN_C361_IRQ);
- return machine().primary_screen->vblank() ? 0x1ff : machine().primary_screen->vpos();
+ return machine().primary_screen->vpos()*2 | (machine().primary_screen->vblank() ? 1 : 0);
case 6:
update_main_interrupts(m_main_irqcause & ~MAIN_C361_IRQ);
- return machine().primary_screen->vblank() ? ~0 : 0;
+ return machine().primary_screen->vblank() ? 1 : 0;
}
logerror("c361_r %x @ %04x (%08x, %08x)\n", offset, mem_mask, space.device().safe_pc(), (unsigned int)space.device().state().state_int(MIPS3_R31));