diff options
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 |
commit | 3d8dcb86640e010a16d8898c688046cdea7360e3 (patch) | |
tree | d1cfb09e0198956eaf1088194508970bcd45061a /src/mame/drivers/namcos23.c | |
parent | d72039d0e2c6d50a7f19726efc23835467ddc821 (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.c | 24 |
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)); |