summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/cpu/konami/konami.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/cpu/konami/konami.c')
-rw-r--r--src/emu/cpu/konami/konami.c442
1 files changed, 221 insertions, 221 deletions
diff --git a/src/emu/cpu/konami/konami.c b/src/emu/cpu/konami/konami.c
index 1a11ec36bb1..956006358c3 100644
--- a/src/emu/cpu/konami/konami.c
+++ b/src/emu/cpu/konami/konami.c
@@ -40,26 +40,26 @@
#define VERBOSE 0
-#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
+#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
/* Konami Registers */
struct konami_state
{
- PAIR pc; /* Program counter */
- PAIR ppc; /* Previous program counter */
- PAIR d; /* Accumulator a and b */
- PAIR dp; /* Direct Page register (page in MSB) */
- PAIR u, s; /* Stack pointers */
- PAIR x, y; /* Index registers */
- PAIR ea;
- UINT8 cc;
- UINT8 ireg;
- UINT8 irq_state[2];
+ PAIR pc; /* Program counter */
+ PAIR ppc; /* Previous program counter */
+ PAIR d; /* Accumulator a and b */
+ PAIR dp; /* Direct Page register (page in MSB) */
+ PAIR u, s; /* Stack pointers */
+ PAIR x, y; /* Index registers */
+ PAIR ea;
+ UINT8 cc;
+ UINT8 ireg;
+ UINT8 irq_state[2];
device_irq_acknowledge_callback irq_callback;
- UINT8 int_state; /* SYNC and CWAI flags */
- UINT8 nmi_state;
- UINT8 nmi_pending;
- int icount;
+ UINT8 int_state; /* SYNC and CWAI flags */
+ UINT8 nmi_state;
+ UINT8 nmi_pending;
+ int icount;
legacy_cpu_device *device;
address_space *program;
direct_read_data *direct;
@@ -84,50 +84,50 @@ INLINE konami_state *get_safe_token(device_t *device)
#define CC_E 0x80 /* entire state pushed */
/* Konami registers */
-#define pPPC cpustate->ppc
-#define pPC cpustate->pc
-#define pU cpustate->u
-#define pS cpustate->s
-#define pX cpustate->x
-#define pY cpustate->y
-#define pD cpustate->d
-
-#define PPC cpustate->ppc.w.l
-#define PC cpustate->pc.w.l
-#define PCD cpustate->pc.d
-#define U cpustate->u.w.l
-#define UD cpustate->u.d
-#define S cpustate->s.w.l
-#define SD cpustate->s.d
-#define X cpustate->x.w.l
-#define XD cpustate->x.d
-#define Y cpustate->y.w.l
-#define YD cpustate->y.d
-#define D cpustate->d.w.l
-#define A cpustate->d.b.h
-#define B cpustate->d.b.l
-#define DP cpustate->dp.b.h
-#define DPD cpustate->dp.d
-#define CC cpustate->cc
-
-#define EAB cpustate->ea.b.l
-#define EA cpustate->ea.w.l
-#define EAD cpustate->ea.d
-
-#define KONAMI_CWAI 8 /* set when CWAI is waiting for an interrupt */
-#define KONAMI_SYNC 16 /* set when SYNC is waiting for an interrupt */
-#define KONAMI_LDS 32 /* set when LDS occurred at least once */
-
-#define RM(cs,Addr) (cs)->program->read_byte(Addr)
-#define WM(cs,Addr,Value) (cs)->program->write_byte(Addr,Value)
-#define ROP(cs,Addr) (cs)->direct->read_decrypted_byte(Addr)
-#define ROP_ARG(cs,Addr) (cs)->direct->read_raw_byte(Addr)
-
-#define SIGNED(a) (UINT16)(INT16)(INT8)(a)
+#define pPPC cpustate->ppc
+#define pPC cpustate->pc
+#define pU cpustate->u
+#define pS cpustate->s
+#define pX cpustate->x
+#define pY cpustate->y
+#define pD cpustate->d
+
+#define PPC cpustate->ppc.w.l
+#define PC cpustate->pc.w.l
+#define PCD cpustate->pc.d
+#define U cpustate->u.w.l
+#define UD cpustate->u.d
+#define S cpustate->s.w.l
+#define SD cpustate->s.d
+#define X cpustate->x.w.l
+#define XD cpustate->x.d
+#define Y cpustate->y.w.l
+#define YD cpustate->y.d
+#define D cpustate->d.w.l
+#define A cpustate->d.b.h
+#define B cpustate->d.b.l
+#define DP cpustate->dp.b.h
+#define DPD cpustate->dp.d
+#define CC cpustate->cc
+
+#define EAB cpustate->ea.b.l
+#define EA cpustate->ea.w.l
+#define EAD cpustate->ea.d
+
+#define KONAMI_CWAI 8 /* set when CWAI is waiting for an interrupt */
+#define KONAMI_SYNC 16 /* set when SYNC is waiting for an interrupt */
+#define KONAMI_LDS 32 /* set when LDS occurred at least once */
+
+#define RM(cs,Addr) (cs)->program->read_byte(Addr)
+#define WM(cs,Addr,Value) (cs)->program->write_byte(Addr,Value)
+#define ROP(cs,Addr) (cs)->direct->read_decrypted_byte(Addr)
+#define ROP_ARG(cs,Addr) (cs)->direct->read_raw_byte(Addr)
+
+#define SIGNED(a) (UINT16)(INT16)(INT8)(a)
/* macros to access memory */
-#define IMMBYTE(cs,b) { b = ROP_ARG(cs,PCD); PC++; }
-#define IMMWORD(cs,w) { w.d = (ROP_ARG(cs,PCD)<<8) | ROP_ARG(cs,PCD+1); PC += 2; }
+#define IMMBYTE(cs,b) { b = ROP_ARG(cs,PCD); PC++; }
+#define IMMWORD(cs,w) { w.d = (ROP_ARG(cs,PCD)<<8) | ROP_ARG(cs,PCD+1); PC += 2; }
#define PUSHBYTE(cs,b) --S; WM(cs,SD,b)
#define PUSHWORD(cs,w) --S; WM(cs,SD,w.b.l); --S; WM(cs,SD,w.b.h)
@@ -139,28 +139,28 @@ INLINE konami_state *get_safe_token(device_t *device)
#define PULUBYTE(cs,b) b=RM(cs,UD); U++
#define PULUWORD(cs,w) w=RM(cs,UD)<<8; U++; w|=RM(cs,UD); U++
-#define CLR_HNZVC CC&=~(CC_H|CC_N|CC_Z|CC_V|CC_C)
-#define CLR_NZV CC&=~(CC_N|CC_Z|CC_V)
-#define CLR_NZ CC&=~(CC_N|CC_Z)
-#define CLR_HNZC CC&=~(CC_H|CC_N|CC_Z|CC_C)
-#define CLR_NZVC CC&=~(CC_N|CC_Z|CC_V|CC_C)
-#define CLR_Z CC&=~(CC_Z)
-#define CLR_NZC CC&=~(CC_N|CC_Z|CC_C)
-#define CLR_ZC CC&=~(CC_Z|CC_C)
+#define CLR_HNZVC CC&=~(CC_H|CC_N|CC_Z|CC_V|CC_C)
+#define CLR_NZV CC&=~(CC_N|CC_Z|CC_V)
+#define CLR_NZ CC&=~(CC_N|CC_Z)
+#define CLR_HNZC CC&=~(CC_H|CC_N|CC_Z|CC_C)
+#define CLR_NZVC CC&=~(CC_N|CC_Z|CC_V|CC_C)
+#define CLR_Z CC&=~(CC_Z)
+#define CLR_NZC CC&=~(CC_N|CC_Z|CC_C)
+#define CLR_ZC CC&=~(CC_Z|CC_C)
/* macros for CC -- CC bits affected should be reset before calling */
-#define SET_Z(a) if(!a)SEZ
-#define SET_Z8(a) SET_Z((UINT8)a)
-#define SET_Z16(a) SET_Z((UINT16)a)
-#define SET_N8(a) CC|=((a&0x80)>>4)
-#define SET_N16(a) CC|=((a&0x8000)>>12)
-#define SET_H(a,b,r) CC|=(((a^b^r)&0x10)<<1)
-#define SET_C8(a) CC|=((a&0x100)>>8)
-#define SET_C16(a) CC|=((a&0x10000)>>16)
-#define SET_V8(a,b,r) CC|=(((a^b^r^(r>>1))&0x80)>>6)
-#define SET_V16(a,b,r) CC|=(((a^b^r^(r>>1))&0x8000)>>14)
-
-static const UINT8 flags8i[256]= /* increment */
+#define SET_Z(a) if(!a)SEZ
+#define SET_Z8(a) SET_Z((UINT8)a)
+#define SET_Z16(a) SET_Z((UINT16)a)
+#define SET_N8(a) CC|=((a&0x80)>>4)
+#define SET_N16(a) CC|=((a&0x8000)>>12)
+#define SET_H(a,b,r) CC|=(((a^b^r)&0x10)<<1)
+#define SET_C8(a) CC|=((a&0x100)>>8)
+#define SET_C16(a) CC|=((a&0x10000)>>16)
+#define SET_V8(a,b,r) CC|=(((a^b^r^(r>>1))&0x80)>>6)
+#define SET_V16(a,b,r) CC|=(((a^b^r^(r>>1))&0x8000)>>14)
+
+static const UINT8 flags8i[256]= /* increment */
{
CC_Z,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
@@ -198,19 +198,19 @@ CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,
CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,
CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N
};
-#define SET_FLAGS8I(a) {CC|=flags8i[(a)&0xff];}
-#define SET_FLAGS8D(a) {CC|=flags8d[(a)&0xff];}
+#define SET_FLAGS8I(a) {CC|=flags8i[(a)&0xff];}
+#define SET_FLAGS8D(a) {CC|=flags8d[(a)&0xff];}
/* combos */
-#define SET_NZ8(a) {SET_N8(a);SET_Z(a);}
-#define SET_NZ16(a) {SET_N16(a);SET_Z(a);}
-#define SET_FLAGS8(a,b,r) {SET_N8(r);SET_Z8(r);SET_V8(a,b,r);SET_C8(r);}
-#define SET_FLAGS16(a,b,r) {SET_N16(r);SET_Z16(r);SET_V16(a,b,r);SET_C16(r);}
+#define SET_NZ8(a) {SET_N8(a);SET_Z(a);}
+#define SET_NZ16(a) {SET_N16(a);SET_Z(a);}
+#define SET_FLAGS8(a,b,r) {SET_N8(r);SET_Z8(r);SET_V8(a,b,r);SET_C8(r);}
+#define SET_FLAGS16(a,b,r) {SET_N16(r);SET_Z16(r);SET_V16(a,b,r);SET_C16(r);}
/* macros for addressing modes (postbytes have their own code) */
-#define DIRECT(cs) EAD = DPD; IMMBYTE(cs,EAB)
-#define IMM8(cs) EAD = PCD; PC++
-#define IMM16(cs) EAD = PCD; PC+=2
+#define DIRECT(cs) EAD = DPD; IMMBYTE(cs,EAB)
+#define IMM8(cs) EAD = PCD; PC++
+#define IMM16(cs) EAD = PCD; PC+=2
#define EXTENDED(cs) IMMWORD(cs,(cs)->ea)
/* macros to set status flags */
@@ -235,47 +235,47 @@ CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N
#define EXTWORD(cs,w) EXTENDED(cs); w.d=RM16(cs,EAD)
/* macros for branch instructions */
-#define BRANCH(cs,f) { \
- UINT8 t; \
- IMMBYTE(cs,t); \
- if( f ) \
- { \
- PC += SIGNED(t); \
- } \
+#define BRANCH(cs,f) { \
+ UINT8 t; \
+ IMMBYTE(cs,t); \
+ if( f ) \
+ { \
+ PC += SIGNED(t); \
+ } \
}
#define LBRANCH(cs,f) { \
- PAIR t; \
- IMMWORD(cs,t); \
- if( f ) \
- { \
- cpustate->icount -= 1; \
- PC += t.w.l; \
- } \
+ PAIR t; \
+ IMMWORD(cs,t); \
+ if( f ) \
+ { \
+ cpustate->icount -= 1; \
+ PC += t.w.l; \
+ } \
}
#define NXORV ((CC&CC_N)^((CC&CC_V)<<2))
/* macros for setting/getting registers in TFR/EXG instructions */
-#define GETREG(val,reg) \
- switch(reg) { \
- case 0: val = A; break; \
- case 1: val = B; break; \
- case 2: val = X; break; \
- case 3: val = Y; break; \
- case 4: val = S; break; /* ? */ \
- case 5: val = U; break; \
+#define GETREG(val,reg) \
+ switch(reg) { \
+ case 0: val = A; break; \
+ case 1: val = B; break; \
+ case 2: val = X; break; \
+ case 3: val = Y; break; \
+ case 4: val = S; break; /* ? */ \
+ case 5: val = U; break; \
default: val = 0xff; logerror("Unknown TFR/EXG idx at PC:%04x\n", PC ); break; \
}
-#define SETREG(val,reg) \
- switch(reg) { \
- case 0: A = val; break; \
- case 1: B = val; break; \
- case 2: X = val; break; \
- case 3: Y = val; break; \
- case 4: S = val; break; /* ? */ \
- case 5: U = val; break; \
+#define SETREG(val,reg) \
+ switch(reg) { \
+ case 0: A = val; break; \
+ case 1: B = val; break; \
+ case 2: X = val; break; \
+ case 3: Y = val; break; \
+ case 4: S = val; break; /* ? */ \
+ case 5: U = val; break; \
default: logerror("Unknown TFR/EXG idx at PC:%04x\n", PC ); break; \
}
@@ -283,22 +283,22 @@ CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N,CC_N
static const UINT8 cycles1[] =
{
/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
- /*0*/ 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4, 5, 5, 5, 5,
- /*1*/ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- /*2*/ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- /*3*/ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 7, 6,
- /*4*/ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 4, 4,
- /*5*/ 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 1, 1, 1,
- /*6*/ 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5, 5, 5,
- /*7*/ 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5, 5, 5,
- /*8*/ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5,
- /*9*/ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6,
- /*A*/ 2, 2, 2, 4, 4, 4, 4, 4, 2, 2, 2, 2, 3, 3, 2, 1,
- /*B*/ 3, 2, 2,11,22,11, 2, 4, 3, 3, 3, 3, 3, 3, 3, 3,
- /*C*/ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 3, 2,
- /*D*/ 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- /*E*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- /*F*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ /*0*/ 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4, 5, 5, 5, 5,
+ /*1*/ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ /*2*/ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ /*3*/ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 7, 6,
+ /*4*/ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 4, 4,
+ /*5*/ 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 1, 1, 1,
+ /*6*/ 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5, 5, 5,
+ /*7*/ 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5, 5, 5,
+ /*8*/ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5,
+ /*9*/ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6,
+ /*A*/ 2, 2, 2, 4, 4, 4, 4, 4, 2, 2, 2, 2, 3, 3, 2, 1,
+ /*B*/ 3, 2, 2,11,22,11, 2, 4, 3, 3, 3, 3, 3, 3, 3, 3,
+ /*C*/ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 3, 2,
+ /*D*/ 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ /*E*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ /*F*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
};
INLINE UINT32 RM16( konami_state *cpustate, UINT32 Addr )
@@ -325,10 +325,10 @@ static void check_irq_lines(konami_state *cpustate)
{
cpustate->int_state &= ~KONAMI_CWAI;
cpustate->icount -= 7;
- }
+ }
else
{
- CC |= CC_E; /* save entire state */
+ CC |= CC_E; /* save entire state */
PUSHWORD(cpustate, pPC);
PUSHWORD(cpustate, pU);
PUSHWORD(cpustate, pY);
@@ -339,7 +339,7 @@ static void check_irq_lines(konami_state *cpustate)
PUSHBYTE(cpustate, CC);
cpustate->icount -= 19;
}
- CC |= CC_IF | CC_II; /* inhibit FIRQ and IRQ */
+ CC |= CC_IF | CC_II; /* inhibit FIRQ and IRQ */
PCD = RM16(cpustate, 0xfffc);
(void)(*cpustate->irq_callback)(cpustate->device, INPUT_LINE_NMI);
}
@@ -352,15 +352,15 @@ static void check_irq_lines(konami_state *cpustate)
{
cpustate->int_state &= ~KONAMI_CWAI; /* clear CWAI */
cpustate->icount -= 7;
- }
+ }
else
{
- CC &= ~CC_E; /* save 'short' state */
+ CC &= ~CC_E; /* save 'short' state */
PUSHWORD(cpustate, pPC);
PUSHBYTE(cpustate, CC);
cpustate->icount -= 10;
}
- CC |= CC_IF | CC_II; /* inhibit FIRQ and IRQ */
+ CC |= CC_IF | CC_II; /* inhibit FIRQ and IRQ */
PCD = RM16(cpustate, 0xfff6);
(void)(*cpustate->irq_callback)(cpustate->device, KONAMI_FIRQ_LINE);
}
@@ -376,7 +376,7 @@ static void check_irq_lines(konami_state *cpustate)
}
else
{
- CC |= CC_E; /* save entire state */
+ CC |= CC_E; /* save entire state */
PUSHWORD(cpustate, pPC);
PUSHWORD(cpustate, pU);
PUSHWORD(cpustate, pY);
@@ -387,7 +387,7 @@ static void check_irq_lines(konami_state *cpustate)
PUSHBYTE(cpustate, CC);
cpustate->icount -= 19;
}
- CC |= CC_II; /* inhibit IRQ */
+ CC |= CC_II; /* inhibit IRQ */
PCD = RM16(cpustate, 0xfff8);
(void)(*cpustate->irq_callback)(cpustate->device, KONAMI_IRQ_LINE);
}
@@ -431,10 +431,10 @@ static CPU_RESET( konami )
cpustate->irq_state[0] = CLEAR_LINE;
cpustate->irq_state[1] = CLEAR_LINE;
- DPD = 0; /* Reset direct page register */
+ DPD = 0; /* Reset direct page register */
- CC |= CC_II; /* IRQ disabled */
- CC |= CC_IF; /* FIRQ disabled */
+ CC |= CC_II; /* IRQ disabled */
+ CC |= CC_IF; /* FIRQ disabled */
PCD = RM16(cpustate, 0xfffe);
}
@@ -492,12 +492,12 @@ static CPU_EXECUTE( konami )
cpustate->ireg = ireg = ROP(cpustate, PCD);
PC++;
- (*konami_main[ireg])(cpustate);
+ (*konami_main[ireg])(cpustate);
- cpustate->icount -= cycles1[ireg];
+ cpustate->icount -= cycles1[ireg];
- } while( cpustate->icount > 0 );
- }
+ } while( cpustate->icount > 0 );
+ }
}
@@ -518,21 +518,21 @@ static CPU_SET_INFO( konami )
switch (state)
{
/* --- the following bits of info are set as 64-bit signed integers --- */
- case CPUINFO_INT_INPUT_STATE + KONAMI_IRQ_LINE: set_irq_line(cpustate, KONAMI_IRQ_LINE, info->i); break;
+ case CPUINFO_INT_INPUT_STATE + KONAMI_IRQ_LINE: set_irq_line(cpustate, KONAMI_IRQ_LINE, info->i); break;
case CPUINFO_INT_INPUT_STATE + KONAMI_FIRQ_LINE:set_irq_line(cpustate, KONAMI_FIRQ_LINE, info->i); break;
- case CPUINFO_INT_INPUT_STATE + INPUT_LINE_NMI: set_irq_line(cpustate, INPUT_LINE_NMI, info->i); break;
+ case CPUINFO_INT_INPUT_STATE + INPUT_LINE_NMI: set_irq_line(cpustate, INPUT_LINE_NMI, info->i); break;
case CPUINFO_INT_PC:
- case CPUINFO_INT_REGISTER + KONAMI_PC: PC = info->i; break;
+ case CPUINFO_INT_REGISTER + KONAMI_PC: PC = info->i; break;
case CPUINFO_INT_SP:
- case CPUINFO_INT_REGISTER + KONAMI_S: S = info->i; break;
- case CPUINFO_INT_REGISTER + KONAMI_CC: CC = info->i; break;
- case CPUINFO_INT_REGISTER + KONAMI_U: U = info->i; break;
- case CPUINFO_INT_REGISTER + KONAMI_A: A = info->i; break;
- case CPUINFO_INT_REGISTER + KONAMI_B: B = info->i; break;
- case CPUINFO_INT_REGISTER + KONAMI_X: X = info->i; break;
- case CPUINFO_INT_REGISTER + KONAMI_Y: Y = info->i; break;
- case CPUINFO_INT_REGISTER + KONAMI_DP: DP = info->i; break;
+ case CPUINFO_INT_REGISTER + KONAMI_S: S = info->i; break;
+ case CPUINFO_INT_REGISTER + KONAMI_CC: CC = info->i; break;
+ case CPUINFO_INT_REGISTER + KONAMI_U: U = info->i; break;
+ case CPUINFO_INT_REGISTER + KONAMI_A: A = info->i; break;
+ case CPUINFO_INT_REGISTER + KONAMI_B: B = info->i; break;
+ case CPUINFO_INT_REGISTER + KONAMI_X: X = info->i; break;
+ case CPUINFO_INT_REGISTER + KONAMI_Y: Y = info->i; break;
+ case CPUINFO_INT_REGISTER + KONAMI_DP: DP = info->i; break;
}
}
@@ -548,83 +548,83 @@ CPU_GET_INFO( konami )
switch (state)
{
/* --- the following bits of info are returned as 64-bit signed integers --- */
- case CPUINFO_INT_CONTEXT_SIZE: info->i = sizeof(konami_state); break;
- case CPUINFO_INT_INPUT_LINES: info->i = 2; break;
- case CPUINFO_INT_DEFAULT_IRQ_VECTOR: info->i = 0; break;
- case CPUINFO_INT_ENDIANNESS: info->i = ENDIANNESS_BIG; break;
- case CPUINFO_INT_CLOCK_MULTIPLIER: info->i = 1; break;
- case CPUINFO_INT_CLOCK_DIVIDER: info->i = 1; break;
- case CPUINFO_INT_MIN_INSTRUCTION_BYTES: info->i = 1; break;
- case CPUINFO_INT_MAX_INSTRUCTION_BYTES: info->i = 4; break;
- case CPUINFO_INT_MIN_CYCLES: info->i = 1; break;
- case CPUINFO_INT_MAX_CYCLES: info->i = 13; break;
-
- case CPUINFO_INT_DATABUS_WIDTH + AS_PROGRAM: info->i = 8; break;
- case CPUINFO_INT_ADDRBUS_WIDTH + AS_PROGRAM: info->i = 16; break;
- case CPUINFO_INT_ADDRBUS_SHIFT + AS_PROGRAM: info->i = 0; break;
- case CPUINFO_INT_DATABUS_WIDTH + AS_DATA: info->i = 0; break;
- case CPUINFO_INT_ADDRBUS_WIDTH + AS_DATA: info->i = 0; break;
- case CPUINFO_INT_ADDRBUS_SHIFT + AS_DATA: info->i = 0; break;
- case CPUINFO_INT_DATABUS_WIDTH + AS_IO: info->i = 0; break;
- case CPUINFO_INT_ADDRBUS_WIDTH + AS_IO: info->i = 0; break;
- case CPUINFO_INT_ADDRBUS_SHIFT + AS_IO: info->i = 0; break;
-
- case CPUINFO_INT_INPUT_STATE + KONAMI_IRQ_LINE: info->i = cpustate->irq_state[KONAMI_IRQ_LINE]; break;
+ case CPUINFO_INT_CONTEXT_SIZE: info->i = sizeof(konami_state); break;
+ case CPUINFO_INT_INPUT_LINES: info->i = 2; break;
+ case CPUINFO_INT_DEFAULT_IRQ_VECTOR: info->i = 0; break;
+ case CPUINFO_INT_ENDIANNESS: info->i = ENDIANNESS_BIG; break;
+ case CPUINFO_INT_CLOCK_MULTIPLIER: info->i = 1; break;
+ case CPUINFO_INT_CLOCK_DIVIDER: info->i = 1; break;
+ case CPUINFO_INT_MIN_INSTRUCTION_BYTES: info->i = 1; break;
+ case CPUINFO_INT_MAX_INSTRUCTION_BYTES: info->i = 4; break;
+ case CPUINFO_INT_MIN_CYCLES: info->i = 1; break;
+ case CPUINFO_INT_MAX_CYCLES: info->i = 13; break;
+
+ case CPUINFO_INT_DATABUS_WIDTH + AS_PROGRAM: info->i = 8; break;
+ case CPUINFO_INT_ADDRBUS_WIDTH + AS_PROGRAM: info->i = 16; break;
+ case CPUINFO_INT_ADDRBUS_SHIFT + AS_PROGRAM: info->i = 0; break;
+ case CPUINFO_INT_DATABUS_WIDTH + AS_DATA: info->i = 0; break;
+ case CPUINFO_INT_ADDRBUS_WIDTH + AS_DATA: info->i = 0; break;
+ case CPUINFO_INT_ADDRBUS_SHIFT + AS_DATA: info->i = 0; break;
+ case CPUINFO_INT_DATABUS_WIDTH + AS_IO: info->i = 0; break;
+ case CPUINFO_INT_ADDRBUS_WIDTH + AS_IO: info->i = 0; break;
+ case CPUINFO_INT_ADDRBUS_SHIFT + AS_IO: info->i = 0; break;
+
+ case CPUINFO_INT_INPUT_STATE + KONAMI_IRQ_LINE: info->i = cpustate->irq_state[KONAMI_IRQ_LINE]; break;
case CPUINFO_INT_INPUT_STATE + KONAMI_FIRQ_LINE:info->i = cpustate->irq_state[KONAMI_FIRQ_LINE]; break;
- case CPUINFO_INT_INPUT_STATE + INPUT_LINE_NMI: info->i = cpustate->nmi_state; break;
+ case CPUINFO_INT_INPUT_STATE + INPUT_LINE_NMI: info->i = cpustate->nmi_state; break;
- case CPUINFO_INT_PREVIOUSPC: info->i = PPC; break;
+ case CPUINFO_INT_PREVIOUSPC: info->i = PPC; break;
case CPUINFO_INT_PC:
- case CPUINFO_INT_REGISTER + KONAMI_PC: info->i = PC; break;
+ case CPUINFO_INT_REGISTER + KONAMI_PC: info->i = PC; break;
case CPUINFO_INT_SP:
- case CPUINFO_INT_REGISTER + KONAMI_S: info->i = S; break;
- case CPUINFO_INT_REGISTER + KONAMI_CC: info->i = CC; break;
- case CPUINFO_INT_REGISTER + KONAMI_U: info->i = U; break;
- case CPUINFO_INT_REGISTER + KONAMI_A: info->i = A; break;
- case CPUINFO_INT_REGISTER + KONAMI_B: info->i = B; break;
- case CPUINFO_INT_REGISTER + KONAMI_X: info->i = X; break;
- case CPUINFO_INT_REGISTER + KONAMI_Y: info->i = Y; break;
- case CPUINFO_INT_REGISTER + KONAMI_DP: info->i = DP; break;
+ case CPUINFO_INT_REGISTER + KONAMI_S: info->i = S; break;
+ case CPUINFO_INT_REGISTER + KONAMI_CC: info->i = CC; break;
+ case CPUINFO_INT_REGISTER + KONAMI_U: info->i = U; break;
+ case CPUINFO_INT_REGISTER + KONAMI_A: info->i = A; break;
+ case CPUINFO_INT_REGISTER + KONAMI_B: info->i = B; break;
+ case CPUINFO_INT_REGISTER + KONAMI_X: info->i = X; break;
+ case CPUINFO_INT_REGISTER + KONAMI_Y: info->i = Y; break;
+ case CPUINFO_INT_REGISTER + KONAMI_DP: info->i = DP; break;
/* --- the following bits of info are returned as pointers to data or functions --- */
- case CPUINFO_FCT_SET_INFO: info->setinfo = CPU_SET_INFO_NAME(konami); break;
- case CPUINFO_FCT_INIT: info->init = CPU_INIT_NAME(konami); break;
- case CPUINFO_FCT_RESET: info->reset = CPU_RESET_NAME(konami); break;
- case CPUINFO_FCT_EXIT: info->exit = CPU_EXIT_NAME(konami); break;
- case CPUINFO_FCT_EXECUTE: info->execute = CPU_EXECUTE_NAME(konami); break;
- case CPUINFO_FCT_BURN: info->burn = NULL; break;
- case CPUINFO_FCT_DISASSEMBLE: info->disassemble = CPU_DISASSEMBLE_NAME(konami);break;
- case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &cpustate->icount; break;
+ case CPUINFO_FCT_SET_INFO: info->setinfo = CPU_SET_INFO_NAME(konami); break;
+ case CPUINFO_FCT_INIT: info->init = CPU_INIT_NAME(konami); break;
+ case CPUINFO_FCT_RESET: info->reset = CPU_RESET_NAME(konami); break;
+ case CPUINFO_FCT_EXIT: info->exit = CPU_EXIT_NAME(konami); break;
+ case CPUINFO_FCT_EXECUTE: info->execute = CPU_EXECUTE_NAME(konami); break;
+ case CPUINFO_FCT_BURN: info->burn = NULL; break;
+ case CPUINFO_FCT_DISASSEMBLE: info->disassemble = CPU_DISASSEMBLE_NAME(konami);break;
+ case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &cpustate->icount; break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
- case CPUINFO_STR_NAME: strcpy(info->s, "KONAMI"); break;
- case CPUINFO_STR_FAMILY: strcpy(info->s, "KONAMI 5000x"); break;
- case CPUINFO_STR_VERSION: strcpy(info->s, "1.0"); break;
- case CPUINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
- case CPUINFO_STR_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
+ case CPUINFO_STR_NAME: strcpy(info->s, "KONAMI"); break;
+ case CPUINFO_STR_FAMILY: strcpy(info->s, "KONAMI 5000x"); break;
+ case CPUINFO_STR_VERSION: strcpy(info->s, "1.0"); break;
+ case CPUINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
+ case CPUINFO_STR_CREDITS: strcpy(info->s, "Copyright Nicola Salmoria and the MAME Team"); break;
case CPUINFO_STR_FLAGS:
sprintf(info->s, "%c%c%c%c%c%c%c%c",
cpustate->cc & 0x80 ? 'E':'.',
cpustate->cc & 0x40 ? 'F':'.',
- cpustate->cc & 0x20 ? 'H':'.',
- cpustate->cc & 0x10 ? 'I':'.',
- cpustate->cc & 0x08 ? 'N':'.',
- cpustate->cc & 0x04 ? 'Z':'.',
- cpustate->cc & 0x02 ? 'V':'.',
- cpustate->cc & 0x01 ? 'C':'.');
- break;
-
- case CPUINFO_STR_REGISTER + KONAMI_PC: sprintf(info->s, "PC:%04X", cpustate->pc.w.l); break;
- case CPUINFO_STR_REGISTER + KONAMI_S: sprintf(info->s, "S:%04X", cpustate->s.w.l); break;
- case CPUINFO_STR_REGISTER + KONAMI_CC: sprintf(info->s, "CC:%02X", cpustate->cc); break;
- case CPUINFO_STR_REGISTER + KONAMI_U: sprintf(info->s, "U:%04X", cpustate->u.w.l); break;
- case CPUINFO_STR_REGISTER + KONAMI_A: sprintf(info->s, "A:%02X", cpustate->d.b.h); break;
- case CPUINFO_STR_REGISTER + KONAMI_B: sprintf(info->s, "B:%02X", cpustate->d.b.l); break;
- case CPUINFO_STR_REGISTER + KONAMI_X: sprintf(info->s, "X:%04X", cpustate->x.w.l); break;
- case CPUINFO_STR_REGISTER + KONAMI_Y: sprintf(info->s, "Y:%04X", cpustate->y.w.l); break;
- case CPUINFO_STR_REGISTER + KONAMI_DP: sprintf(info->s, "DP:%02X", cpustate->dp.b.h); break;
+ cpustate->cc & 0x20 ? 'H':'.',
+ cpustate->cc & 0x10 ? 'I':'.',
+ cpustate->cc & 0x08 ? 'N':'.',
+ cpustate->cc & 0x04 ? 'Z':'.',
+ cpustate->cc & 0x02 ? 'V':'.',
+ cpustate->cc & 0x01 ? 'C':'.');
+ break;
+
+ case CPUINFO_STR_REGISTER + KONAMI_PC: sprintf(info->s, "PC:%04X", cpustate->pc.w.l); break;
+ case CPUINFO_STR_REGISTER + KONAMI_S: sprintf(info->s, "S:%04X", cpustate->s.w.l); break;
+ case CPUINFO_STR_REGISTER + KONAMI_CC: sprintf(info->s, "CC:%02X", cpustate->cc); break;
+ case CPUINFO_STR_REGISTER + KONAMI_U: sprintf(info->s, "U:%04X", cpustate->u.w.l); break;
+ case CPUINFO_STR_REGISTER + KONAMI_A: sprintf(info->s, "A:%02X", cpustate->d.b.h); break;
+ case CPUINFO_STR_REGISTER + KONAMI_B: sprintf(info->s, "B:%02X", cpustate->d.b.l); break;
+ case CPUINFO_STR_REGISTER + KONAMI_X: sprintf(info->s, "X:%04X", cpustate->x.w.l); break;
+ case CPUINFO_STR_REGISTER + KONAMI_Y: sprintf(info->s, "Y:%04X", cpustate->y.w.l); break;
+ case CPUINFO_STR_REGISTER + KONAMI_DP: sprintf(info->s, "DP:%02X", cpustate->dp.b.h); break;
}
}