diff options
author | 2008-12-06 21:24:38 +0000 | |
---|---|---|
committer | 2008-12-06 21:24:38 +0000 | |
commit | 63f26b610b17d1b45bb5763385b443cf1313e8cb (patch) | |
tree | cf91450403a06b037c7d936b981c575566b3619a /src | |
parent | c023001a86933dec224da8e201047f4e1a1e6e9c (diff) |
Pointer-ified the konami CPU core. Changed setlines callback to
pass a device. Updated and de-deprecat-ed the drivers that used
it. Fixed interrupt handling to follow more recent behavior
expectations (no PULSE_LINE on non-NMI lines).
Diffstat (limited to 'src')
-rw-r--r-- | src/emu/cpu/konami/konami.c | 469 | ||||
-rw-r--r-- | src/emu/cpu/konami/konami.h | 39 | ||||
-rw-r--r-- | src/emu/cpu/konami/konamops.c | 2030 | ||||
-rw-r--r-- | src/emu/cpu/konami/konamtbl.c | 702 | ||||
-rw-r--r-- | src/emu/cpuexec.c | 1 | ||||
-rw-r--r-- | src/mame/drivers/88games.c | 11 | ||||
-rw-r--r-- | src/mame/drivers/aliens.c | 11 | ||||
-rw-r--r-- | src/mame/drivers/blockhl.c | 13 | ||||
-rw-r--r-- | src/mame/drivers/crimfght.c | 17 | ||||
-rw-r--r-- | src/mame/drivers/gbusters.c | 13 | ||||
-rw-r--r-- | src/mame/drivers/parodius.c | 13 | ||||
-rw-r--r-- | src/mame/drivers/rollerg.c | 11 | ||||
-rw-r--r-- | src/mame/drivers/surpratk.c | 13 | ||||
-rw-r--r-- | src/mame/drivers/thunderx.c | 11 | ||||
-rw-r--r-- | src/mame/drivers/vendetta.c | 13 | ||||
-rw-r--r-- | src/mame/machine/simpsons.c | 7 |
16 files changed, 1668 insertions, 1706 deletions
diff --git a/src/emu/cpu/konami/konami.c b/src/emu/cpu/konami/konami.c index 20bc7c5d4dc..48f2d762414 100644 --- a/src/emu/cpu/konami/konami.c +++ b/src/emu/cpu/konami/konami.c @@ -42,7 +42,8 @@ #define LOG(x) do { if (VERBOSE) logerror x; } while (0) /* Konami Registers */ -typedef struct +typedef struct _konami_state konami_state; +struct _konami_state { PAIR pc; /* Program counter */ PAIR ppc; /* Previous program counter */ @@ -50,17 +51,19 @@ typedef struct PAIR dp; /* Direct Page register (page in MSB) */ PAIR u, s; /* Stack pointers */ PAIR x, y; /* Index registers */ + PAIR ea; UINT8 cc; - UINT8 ireg; /* first opcode */ + UINT8 ireg; UINT8 irq_state[2]; - int extra_cycles; /* cycles used up by interrupts */ cpu_irq_callback irq_callback; - const device_config *device; - const address_space *program; UINT8 int_state; /* SYNC and CWAI flags */ UINT8 nmi_state; - void (*setlines_callback)( int lines ); /* callback called when A16-A23 are set */ -} konami_Regs; + UINT8 nmi_pending; + int icount; + const device_config *device; + const address_space *program; + konami_set_lines_func setlines_callback; +}; /* flag bits in the cc register */ #define CC_C 0x01 /* Carry */ @@ -73,119 +76,60 @@ typedef struct #define CC_E 0x80 /* entire state pushed */ /* Konami registers */ -static konami_Regs konami; - -#define pPPC konami.ppc -#define pPC konami.pc -#define pU konami.u -#define pS konami.s -#define pX konami.x -#define pY konami.y -#define pD konami.d - -#define PPC konami.ppc.w.l -#define PC konami.pc.w.l -#define PCD konami.pc.d -#define U konami.u.w.l -#define UD konami.u.d -#define S konami.s.w.l -#define SD konami.s.d -#define X konami.x.w.l -#define XD konami.x.d -#define Y konami.y.w.l -#define YD konami.y.d -#define D konami.d.w.l -#define A konami.d.b.h -#define B konami.d.b.l -#define DP konami.dp.b.h -#define DPD konami.dp.d -#define CC konami.cc - -static PAIR ea; /* effective address */ -#define EA ea.w.l -#define EAD ea.d +#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 occured at least once */ -#define CHECK_IRQ_LINES \ - if( konami.irq_state[KONAMI_IRQ_LINE] != CLEAR_LINE || \ - konami.irq_state[KONAMI_FIRQ_LINE] != CLEAR_LINE ) \ - konami.int_state &= ~KONAMI_SYNC; /* clear SYNC flag */ \ - if( konami.irq_state[KONAMI_FIRQ_LINE]!=CLEAR_LINE && !(CC & CC_IF) ) \ - { \ - /* fast IRQ */ \ - /* state already saved by CWAI? */ \ - if( konami.int_state & KONAMI_CWAI ) \ - { \ - konami.int_state &= ~KONAMI_CWAI; /* clear CWAI */ \ - konami.extra_cycles += 7; /* subtract +7 cycles */ \ - } \ - else \ - { \ - CC &= ~CC_E; /* save 'short' state */ \ - PUSHWORD(pPC); \ - PUSHBYTE(CC); \ - konami.extra_cycles += 10; /* subtract +10 cycles */ \ - } \ - CC |= CC_IF | CC_II; /* inhibit FIRQ and IRQ */ \ - PCD = RM16(0xfff6); \ - (void)(*konami.irq_callback)(konami.device, KONAMI_FIRQ_LINE); \ - } \ - else \ - if( konami.irq_state[KONAMI_IRQ_LINE]!=CLEAR_LINE && !(CC & CC_II) )\ - { \ - /* standard IRQ */ \ - /* state already saved by CWAI? */ \ - if( konami.int_state & KONAMI_CWAI ) \ - { \ - konami.int_state &= ~KONAMI_CWAI; /* clear CWAI flag */ \ - konami.extra_cycles += 7; /* subtract +7 cycles */ \ - } \ - else \ - { \ - CC |= CC_E; /* save entire state */ \ - PUSHWORD(pPC); \ - PUSHWORD(pU); \ - PUSHWORD(pY); \ - PUSHWORD(pX); \ - PUSHBYTE(DP); \ - PUSHBYTE(B); \ - PUSHBYTE(A); \ - PUSHBYTE(CC); \ - konami.extra_cycles += 19; /* subtract +19 cycles */ \ - } \ - CC |= CC_II; /* inhibit IRQ */ \ - PCD = RM16(0xfff8); \ - (void)(*konami.irq_callback)(konami.device, KONAMI_IRQ_LINE); \ - } - -/* public globals */ -static int konami_ICount; -//int konami_Flags; /* flags for speed optimization (obsolete!!) */ - -/* these are re-defined in konami.h TO RAM, ROM or functions in memory.c */ -#define RM(Addr) KONAMI_RDMEM(Addr) -#define WM(Addr,Value) KONAMI_WRMEM(Addr,Value) -#define ROP(Addr) KONAMI_RDOP(Addr) -#define ROP_ARG(Addr) KONAMI_RDOP_ARG(Addr) +#define RM(cs,Addr) memory_read_byte_8be((cs)->program, Addr) +#define WM(cs,Addr,Value) memory_write_byte_8be((cs)->program, Addr,Value) +#define ROP(cs,Addr) memory_decrypted_read_byte((cs)->program, Addr) +#define ROP_ARG(cs,Addr) memory_raw_read_byte((cs)->program, Addr) #define SIGNED(a) (UINT16)(INT16)(INT8)(a) /* macros to access memory */ -#define IMMBYTE(b) { b = ROP_ARG(PCD); PC++; } -#define IMMWORD(w) { w.d = (ROP_ARG(PCD)<<8) | ROP_ARG(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(b) --S; WM(SD,b) -#define PUSHWORD(w) --S; WM(SD,w.b.l); --S; WM(SD,w.b.h) -#define PULLBYTE(b) b=KONAMI_RDMEM(SD); S++ -#define PULLWORD(w) w=KONAMI_RDMEM(SD)<<8; S++; w|=KONAMI_RDMEM(SD); S++ +#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) +#define PULLBYTE(cs,b) b=RM(cs,SD); S++ +#define PULLWORD(cs,w) w=RM(cs,SD)<<8; S++; w|=RM(cs,SD); S++ -#define PSHUBYTE(b) --U; WM(UD,b); -#define PSHUWORD(w) --U; WM(UD,w.b.l); --U; WM(UD,w.b.h) -#define PULUBYTE(b) b=KONAMI_RDMEM(UD); U++ -#define PULUWORD(w) w=KONAMI_RDMEM(UD)<<8; U++; w|=KONAMI_RDMEM(UD); U++ +#define PSHUBYTE(cs,b) --U; WM(cs,UD,b); +#define PSHUWORD(cs,w) --U; WM(cs,UD,w.b.l); --U; WM(cs,UD,w.b.h) +#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) @@ -256,10 +200,10 @@ 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_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 EAD = DPD; IMMBYTE(ea.b.l) -#define IMM8 EAD = PCD; PC++ -#define IMM16 EAD = PCD; PC+=2 -#define EXTENDED IMMWORD(ea) +#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 */ #if defined(SEC) @@ -277,27 +221,27 @@ 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 CLH CC&=~CC_H /* macros for convenience */ -#define DIRBYTE(b) DIRECT; b=RM(EAD) -#define DIRWORD(w) DIRECT; w.d=RM16(EAD) -#define EXTBYTE(b) EXTENDED; b=RM(EAD) -#define EXTWORD(w) EXTENDED; w.d=RM16(EAD) +#define DIRBYTE(cs,b) DIRECT(cs); b=RM(cs,EAD) +#define DIRWORD(cs,w) DIRECT(cs); w.d=RM16(cs,EAD) +#define EXTBYTE(cs,b) EXTENDED(cs); b=RM(cs,EAD) +#define EXTWORD(cs,w) EXTENDED(cs); w.d=RM16(cs,EAD) /* macros for branch instructions */ -#define BRANCH(f) { \ +#define BRANCH(cs,f) { \ UINT8 t; \ - IMMBYTE(t); \ + IMMBYTE(cs,t); \ if( f ) \ { \ PC += SIGNED(t); \ } \ } -#define LBRANCH(f) { \ +#define LBRANCH(cs,f) { \ PAIR t; \ - IMMWORD(t); \ + IMMWORD(cs,t); \ if( f ) \ { \ - konami_ICount -= 1; \ + cpustate->icount -= 1; \ PC += t.w.l; \ } \ } @@ -349,46 +293,119 @@ static const UINT8 cycles1[] = /*F*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; -INLINE UINT32 RM16( UINT32 Addr ) +INLINE UINT32 RM16( konami_state *cpustate, UINT32 Addr ) { - UINT32 result = RM(Addr) << 8; - return result | RM((Addr+1)&0xffff); + UINT32 result = RM(cpustate, Addr) << 8; + return result | RM(cpustate, (Addr+1)&0xffff); } -INLINE void WM16( UINT32 Addr, PAIR *p ) +INLINE void WM16( konami_state *cpustate, UINT32 Addr, PAIR *p ) { - WM( Addr, p->b.h ); - WM( (Addr+1)&0xffff, p->b.l ); + WM(cpustate, Addr, p->b.h ); + WM(cpustate, (Addr+1)&0xffff, p->b.l ); +} + + +static void check_irq_lines(konami_state *cpustate) +{ + if (cpustate->nmi_pending && (cpustate->int_state & KONAMI_LDS)) + { + cpustate->nmi_pending = FALSE; + + /* state already saved by CWAI? */ + if (cpustate->int_state & KONAMI_CWAI) + { + cpustate->int_state &= ~KONAMI_CWAI; + cpustate->icount -= 7; + } + else + { + CC |= CC_E; /* save entire state */ + PUSHWORD(cpustate, pPC); + PUSHWORD(cpustate, pU); + PUSHWORD(cpustate, pY); + PUSHWORD(cpustate, pX); + PUSHBYTE(cpustate, DP); + PUSHBYTE(cpustate, B); + PUSHBYTE(cpustate, A); + PUSHBYTE(cpustate, CC); + cpustate->icount -= 19; + } + CC |= CC_IF | CC_II; /* inhibit FIRQ and IRQ */ + PCD = RM16(cpustate, 0xfffc); + (void)(*cpustate->irq_callback)(cpustate->device, INPUT_LINE_NMI); + } + + else if (cpustate->irq_state[KONAMI_FIRQ_LINE] !=CLEAR_LINE && !(CC & CC_IF)) + { + /* fast IRQ */ + /* state already saved by CWAI? */ + if (cpustate->int_state & KONAMI_CWAI) + { + cpustate->int_state &= ~KONAMI_CWAI; /* clear CWAI */ + cpustate->icount -= 7; + } + else + { + CC &= ~CC_E; /* save 'short' state */ + PUSHWORD(cpustate, pPC); + PUSHBYTE(cpustate, CC); + cpustate->icount -= 10; + } + CC |= CC_IF | CC_II; /* inhibit FIRQ and IRQ */ + PCD = RM16(cpustate, 0xfff6); + (void)(*cpustate->irq_callback)(cpustate->device, KONAMI_FIRQ_LINE); + } + + else if (cpustate->irq_state[KONAMI_IRQ_LINE] != CLEAR_LINE && !(CC & CC_II)) + { + /* standard IRQ */ + /* state already saved by CWAI? */ + if (cpustate->int_state & KONAMI_CWAI) + { + cpustate->int_state &= ~KONAMI_CWAI; /* clear CWAI flag */ + cpustate->icount -= 7; + } + else + { + CC |= CC_E; /* save entire state */ + PUSHWORD(cpustate, pPC); + PUSHWORD(cpustate, pU); + PUSHWORD(cpustate, pY); + PUSHWORD(cpustate, pX); + PUSHBYTE(cpustate, DP); + PUSHBYTE(cpustate, B); + PUSHBYTE(cpustate, A); + PUSHBYTE(cpustate, CC); + cpustate->icount -= 19; + } + CC |= CC_II; /* inhibit IRQ */ + PCD = RM16(cpustate, 0xfff8); + (void)(*cpustate->irq_callback)(cpustate->device, KONAMI_IRQ_LINE); + } } + /**************************************************************************** * Get all registers in given buffer ****************************************************************************/ -static CPU_GET_CONTEXT( konami ) -{ - if( dst ) - *(konami_Regs*)dst = konami; -} +static CPU_GET_CONTEXT( konami ) { } /**************************************************************************** * Set all registers to given values ****************************************************************************/ -static CPU_SET_CONTEXT( konami ) -{ - if( src ) - konami = *(konami_Regs*)src; - - CHECK_IRQ_LINES; -} +static CPU_SET_CONTEXT( konami ) { } /****************************************************************************/ /* Reset registers to their initial values */ /****************************************************************************/ static CPU_INIT( konami ) { - konami.irq_callback = irqcallback; - konami.device = device; - konami.program = memory_find_address_space(device, ADDRESS_SPACE_PROGRAM); + konami_state *cpustate = device->token; + + cpustate->irq_callback = irqcallback; + cpustate->device = device; + cpustate->program = memory_find_address_space(device, ADDRESS_SPACE_PROGRAM); state_save_register_device_item(device, 0, PC); state_save_register_device_item(device, 0, U); @@ -398,25 +415,29 @@ static CPU_INIT( konami ) state_save_register_device_item(device, 0, D); state_save_register_device_item(device, 0, DP); state_save_register_device_item(device, 0, CC); - state_save_register_device_item(device, 0, konami.int_state); - state_save_register_device_item(device, 0, konami.nmi_state); - state_save_register_device_item(device, 0, konami.irq_state[0]); - state_save_register_device_item(device, 0, konami.irq_state[1]); + state_save_register_device_item(device, 0, cpustate->int_state); + state_save_register_device_item(device, 0, cpustate->nmi_state); + state_save_register_device_item(device, 0, cpustate->nmi_pending); + state_save_register_device_item(device, 0, cpustate->irq_state[0]); + state_save_register_device_item(device, 0, cpustate->irq_state[1]); } static CPU_RESET( konami ) { - konami.int_state = 0; - konami.nmi_state = CLEAR_LINE; - konami.irq_state[0] = CLEAR_LINE; - konami.irq_state[0] = CLEAR_LINE; + konami_state *cpustate = device->token; + + cpustate->int_state = 0; + cpustate->nmi_state = CLEAR_LINE; + cpustate->nmi_pending = FALSE; + cpustate->irq_state[0] = CLEAR_LINE; + cpustate->irq_state[1] = CLEAR_LINE; DPD = 0; /* Reset direct page register */ CC |= CC_II; /* IRQ disabled */ CC |= CC_IF; /* FIRQ disabled */ - PCD = RM16(0xfffe); + PCD = RM16(cpustate, 0xfffe); } static CPU_EXIT( konami ) @@ -427,48 +448,19 @@ static CPU_EXIT( konami ) /**************************************************************************** * Set IRQ line state ****************************************************************************/ -static void set_irq_line(int irqline, int state) +static void set_irq_line(konami_state *cpustate, int irqline, int state) { + if (state != CLEAR_LINE) + cpustate->int_state &= ~KONAMI_SYNC; + if (irqline == INPUT_LINE_NMI) { - if (konami.nmi_state == state) return; - konami.nmi_state = state; - LOG(("KONAMI '%s' set_nmi_line %d\n", konami.device->tag, state)); - if( state == CLEAR_LINE ) return; - - /* if the stack was not yet initialized */ - if( !(konami.int_state & KONAMI_LDS) ) return; - - konami.int_state &= ~KONAMI_SYNC; - /* state already saved by CWAI? */ - if( konami.int_state & KONAMI_CWAI ) - { - konami.int_state &= ~KONAMI_CWAI; - konami.extra_cycles += 7; /* subtract +7 cycles next time */ - } - else - { - CC |= CC_E; /* save entire state */ - PUSHWORD(pPC); - PUSHWORD(pU); - PUSHWORD(pY); - PUSHWORD(pX); - PUSHBYTE(DP); - PUSHBYTE(B); - PUSHBYTE(A); - PUSHBYTE(CC); - konami.extra_cycles += 19; /* subtract +19 cycles next time */ - } - CC |= CC_IF | CC_II; /* inhibit FIRQ and IRQ */ - PCD = RM16(0xfffc); - } - else if (irqline < 2) - { - LOG(("KONAMI '%s' set_irq_line %d, %d\n", konami.device->tag, irqline, state)); - konami.irq_state[irqline] = state; - if (state == CLEAR_LINE) return; - CHECK_IRQ_LINES; + if (cpustate->nmi_state == CLEAR_LINE && state != CLEAR_LINE) + cpustate->nmi_pending = TRUE; + cpustate->nmi_state = state; } + else if (irqline < ARRAY_LENGTH(cpustate->irq_state)) + cpustate->irq_state[irqline] = state; } /* includes the static function prototypes and the master opcode table */ @@ -480,35 +472,36 @@ static void set_irq_line(int irqline, int state) /* execute instructions on this CPU until icount expires */ static CPU_EXECUTE( konami ) { - konami_ICount = cycles - konami.extra_cycles; - konami.extra_cycles = 0; + konami_state *cpustate = device->token; + + cpustate->icount = cycles; + check_irq_lines(cpustate); - if( konami.int_state & (KONAMI_CWAI | KONAMI_SYNC) ) + if( cpustate->int_state & (KONAMI_CWAI | KONAMI_SYNC) ) { - konami_ICount = 0; + cpustate->icount = 0; } else { do { + UINT8 ireg; + pPPC = pPC; debugger_instruction_hook(device, PCD); - konami.ireg = ROP(PCD); + cpustate->ireg = ireg = ROP(cpustate, PCD); PC++; - (*konami_main[konami.ireg])(); - - konami_ICount -= cycles1[konami.ireg]; + (*konami_main[ireg])(cpustate); - } while( konami_ICount > 0 ); + cpustate->icount -= cycles1[ireg]; - konami_ICount -= konami.extra_cycles; - konami.extra_cycles = 0; + } while( cpustate->icount > 0 ); } - return cycles - konami_ICount; + return cycles - cpustate->icount; } @@ -518,18 +511,19 @@ static CPU_EXECUTE( konami ) static CPU_SET_INFO( konami ) { + konami_state *cpustate = device->token; 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(KONAMI_IRQ_LINE, info->i); break; - case CPUINFO_INT_INPUT_STATE + KONAMI_FIRQ_LINE:set_irq_line(KONAMI_FIRQ_LINE, info->i); break; - case CPUINFO_INT_INPUT_STATE + INPUT_LINE_NMI: set_irq_line(INPUT_LINE_NMI, 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_PC: 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; CHECK_IRQ_LINES; 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; @@ -538,7 +532,7 @@ static CPU_SET_INFO( konami ) case CPUINFO_INT_REGISTER + KONAMI_DP: DP = info->i; break; /* --- the following bits of info are set as pointers to data or functions --- */ - case CPUINFO_PTR_KONAMI_SETLINES_CALLBACK: konami.setlines_callback = (void (*)(int))info->f; break; + case CPUINFO_PTR_KONAMI_SETLINES_CALLBACK: cpustate->setlines_callback = (konami_set_lines_func)info->f; break; } } @@ -550,13 +544,14 @@ static CPU_SET_INFO( konami ) CPU_GET_INFO( konami ) { + konami_state *cpustate = (device != NULL) ? device->token : NULL; switch (state) { /* --- the following bits of info are returned as 64-bit signed integers --- */ - case CPUINFO_INT_CONTEXT_SIZE: info->i = sizeof(konami); 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_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; @@ -574,9 +569,9 @@ CPU_GET_INFO( konami ) case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_IO: info->i = 0; break; case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_IO: info->i = 0; break; - case CPUINFO_INT_INPUT_STATE + KONAMI_IRQ_LINE: info->i = konami.irq_state[KONAMI_IRQ_LINE]; break; - case CPUINFO_INT_INPUT_STATE + KONAMI_FIRQ_LINE:info->i = konami.irq_state[KONAMI_FIRQ_LINE]; break; - case CPUINFO_INT_INPUT_STATE + INPUT_LINE_NMI: info->i = konami.nmi_state; 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_PREVIOUSPC: info->i = PPC; break; @@ -594,16 +589,16 @@ CPU_GET_INFO( konami ) /* --- the following bits of info are returned as pointers to data or functions --- */ case CPUINFO_PTR_SET_INFO: info->setinfo = CPU_SET_INFO_NAME(konami); break; - case CPUINFO_PTR_GET_CONTEXT: info->getcontext = CPU_GET_CONTEXT_NAME(konami); break; - case CPUINFO_PTR_SET_CONTEXT: info->setcontext = CPU_SET_CONTEXT_NAME(konami); break; + case CPUINFO_PTR_GET_CONTEXT: info->getcontext = CPU_GET_CONTEXT_NAME(konami);break; + case CPUINFO_PTR_SET_CONTEXT: info->setcontext = CPU_SET_CONTEXT_NAME(konami);break; case CPUINFO_PTR_INIT: info->init = CPU_INIT_NAME(konami); break; - case CPUINFO_PTR_RESET: info->reset = CPU_RESET_NAME(konami); break; + case CPUINFO_PTR_RESET: info->reset = CPU_RESET_NAME(konami); break; case CPUINFO_PTR_EXIT: info->exit = CPU_EXIT_NAME(konami); break; - case CPUINFO_PTR_EXECUTE: info->execute = CPU_EXECUTE_NAME(konami); break; - case CPUINFO_PTR_BURN: info->burn = NULL; break; - case CPUINFO_PTR_DISASSEMBLE: info->disassemble = CPU_DISASSEMBLE_NAME(konami); break; - case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &konami_ICount; break; - case CPUINFO_PTR_KONAMI_SETLINES_CALLBACK: info->f = (genf *)konami.setlines_callback; break; + case CPUINFO_PTR_EXECUTE: info->execute = CPU_EXECUTE_NAME(konami); break; + case CPUINFO_PTR_BURN: info->burn = NULL; break; + case CPUINFO_PTR_DISASSEMBLE: info->disassemble = CPU_DISASSEMBLE_NAME(konami);break; + case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &cpustate->icount; break; + case CPUINFO_PTR_KONAMI_SETLINES_CALLBACK: info->f = (genf *)cpustate->setlines_callback; break; /* --- the following bits of info are returned as NULL-terminated strings --- */ case CPUINFO_STR_NAME: strcpy(info->s, "KONAMI"); break; @@ -614,24 +609,24 @@ CPU_GET_INFO( konami ) case CPUINFO_STR_FLAGS: sprintf(info->s, "%c%c%c%c%c%c%c%c", - konami.cc & 0x80 ? 'E':'.', - konami.cc & 0x40 ? 'F':'.', - konami.cc & 0x20 ? 'H':'.', - konami.cc & 0x10 ? 'I':'.', - konami.cc & 0x08 ? 'N':'.', - konami.cc & 0x04 ? 'Z':'.', - konami.cc & 0x02 ? 'V':'.', - konami.cc & 0x01 ? '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", konami.pc.w.l); break; - case CPUINFO_STR_REGISTER + KONAMI_S: sprintf(info->s, "S:%04X", konami.s.w.l); break; - case CPUINFO_STR_REGISTER + KONAMI_CC: sprintf(info->s, "CC:%02X", konami.cc); break; - case CPUINFO_STR_REGISTER + KONAMI_U: sprintf(info->s, "U:%04X", konami.u.w.l); break; - case CPUINFO_STR_REGISTER + KONAMI_A: sprintf(info->s, "A:%02X", konami.d.b.h); break; - case CPUINFO_STR_REGISTER + KONAMI_B: sprintf(info->s, "B:%02X", konami.d.b.l); break; - case CPUINFO_STR_REGISTER + KONAMI_X: sprintf(info->s, "X:%04X", konami.x.w.l); break; - case CPUINFO_STR_REGISTER + KONAMI_Y: sprintf(info->s, "Y:%04X", konami.y.w.l); break; - case CPUINFO_STR_REGISTER + KONAMI_DP: sprintf(info->s, "DP:%02X", konami.dp.b.h); 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; } } diff --git a/src/emu/cpu/konami/konami.h b/src/emu/cpu/konami/konami.h index fee0f96ed5f..c20b7806a1b 100644 --- a/src/emu/cpu/konami/konami.h +++ b/src/emu/cpu/konami/konami.h @@ -7,6 +7,8 @@ #include "cpuintrf.h" +typedef void (*konami_set_lines_func)(const device_config *device, int lines); + enum { KONAMI_PC=1, KONAMI_S, KONAMI_CC ,KONAMI_A, KONAMI_B, KONAMI_U, KONAMI_X, KONAMI_Y, @@ -24,37 +26,12 @@ enum /* PUBLIC FUNCTIONS */ CPU_GET_INFO( konami ); -/****************************************************************************/ -/* Read a byte from given memory location */ -/****************************************************************************/ -#define KONAMI_RDMEM(Addr) ((unsigned)memory_read_byte_8be(konami.program, Addr)) - -/****************************************************************************/ -/* Write a byte to given memory location */ -/****************************************************************************/ -#define KONAMI_WRMEM(Addr,Value) (memory_write_byte_8be(konami.program, Addr,Value)) - -/****************************************************************************/ -/* Z80_RDOP() is identical to Z80_RDMEM() except it is used for reading */ -/* opcodes. In case of system with memory mapped I/O, this function can be */ -/* used to greatly speed up emulation */ -/****************************************************************************/ -#define KONAMI_RDOP(Addr) ((unsigned)memory_decrypted_read_byte(konami.program, Addr)) - -/****************************************************************************/ -/* Z80_RDOP_ARG() is identical to Z80_RDOP() except it is used for reading */ -/* opcode arguments. This difference can be used to support systems that */ -/* use different encoding mechanisms for opcodes and opcode arguments */ -/****************************************************************************/ -#define KONAMI_RDOP_ARG(Addr) ((unsigned)memory_raw_read_byte(konami.program, Addr)) - -#ifndef FALSE -# define FALSE 0 -#endif -#ifndef TRUE -# define TRUE (!FALSE) -#endif - CPU_DISASSEMBLE( konami ); + +INLINE void konami_configure_set_lines(const device_config *device, konami_set_lines_func func) +{ + cpu_set_info_fct(device, CPUINFO_PTR_KONAMI_SETLINES_CALLBACK, (genf *)func); +} + #endif /* __KONAMI_H__ */ diff --git a/src/emu/cpu/konami/konamops.c b/src/emu/cpu/konami/konamops.c index f7c9d411eed..fe2efffbd97 100644 --- a/src/emu/cpu/konami/konamops.c +++ b/src/emu/cpu/konami/konamops.c @@ -13,23 +13,23 @@ HNZVC */ #ifdef NEW -static void illegal( void ) +static void illegal( konami_state *cpustate ) #else -INLINE void illegal( void ) +INLINE void illegal( konami_state *cpustate ) #endif { logerror("KONAMI: illegal opcode at %04x\n",PC); } /* $00 NEG direct ?**** */ -INLINE void neg_di( void ) +INLINE void neg_di( konami_state *cpustate ) { UINT16 r,t; - DIRBYTE(t); + DIRBYTE(cpustate, t); r = -t; CLR_NZVC; SET_FLAGS8(0,t,r); - WM(EAD,r); + WM(cpustate, EAD,r); } /* $01 ILLEGAL */ @@ -37,123 +37,123 @@ INLINE void neg_di( void ) /* $02 ILLEGAL */ /* $03 COM direct -**01 */ -INLINE void com_di( void ) +INLINE void com_di( konami_state *cpustate ) { UINT8 t; - DIRBYTE(t); + DIRBYTE(cpustate, t); t = ~t; CLR_NZV; SET_NZ8(t); SEC; - WM(EAD,t); + WM(cpustate, EAD,t); } /* $04 LSR direct -0*-* */ -INLINE void lsr_di( void ) +INLINE void lsr_di( konami_state *cpustate ) { UINT8 t; - DIRBYTE(t); + DIRBYTE(cpustate, t); CLR_NZC; CC |= (t & CC_C); t >>= 1; SET_Z8(t); - WM(EAD,t); + WM(cpustate, EAD,t); } /* $05 ILLEGAL */ /* $06 ROR direct -**-* */ -INLINE void ror_di( void ) +INLINE void ror_di( konami_state *cpustate ) { UINT8 t,r; - DIRBYTE(t); + DIRBYTE(cpustate, t); r= (CC & CC_C) << 7; CLR_NZC; CC |= (t & CC_C); r |= t>>1; SET_NZ8(r); - WM(EAD,r); + WM(cpustate, EAD,r); } /* $07 ASR direct ?**-* */ -INLINE void asr_di( void ) +INLINE void asr_di( konami_state *cpustate ) { UINT8 t; - DIRBYTE(t); + DIRBYTE(cpustate, t); CLR_NZC; CC |= (t & CC_C); t = (t & 0x80) | (t >> 1); SET_NZ8(t); - WM(EAD,t); + WM(cpustate, EAD,t); } /* $08 ASL direct ?**** */ -INLINE void asl_di( void ) +INLINE void asl_di( konami_state *cpustate ) { UINT16 t,r; - DIRBYTE(t); + DIRBYTE(cpustate, t); r = t << 1; CLR_NZVC; SET_FLAGS8(t,t,r); - WM(EAD,r); + WM(cpustate, EAD,r); } /* $09 ROL direct -**** */ -INLINE void rol_di( void ) +INLINE void rol_di( konami_state *cpustate ) { UINT16 t,r; - DIRBYTE(t); + DIRBYTE(cpustate, t); r = (CC & CC_C) | (t << 1); CLR_NZVC; SET_FLAGS8(t,t,r); - WM(EAD,r); + WM(cpustate, EAD,r); } /* $0A DEC direct -***- */ -INLINE void dec_di( void ) +INLINE void dec_di( konami_state *cpustate ) { UINT8 t; - DIRBYTE(t); + DIRBYTE(cpustate, t); --t; CLR_NZV; SET_FLAGS8D(t); - WM(EAD,t); + WM(cpustate, EAD,t); } /* $0B ILLEGAL */ /* $OC INC direct -***- */ -INLINE void inc_di( void ) +INLINE void inc_di( konami_state *cpustate ) { UINT8 t; - DIRBYTE(t); + DIRBYTE(cpustate, t); ++t; CLR_NZV; SET_FLAGS8I(t); - WM(EAD,t); + WM(cpustate, EAD,t); } /* $OD TST direct -**0- */ -INLINE void tst_di( void ) +INLINE void tst_di( konami_state *cpustate ) { UINT8 t; - DIRBYTE(t); + DIRBYTE(cpustate, t); CLR_NZV; SET_NZ8(t); } /* $0E JMP direct ----- */ -INLINE void jmp_di( void ) +INLINE void jmp_di( konami_state *cpustate ) { - DIRECT; + DIRECT(cpustate); PCD=EAD; } /* $0F CLR direct -0100 */ -INLINE void clr_di( void ) +INLINE void clr_di( konami_state *cpustate ) { - DIRECT; - WM(EAD,0); + DIRECT(cpustate); + WM(cpustate, EAD,0); CLR_NZVC; SEZ; } @@ -163,23 +163,23 @@ INLINE void clr_di( void ) /* $11 FLAG */ /* $12 NOP inherent ----- */ -INLINE void nop( void ) +INLINE void nop( konami_state *cpustate ) { ; } /* $13 SYNC inherent ----- */ -INLINE void sync( void ) +INLINE void sync( konami_state *cpustate ) { /* SYNC stops processing instructions until an interrupt request happens. */ /* This doesn't require the corresponding interrupt to be enabled: if it */ /* is disabled, execution continues with the next instruction. */ - konami.int_state |= KONAMI_SYNC; - CHECK_IRQ_LINES; - /* if KONAMI_SYNC has not been cleared by CHECK_IRQ_LINES, + cpustate->int_state |= KONAMI_SYNC; + check_irq_lines(cpustate); + /* if KONAMI_SYNC has not been cleared by check_irq_lines, * stop execution until the interrupt lines change. */ - if( (konami.int_state & KONAMI_SYNC) && konami_ICount > 0 ) - konami_ICount = 0; + if( (cpustate->int_state & KONAMI_SYNC) && cpustate->icount > 0 ) + cpustate->icount = 0; } /* $14 ILLEGAL */ @@ -187,21 +187,21 @@ INLINE void sync( void ) /* $15 ILLEGAL */ /* $16 LBRA relative ----- */ -INLINE void lbra( void ) +INLINE void lbra( konami_state *cpustate ) { - IMMWORD(ea); + IMMWORD(cpustate, cpustate->ea); PC += EA; /* EHC 980508 speed up busy loop */ - if( EA == 0xfffd && konami_ICount > 0 ) - konami_ICount = 0; + if( EA == 0xfffd && cpustate->icount > 0 ) + cpustate->icount = 0; } /* $17 LBSR relative ----- */ -INLINE void lbsr( void ) +INLINE void lbsr( konami_state *cpustate ) { - IMMWORD(ea); - PUSHWORD(pPC); + IMMWORD(cpustate, cpustate->ea); + PUSHWORD(cpustate, pPC); PC += EA; } @@ -209,7 +209,7 @@ INLINE void lbsr( void ) #if 1 /* $19 DAA inherent (A) -**0* */ -INLINE void daa( void ) +INLINE void daa( konami_state *cpustate ) { UINT8 msn, lsn; UINT16 t, cf = 0; @@ -224,7 +224,7 @@ INLINE void daa( void ) } #else /* $19 DAA inherent (A) -**0* */ -INLINE void daa( void ) +INLINE void daa( konami_state *cpustate ) { UINT16 t; t = A; @@ -238,27 +238,27 @@ INLINE void daa( void ) #endif /* $1A ORCC immediate ##### */ -INLINE void orcc( void ) +INLINE void orcc( konami_state *cpustate ) { UINT8 t; - IMMBYTE(t); + IMMBYTE(cpustate, t); CC |= t; - CHECK_IRQ_LINES; + check_irq_lines(cpustate); } /* $1B ILLEGAL */ /* $1C ANDCC immediate ##### */ -INLINE void andcc( void ) +INLINE void andcc( konami_state *cpustate ) { UINT8 t; - IMMBYTE(t); + IMMBYTE(cpustate, t); CC &= t; - CHECK_IRQ_LINES; + check_irq_lines(cpustate); } /* $1D SEX inherent -**0- */ -INLINE void sex( void ) +INLINE void sex( konami_state *cpustate ) { UINT16 t; t = SIGNED(B); @@ -269,12 +269,12 @@ INLINE void sex( void ) } /* $1E EXG inherent ----- */ -INLINE void exg( void ) +INLINE void exg( konami_state *cpustate ) { UINT16 t1 = 0, t2 = 0; UINT8 tb; - IMMBYTE(tb); + IMMBYTE(cpustate, tb); GETREG( t1, tb >> 4 ); GETREG( t2, tb & 0x0f ); @@ -284,211 +284,211 @@ INLINE void exg( void ) } /* $1F TFR inherent ----- */ -INLINE void tfr( void ) +INLINE void tfr( konami_state *cpustate ) { UINT8 tb; UINT16 t = 0; - IMMBYTE(tb); + IMMBYTE(cpustate, tb); GETREG( t, tb & 0x0f ); SETREG( t, ( tb >> 4 ) & 0x07 ); } /* $20 BRA relative ----- */ -INLINE void bra( void ) +INLINE void bra( konami_state *cpustate ) { UINT8 t; - IMMBYTE(t); + IMMBYTE(cpustate, t); PC += SIGNED(t); /* JB 970823 - speed up busy loops */ - if( t == 0xfe && konami_ICount > 0 ) - konami_ICount = 0; + if( t == 0xfe && cpustate->icount > 0 ) + cpustate->icount = 0; } /* $21 BRN relative ----- */ -INLINE void brn( void ) +INLINE void brn( konami_state *cpustate ) { UINT8 t; - IMMBYTE(t); + IMMBYTE(cpustate, t); } /* $1021 LBRN relative ----- */ -INLINE void lbrn( void ) +INLINE void lbrn( konami_state *cpustate ) { - IMMWORD(ea); + IMMWORD(cpustate, cpustate->ea); } /* $22 BHI relative ----- */ -INLINE void bhi( void ) +INLINE void bhi( konami_state *cpustate ) { - BRANCH( !(CC & (CC_Z|CC_C)) ); + BRANCH(cpustate, !(CC & (CC_Z|CC_C)) ); } /* $1022 LBHI relative ----- */ -INLINE void lbhi( void ) +INLINE void lbhi( konami_state *cpustate ) { - LBRANCH( !(CC & (CC_Z|CC_C)) ); + LBRANCH(cpustate, !(CC & (CC_Z|CC_C)) ); } /* $23 BLS relative ----- */ -INLINE void bls( void ) +INLINE void bls( konami_state *cpustate ) { - BRANCH( (CC & (CC_Z|CC_C)) ); + BRANCH(cpustate, (CC & (CC_Z|CC_C)) ); } /* $1023 LBLS relative ----- */ -INLINE void lbls( void ) +INLINE void lbls( konami_state *cpustate ) { - LBRANCH( (CC&(CC_Z|CC_C)) ); + LBRANCH(cpustate, (CC&(CC_Z|CC_C)) ); } /* $24 BCC relative ----- */ -INLINE void bcc( void ) +INLINE void bcc( konami_state *cpustate ) { - BRANCH( !(CC&CC_C) ); + BRANCH(cpustate, !(CC&CC_C) ); } /* $1024 LBCC relative ----- */ -INLINE void lbcc( void ) +INLINE void lbcc( konami_state *cpustate ) { - LBRANCH( !(CC&CC_C) ); + LBRANCH(cpustate, !(CC&CC_C) ); } /* $25 BCS relative ----- */ -INLINE void bcs( void ) +INLINE void bcs( konami_state *cpustate ) { - BRANCH( (CC&CC_C) ); + BRANCH(cpustate, (CC&CC_C) ); } /* $1025 LBCS relative ----- */ -INLINE void lbcs( void ) +INLINE void lbcs( konami_state *cpustate ) { - LBRANCH( (CC&CC_C) ); + LBRANCH(cpustate, (CC&CC_C) ); } /* $26 BNE relative ----- */ -INLINE void bne( void ) +INLINE void bne( konami_state *cpustate ) { - BRANCH( !(CC&CC_Z) ); + BRANCH(cpustate, !(CC&CC_Z) ); } /* $1026 LBNE relative ----- */ -INLINE void lbne( void ) +INLINE void lbne( konami_state *cpustate ) { - LBRANCH( !(CC&CC_Z) ); + LBRANCH(cpustate, !(CC&CC_Z) ); } /* $27 BEQ relative ----- */ -INLINE void beq( void ) +INLINE void beq( konami_state *cpustate ) { - BRANCH( (CC&CC_Z) ); + BRANCH(cpustate, (CC&CC_Z) ); } /* $1027 LBEQ relative ----- */ -INLINE void lbeq( void ) +INLINE void lbeq( konami_state *cpustate ) { - LBRANCH( (CC&CC_Z) ); + LBRANCH(cpustate, (CC&CC_Z) ); } /* $28 BVC relative ----- */ -INLINE void bvc( void ) +INLINE void bvc( konami_state *cpustate ) { - BRANCH( !(CC&CC_V) ); + BRANCH(cpustate, !(CC&CC_V) ); } /* $1028 LBVC relative ----- */ -INLINE void lbvc( void ) +INLINE void lbvc( konami_state *cpustate ) { - LBRANCH( !(CC&CC_V) ); + LBRANCH(cpustate, !(CC&CC_V) ); } /* $29 BVS relative ----- */ -INLINE void bvs( void ) +INLINE void bvs( konami_state *cpustate ) { - BRANCH( (CC&CC_V) ); + BRANCH(cpustate, (CC&CC_V) ); } /* $1029 LBVS relative ----- */ -INLINE void lbvs( void ) +INLINE void lbvs( konami_state *cpustate ) { - LBRANCH( (CC&CC_V) ); + LBRANCH(cpustate, (CC&CC_V) ); } /* $2A BPL relative ----- */ -INLINE void bpl( void ) +INLINE void bpl( konami_state *cpustate ) { - BRANCH( !(CC&CC_N) ); + BRANCH(cpustate, !(CC&CC_N) ); } /* $102A LBPL relative ----- */ -INLINE void lbpl( void ) +INLINE void lbpl( konami_state *cpustate ) { - LBRANCH( !(CC&CC_N) ); + LBRANCH(cpustate, !(CC&CC_N) ); } /* $2B BMI relative ----- */ -INLINE void bmi( void ) +INLINE void bmi( konami_state *cpustate ) { - BRANCH( (CC&CC_N) ); + BRANCH(cpustate, (CC&CC_N) ); } /* $102B LBMI relative ----- */ -INLINE void lbmi( void ) +INLINE void lbmi( konami_state *cpustate ) { - LBRANCH( (CC&CC_N) ); + LBRANCH(cpustate, (CC&CC_N) ); } /* $2C BGE relative ----- */ -INLINE void bge( void ) +INLINE void bge( konami_state *cpustate ) { - BRANCH( !NXORV ); + BRANCH(cpustate, !NXORV ); } /* $102C LBGE relative ----- */ -INLINE void lbge( void ) +INLINE void lbge( konami_state *cpustate ) { - LBRANCH( !NXORV ); + LBRANCH(cpustate, !NXORV ); } /* $2D BLT relative ----- */ -INLINE void blt( void ) +INLINE void blt( konami_state *cpustate ) { - BRANCH( NXORV ); + BRANCH(cpustate, NXORV ); } /* $102D LBLT relative ----- */ -INLINE void lblt( void ) +INLINE void lblt( konami_state *cpustate ) { - LBRANCH( NXORV ); + LBRANCH(cpustate, NXORV ); } /* $2E BGT relative ----- */ -INLINE void bgt( void ) +INLINE void bgt( konami_state *cpustate ) { - BRANCH( !(NXORV || (CC&CC_Z)) ); + BRANCH(cpustate, !(NXORV || (CC&CC_Z)) ); } /* $102E LBGT relative ----- */ -INLINE void lbgt( void ) +INLINE void lbgt( konami_state *cpustate ) { - LBRANCH( !(NXORV || (CC&CC_Z)) ); + LBRANCH(cpustate, !(NXORV || (CC&CC_Z)) ); } /* $2F BLE relative ----- */ -INLINE void ble( void ) +INLINE void ble( konami_state *cpustate ) { - BRANCH( (NXORV || (CC&CC_Z)) ); + BRANCH(cpustate, (NXORV || (CC&CC_Z)) ); } /* $102F LBLE relative ----- */ -INLINE void lble( void ) +INLINE void lble( konami_state *cpustate ) { - LBRANCH( (NXORV || (CC&CC_Z)) ); + LBRANCH(cpustate, (NXORV || (CC&CC_Z)) ); } /* $30 LEAX indexed --*-- */ -INLINE void leax( void ) +INLINE void leax( konami_state *cpustate ) { X = EA; CLR_Z; @@ -496,7 +496,7 @@ INLINE void leax( void ) } /* $31 LEAY indexed --*-- */ -INLINE void leay( void ) +INLINE void leay( konami_state *cpustate ) { Y = EA; CLR_Z; @@ -504,121 +504,121 @@ INLINE void leay( void ) } /* $32 LEAS indexed ----- */ -INLINE void leas( void ) +INLINE void leas( konami_state *cpustate ) { S = EA; - konami.int_state |= KONAMI_LDS; + cpustate->int_state |= KONAMI_LDS; } /* $33 LEAU indexed ----- */ -INLINE void leau( void ) +INLINE void leau( konami_state *cpustate ) { U = EA; } /* $34 PSHS inherent ----- */ -INLINE void pshs( void ) +INLINE void pshs( konami_state *cpustate ) { UINT8 t; - IMMBYTE(t); - if( t&0x80 ) { PUSHWORD(pPC); konami_ICount -= 2; } - if( t&0x40 ) { PUSHWORD(pU); konami_ICount -= 2; } - if( t&0x20 ) { PUSHWORD(pY); konami_ICount -= 2; } - if( t&0x10 ) { PUSHWORD(pX); konami_ICount -= 2; } - if( t&0x08 ) { PUSHBYTE(DP); konami_ICount -= 1; } - if( t&0x04 ) { PUSHBYTE(B); konami_ICount -= 1; } - if( t&0x02 ) { PUSHBYTE(A); konami_ICount -= 1; } - if( t&0x01 ) { PUSHBYTE(CC); konami_ICount -= 1; } + IMMBYTE(cpustate, t); + if( t&0x80 ) { PUSHWORD(cpustate, pPC); cpustate->icount -= 2; } + if( t&0x40 ) { PUSHWORD(cpustate, pU); cpustate->icount -= 2; } + if( t&0x20 ) { PUSHWORD(cpustate, pY); cpustate->icount -= 2; } + if( t&0x10 ) { PUSHWORD(cpustate, pX); cpustate->icount -= 2; } + if( t&0x08 ) { PUSHBYTE(cpustate, DP); cpustate->icount -= 1; } + if( t&0x04 ) { PUSHBYTE(cpustate, B); cpustate->icount -= 1; } + if( t&0x02 ) { PUSHBYTE(cpustate, A); cpustate->icount -= 1; } + if( t&0x01 ) { PUSHBYTE(cpustate, CC); cpustate->icount -= 1; } } /* 35 PULS inherent ----- */ -INLINE void puls( void ) +INLINE void puls( konami_state *cpustate ) { UINT8 t; - IMMBYTE(t); - if( t&0x01 ) { PULLBYTE(CC); konami_ICount -= 1; } - if( t&0x02 ) { PULLBYTE(A); konami_ICount -= 1; } - if( t&0x04 ) { PULLBYTE(B); konami_ICount -= 1; } - if( t&0x08 ) { PULLBYTE(DP); konami_ICount -= 1; } - if( t&0x10 ) { PULLWORD(XD); konami_ICount -= 2; } - if( t&0x20 ) { PULLWORD(YD); konami_ICount -= 2; } - if( t&0x40 ) { PULLWORD(UD); konami_ICount -= 2; } - if( t&0x80 ) { PULLWORD(PCD); konami_ICount -= 2; } + IMMBYTE(cpustate, t); + if( t&0x01 ) { PULLBYTE(cpustate, CC); cpustate->icount -= 1; } + if( t&0x02 ) { PULLBYTE(cpustate, A); cpustate->icount -= 1; } + if( t&0x04 ) { PULLBYTE(cpustate, B); cpustate->icount -= 1; } + if( t&0x08 ) { PULLBYTE(cpustate, DP); cpustate->icount -= 1; } + if( t&0x10 ) { PULLWORD(cpustate, XD); cpustate->icount -= 2; } + if( t&0x20 ) { PULLWORD(cpustate, YD); cpustate->icount -= 2; } + if( t&0x40 ) { PULLWORD(cpustate, UD); cpustate->icount -= 2; } + if( t&0x80 ) { PULLWORD(cpustate, PCD); cpustate->icount -= 2; } /* check after all PULLs */ - if( t&0x01 ) { CHECK_IRQ_LINES; } + if( t&0x01 ) { check_irq_lines(cpustate); } } /* $36 PSHU inherent ----- */ -INLINE void pshu( void ) +INLINE void pshu( konami_state *cpustate ) { UINT8 t; - IMMBYTE(t); - if( t&0x80 ) { PSHUWORD(pPC); konami_ICount -= 2; } - if( t&0x40 ) { PSHUWORD(pS); konami_ICount -= 2; } - if( t&0x20 ) { PSHUWORD(pY); konami_ICount -= 2; } - if( t&0x10 ) { PSHUWORD(pX); konami_ICount -= 2; } - if( t&0x08 ) { PSHUBYTE(DP); konami_ICount -= 1; } - if( t&0x04 ) { PSHUBYTE(B); konami_ICount -= 1; } - if( t&0x02 ) { PSHUBYTE(A); konami_ICount -= 1; } - if( t&0x01 ) { PSHUBYTE(CC); konami_ICount -= 1; } + IMMBYTE(cpustate, t); + if( t&0x80 ) { PSHUWORD(cpustate, pPC); cpustate->icount -= 2; } + if( t&0x40 ) { PSHUWORD(cpustate, pS); cpustate->icount -= 2; } + if( t&0x20 ) { PSHUWORD(cpustate, pY); cpustate->icount -= 2; } + if( t&0x10 ) { PSHUWORD(cpustate, pX); cpustate->icount -= 2; } + if( t&0x08 ) { PSHUBYTE(cpustate, DP); cpustate->icount -= 1; } + if( t&0x04 ) { PSHUBYTE(cpustate, B); cpustate->icount -= 1; } + if( t&0x02 ) { PSHUBYTE(cpustate, A); cpustate->icount -= 1; } + if( t&0x01 ) { PSHUBYTE(cpustate, CC); cpustate->icount -= 1; } } /* 37 PULU inherent ----- */ -INLINE void pulu( void ) +INLINE void pulu( konami_state *cpustate ) { UINT8 t; - IMMBYTE(t); - if( t&0x01 ) { PULUBYTE(CC); konami_ICount -= 1; } - if( t&0x02 ) { PULUBYTE(A); konami_ICount -= 1; } - if( t&0x04 ) { PULUBYTE(B); konami_ICount -= 1; } - if( t&0x08 ) { PULUBYTE(DP); konami_ICount -= 1; } - if( t&0x10 ) { PULUWORD(XD); konami_ICount -= 2; } - if( t&0x20 ) { PULUWORD(YD); konami_ICount -= 2; } - if( t&0x40 ) { PULUWORD(SD); konami_ICount -= 2; } - if( t&0x80 ) { PULUWORD(PCD); konami_ICount -= 2; } + IMMBYTE(cpustate, t); + if( t&0x01 ) { PULUBYTE(cpustate, CC); cpustate->icount -= 1; } + if( t&0x02 ) { PULUBYTE(cpustate, A); cpustate->icount -= 1; } + if( t&0x04 ) { PULUBYTE(cpustate, B); cpustate->icount -= 1; } + if( t&0x08 ) { PULUBYTE(cpustate, DP); cpustate->icount -= 1; } + if( t&0x10 ) { PULUWORD(cpustate, XD); cpustate->icount -= 2; } + if( t&0x20 ) { PULUWORD(cpustate, YD); cpustate->icount -= 2; } + if( t&0x40 ) { PULUWORD(cpustate, SD); cpustate->icount -= 2; } + if( t&0x80 ) { PULUWORD(cpustate, PCD); cpustate->icount -= 2; } /* check after all PULLs */ - if( t&0x01 ) { CHECK_IRQ_LINES; } + if( t&0x01 ) { check_irq_lines(cpustate); } } /* $38 ILLEGAL */ /* $39 RTS inherent ----- */ -INLINE void rts( void ) +INLINE void rts( konami_state *cpustate ) { - PULLWORD(PCD); + PULLWORD(cpustate, PCD); } /* $3A ABX inherent ----- */ -INLINE void abx( void ) +INLINE void abx( konami_state *cpustate ) { X += B; } /* $3B RTI inherent ##### */ -INLINE void rti( void ) +INLINE void rti( konami_state *cpustate ) { - PULLBYTE(CC); + PULLBYTE(cpustate, CC); if( CC & CC_E ) /* entire state saved? */ { - konami_ICount -= 9; - PULLBYTE(A); - PULLBYTE(B); - PULLBYTE(DP); - PULLWORD(XD); - PULLWORD(YD); - PULLWORD(UD); + cpustate->icount -= 9; + PULLBYTE(cpustate, A); + PULLBYTE(cpustate, B); + PULLBYTE(cpustate, DP); + PULLWORD(cpustate, XD); + PULLWORD(cpustate, YD); + PULLWORD(cpustate, UD); } - PULLWORD(PCD); - CHECK_IRQ_LINES; + PULLWORD(cpustate, PCD); + check_irq_lines(cpustate); } /* $3C CWAI inherent ----1 */ -INLINE void cwai( void ) +INLINE void cwai( konami_state *cpustate ) { UINT8 t; - IMMBYTE(t); + IMMBYTE(cpustate, t); CC &= t; /* * CWAI stacks the entire machine state on the hardware stack, @@ -626,22 +626,22 @@ INLINE void cwai( void ) * later, the state is *not* saved again after CWAI. */ CC |= CC_E; /* HJB 990225: save entire state */ - PUSHWORD(pPC); - PUSHWORD(pU); - PUSHWORD(pY); - PUSHWORD(pX); - PUSHBYTE(DP); - PUSHBYTE(B); - PUSHBYTE(A); - PUSHBYTE(CC); - konami.int_state |= KONAMI_CWAI; - CHECK_IRQ_LINES; - if( (konami.int_state & KONAMI_CWAI) && konami_ICount > 0 ) - konami_ICount = 0; + PUSHWORD(cpustate, pPC); + PUSHWORD(cpustate, pU); + PUSHWORD(cpustate, pY); + PUSHWORD(cpustate, pX); + PUSHBYTE(cpustate, DP); + PUSHBYTE(cpustate, B); + PUSHBYTE(cpustate, A); + PUSHBYTE(cpustate, CC); + cpustate->int_state |= KONAMI_CWAI; + check_irq_lines(cpustate); + if( (cpustate->int_state & KONAMI_CWAI) && cpustate->icount > 0 ) + cpustate->icount = 0; } /* $3D MUL inherent --*-@ */ -INLINE void mul( void ) +INLINE void mul( konami_state *cpustate ) { UINT16 t; t = A * B; @@ -652,53 +652,53 @@ INLINE void mul( void ) /* $3E ILLEGAL */ /* $3F SWI (SWI2 SWI3) absolute indirect ----- */ -INLINE void swi( void ) +INLINE void swi( konami_state *cpustate ) { CC |= CC_E; /* HJB 980225: save entire state */ - PUSHWORD(pPC); - PUSHWORD(pU); - PUSHWORD(pY); - PUSHWORD(pX); - PUSHBYTE(DP); - PUSHBYTE(B); - PUSHBYTE(A); - PUSHBYTE(CC); + PUSHWORD(cpustate, pPC); + PUSHWORD(cpustate, pU); + PUSHWORD(cpustate, pY); + PUSHWORD(cpustate, pX); + PUSHBYTE(cpustate, DP); + PUSHBYTE(cpustate, B); + PUSHBYTE(cpustate, A); + PUSHBYTE(cpustate, CC); CC |= CC_IF | CC_II; /* inhibit FIRQ and IRQ */ - PCD=RM16(0xfffa); + PCD=RM16(cpustate, 0xfffa); } /* $103F SWI2 absolute indirect ----- */ -INLINE void swi2( void ) +INLINE void swi2( konami_state *cpustate ) { CC |= CC_E; /* HJB 980225: save entire state */ - PUSHWORD(pPC); - PUSHWORD(pU); - PUSHWORD(pY); - PUSHWORD(pX); - PUSHBYTE(DP); - PUSHBYTE(B); - PUSHBYTE(A); - PUSHBYTE(CC); - PCD=RM16(0xfff4); + PUSHWORD(cpustate, pPC); + PUSHWORD(cpustate, pU); + PUSHWORD(cpustate, pY); + PUSHWORD(cpustate, pX); + PUSHBYTE(cpustate, DP); + PUSHBYTE(cpustate, B); + PUSHBYTE(cpustate, A); + PUSHBYTE(cpustate, CC); + PCD=RM16(cpustate, 0xfff4); } /* $113F SWI3 absolute indirect ----- */ -INLINE void swi3( void ) +INLINE void swi3( konami_state *cpustate ) { CC |= CC_E; /* HJB 980225: save entire state */ - PUSHWORD(pPC); - PUSHWORD(pU); - PUSHWORD(pY); - PUSHWORD(pX); - PUSHBYTE(DP); - PUSHBYTE(B); - PUSHBYTE(A); - PUSHBYTE(CC); - PCD=RM16(0xfff2); + PUSHWORD(cpustate, pPC); + PUSHWORD(cpustate, pU); + PUSHWORD(cpustate, pY); + PUSHWORD(cpustate, pX); + PUSHBYTE(cpustate, DP); + PUSHBYTE(cpustate, B); + PUSHBYTE(cpustate, A); + PUSHBYTE(cpustate, CC); + PCD=RM16(cpustate, 0xfff2); } /* $40 NEGA inherent ?**** */ -INLINE void nega( void ) +INLINE void nega( konami_state *cpustate ) { UINT16 r; r = -A; @@ -712,7 +712,7 @@ INLINE void nega( void ) /* $42 ILLEGAL */ /* $43 COMA inherent -**01 */ -INLINE void coma( void ) +INLINE void coma( konami_state *cpustate ) { A = ~A; CLR_NZV; @@ -721,7 +721,7 @@ INLINE void coma( void ) } /* $44 LSRA inherent -0*-* */ -INLINE void lsra( void ) +INLINE void lsra( konami_state *cpustate ) { CLR_NZC; CC |= (A & CC_C); @@ -732,7 +732,7 @@ INLINE void lsra( void ) /* $45 ILLEGAL */ /* $46 RORA inherent -**-* */ -INLINE void rora( void ) +INLINE void rora( konami_state *cpustate ) { UINT8 r; r = (CC & CC_C) << 7; @@ -744,7 +744,7 @@ INLINE void rora( void ) } /* $47 ASRA inherent ?**-* */ -INLINE void asra( void ) +INLINE void asra( konami_state *cpustate ) { CLR_NZC; CC |= (A & CC_C); @@ -753,7 +753,7 @@ INLINE void asra( void ) } /* $48 ASLA inherent ?**** */ -INLINE void asla( void ) +INLINE void asla( konami_state *cpustate ) { UINT16 r; r = A << 1; @@ -763,7 +763,7 @@ INLINE void asla( void ) } /* $49 ROLA inherent -**** */ -INLINE void rola( void ) +INLINE void rola( konami_state *cpustate ) { UINT16 t,r; t = A; @@ -773,7 +773,7 @@ INLINE void rola( void ) } /* $4A DECA inherent -***- */ -INLINE void deca( void ) +INLINE void deca( konami_state *cpustate ) { --A; CLR_NZV; @@ -783,7 +783,7 @@ INLINE void deca( void ) /* $4B ILLEGAL */ /* $4C INCA inherent -***- */ -INLINE void inca( void ) +INLINE void inca( konami_state *cpustate ) { ++A; CLR_NZV; @@ -791,7 +791,7 @@ INLINE void inca( void ) } /* $4D TSTA inherent -**0- */ -INLINE void tsta( void ) +INLINE void tsta( konami_state *cpustate ) { CLR_NZV; SET_NZ8(A); @@ -800,14 +800,14 @@ INLINE void tsta( void ) /* $4E ILLEGAL */ /* $4F CLRA inherent -0100 */ -INLINE void clra( void ) +INLINE void clra( konami_state *cpustate ) { A = 0; CLR_NZVC; SEZ; } /* $50 NEGB inherent ?**** */ -INLINE void negb( void ) +INLINE void negb( konami_state *cpustate ) { UINT16 r; r = -B; @@ -821,7 +821,7 @@ INLINE void negb( void ) /* $52 ILLEGAL */ /* $53 COMB inherent -**01 */ -INLINE void comb( void ) +INLINE void comb( konami_state *cpustate ) { B = ~B; CLR_NZV; @@ -830,7 +830,7 @@ INLINE void comb( void ) } /* $54 LSRB inherent -0*-* */ -INLINE void lsrb( void ) +INLINE void lsrb( konami_state *cpustate ) { CLR_NZC; CC |= (B & CC_C); @@ -841,7 +841,7 @@ INLINE void lsrb( void ) /* $55 ILLEGAL */ /* $56 RORB inherent -**-* */ -INLINE void rorb( void ) +INLINE void rorb( konami_state *cpustate ) { UINT8 r; r = (CC & CC_C) << 7; @@ -853,7 +853,7 @@ INLINE void rorb( void ) } /* $57 ASRB inherent ?**-* */ -INLINE void asrb( void ) +INLINE void asrb( konami_state *cpustate ) { CLR_NZC; CC |= (B & CC_C); @@ -862,7 +862,7 @@ INLINE void asrb( void ) } /* $58 ASLB inherent ?**** */ -INLINE void aslb( void ) +INLINE void aslb( konami_state *cpustate ) { UINT16 r; r = B << 1; @@ -872,7 +872,7 @@ INLINE void aslb( void ) } /* $59 ROLB inherent -**** */ -INLINE void rolb( void ) +INLINE void rolb( konami_state *cpustate ) { UINT16 t,r; t = B; @@ -884,7 +884,7 @@ INLINE void rolb( void ) } /* $5A DECB inherent -***- */ -INLINE void decb( void ) +INLINE void decb( konami_state *cpustate ) { --B; CLR_NZV; @@ -894,7 +894,7 @@ INLINE void decb( void ) /* $5B ILLEGAL */ /* $5C INCB inherent -***- */ -INLINE void incb( void ) +INLINE void incb( konami_state *cpustate ) { ++B; CLR_NZV; @@ -902,7 +902,7 @@ INLINE void incb( void ) } /* $5D TSTB inherent -**0- */ -INLINE void tstb( void ) +INLINE void tstb( konami_state *cpustate ) { CLR_NZV; SET_NZ8(B); @@ -911,21 +911,21 @@ INLINE void tstb( void ) /* $5E ILLEGAL */ /* $5F CLRB inherent -0100 */ -INLINE void clrb( void ) +INLINE void clrb( konami_state *cpustate ) { B = 0; CLR_NZVC; SEZ; } /* $60 NEG indexed ?**** */ -INLINE void neg_ix( void ) +INLINE void neg_ix( konami_state *cpustate ) { UINT16 r,t; - t = RM(EAD); + t = RM(cpustate, EAD); r = -t; CLR_NZVC; SET_FLAGS8(0,t,r); - WM(EAD,r); + WM(cpustate, EAD,r); } /* $61 ILLEGAL */ @@ -933,125 +933,125 @@ INLINE void neg_ix( void ) /* $62 ILLEGAL */ /* $63 COM indexed -**01 */ -INLINE void com_ix( void ) +INLINE void com_ix( konami_state *cpustate ) { UINT8 t; - t = ~RM(EAD); + t = ~RM(cpustate, EAD); CLR_NZV; SET_NZ8(t); SEC; - WM(EAD,t); + WM(cpustate, EAD,t); } /* $64 LSR indexed -0*-* */ -INLINE void lsr_ix( void ) +INLINE void lsr_ix( konami_state *cpustate ) { UINT8 t; - t = RM(EAD); + t = RM(cpustate, EAD); CLR_NZC; CC |= (t & CC_C); t>>=1; SET_Z8(t); - WM(EAD,t); + WM(cpustate, EAD,t); } /* $65 ILLEGAL */ /* $66 ROR indexed -**-* */ -INLINE void ror_ix( void ) +INLINE void ror_ix( konami_state *cpustate ) { UINT8 t,r; - t = RM(EAD); + t = RM(cpustate, EAD); r = (CC & CC_C) << 7; CLR_NZC; CC |= (t & CC_C); r |= t>>1; SET_NZ8(r); - WM(EAD,r); + WM(cpustate, EAD,r); } /* $67 ASR indexed ?**-* */ -INLINE void asr_ix( void ) +INLINE void asr_ix( konami_state *cpustate ) { UINT8 t; - t = RM(EAD); + t = RM(cpustate, EAD); CLR_NZC; CC |= (t & CC_C); t=(t&0x80)|(t>>1); SET_NZ8(t); - WM(EAD,t); + WM(cpustate, EAD,t); } /* $68 ASL indexed ?**** */ -INLINE void asl_ix( void ) +INLINE void asl_ix( konami_state *cpustate ) { UINT16 t,r; - t = RM(EAD); + t = RM(cpustate, EAD); r = t << 1; CLR_NZVC; SET_FLAGS8(t,t,r); - WM(EAD,r); + WM(cpustate, EAD,r); } /* $69 ROL indexed -**** */ -INLINE void rol_ix( void ) +INLINE void rol_ix( konami_state *cpustate ) { UINT16 t,r; - t = RM(EAD); + t = RM(cpustate, EAD); r = CC & CC_C; r |= t << 1; CLR_NZVC; SET_FLAGS8(t,t,r); - WM(EAD,r); + WM(cpustate, EAD,r); } /* $6A DEC indexed -***- */ -INLINE void dec_ix( void ) +INLINE void dec_ix( konami_state *cpustate ) { UINT8 t; - t = RM(EAD) - 1; + t = RM(cpustate, EAD) - 1; CLR_NZV; SET_FLAGS8D(t); - WM(EAD,t); + WM(cpustate, EAD,t); } /* $6B ILLEGAL */ /* $6C INC indexed -***- */ -INLINE void inc_ix( void ) +INLINE void inc_ix( konami_state *cpustate ) { UINT8 t; - t = RM(EAD) + 1; + t = RM(cpustate, EAD) + 1; CLR_NZV; SET_FLAGS8I(t); - WM(EAD,t); + WM(cpustate, EAD,t); } /* $6D TST indexed -**0- */ -INLINE void tst_ix( void ) +INLINE void tst_ix( konami_state *cpustate ) { UINT8 t; - t = RM(EAD); + t = RM(cpustate, EAD); CLR_NZV; SET_NZ8(t); } /* $6E JMP indexed ----- */ -INLINE void jmp_ix( void ) +INLINE void jmp_ix( konami_state *cpustate ) { PCD=EAD; } /* $6F CLR indexed -0100 */ -INLINE void clr_ix( void ) +INLINE void clr_ix( konami_state *cpustate ) { - WM(EAD,0); + WM(cpustate, EAD,0); CLR_NZVC; SEZ; } /* $70 NEG extended ?**** */ -INLINE void neg_ex( void ) +INLINE void neg_ex( konami_state *cpustate ) { UINT16 r,t; - EXTBYTE(t); r=-t; + EXTBYTE(cpustate, t); r=-t; CLR_NZVC; SET_FLAGS8(0,t,r); - WM(EAD,r); + WM(cpustate, EAD,r); } /* $71 ILLEGAL */ @@ -1059,110 +1059,110 @@ INLINE void neg_ex( void ) /* $72 ILLEGAL */ /* $73 COM extended -**01 */ -INLINE void com_ex( void ) +INLINE void com_ex( konami_state *cpustate ) { UINT8 t; - EXTBYTE(t); t = ~t; + EXTBYTE(cpustate, t); t = ~t; CLR_NZV; SET_NZ8(t); SEC; - WM(EAD,t); + WM(cpustate, EAD,t); } /* $74 LSR extended -0*-* */ -INLINE void lsr_ex( void ) +INLINE void lsr_ex( konami_state *cpustate ) { UINT8 t; - EXTBYTE(t); CLR_NZC; CC |= (t & CC_C); + EXTBYTE(cpustate, t); CLR_NZC; CC |= (t & CC_C); t>>=1; SET_Z8(t); - WM(EAD,t); + WM(cpustate, EAD,t); } /* $75 ILLEGAL */ /* $76 ROR extended -**-* */ -INLINE void ror_ex( void ) +INLINE void ror_ex( konami_state *cpustate ) { UINT8 t,r; - EXTBYTE(t); r=(CC & CC_C) << 7; + EXTBYTE(cpustate, t); r=(CC & CC_C) << 7; CLR_NZC; CC |= (t & CC_C); r |= t>>1; SET_NZ8(r); - WM(EAD,r); + WM(cpustate, EAD,r); } /* $77 ASR extended ?**-* */ -INLINE void asr_ex( void ) +INLINE void asr_ex( konami_state *cpustate ) { UINT8 t; - EXTBYTE(t); CLR_NZC; CC |= (t & CC_C); + EXTBYTE(cpustate, t); CLR_NZC; CC |= (t & CC_C); t=(t&0x80)|(t>>1); SET_NZ8(t); - WM(EAD,t); + WM(cpustate, EAD,t); } /* $78 ASL extended ?**** */ -INLINE void asl_ex( void ) +INLINE void asl_ex( konami_state *cpustate ) { UINT16 t,r; - EXTBYTE(t); r=t<<1; + EXTBYTE(cpustate, t); r=t<<1; CLR_NZVC; SET_FLAGS8(t,t,r); - WM(EAD,r); + WM(cpustate, EAD,r); } /* $79 ROL extended -**** */ -INLINE void rol_ex( void ) +INLINE void rol_ex( konami_state *cpustate ) { UINT16 t,r; - EXTBYTE(t); r = (CC & CC_C) | (t << 1); + EXTBYTE(cpustate, t); r = (CC & CC_C) | (t << 1); CLR_NZVC; SET_FLAGS8(t,t,r); - WM(EAD,r); + WM(cpustate, EAD,r); } /* $7A DEC extended -***- */ -INLINE void dec_ex( void ) +INLINE void dec_ex( konami_state *cpustate ) { UINT8 t; - EXTBYTE(t); --t; + EXTBYTE(cpustate, t); --t; CLR_NZV; SET_FLAGS8D(t); - WM(EAD,t); + WM(cpustate, EAD,t); } /* $7B ILLEGAL */ /* $7C INC extended -***- */ -INLINE void inc_ex( void ) +INLINE void inc_ex( konami_state *cpustate ) { UINT8 t; - EXTBYTE(t); ++t; + EXTBYTE(cpustate, t); ++t; CLR_NZV; SET_FLAGS8I(t); - WM(EAD,t); + WM(cpustate, EAD,t); } /* $7D TST extended -**0- */ -INLINE void tst_ex( void ) +INLINE void tst_ex( konami_state *cpustate ) { UINT8 t; - EXTBYTE(t); CLR_NZV; SET_NZ8(t); + EXTBYTE(cpustate, t); CLR_NZV; SET_NZ8(t); } /* $7E JMP extended ----- */ -INLINE void jmp_ex( void ) +INLINE void jmp_ex( konami_state *cpustate ) { - EXTENDED; + EXTENDED(cpustate); PCD=EAD; } /* $7F CLR extended -0100 */ -INLINE void clr_ex( void ) +INLINE void clr_ex( konami_state *cpustate ) { - EXTENDED; - WM(EAD,0); + EXTENDED(cpustate); + WM(cpustate, EAD,0); CLR_NZVC; SEZ; } /* $80 SUBA immediate ?**** */ -INLINE void suba_im( void ) +INLINE void suba_im( konami_state *cpustate ) { UINT16 t,r; - IMMBYTE(t); + IMMBYTE(cpustate, t); r = A - t; CLR_NZVC; SET_FLAGS8(A,t,r); @@ -1170,20 +1170,20 @@ INLINE void suba_im( void ) } /* $81 CMPA immediate ?**** */ -INLINE void cmpa_im( void ) +INLINE void cmpa_im( konami_state *cpustate ) { UINT16 t,r; - IMMBYTE(t); + IMMBYTE(cpustate, t); r = A - t; CLR_NZVC; SET_FLAGS8(A,t,r); } /* $82 SBCA immediate ?**** */ -INLINE void sbca_im( void ) +INLINE void sbca_im( konami_state *cpustate ) { UINT16 t,r; - IMMBYTE(t); + IMMBYTE(cpustate, t); r = A - t - (CC & CC_C); CLR_NZVC; SET_FLAGS8(A,t,r); @@ -1191,11 +1191,11 @@ INLINE void sbca_im( void ) } /* $83 SUBD (CMPD CMPU) immediate -**** */ -INLINE void subd_im( void ) +INLINE void subd_im( konami_state *cpustate ) { UINT32 r,d; PAIR b; - IMMWORD(b); + IMMWORD(cpustate, b); d = D; r = d - b.d; CLR_NZVC; @@ -1204,11 +1204,11 @@ INLINE void subd_im( void ) } /* $1083 CMPD immediate -**** */ -INLINE void cmpd_im( void ) +INLINE void cmpd_im( konami_state *cpustate ) { UINT32 r,d; PAIR b; - IMMWORD(b); + IMMWORD(cpustate, b); d = D; r = d - b.d; CLR_NZVC; @@ -1216,11 +1216,11 @@ INLINE void cmpd_im( void ) } /* $1183 CMPU immediate -**** */ -INLINE void cmpu_im( void ) +INLINE void cmpu_im( konami_state *cpustate ) { UINT32 r, d; PAIR b; - IMMWORD(b); + IMMWORD(cpustate, b); d = U; r = d - b.d; CLR_NZVC; @@ -1228,58 +1228,58 @@ INLINE void cmpu_im( void ) } /* $84 ANDA immediate -**0- */ -INLINE void anda_im( void ) +INLINE void anda_im( konami_state *cpustate ) { UINT8 t; - IMMBYTE(t); + IMMBYTE(cpustate, t); A &= t; CLR_NZV; SET_NZ8(A); } /* $85 BITA immediate -**0- */ -INLINE void bita_im( void ) +INLINE void bita_im( konami_state *cpustate ) { UINT8 t,r; - IMMBYTE(t); + IMMBYTE(cpustate, t); r = A & t; CLR_NZV; SET_NZ8(r); } /* $86 LDA immediate -**0- */ -INLINE void lda_im( void ) +INLINE void lda_im( konami_state *cpustate ) { - IMMBYTE(A); + IMMBYTE(cpustate, A); CLR_NZV; SET_NZ8(A); } /* is this a legal instruction? */ /* $87 STA immediate -**0- */ -INLINE void sta_im( void ) +INLINE void sta_im( konami_state *cpustate ) { CLR_NZV; SET_NZ8(A); - IMM8; - WM(EAD,A); + IMM8(cpustate); + WM(cpustate, EAD,A); } /* $88 EORA immediate -**0- */ -INLINE void eora_im( void ) +INLINE void eora_im( konami_state *cpustate ) { UINT8 t; - IMMBYTE(t); + IMMBYTE(cpustate, t); A ^= t; CLR_NZV; SET_NZ8(A); } /* $89 ADCA immediate ***** */ -INLINE void adca_im( void ) +INLINE void adca_im( konami_state *cpustate ) { UINT16 t,r; - IMMBYTE(t); + IMMBYTE(cpustate, t); r = A + t + (CC & CC_C); CLR_HNZVC; SET_FLAGS8(A,t,r); @@ -1288,20 +1288,20 @@ INLINE void adca_im( void ) } /* $8A ORA immediate -**0- */ -INLINE void ora_im( void ) +INLINE void ora_im( konami_state *cpustate ) { UINT8 t; - IMMBYTE(t); + IMMBYTE(cpustate, t); A |= t; CLR_NZV; SET_NZ8(A); } /* $8B ADDA immediate ***** */ -INLINE void adda_im( void ) +INLINE void adda_im( konami_state *cpustate ) { UINT16 t,r; - IMMBYTE(t); + IMMBYTE(cpustate, t); r = A + t; CLR_HNZVC; SET_FLAGS8(A,t,r); @@ -1310,11 +1310,11 @@ INLINE void adda_im( void ) } /* $8C CMPX (CMPY CMPS) immediate -**** */ -INLINE void cmpx_im( void ) +INLINE void cmpx_im( konami_state *cpustate ) { UINT32 r,d; PAIR b; - IMMWORD(b); + IMMWORD(cpustate, b); d = X; r = d - b.d; CLR_NZVC; @@ -1322,11 +1322,11 @@ INLINE void cmpx_im( void ) } /* $108C CMPY immediate -**** */ -INLINE void cmpy_im( void ) +INLINE void cmpy_im( konami_state *cpustate ) { UINT32 r,d; PAIR b; - IMMWORD(b); + IMMWORD(cpustate, b); d = Y; r = d - b.d; CLR_NZVC; @@ -1334,11 +1334,11 @@ INLINE void cmpy_im( void ) } /* $118C CMPS immediate -**** */ -INLINE void cmps_im( void ) +INLINE void cmps_im( konami_state *cpustate ) { UINT32 r,d; PAIR b; - IMMWORD(b); + IMMWORD(cpustate, b); d = S; r = d - b.d; CLR_NZVC; @@ -1346,55 +1346,55 @@ INLINE void cmps_im( void ) } /* $8D BSR ----- */ -INLINE void bsr( void ) +INLINE void bsr( konami_state *cpustate ) { UINT8 t; - IMMBYTE(t); - PUSHWORD(pPC); + IMMBYTE(cpustate, t); + PUSHWORD(cpustate, pPC); PC += SIGNED(t); } /* $8E LDX (LDY) immediate -**0- */ -INLINE void ldx_im( void ) +INLINE void ldx_im( konami_state *cpustate ) { - IMMWORD(pX); + IMMWORD(cpustate, pX); CLR_NZV; SET_NZ16(X); } /* $108E LDY immediate -**0- */ -INLINE void ldy_im( void ) +INLINE void ldy_im( konami_state *cpustate ) { - IMMWORD(pY); + IMMWORD(cpustate, pY); CLR_NZV; SET_NZ16(Y); } /* is this a legal instruction? */ /* $8F STX (STY) immediate -**0- */ -INLINE void stx_im( void ) +INLINE void stx_im( konami_state *cpustate ) { CLR_NZV; SET_NZ16(X); - IMM16; - WM16(EAD,&pX); + IMM16(cpustate); + WM16(cpustate, EAD,&pX); } /* is this a legal instruction? */ /* $108F STY immediate -**0- */ -INLINE void sty_im( void ) +INLINE void sty_im( konami_state *cpustate ) { CLR_NZV; SET_NZ16(Y); - IMM16; - WM16(EAD,&pY); + IMM16(cpustate); + WM16(cpustate, EAD,&pY); } /* $90 SUBA direct ?**** */ -INLINE void suba_di( void ) +INLINE void suba_di( konami_state *cpustate ) { UINT16 t,r; - DIRBYTE(t); + DIRBYTE(cpustate, t); r = A - t; CLR_NZVC; SET_FLAGS8(A,t,r); @@ -1402,20 +1402,20 @@ INLINE void suba_di( void ) } /* $91 CMPA direct ?**** */ -INLINE void cmpa_di( void ) +INLINE void cmpa_di( konami_state *cpustate ) { UINT16 t,r; - DIRBYTE(t); + DIRBYTE(cpustate, t); r = A - t; CLR_NZVC; SET_FLAGS8(A,t,r); } /* $92 SBCA direct ?**** */ -INLINE void sbca_di( void ) +INLINE void sbca_di( konami_state *cpustate ) { UINT16 t,r; - DIRBYTE(t); + DIRBYTE(cpustate, t); r = A - t - (CC & CC_C); CLR_NZVC; SET_FLAGS8(A,t,r); @@ -1423,11 +1423,11 @@ INLINE void sbca_di( void ) } /* $93 SUBD (CMPD CMPU) direct -**** */ -INLINE void subd_di( void ) +INLINE void subd_di( konami_state *cpustate ) { UINT32 r,d; PAIR b; - DIRWORD(b); + DIRWORD(cpustate, b); d = D; r = d - b.d; CLR_NZVC; @@ -1436,11 +1436,11 @@ INLINE void subd_di( void ) } /* $1093 CMPD direct -**** */ -INLINE void cmpd_di( void ) +INLINE void cmpd_di( konami_state *cpustate ) { UINT32 r,d; PAIR b; - DIRWORD(b); + DIRWORD(cpustate, b); d = D; r = d - b.d; CLR_NZVC; @@ -1448,11 +1448,11 @@ INLINE void cmpd_di( void ) } /* $1193 CMPU direct -**** */ -INLINE void cmpu_di( void ) +INLINE void cmpu_di( konami_state *cpustate ) { UINT32 r,d; PAIR b; - DIRWORD(b); + DIRWORD(cpustate, b); d = U; r = d - b.d; CLR_NZVC; @@ -1460,57 +1460,57 @@ INLINE void cmpu_di( void ) } /* $94 ANDA direct -**0- */ -INLINE void anda_di( void ) +INLINE void anda_di( konami_state *cpustate ) { UINT8 t; - DIRBYTE(t); + DIRBYTE(cpustate, t); A &= t; CLR_NZV; SET_NZ8(A); } /* $95 BITA direct -**0- */ -INLINE void bita_di( void ) +INLINE void bita_di( konami_state *cpustate ) { UINT8 t,r; - DIRBYTE(t); + DIRBYTE(cpustate, t); r = A & t; CLR_NZV; SET_NZ8(r); } /* $96 LDA direct -**0- */ -INLINE void lda_di( void ) +INLINE void lda_di( konami_state *cpustate ) { - DIRBYTE(A); + DIRBYTE(cpustate, A); CLR_NZV; SET_NZ8(A); } /* $97 STA direct -**0- */ -INLINE void sta_di( void ) +INLINE void sta_di( konami_state *cpustate ) { CLR_NZV; SET_NZ8(A); - DIRECT; - WM(EAD,A); + DIRECT(cpustate); + WM(cpustate, EAD,A); } /* $98 EORA direct -**0- */ -INLINE void eora_di( void ) +INLINE void eora_di( konami_state *cpustate ) { UINT8 t; - DIRBYTE(t); + DIRBYTE(cpustate, t); A ^= t; CLR_NZV; SET_NZ8(A); } /* $99 ADCA direct ***** */ -INLINE void adca_di( void ) +INLINE void adca_di( konami_state *cpustate ) { UINT16 t,r; - DIRBYTE(t); + DIRBYTE(cpustate, t); r = A + t + (CC & CC_C); CLR_HNZVC; SET_FLAGS8(A,t,r); @@ -1519,20 +1519,20 @@ INLINE void adca_di( void ) } /* $9A ORA direct -**0- */ -INLINE void ora_di( void ) +INLINE void ora_di( konami_state *cpustate ) { UINT8 t; - DIRBYTE(t); + DIRBYTE(cpustate, t); A |= t; CLR_NZV; SET_NZ8(A); } /* $9B ADDA direct ***** */ -INLINE void adda_di( void ) +INLINE void adda_di( konami_state *cpustate ) { UINT16 t,r; - DIRBYTE(t); + DIRBYTE(cpustate, t); r = A + t; CLR_HNZVC; SET_FLAGS8(A,t,r); @@ -1541,11 +1541,11 @@ INLINE void adda_di( void ) } /* $9C CMPX (CMPY CMPS) direct -**** */ -INLINE void cmpx_di( void ) +INLINE void cmpx_di( konami_state *cpustate ) { UINT32 r,d; PAIR b; - DIRWORD(b); + DIRWORD(cpustate, b); d = X; r = d - b.d; CLR_NZVC; @@ -1553,11 +1553,11 @@ INLINE void cmpx_di( void ) } /* $109C CMPY direct -**** */ -INLINE void cmpy_di( void ) +INLINE void cmpy_di( konami_state *cpustate ) { UINT32 r,d; PAIR b; - DIRWORD(b); + DIRWORD(cpustate, b); d = Y; r = d - b.d; CLR_NZVC; @@ -1565,11 +1565,11 @@ INLINE void cmpy_di( void ) } /* $119C CMPS direct -**** */ -INLINE void cmps_di( void ) +INLINE void cmps_di( konami_state *cpustate ) { UINT32 r,d; PAIR b; - DIRWORD(b); + DIRWORD(cpustate, b); d = S; r = d - b.d; CLR_NZVC; @@ -1577,52 +1577,52 @@ INLINE void cmps_di( void ) } /* $9D JSR direct ----- */ -INLINE void jsr_di( void ) +INLINE void jsr_di( konami_state *cpustate ) { - DIRECT; - PUSHWORD(pPC); + DIRECT(cpustate); + PUSHWORD(cpustate, pPC); PCD=EAD; } /* $9E LDX (LDY) direct -**0- */ -INLINE void ldx_di( void ) +INLINE void ldx_di( konami_state *cpustate ) { - DIRWORD(pX); + DIRWORD(cpustate, pX); CLR_NZV; SET_NZ16(X); } /* $109E LDY direct -**0- */ -INLINE void ldy_di( void ) +INLINE void ldy_di( konami_state *cpustate ) { - DIRWORD(pY); + DIRWORD(cpustate, pY); CLR_NZV; SET_NZ16(Y); } /* $9F STX (STY) direct -**0- */ -INLINE void stx_di( void ) +INLINE void stx_di( konami_state *cpustate ) { CLR_NZV; SET_NZ16(X); - DIRECT; - WM16(EAD,&pX); + DIRECT(cpustate); + WM16(cpustate, EAD,&pX); } /* $109F STY direct -**0- */ -INLINE void sty_di( void ) +INLINE void sty_di( konami_state *cpustate ) { CLR_NZV; SET_NZ16(Y); - DIRECT; - WM16(EAD,&pY); + DIRECT(cpustate); + WM16(cpustate, EAD,&pY); } /* $a0 SUBA indexed ?**** */ -INLINE void suba_ix( void ) +INLINE void suba_ix( konami_state *cpustate ) { UINT16 t,r; - t = RM(EAD); + t = RM(cpustate, EAD); r = A - t; CLR_NZVC; SET_FLAGS8(A,t,r); @@ -1630,20 +1630,20 @@ INLINE void suba_ix( void ) } /* $a1 CMPA indexed ?**** */ -INLINE void cmpa_ix( void ) +INLINE void cmpa_ix( konami_state *cpustate ) { UINT16 t,r; - t = RM(EAD); + t = RM(cpustate, EAD); r = A - t; CLR_NZVC; SET_FLAGS8(A,t,r); } /* $a2 SBCA indexed ?**** */ -INLINE void sbca_ix( void ) +INLINE void sbca_ix( konami_state *cpustate ) { UINT16 t,r; - t = RM(EAD); + t = RM(cpustate, EAD); r = A - t - (CC & CC_C); CLR_NZVC; SET_FLAGS8(A,t,r); @@ -1651,11 +1651,11 @@ INLINE void sbca_ix( void ) } /* $a3 SUBD (CMPD CMPU) indexed -**** */ -INLINE void subd_ix( void ) +INLINE void subd_ix( konami_state *cpustate ) { UINT32 r,d; PAIR b; - b.d=RM16(EAD); + b.d=RM16(cpustate, EAD); d = D; r = d - b.d; CLR_NZVC; @@ -1664,11 +1664,11 @@ INLINE void subd_ix( void ) } /* $10a3 CMPD indexed -**** */ -INLINE void cmpd_ix( void ) +INLINE void cmpd_ix( konami_state *cpustate ) { UINT32 r,d; PAIR b; - b.d=RM16(EAD); + b.d=RM16(cpustate, EAD); d = D; r = d - b.d; CLR_NZVC; @@ -1676,62 +1676,62 @@ INLINE void cmpd_ix( void ) } /* $11a3 CMPU indexed -**** */ -INLINE void cmpu_ix( void ) +INLINE void cmpu_ix( konami_state *cpustate ) { UINT32 r; PAIR b; - b.d=RM16(EAD); + b.d=RM16(cpustate, EAD); r = U - b.d; CLR_NZVC; SET_FLAGS16(U,b.d,r); } /* $a4 ANDA indexed -**0- */ -INLINE void anda_ix( void ) +INLINE void anda_ix( konami_state *cpustate ) { - A &= RM(EAD); + A &= RM(cpustate, EAD); CLR_NZV; SET_NZ8(A); } /* $a5 BITA indexed -**0- */ -INLINE void bita_ix( void ) +INLINE void bita_ix( konami_state *cpustate ) { UINT8 r; - r = A & RM(EAD); + r = A & RM(cpustate, EAD); CLR_NZV; SET_NZ8(r); } /* $a6 LDA indexed -**0- */ -INLINE void lda_ix( void ) +INLINE void lda_ix( konami_state *cpustate ) { - A = RM(EAD); + A = RM(cpustate, EAD); CLR_NZV; SET_NZ8(A); } /* $a7 STA indexed -**0- */ -INLINE void sta_ix( void ) +INLINE void sta_ix( konami_state *cpustate ) { CLR_NZV; SET_NZ8(A); - WM(EAD,A); + WM(cpustate, EAD,A); } /* $a8 EORA indexed -**0- */ -INLINE void eora_ix( void ) +INLINE void eora_ix( konami_state *cpustate ) { - A ^= RM(EAD); + A ^= RM(cpustate, EAD); CLR_NZV; SET_NZ8(A); } /* $a9 ADCA indexed ***** */ -INLINE void adca_ix( void ) +INLINE void adca_ix( konami_state *cpustate ) { UINT16 t,r; - t = RM(EAD); + t = RM(cpustate, EAD); r = A + t + (CC & CC_C); CLR_HNZVC; SET_FLAGS8(A,t,r); @@ -1740,18 +1740,18 @@ INLINE void adca_ix( void ) } /* $aA ORA indexed -**0- */ -INLINE void ora_ix( void ) +INLINE void ora_ix( konami_state *cpustate ) { - A |= RM(EAD); + A |= RM(cpustate, EAD); CLR_NZV; SET_NZ8(A); } /* $aB ADDA indexed ***** */ -INLINE void adda_ix( void ) +INLINE void adda_ix( konami_state *cpustate ) { UINT16 t,r; - t = RM(EAD); + t = RM(cpustate, EAD); r = A + t; CLR_HNZVC; SET_FLAGS8(A,t,r); @@ -1760,11 +1760,11 @@ INLINE void adda_ix( void ) } /* $aC CMPX (CMPY CMPS) indexed -**** */ -INLINE void cmpx_ix( void ) +INLINE void cmpx_ix( konami_state *cpustate ) { UINT32 r,d; PAIR b; - b.d=RM16(EAD); + b.d=RM16(cpustate, EAD); d = X; r = d - b.d; CLR_NZVC; @@ -1772,11 +1772,11 @@ INLINE void cmpx_ix( void ) } /* $10aC CMPY indexed -**** */ -INLINE void cmpy_ix( void ) +INLINE void cmpy_ix( konami_state *cpustate ) { UINT32 r,d; PAIR b; - b.d=RM16(EAD); + b.d=RM16(cpustate, EAD); d = Y; r = d - b.d; CLR_NZVC; @@ -1784,11 +1784,11 @@ INLINE void cmpy_ix( void ) } /* $11aC CMPS indexed -**** */ -INLINE void cmps_ix( void ) +INLINE void cmps_ix( konami_state *cpustate ) { UINT32 r,d; PAIR b; - b.d=RM16(EAD); + b.d=RM16(cpustate, EAD); d = S; r = d - b.d; CLR_NZVC; @@ -1796,49 +1796,49 @@ INLINE void cmps_ix( void ) } /* $aD JSR indexed ----- */ -INLINE void jsr_ix( void ) +INLINE void jsr_ix( konami_state *cpustate ) { - PUSHWORD(pPC); + PUSHWORD(cpustate, pPC); PCD=EAD; } /* $aE LDX (LDY) indexed -**0- */ -INLINE void ldx_ix( void ) +INLINE void ldx_ix( konami_state *cpustate ) { - X=RM16(EAD); + X=RM16(cpustate, EAD); CLR_NZV; SET_NZ16(X); } /* $10aE LDY indexed -**0- */ -INLINE void ldy_ix( void ) +INLINE void ldy_ix( konami_state *cpustate ) { - Y=RM16(EAD); + Y=RM16(cpustate, EAD); CLR_NZV; SET_NZ16(Y); } /* $aF STX (STY) indexed -**0- */ -INLINE void stx_ix( void ) +INLINE void stx_ix( konami_state *cpustate ) { CLR_NZV; SET_NZ16(X); - WM16(EAD,&pX); + WM16(cpustate, EAD,&pX); } /* $10aF STY indexed -**0- */ -INLINE void sty_ix( void ) +INLINE void sty_ix( konami_state *cpustate ) { CLR_NZV; SET_NZ16(Y); - WM16(EAD,&pY); + WM16(cpustate, EAD,&pY); } /* $b0 SUBA extended ?**** */ -INLINE void suba_ex( void ) +INLINE void suba_ex( konami_state *cpustate ) { UINT16 t,r; - EXTBYTE(t); + EXTBYTE(cpustate, t); r = A - t; CLR_NZVC; SET_FLAGS8(A,t,r); @@ -1846,20 +1846,20 @@ INLINE void suba_ex( void ) } /* $b1 CMPA extended ?**** */ -INLINE void cmpa_ex( void ) +INLINE void cmpa_ex( konami_state *cpustate ) { UINT16 t,r; - EXTBYTE(t); + EXTBYTE(cpustate, t); r = A - t; CLR_NZVC; SET_FLAGS8(A,t,r); } /* $b2 SBCA extended ?**** */ -INLINE void sbca_ex( void ) +INLINE void sbca_ex( konami_state *cpustate ) { UINT16 t,r; - EXTBYTE(t); + EXTBYTE(cpustate, t); r = A - t - (CC & CC_C); CLR_NZVC; SET_FLAGS8(A,t,r); @@ -1867,11 +1867,11 @@ INLINE void sbca_ex( void ) } /* $b3 SUBD (CMPD CMPU) extended -**** */ -INLINE void subd_ex( void ) +INLINE void subd_ex( konami_state *cpustate ) { UINT32 r,d; PAIR b; - EXTWORD(b); + EXTWORD(cpustate, b); d = D; r = d - b.d; CLR_NZVC; @@ -1880,11 +1880,11 @@ INLINE void subd_ex( void ) } /* $10b3 CMPD extended -**** */ -INLINE void cmpd_ex( void ) +INLINE void cmpd_ex( konami_state *cpustate ) { UINT32 r,d; PAIR b; - EXTWORD(b); + EXTWORD(cpustate, b); d = D; r = d - b.d; CLR_NZVC; @@ -1892,11 +1892,11 @@ INLINE void cmpd_ex( void ) } /* $11b3 CMPU extended -**** */ -INLINE void cmpu_ex( void ) +INLINE void cmpu_ex( konami_state *cpustate ) { UINT32 r,d; PAIR b; - EXTWORD(b); + EXTWORD(cpustate, b); d = U; r = d - b.d; CLR_NZVC; @@ -1904,56 +1904,56 @@ INLINE void cmpu_ex( void ) } /* $b4 ANDA extended -**0- */ -INLINE void anda_ex( void ) +INLINE void anda_ex( konami_state *cpustate ) { UINT8 t; - EXTBYTE(t); + EXTBYTE(cpustate, t); A &= t; CLR_NZV; SET_NZ8(A); } /* $b5 BITA extended -**0- */ -INLINE void bita_ex( void ) +INLINE void bita_ex( konami_state *cpustate ) { UINT8 t,r; - EXTBYTE(t); + EXTBYTE(cpustate, t); r = A & t; CLR_NZV; SET_NZ8(r); } /* $b6 LDA extended -**0- */ -INLINE void lda_ex( void ) +INLINE void lda_ex( konami_state *cpustate ) { - EXTBYTE(A); + EXTBYTE(cpustate, A); CLR_NZV; SET_NZ8(A); } /* $b7 STA extended -**0- */ -INLINE void sta_ex( void ) +INLINE void sta_ex( konami_state *cpustate ) { CLR_NZV; SET_NZ8(A); - EXTENDED; - WM(EAD,A); + EXTENDED(cpustate); + WM(cpustate, EAD,A); } /* $b8 EORA extended -**0- */ -INLINE void eora_ex( void ) +INLINE void eora_ex( konami_state *cpustate ) { UINT8 t; - EXTBYTE(t); + EXTBYTE(cpustate, t); A ^= t; CLR_NZV; SET_NZ8(A); } /* $b9 ADCA extended ***** */ -INLINE void adca_ex( void ) +INLINE void adca_ex( konami_state *cpustate ) { UINT16 t,r; - EXTBYTE(t); + EXTBYTE(cpustate, t); r = A + t + (CC & CC_C); CLR_HNZVC; SET_FLAGS8(A,t,r); @@ -1962,20 +1962,20 @@ INLINE void adca_ex( void ) } /* $bA ORA extended -**0- */ -INLINE void ora_ex( void ) +INLINE void ora_ex( konami_state *cpustate ) { UINT8 t; - EXTBYTE(t); + EXTBYTE(cpustate, t); A |= t; CLR_NZV; SET_NZ8(A); } /* $bB ADDA extended ***** */ -INLINE void adda_ex( void ) +INLINE void adda_ex( konami_state *cpustate ) { UINT16 t,r; - EXTBYTE(t); + EXTBYTE(cpustate, t); r = A + t; CLR_HNZVC; SET_FLAGS8(A,t,r); @@ -1984,11 +1984,11 @@ INLINE void adda_ex( void ) } /* $bC CMPX (CMPY CMPS) extended -**** */ -INLINE void cmpx_ex( void ) +INLINE void cmpx_ex( konami_state *cpustate ) { UINT32 r,d; PAIR b; - EXTWORD(b); + EXTWORD(cpustate, b); d = X; r = d - b.d; CLR_NZVC; @@ -1996,11 +1996,11 @@ INLINE void cmpx_ex( void ) } /* $10bC CMPY extended -**** */ -INLINE void cmpy_ex( void ) +INLINE void cmpy_ex( konami_state *cpustate ) { UINT32 r,d; PAIR b; - EXTWORD(b); + EXTWORD(cpustate, b); d = Y; r = d - b.d; CLR_NZVC; @@ -2008,11 +2008,11 @@ INLINE void cmpy_ex( void ) } /* $11bC CMPS extended -**** */ -INLINE void cmps_ex( void ) +INLINE void cmps_ex( konami_state *cpustate ) { UINT32 r,d; PAIR b; - EXTWORD(b); + EXTWORD(cpustate, b); d = S; r = d - b.d; CLR_NZVC; @@ -2020,52 +2020,52 @@ INLINE void cmps_ex( void ) } /* $bD JSR extended ----- */ -INLINE void jsr_ex( void ) +INLINE void jsr_ex( konami_state *cpustate ) { - EXTENDED; - PUSHWORD(pPC); + EXTENDED(cpustate); + PUSHWORD(cpustate, pPC); PCD=EAD; } /* $bE LDX (LDY) extended -**0- */ -INLINE void ldx_ex( void ) +INLINE void ldx_ex( konami_state *cpustate ) { - EXTWORD(pX); + EXTWORD(cpustate, pX); CLR_NZV; SET_NZ16(X); } /* $10bE LDY extended -**0- */ -INLINE void ldy_ex( void ) +INLINE void ldy_ex( konami_state *cpustate ) { - EXTWORD(pY); + EXTWORD(cpustate, pY); CLR_NZV; SET_NZ16(Y); } /* $bF STX (STY) extended -**0- */ -INLINE void stx_ex( void ) +INLINE void stx_ex( konami_state *cpustate ) { CLR_NZV; SET_NZ16(X); - EXTENDED; - WM16(EAD,&pX); + EXTENDED(cpustate); + WM16(cpustate, EAD,&pX); } /* $10bF STY extended -**0- */ -INLINE void sty_ex( void ) +INLINE void sty_ex( konami_state *cpustate ) { CLR_NZV; SET_NZ16(Y); - EXTENDED; - WM16(EAD,&pY); + EXTENDED(cpustate); + WM16(cpustate, EAD,&pY); } /* $c0 SUBB immediate ?**** */ -INLINE void subb_im( void ) +INLINE void subb_im( konami_state *cpustate ) { UINT16 t,r; - IMMBYTE(t); + IMMBYTE(cpustate, t); r = B - t; CLR_NZVC; SET_FLAGS8(B,t,r); @@ -2073,19 +2073,19 @@ INLINE void subb_im( void ) } /* $c1 CMPB immediate ?**** */ -INLINE void cmpb_im( void ) +INLINE void cmpb_im( konami_state *cpustate ) { UINT16 t,r; - IMMBYTE(t); + IMMBYTE(cpustate, t); r = B - t; CLR_NZVC; SET_FLAGS8(B,t,r); } /* $c2 SBCB immediate ?**** */ -INLINE void sbcb_im( void ) +INLINE void sbcb_im( konami_state *cpustate ) { UINT16 t,r; - IMMBYTE(t); + IMMBYTE(cpustate, t); r = B - t - (CC & CC_C); CLR_NZVC; SET_FLAGS8(B,t,r); @@ -2093,11 +2093,11 @@ INLINE void sbcb_im( void ) } /* $c3 ADDD immediate -**** */ -INLINE void addd_im( void ) +INLINE void addd_im( konami_state *cpustate ) { UINT32 r,d; PAIR b; - IMMWORD(b); + IMMWORD(cpustate, b); d = D; r = d + b.d; CLR_NZVC; @@ -2106,58 +2106,58 @@ INLINE void addd_im( void ) } /* $c4 ANDB immediate -**0- */ -INLINE void andb_im( void ) +INLINE void andb_im( konami_state *cpustate ) { UINT8 t; - IMMBYTE(t); + IMMBYTE(cpustate, t); B &= t; CLR_NZV; SET_NZ8(B); } /* $c5 BITB immediate -**0- */ -INLINE void bitb_im( void ) +INLINE void bitb_im( konami_state *cpustate ) { UINT8 t,r; - IMMBYTE(t); + IMMBYTE(cpustate, t); r = B & t; CLR_NZV; SET_NZ8(r); } /* $c6 LDB immediate -**0- */ -INLINE void ldb_im( void ) +INLINE void ldb_im( konami_state *cpustate ) { - IMMBYTE(B); + IMMBYTE(cpustate, B); CLR_NZV; SET_NZ8(B); } /* is this a legal instruction? */ /* $c7 STB immediate -**0- */ -INLINE void stb_im( void ) +INLINE void stb_im( konami_state *cpustate ) { CLR_NZV; SET_NZ8(B); - IMM8; - WM(EAD,B); + IMM8(cpustate); + WM(cpustate, EAD,B); } /* $c8 EORB immediate -**0- */ -INLINE void eorb_im( void ) +INLINE void eorb_im( konami_state *cpustate ) { UINT8 t; - IMMBYTE(t); + IMMBYTE(cpustate, t); B ^= t; CLR_NZV; SET_NZ8(B); } /* $c9 ADCB immediate ***** */ -INLINE void adcb_im( void ) +INLINE void adcb_im( konami_state *cpustate ) { UINT16 t,r; - IMMBYTE(t); + IMMBYTE(cpustate, t); r = B + t + (CC & CC_C); CLR_HNZVC; SET_FLAGS8(B,t,r); @@ -2166,20 +2166,20 @@ INLINE void adcb_im( void ) } /* $cA ORB immediate -**0- */ -INLINE void orb_im( void ) +INLINE void orb_im( konami_state *cpustate ) { UINT8 t; - IMMBYTE(t); + IMMBYTE(cpustate, t); B |= t; CLR_NZV; SET_NZ8(B); } /* $cB ADDB immediate ***** */ -INLINE void addb_im( void ) +INLINE void addb_im( konami_state *cpustate ) { UINT16 t,r; - IMMBYTE(t); + IMMBYTE(cpustate, t); r = B + t; CLR_HNZVC; SET_FLAGS8(B,t,r); @@ -2188,65 +2188,65 @@ INLINE void addb_im( void ) } /* $cC LDD immediate -**0- */ -INLINE void ldd_im( void ) +INLINE void ldd_im( konami_state *cpustate ) { - IMMWORD(pD); + IMMWORD(cpustate, pD); CLR_NZV; SET_NZ16(D); } /* is this a legal instruction? */ /* $cD STD immediate -**0- */ -INLINE void std_im( void ) +INLINE void std_im( konami_state *cpustate ) { CLR_NZV; SET_NZ16(D); - IMM16; - WM16(EAD,&pD); + IMM16(cpustate); + WM16(cpustate, EAD,&pD); } /* $cE LDU (LDS) immediate -**0- */ -INLINE void ldu_im( void ) +INLINE void ldu_im( konami_state *cpustate ) { - IMMWORD(pU); + IMMWORD(cpustate, pU); CLR_NZV; SET_NZ16(U); } /* $10cE LDS immediate -**0- */ -INLINE void lds_im( void ) +INLINE void lds_im( konami_state *cpustate ) { - IMMWORD(pS); + IMMWORD(cpustate, pS); CLR_NZV; SET_NZ16(S); - konami.int_state |= KONAMI_LDS; + cpustate->int_state |= KONAMI_LDS; } /* is this a legal instruction? */ /* $cF STU (STS) immediate -**0- */ -INLINE void stu_im( void ) +INLINE void stu_im( konami_state *cpustate ) { CLR_NZV; SET_NZ16(U); - IMM16; - WM16(EAD,&pU); + IMM16(cpustate); + WM16(cpustate, EAD,&pU); } /* is this a legal instruction? */ /* $10cF STS immediate -**0- */ -INLINE void sts_im( void ) +INLINE void sts_im( konami_state *cpustate ) { CLR_NZV; SET_NZ16(S); - IMM16; - WM16(EAD,&pS); + IMM16(cpustate); + WM16(cpustate, EAD,&pS); } /* $d0 SUBB direct ?**** */ -INLINE void subb_di( void ) +INLINE void subb_di( konami_state *cpustate ) { UINT16 t,r; - DIRBYTE(t); + DIRBYTE(cpustate, t); r = B - t; CLR_NZVC; SET_FLAGS8(B,t,r); @@ -2254,20 +2254,20 @@ INLINE void subb_di( void ) } /* $d1 CMPB direct ?**** */ -INLINE void cmpb_di( void ) +INLINE void cmpb_di( konami_state *cpustate ) { UINT16 t,r; - DIRBYTE(t); + DIRBYTE(cpustate, t); r = B - t; CLR_NZVC; SET_FLAGS8(B,t,r); } /* $d2 SBCB direct ?**** */ -INLINE void sbcb_di( void ) +INLINE void sbcb_di( konami_state *cpustate ) { UINT16 t,r; - DIRBYTE(t); + DIRBYTE(cpustate, t); r = B - t - (CC & CC_C); CLR_NZVC; SET_FLAGS8(B,t,r); @@ -2275,11 +2275,11 @@ INLINE void sbcb_di( void ) } /* $d3 ADDD direct -**** */ -INLINE void addd_di( void ) +INLINE void addd_di( konami_state *cpustate ) { UINT32 r,d; PAIR b; - DIRWORD(b); + DIRWORD(cpustate, b); d = D; r = d + b.d; CLR_NZVC; @@ -2288,57 +2288,57 @@ INLINE void addd_di( void ) } /* $d4 ANDB direct -**0- */ -INLINE void andb_di( void ) +INLINE void andb_di( konami_state *cpustate ) { UINT8 t; - DIRBYTE(t); + DIRBYTE(cpustate, t); B &= t; CLR_NZV; SET_NZ8(B); } /* $d5 BITB direct -**0- */ -INLINE void bitb_di( void ) +INLINE void bitb_di( konami_state *cpustate ) { UINT8 t,r; - DIRBYTE(t); + DIRBYTE(cpustate, t); r = B & t; CLR_NZV; SET_NZ8(r); } /* $d6 LDB direct -**0- */ -INLINE void ldb_di( void ) +INLINE void ldb_di( konami_state *cpustate ) { - DIRBYTE(B); + DIRBYTE(cpustate, B); CLR_NZV; SET_NZ8(B); } /* $d7 STB direct -**0- */ -INLINE void stb_di( void ) +INLINE void stb_di( konami_state *cpustate ) { CLR_NZV; SET_NZ8(B); - DIRECT; - WM(EAD,B); + DIRECT(cpustate); + WM(cpustate, EAD,B); } /* $d8 EORB direct -**0- */ -INLINE void eorb_di( void ) +INLINE void eorb_di( konami_state *cpustate ) { UINT8 t; - DIRBYTE(t); + DIRBYTE(cpustate, t); B ^= t; CLR_NZV; SET_NZ8(B); } /* $d9 ADCB direct ***** */ -INLINE void adcb_di( void ) +INLINE void adcb_di( konami_state *cpustate ) { UINT16 t,r; - DIRBYTE(t); + DIRBYTE(cpustate, t); r = B + t + (CC & CC_C); CLR_HNZVC; SET_FLAGS8(B,t,r); @@ -2347,20 +2347,20 @@ INLINE void adcb_di( void ) } /* $dA ORB direct -**0- */ -INLINE void orb_di( void ) +INLINE void orb_di( konami_state *cpustate ) { UINT8 t; - DIRBYTE(t); + DIRBYTE(cpustate, t); B |= t; CLR_NZV; SET_NZ8(B); } /* $dB ADDB direct ***** */ -INLINE void addb_di( void ) +INLINE void addb_di( konami_state *cpustate ) { UINT16 t,r; - DIRBYTE(t); + DIRBYTE(cpustate, t); r = B + t; CLR_HNZVC; SET_FLAGS8(B,t,r); @@ -2369,62 +2369,62 @@ INLINE void addb_di( void ) } /* $dC LDD direct -**0- */ -INLINE void ldd_di( void ) +INLINE void ldd_di( konami_state *cpustate ) { - DIRWORD(pD); + DIRWORD(cpustate, pD); CLR_NZV; SET_NZ16(D); } /* $dD STD direct -**0- */ -INLINE void std_di( void ) +INLINE void std_di( konami_state *cpustate ) { CLR_NZV; SET_NZ16(D); - DIRECT; - WM16(EAD,&pD); + DIRECT(cpustate); + WM16(cpustate, EAD,&pD); } /* $dE LDU (LDS) direct -**0- */ -INLINE void ldu_di( void ) +INLINE void ldu_di( konami_state *cpustate ) { - DIRWORD(pU); + DIRWORD(cpustate, pU); CLR_NZV; SET_NZ16(U); } /* $10dE LDS direct -**0- */ -INLINE void lds_di( void ) +INLINE void lds_di( konami_state *cpustate ) { - DIRWORD(pS); + DIRWORD(cpustate, pS); CLR_NZV; SET_NZ16(S); - konami.int_state |= KONAMI_LDS; + cpustate->int_state |= KONAMI_LDS; } /* $dF STU (STS) direct -**0- */ -INLINE void stu_di( void ) +INLINE void stu_di( konami_state *cpustate ) { CLR_NZV; SET_NZ16(U); - DIRECT; - WM16(EAD,&pU); + DIRECT(cpustate); + WM16(cpustate, EAD,&pU); } /* $10dF STS direct -**0- */ -INLINE void sts_di( void ) +INLINE void sts_di( konami_state *cpustate ) { CLR_NZV; SET_NZ16(S); - DIRECT; - WM16(EAD,&pS); + DIRECT(cpustate); + WM16(cpustate, EAD,&pS); } /* $e0 SUBB indexed ?**** */ -INLINE void subb_ix( void ) +INLINE void subb_ix( konami_state *cpustate ) { UINT16 t,r; - t = RM(EAD); + t = RM(cpustate, EAD); r = B - t; CLR_NZVC; SET_FLAGS8(B,t,r); @@ -2432,20 +2432,20 @@ INLINE void subb_ix( void ) } /* $e1 CMPB indexed ?**** */ -INLINE void cmpb_ix( void ) +INLINE void cmpb_ix( konami_state *cpustate ) { UINT16 t,r; - t = RM(EAD); + t = RM(cpustate, EAD); r = B - t; CLR_NZVC; SET_FLAGS8(B,t,r); } /* $e2 SBCB indexed ?**** */ -INLINE void sbcb_ix( void ) +INLINE void sbcb_ix( konami_state *cpustate ) { UINT16 t,r; - t = RM(EAD); + t = RM(cpustate, EAD); r = B - t - (CC & CC_C); CLR_NZVC; SET_FLAGS8(B,t,r); @@ -2453,11 +2453,11 @@ INLINE void sbcb_ix( void ) } /* $e3 ADDD indexed -**** */ -INLINE void addd_ix( void ) +INLINE void addd_ix( konami_state *cpustate ) { UINT32 r,d; PAIR b; - b.d=RM16(EAD); + b.d=RM16(cpustate, EAD); d = D; r = d + b.d; CLR_NZVC; @@ -2466,51 +2466,51 @@ INLINE void addd_ix( void ) } /* $e4 ANDB indexed -**0- */ -INLINE void andb_ix( void ) +INLINE void andb_ix( konami_state *cpustate ) { - B &= RM(EAD); + B &= RM(cpustate, EAD); CLR_NZV; SET_NZ8(B); } /* $e5 BITB indexed -**0- */ -INLINE void bitb_ix( void ) +INLINE void bitb_ix( konami_state *cpustate ) { UINT8 r; - r = B & RM(EAD); + r = B & RM(cpustate, EAD); CLR_NZV; SET_NZ8(r); } /* $e6 LDB indexed -**0- */ -INLINE void ldb_ix( void ) +INLINE void ldb_ix( konami_state *cpustate ) { - B = RM(EAD); + B = RM(cpustate, EAD); CLR_NZV; SET_NZ8(B); } /* $e7 STB indexed -**0- */ -INLINE void stb_ix( void ) +INLINE void stb_ix( konami_state *cpustate ) { CLR_NZV; SET_NZ8(B); - WM(EAD,B); + WM(cpustate, EAD,B); } /* $e8 EORB indexed -**0- */ -INLINE void eorb_ix( void ) +INLINE void eorb_ix( konami_state *cpustate ) { - B ^= RM(EAD); + B ^= RM(cpustate, EAD); CLR_NZV; SET_NZ8(B); } /* $e9 ADCB indexed ***** */ -INLINE void adcb_ix( void ) +INLINE void adcb_ix( konami_state *cpustate ) { UINT16 t,r; - t = RM(EAD); + t = RM(cpustate, EAD); r = B + t + (CC & CC_C); CLR_HNZVC; SET_FLAGS8(B,t,r); @@ -2519,18 +2519,18 @@ INLINE void adcb_ix( void ) } /* $eA ORB indexed -**0- */ -INLINE void orb_ix( void ) +INLINE void orb_ix( konami_state *cpustate ) { - B |= RM(EAD); + B |= RM(cpustate, EAD); CLR_NZV; SET_NZ8(B); } /* $eb ADDB indexed ***** */ -INLINE void addb_ix( void ) +INLINE void addb_ix( konami_state *cpustate ) { UINT16 t,r; - t = RM(EAD); + t = RM(cpustate, EAD); r = B + t; CLR_HNZVC; SET_FLAGS8(B,t,r); @@ -2539,58 +2539,58 @@ INLINE void addb_ix( void ) } /* $ec LDD indexed -**0- */ -INLINE void ldd_ix( void ) +INLINE void ldd_ix( konami_state *cpustate ) { - D=RM16(EAD); + D=RM16(cpustate, EAD); CLR_NZV; SET_NZ16(D); } /* $eD STD indexed -**0- */ -INLINE void std_ix( void ) +INLINE void std_ix( konami_state *cpustate ) { CLR_NZV; SET_NZ16(D); - WM16(EAD,&pD); + WM16(cpustate, EAD,&pD); } /* $eE LDU (LDS) indexed -**0- */ -INLINE void ldu_ix( void ) +INLINE void ldu_ix( konami_state *cpustate ) { - U=RM16(EAD); + U=RM16(cpustate, EAD); CLR_NZV; SET_NZ16(U); } /* $10eE LDS indexed -**0- */ -INLINE void lds_ix( void ) +INLINE void lds_ix( konami_state *cpustate ) { - S=RM16(EAD); + S=RM16(cpustate, EAD); CLR_NZV; SET_NZ16(S); - konami.int_state |= KONAMI_LDS; + cpustate->int_state |= KONAMI_LDS; } /* $eF STU (STS) indexed -**0- */ -INLINE void stu_ix( void ) +INLINE void stu_ix( konami_state *cpustate ) { CLR_NZV; SET_NZ16(U); - WM16(EAD,&pU); + WM16(cpustate, EAD,&pU); } /* $10eF STS indexed -**0- */ -INLINE void sts_ix( void ) +INLINE void sts_ix( konami_state *cpustate ) { CLR_NZV; SET_NZ16(S); - WM16(EAD,&pS); + WM16(cpustate, EAD,&pS); } /* $f0 SUBB extended ?**** */ -INLINE void subb_ex( void ) +INLINE void subb_ex( konami_state *cpustate ) { UINT16 t,r; - EXTBYTE(t); + EXTBYTE(cpustate, t); r = B - t; CLR_NZVC; SET_FLAGS8(B,t,r); @@ -2598,20 +2598,20 @@ INLINE void subb_ex( void ) } /* $f1 CMPB extended ?**** */ -INLINE void cmpb_ex( void ) +INLINE void cmpb_ex( konami_state *cpustate ) { UINT16 t,r; - EXTBYTE(t); + EXTBYTE(cpustate, t); r = B - t; CLR_NZVC; SET_FLAGS8(B,t,r); } /* $f2 SBCB extended ?**** */ -INLINE void sbcb_ex( void ) +INLINE void sbcb_ex( konami_state *cpustate ) { UINT16 t,r; - EXTBYTE(t); + EXTBYTE(cpustate, t); r = B - t - (CC & CC_C); CLR_NZVC; SET_FLAGS8(B,t,r); @@ -2619,11 +2619,11 @@ INLINE void sbcb_ex( void ) } /* $f3 ADDD extended -**** */ -INLINE void addd_ex( void ) +INLINE void addd_ex( konami_state *cpustate ) { UINT32 r,d; PAIR b; - EXTWORD(b); + EXTWORD(cpustate, b); d = D; r = d + b.d; CLR_NZVC; @@ -2632,57 +2632,57 @@ INLINE void addd_ex( void ) } /* $f4 ANDB extended -**0- */ -INLINE void andb_ex( void ) +INLINE void andb_ex( konami_state *cpustate ) { UINT8 t; - EXTBYTE(t); + EXTBYTE(cpustate, t); B &= t; CLR_NZV; SET_NZ8(B); } /* $f5 BITB extended -**0- */ -INLINE void bitb_ex( void ) +INLINE void bitb_ex( konami_state *cpustate ) { UINT8 t,r; - EXTBYTE(t); + EXTBYTE(cpustate, t); r = B & t; CLR_NZV; SET_NZ8(r); } /* $f6 LDB extended -**0- */ -INLINE void ldb_ex( void ) +INLINE void ldb_ex( konami_state *cpustate ) { - EXTBYTE(B); + EXTBYTE(cpustate, B); CLR_NZV; SET_NZ8(B); } /* $f7 STB extended -**0- */ -INLINE void stb_ex( void ) +INLINE void stb_ex( konami_state *cpustate ) { CLR_NZV; SET_NZ8(B); - EXTENDED; - WM(EAD,B); + EXTENDED(cpustate); + WM(cpustate, EAD,B); } /* $f8 EORB extended -**0- */ -INLINE void eorb_ex( void ) +INLINE void eorb_ex( konami_state *cpustate ) { UINT8 t; - EXTBYTE(t); + EXTBYTE(cpustate, t); B ^= t; CLR_NZV; SET_NZ8(B); } /* $f9 ADCB extended ***** */ -INLINE void adcb_ex( void ) +INLINE void adcb_ex( konami_state *cpustate ) { UINT16 t,r; - EXTBYTE(t); + EXTBYTE(cpustate, t); r = B + t + (CC & CC_C); CLR_HNZVC; SET_FLAGS8(B,t,r); @@ -2691,20 +2691,20 @@ INLINE void adcb_ex( void ) } /* $fA ORB extended -**0- */ -INLINE void orb_ex( void ) +INLINE void orb_ex( konami_state *cpustate ) { UINT8 t; - EXTBYTE(t); + EXTBYTE(cpustate, t); B |= t; CLR_NZV; SET_NZ8(B); } /* $fB ADDB extended ***** */ -INLINE void addb_ex( void ) +INLINE void addb_ex( konami_state *cpustate ) { UINT16 t,r; - EXTBYTE(t); + EXTBYTE(cpustate, t); r = B + t; CLR_HNZVC; SET_FLAGS8(B,t,r); @@ -2713,161 +2713,161 @@ INLINE void addb_ex( void ) } /* $fC LDD extended -**0- */ -INLINE void ldd_ex( void ) +INLINE void ldd_ex( konami_state *cpustate ) { - EXTWORD(pD); + EXTWORD(cpustate, pD); CLR_NZV; SET_NZ16(D); } /* $fD STD extended -**0- */ -INLINE void std_ex( void ) +INLINE void std_ex( konami_state *cpustate ) { CLR_NZV; SET_NZ16(D); - EXTENDED; - WM16(EAD,&pD); + EXTENDED(cpustate); + WM16(cpustate, EAD,&pD); } /* $fE LDU (LDS) extended -**0- */ -INLINE void ldu_ex( void ) +INLINE void ldu_ex( konami_state *cpustate ) { - EXTWORD(pU); + EXTWORD(cpustate, pU); CLR_NZV; SET_NZ16(U); } /* $10fE LDS extended -**0- */ -INLINE void lds_ex( void ) +INLINE void lds_ex( konami_state *cpustate ) { - EXTWORD(pS); + EXTWORD(cpustate, pS); CLR_NZV; SET_NZ16(S); - konami.int_state |= KONAMI_LDS; + cpustate->int_state |= KONAMI_LDS; } /* $fF STU (STS) extended -**0- */ -INLINE void stu_ex( void ) +INLINE void stu_ex( konami_state *cpustate ) { CLR_NZV; SET_NZ16(U); - EXTENDED; - WM16(EAD,&pU); + EXTENDED(cpustate); + WM16(cpustate, EAD,&pU); } /* $10fF STS extended -**0- */ -INLINE void sts_ex( void ) +INLINE void sts_ex( konami_state *cpustate ) { CLR_NZV; SET_NZ16(S); - EXTENDED; - WM16(EAD,&pS); + EXTENDED(cpustate); + WM16(cpustate, EAD,&pS); } -INLINE void setline_im( void ) +INLINE void setline_im( konami_state *cpustate ) { UINT8 t; - IMMBYTE(t); + IMMBYTE(cpustate, t); - if ( konami.setlines_callback ) - (*konami.setlines_callback)( t ); + if ( cpustate->setlines_callback ) + (*cpustate->setlines_callback)( cpustate->device, t ); } -INLINE void setline_ix( void ) +INLINE void setline_ix( konami_state *cpustate ) { UINT8 t; - t = RM(EA); + t = RM(cpustate, EA); - if ( konami.setlines_callback ) - (*konami.setlines_callback)( t ); + if ( cpustate->setlines_callback ) + (*cpustate->setlines_callback)( cpustate->device, t ); } -INLINE void setline_di( void ) +INLINE void setline_di( konami_state *cpustate ) { UINT8 t; - DIRBYTE(t); + DIRBYTE(cpustate, t); - if ( konami.setlines_callback ) - (*konami.setlines_callback)( t ); + if ( cpustate->setlines_callback ) + (*cpustate->setlines_callback)( cpustate->device, t ); } -INLINE void setline_ex( void ) +INLINE void setline_ex( konami_state *cpustate ) { UINT8 t; - EXTBYTE(t); + EXTBYTE(cpustate, t); - if ( konami.setlines_callback ) - (*konami.setlines_callback)( t ); + if ( cpustate->setlines_callback ) + (*cpustate->setlines_callback)( cpustate->device, t ); } -INLINE void bmove( void ) +INLINE void bmove( konami_state *cpustate ) { UINT8 t; while( U != 0 ) { - t = RM(Y); - WM(X,t); + t = RM(cpustate, Y); + WM(cpustate, X,t); Y++; X++; U--; - konami_ICount -= 2; + cpustate->icount -= 2; } } -INLINE void move( void ) +INLINE void move( konami_state *cpustate ) { UINT8 t; - t = RM(Y); - WM(X,t); + t = RM(cpustate, Y); + WM(cpustate, X,t); Y++; X++; U--; } /* CLRD inherent -0100 */ -INLINE void clrd( void ) +INLINE void clrd( konami_state *cpustate ) { D = 0; CLR_NZVC; SEZ; } /* CLRW indexed -0100 */ -INLINE void clrw_ix( void ) +INLINE void clrw_ix( konami_state *cpustate ) { PAIR t; t.d = 0; - WM16(EAD,&t); + WM16(cpustate, EAD,&t); CLR_NZVC; SEZ; } /* CLRW direct -0100 */ -INLINE void clrw_di( void ) +INLINE void clrw_di( konami_state *cpustate ) { PAIR t; t.d = 0; - DIRECT; - WM16(EAD,&t); + DIRECT(cpustate); + WM16(cpustate, EAD,&t); CLR_NZVC; SEZ; } /* CLRW extended -0100 */ -INLINE void clrw_ex( void ) +INLINE void clrw_ex( konami_state *cpustate ) { PAIR t; t.d = 0; - EXTENDED; - WM16(EAD,&t); + EXTENDED(cpustate); + WM16(cpustate, EAD,&t); CLR_NZVC; SEZ; } /* LSRD immediate -0*-* */ -INLINE void lsrd( void ) +INLINE void lsrd( konami_state *cpustate ) { UINT8 t; - IMMBYTE( t ); + IMMBYTE(cpustate, t ); while ( t-- ) { CLR_NZC; @@ -2878,12 +2878,12 @@ INLINE void lsrd( void ) } /* RORD immediate -**-* */ -INLINE void rord( void ) +INLINE void rord( konami_state *cpustate ) { UINT16 r; UINT8 t; - IMMBYTE(t); + IMMBYTE(cpustate, t); while ( t-- ) { r = (CC & CC_C) << 15; @@ -2896,11 +2896,11 @@ INLINE void rord( void ) } /* ASRD immediate ?**-* */ -INLINE void asrd( void ) +INLINE void asrd( konami_state *cpustate ) { UINT8 t; - IMMBYTE(t); + IMMBYTE(cpustate, t); while ( t-- ) { CLR_NZC; @@ -2911,12 +2911,12 @@ INLINE void asrd( void ) } /* ASLD immediate ?**** */ -INLINE void asld( void ) +INLINE void asld( konami_state *cpustate ) { UINT32 r; UINT8 t; - IMMBYTE( t ); + IMMBYTE(cpustate, t ); while ( t-- ) { r = D << 1; @@ -2927,12 +2927,12 @@ INLINE void asld( void ) } /* ROLD immediate -**-* */ -INLINE void rold( void ) +INLINE void rold( konami_state *cpustate ) { UINT16 r; UINT8 t; - IMMBYTE(t); + IMMBYTE(cpustate, t); while ( t-- ) { CLR_NZC; @@ -2945,48 +2945,48 @@ INLINE void rold( void ) } /* DECB,JNZ relative ----- */ -INLINE void decbjnz( void ) +INLINE void decbjnz( konami_state *cpustate ) { --B; CLR_NZV; SET_FLAGS8D(B); - BRANCH( !(CC&CC_Z) ); + BRANCH(cpustate, !(CC&CC_Z) ); } /* DECX,JNZ relative ----- */ -INLINE void decxjnz( void ) +INLINE void decxjnz( konami_state *cpustate ) { --X; CLR_NZV; SET_NZ16(X); /* should affect V as well? */ - BRANCH( !(CC&CC_Z) ); + BRANCH(cpustate, !(CC&CC_Z) ); } -INLINE void bset( void ) +INLINE void bset( konami_state *cpustate ) { UINT8 t; while( U != 0 ) { t = A; - WM(XD,t); + WM(cpustate, XD,t); X++; U--; - konami_ICount -= 2; + cpustate->icount -= 2; } } -INLINE void bset2( void ) +INLINE void bset2( konami_state *cpustate ) { while( U != 0 ) { - WM16(XD,&pD); + WM16(cpustate, XD,&pD); X += 2; U--; - konami_ICount -= 3; + cpustate->icount -= 3; } } /* LMUL inherent --*-@ */ -INLINE void lmul( void ) +INLINE void lmul( konami_state *cpustate ) { UINT32 t; t = X * Y; @@ -2996,7 +2996,7 @@ INLINE void lmul( void ) } /* DIVX inherent --*-@ */ -INLINE void divx( void ) +INLINE void divx( konami_state *cpustate ) { UINT16 t; UINT8 r; @@ -3017,7 +3017,7 @@ INLINE void divx( void ) } /* INCD inherent -***- */ -INLINE void incd( void ) +INLINE void incd( konami_state *cpustate ) { UINT32 r; r = D + 1; @@ -3027,42 +3027,42 @@ INLINE void incd( void ) } /* INCW direct -***- */ -INLINE void incw_di( void ) +INLINE void incw_di( konami_state *cpustate ) { PAIR t,r; - DIRWORD(t); + DIRWORD(cpustate, t); r = t; ++r.d; CLR_NZV; SET_FLAGS16(t.d, t.d, r.d); - WM16(EAD,&r); + WM16(cpustate, EAD,&r); } /* INCW indexed -***- */ -INLINE void incw_ix( void ) +INLINE void incw_ix( konami_state *cpustate ) { PAIR t,r; - t.d=RM16(EAD); + t.d=RM16(cpustate, EAD); r = t; ++r.d; CLR_NZV; SET_FLAGS16(t.d, t.d, r.d); - WM16(EAD,&r); + WM16(cpustate, EAD,&r); } /* INCW extended -***- */ -INLINE void incw_ex( void ) +INLINE void incw_ex( konami_state *cpustate ) { PAIR t, r; - EXTWORD(t); + EXTWORD(cpustate, t); r = t; ++r.d; CLR_NZV; SET_FLAGS16(t.d,t.d,r.d); - WM16(EAD,&r); + WM16(cpustate, EAD,&r); } /* DECD inherent -***- */ -INLINE void decd( void ) +INLINE void decd( konami_state *cpustate ) { UINT32 r; r = D - 1; @@ -3072,252 +3072,252 @@ INLINE void decd( void ) } /* DECW direct -***- */ -INLINE void decw_di( void ) +INLINE void decw_di( konami_state *cpustate ) { PAIR t,r; - DIRWORD(t); + DIRWORD(cpustate, t); r = t; --r.d; CLR_NZV; SET_FLAGS16(t.d, t.d, r.d); - WM16(EAD,&r); + WM16(cpustate, EAD,&r); } /* DECW indexed -***- */ -INLINE void decw_ix( void ) +INLINE void decw_ix( konami_state *cpustate ) { PAIR t, r; - t.d=RM16(EAD); + t.d=RM16(cpustate, EAD); r = t; --r.d; CLR_NZV; SET_FLAGS16(t.d, t.d, r.d); - WM16(EAD,&r); + WM16(cpustate, EAD,&r); } /* DECW extended -***- */ -INLINE void decw_ex( void ) +INLINE void decw_ex( konami_state *cpustate ) { PAIR t, r; - EXTWORD(t); + EXTWORD(cpustate, t); r = t; --r.d; CLR_NZV; SET_FLAGS16(t.d,t.d,r.d); - WM16(EAD,&r); + WM16(cpustate, EAD,&r); } /* TSTD inherent -**0- */ -INLINE void tstd( void ) +INLINE void tstd( konami_state *cpustate ) { CLR_NZV; SET_NZ16(D); } /* TSTW direct -**0- */ -INLINE void tstw_di( void ) +INLINE void tstw_di( konami_state *cpustate ) { PAIR t; CLR_NZV; - DIRWORD(t); + DIRWORD(cpustate, t); SET_NZ16(t.d); } /* TSTW indexed -**0- */ -INLINE void tstw_ix( void ) +INLINE void tstw_ix( konami_state *cpustate ) { PAIR t; CLR_NZV; - t.d=RM16(EAD); + t.d=RM16(cpustate, EAD); SET_NZ16(t.d); } /* TSTW extended -**0- */ -INLINE void tstw_ex( void ) +INLINE void tstw_ex( konami_state *cpustate ) { PAIR t; CLR_NZV; - EXTWORD(t); + EXTWORD(cpustate, t); SET_NZ16(t.d); } /* LSRW direct -0*-* */ -INLINE void lsrw_di( void ) +INLINE void lsrw_di( konami_state *cpustate ) { PAIR t; - DIRWORD(t); + DIRWORD(cpustate, t); CLR_NZC; CC |= (t.d & CC_C); t.d >>= 1; SET_Z16(t.d); - WM16(EAD,&t); + WM16(cpustate, EAD,&t); } /* LSRW indexed -0*-* */ -INLINE void lsrw_ix( void ) +INLINE void lsrw_ix( konami_state *cpustate ) { PAIR t; - t.d=RM16(EAD); + t.d=RM16(cpustate, EAD); CLR_NZC; CC |= (t.d & CC_C); t.d >>= 1; SET_Z16(t.d); - WM16(EAD,&t); + WM16(cpustate, EAD,&t); } /* LSRW extended -0*-* */ -INLINE void lsrw_ex( void ) +INLINE void lsrw_ex( konami_state *cpustate ) { PAIR t; - EXTWORD(t); + EXTWORD(cpustate, t); CLR_NZC; CC |= (t.d & CC_C); t.d >>= 1; SET_Z16(t.d); - WM16(EAD,&t); + WM16(cpustate, EAD,&t); } /* RORW direct -**-* */ -INLINE void rorw_di( void ) +INLINE void rorw_di( konami_state *cpustate ) { PAIR t,r; - DIRWORD(t); + DIRWORD(cpustate, t); r.d = (CC & CC_C) << 15; CLR_NZC; CC |= (t.d & CC_C); r.d |= t.d>>1; SET_NZ16(r.d); - WM16(EAD,&r); + WM16(cpustate, EAD,&r); } /* RORW indexed -**-* */ -INLINE void rorw_ix( void ) +INLINE void rorw_ix( konami_state *cpustate ) { PAIR t,r; - t.d=RM16(EAD); + t.d=RM16(cpustate, EAD); r.d = (CC & CC_C) << 15; CLR_NZC; CC |= (t.d & CC_C); r.d |= t.d>>1; SET_NZ16(r.d); - WM16(EAD,&r); + WM16(cpustate, EAD,&r); } /* RORW extended -**-* */ -INLINE void rorw_ex( void ) +INLINE void rorw_ex( konami_state *cpustate ) { PAIR t,r; - EXTWORD(t); + EXTWORD(cpustate, t); r.d = (CC & CC_C) << 15; CLR_NZC; CC |= (t.d & CC_C); r.d |= t.d>>1; SET_NZ16(r.d); - WM16(EAD,&r); + WM16(cpustate, EAD,&r); } /* ASRW direct ?**-* */ -INLINE void asrw_di( void ) +INLINE void asrw_di( konami_state *cpustate ) { PAIR t; - DIRWORD(t); + DIRWORD(cpustate, t); CLR_NZC; CC |= (t.d & CC_C); t.d = (t.d & 0x8000) | (t.d >> 1); SET_NZ16(t.d); - WM16(EAD,&t); + WM16(cpustate, EAD,&t); } /* ASRW indexed ?**-* */ -INLINE void asrw_ix( void ) +INLINE void asrw_ix( konami_state *cpustate ) { PAIR t; - t.d=RM16(EAD); + t.d=RM16(cpustate, EAD); CLR_NZC; CC |= (t.d & CC_C); t.d = (t.d & 0x8000) | (t.d >> 1); SET_NZ16(t.d); - WM16(EAD,&t); + WM16(cpustate, EAD,&t); } /* ASRW extended ?**-* */ -INLINE void asrw_ex( void ) +INLINE void asrw_ex( konami_state *cpustate ) { PAIR t; - EXTWORD(t); + EXTWORD(cpustate, t); CLR_NZC; CC |= (t.d & CC_C); t.d = (t.d & 0x8000) | (t.d >> 1); SET_NZ16(t.d); - WM16(EAD,&t); + WM16(cpustate, EAD,&t); } /* ASLW direct ?**** */ -INLINE void aslw_di( void ) +INLINE void aslw_di( konami_state *cpustate ) { PAIR t,r; - DIRWORD(t); + DIRWORD(cpustate, t); r.d = t.d << 1; CLR_NZVC; SET_FLAGS16(t.d,t.d,r.d); - WM16(EAD,&r); + WM16(cpustate, EAD,&r); } /* ASLW indexed ?**** */ -INLINE void aslw_ix( void ) +INLINE void aslw_ix( konami_state *cpustate ) { PAIR t,r; - t.d=RM16(EAD); + t.d=RM16(cpustate, EAD); r.d = t.d << 1; CLR_NZVC; SET_FLAGS16(t.d,t.d,r.d); - WM16(EAD,&r); + WM16(cpustate, EAD,&r); } /* ASLW extended ?**** */ -INLINE void aslw_ex( void ) +INLINE void aslw_ex( konami_state *cpustate ) { PAIR t,r; - EXTWORD(t); + EXTWORD(cpustate, t); r.d = t.d << 1; CLR_NZVC; SET_FLAGS16(t.d,t.d,r.d); - WM16(EAD,&r); + WM16(cpustate, EAD,&r); } /* ROLW direct -**** */ -INLINE void rolw_di( void ) +INLINE void rolw_di( konami_state *cpustate ) { PAIR t,r; - DIRWORD(t); + DIRWORD(cpustate, t); r.d = (CC & CC_C) | (t.d << 1); CLR_NZVC; SET_FLAGS16(t.d,t.d,r.d); - WM16(EAD,&r); + WM16(cpustate, EAD,&r); } /* ROLW indexed -**** */ -INLINE void rolw_ix( void ) +INLINE void rolw_ix( konami_state *cpustate ) { PAIR t,r; - t.d=RM16(EAD); + t.d=RM16(cpustate, EAD); r.d = (CC & CC_C) | (t.d << 1); CLR_NZVC; SET_FLAGS16(t.d,t.d,r.d); - WM16(EAD,&r); + WM16(cpustate, EAD,&r); } /* ROLW extended -**** */ -INLINE void rolw_ex( void ) +INLINE void rolw_ex( konami_state *cpustate ) { PAIR t,r; - EXTWORD(t); + EXTWORD(cpustate, t); r.d = (CC & CC_C) | (t.d << 1); CLR_NZVC; SET_FLAGS16(t.d,t.d,r.d); - WM16(EAD,&r); + WM16(cpustate, EAD,&r); } /* NEGD inherent ?**** */ -INLINE void negd( void ) +INLINE void negd( konami_state *cpustate ) { UINT32 r; r = -D; @@ -3327,40 +3327,40 @@ INLINE void negd( void ) } /* NEGW direct ?**** */ -INLINE void negw_di( void ) +INLINE void negw_di( konami_state *cpustate ) { PAIR r,t; - DIRWORD(t); + DIRWORD(cpustate, t); r.d = -t.d; CLR_NZVC; SET_FLAGS16(0,t.d,r.d); - WM16(EAD,&r); + WM16(cpustate, EAD,&r); } /* NEGW indexed ?**** */ -INLINE void negw_ix( void ) +INLINE void negw_ix( konami_state *cpustate ) { PAIR r,t; - t.d=RM16(EAD); + t.d=RM16(cpustate, EAD); r.d = -t.d; CLR_NZVC; SET_FLAGS16(0,t.d,r.d); - WM16(EAD,&r); + WM16(cpustate, EAD,&r); } /* NEGW extended ?**** */ -INLINE void negw_ex( void ) +INLINE void negw_ex( konami_state *cpustate ) { PAIR r,t; - EXTWORD(t); + EXTWORD(cpustate, t); r.d = -t.d; CLR_NZVC; SET_FLAGS16(0,t.d,r.d); - WM16(EAD,&r); + WM16(cpustate, EAD,&r); } /* ABSA inherent ?**** */ -INLINE void absa( void ) +INLINE void absa( konami_state *cpustate ) { UINT16 r; if (A & 0x80) @@ -3373,7 +3373,7 @@ INLINE void absa( void ) } /* ABSB inherent ?**** */ -INLINE void absb( void ) +INLINE void absb( konami_state *cpustate ) { UINT16 r; if (B & 0x80) @@ -3386,7 +3386,7 @@ INLINE void absb( void ) } /* ABSD inherent ?**** */ -INLINE void absd( void ) +INLINE void absd( konami_state *cpustate ) { UINT32 r; if (D & 0x8000) @@ -3399,11 +3399,11 @@ INLINE void absd( void ) } /* LSRD direct -0*-* */ -INLINE void lsrd_di( void ) +INLINE void lsrd_di( konami_state *cpustate ) { UINT8 t; - DIRBYTE( t ); + DIRBYTE(cpustate, t ); while ( t-- ) { CLR_NZC; @@ -3414,12 +3414,12 @@ INLINE void lsrd_di( void ) } /* RORD direct -**-* */ -INLINE void rord_di( void ) +INLINE void rord_di( konami_state *cpustate ) { UINT16 r; UINT8 t; - DIRBYTE(t); + DIRBYTE(cpustate, t); while ( t-- ) { r = (CC & CC_C) << 15; @@ -3432,11 +3432,11 @@ INLINE void rord_di( void ) } /* ASRD direct ?**-* */ -INLINE void asrd_di( void ) +INLINE void asrd_di( konami_state *cpustate ) { UINT8 t; - DIRBYTE(t); + DIRBYTE(cpustate, t); while ( t-- ) { CLR_NZC; @@ -3447,12 +3447,12 @@ INLINE void asrd_di( void ) } /* ASLD direct ?**** */ -INLINE void asld_di( void ) +INLINE void asld_di( konami_state *cpustate ) { UINT32 r; UINT8 t; - DIRBYTE( t ); + DIRBYTE(cpustate, t ); while ( t-- ) { r = D << 1; @@ -3463,12 +3463,12 @@ INLINE void asld_di( void ) } /* ROLD direct -**-* */ -INLINE void rold_di( void ) +INLINE void rold_di( konami_state *cpustate ) { UINT16 r; UINT8 t; - DIRBYTE(t); + DIRBYTE(cpustate, t); while ( t-- ) { CLR_NZC; @@ -3481,11 +3481,11 @@ INLINE void rold_di( void ) } /* LSRD indexed -0*-* */ -INLINE void lsrd_ix( void ) +INLINE void lsrd_ix( konami_state *cpustate ) { UINT8 t; - t=RM(EA); + t=RM(cpustate, EA); while ( t-- ) { CLR_NZC; @@ -3496,12 +3496,12 @@ INLINE void lsrd_ix( void ) } /* RORD indexed -**-* */ -INLINE void rord_ix( void ) +INLINE void rord_ix( konami_state *cpustate ) { UINT16 r; UINT8 t; - t=RM(EA); + t=RM(cpustate, EA); while ( t-- ) { r = (CC & CC_C) << 15; @@ -3514,11 +3514,11 @@ INLINE void rord_ix( void ) } /* ASRD indexed ?**-* */ -INLINE void asrd_ix( void ) +INLINE void asrd_ix( konami_state *cpustate ) { UINT8 t; - t=RM(EA); + t=RM(cpustate, EA); while ( t-- ) { CLR_NZC; @@ -3529,12 +3529,12 @@ INLINE void asrd_ix( void ) } /* ASLD indexed ?**** */ -INLINE void asld_ix( void ) +INLINE void asld_ix( konami_state *cpustate ) { UINT32 r; UINT8 t; - t=RM(EA); + t=RM(cpustate, EA); while ( t-- ) { r = D << 1; @@ -3545,12 +3545,12 @@ INLINE void asld_ix( void ) } /* ROLD indexed -**-* */ -INLINE void rold_ix( void ) +INLINE void rold_ix( konami_state *cpustate ) { UINT16 r; UINT8 t; - t=RM(EA); + t=RM(cpustate, EA); while ( t-- ) { CLR_NZC; @@ -3563,11 +3563,11 @@ INLINE void rold_ix( void ) } /* LSRD extended -0*-* */ -INLINE void lsrd_ex( void ) +INLINE void lsrd_ex( konami_state *cpustate ) { UINT8 t; - EXTBYTE(t); + EXTBYTE(cpustate, t); while ( t-- ) { CLR_NZC; @@ -3578,12 +3578,12 @@ INLINE void lsrd_ex( void ) } /* RORD extended -**-* */ -INLINE void rord_ex( void ) +INLINE void rord_ex( konami_state *cpustate ) { UINT16 r; UINT8 t; - EXTBYTE(t); + EXTBYTE(cpustate, t); while ( t-- ) { r = (CC & CC_C) << 15; @@ -3596,11 +3596,11 @@ INLINE void rord_ex( void ) } /* ASRD extended ?**-* */ -INLINE void asrd_ex( void ) +INLINE void asrd_ex( konami_state *cpustate ) { UINT8 t; - EXTBYTE(t); + EXTBYTE(cpustate, t); while ( t-- ) { CLR_NZC; @@ -3611,12 +3611,12 @@ INLINE void asrd_ex( void ) } /* ASLD extended ?**** */ -INLINE void asld_ex( void ) +INLINE void asld_ex( konami_state *cpustate ) { UINT32 r; UINT8 t; - EXTBYTE(t); + EXTBYTE(cpustate, t); while ( t-- ) { r = D << 1; @@ -3627,12 +3627,12 @@ INLINE void asld_ex( void ) } /* ROLD extended -**-* */ -INLINE void rold_ex( void ) +INLINE void rold_ex( konami_state *cpustate ) { UINT16 r; UINT8 t; - EXTBYTE(t); + EXTBYTE(cpustate, t); while ( t-- ) { CLR_NZC; @@ -3644,9 +3644,9 @@ INLINE void rold_ex( void ) } } -INLINE void opcode2( void ) +INLINE void opcode2( konami_state *cpustate ) { - UINT8 ireg2 = ROP_ARG(PCD); + UINT8 ireg2 = ROP_ARG(cpustate, PCD); PC++; switch ( ireg2 ) { @@ -3659,8 +3659,8 @@ INLINE void opcode2( void ) // case 0x06: EA=0; break; /* normal */ case 0x07: EAD=0; - (*konami_extended[konami.ireg])(); - konami_ICount -= 2; + (*konami_extended[cpustate->ireg])(cpustate); + cpustate->icount -= 2; return; // case 0x08: EA=0; break; /* indirect - auto increment */ // case 0x09: EA=0; break; /* indirect - double auto increment */ @@ -3670,9 +3670,9 @@ INLINE void opcode2( void ) // case 0x0d: EA=0; break; /* indirect - postword offs */ // case 0x0e: EA=0; break; /* indirect - normal */ case 0x0f: /* indirect - extended */ - IMMWORD(ea); - EA=RM16(EAD); - konami_ICount-=4; + IMMWORD(cpustate, cpustate->ea); + EA=RM16(cpustate, EAD); + cpustate->icount-=4; break; // case 0x10: EA=0; break; /* auto increment */ // case 0x11: EA=0; break; /* double auto increment */ @@ -3695,32 +3695,32 @@ INLINE void opcode2( void ) case 0x20: /* auto increment */ EA=X; X++; - konami_ICount-=2; + cpustate->icount-=2; break; case 0x21: /* double auto increment */ EA=X; X+=2; - konami_ICount-=3; + cpustate->icount-=3; break; case 0x22: /* auto decrement */ X--; EA=X; - konami_ICount-=2; + cpustate->icount-=2; break; case 0x23: /* double auto decrement */ X-=2; EA=X; - konami_ICount-=3; + cpustate->icount-=3; break; case 0x24: /* postbyte offs */ - IMMBYTE(EA); + IMMBYTE(cpustate, EA); EA=X+SIGNED(EA); - konami_ICount-=2; + cpustate->icount-=2; break; case 0x25: /* postword offs */ - IMMWORD(ea); + IMMWORD(cpustate, cpustate->ea); EA+=X; - konami_ICount-=4; + cpustate->icount-=4; break; case 0x26: /* normal */ EA=X; @@ -3729,43 +3729,43 @@ INLINE void opcode2( void ) case 0x28: /* indirect - auto increment */ EA=X; X++; - EA=RM16(EAD); - konami_ICount-=5; + EA=RM16(cpustate, EAD); + cpustate->icount-=5; break; case 0x29: /* indirect - double auto increment */ EA=X; X+=2; - EA=RM16(EAD); - konami_ICount-=6; + EA=RM16(cpustate, EAD); + cpustate->icount-=6; break; case 0x2a: /* indirect - auto decrement */ X--; EA=X; - EA=RM16(EAD); - konami_ICount-=5; + EA=RM16(cpustate, EAD); + cpustate->icount-=5; break; case 0x2b: /* indirect - double auto decrement */ X-=2; EA=X; - EA=RM16(EAD); - konami_ICount-=6; + EA=RM16(cpustate, EAD); + cpustate->icount-=6; break; case 0x2c: /* indirect - postbyte offs */ - IMMBYTE(EA); + IMMBYTE(cpustate, EA); EA=X+SIGNED(EA); - EA=RM16(EAD); - konami_ICount-=4; + EA=RM16(cpustate, EAD); + cpustate->icount-=4; break; case 0x2d: /* indirect - postword offs */ - IMMWORD(ea); + IMMWORD(cpustate, cpustate->ea); EA+=X; - EA=RM16(EAD); - konami_ICount-=7; + EA=RM16(cpustate, EAD); + cpustate->icount-=7; break; case 0x2e: /* indirect - normal */ EA=X; - EA=RM16(EAD); - konami_ICount-=3; + EA=RM16(cpustate, EAD); + cpustate->icount-=3; break; // case 0x2f: EA=0; break; /* indirect - extended */ @@ -3773,32 +3773,32 @@ INLINE void opcode2( void ) case 0x30: /* auto increment */ EA=Y; Y++; - konami_ICount-=2; + cpustate->icount-=2; break; case 0x31: /* double auto increment */ EA=Y; Y+=2; - konami_ICount-=3; + cpustate->icount-=3; break; case 0x32: /* auto decrement */ Y--; EA=Y; - konami_ICount-=2; + cpustate->icount-=2; break; case 0x33: /* double auto decrement */ Y-=2; EA=Y; - konami_ICount-=3; + cpustate->icount-=3; break; case 0x34: /* postbyte offs */ - IMMBYTE(EA); + IMMBYTE(cpustate, EA); EA=Y+SIGNED(EA); - konami_ICount-=2; + cpustate->icount-=2; break; case 0x35: /* postword offs */ - IMMWORD(ea); + IMMWORD(cpustate, cpustate->ea); EA+=Y; - konami_ICount-=4; + cpustate->icount-=4; break; case 0x36: /* normal */ EA=Y; @@ -3807,43 +3807,43 @@ INLINE void opcode2( void ) case 0x38: /* indirect - auto increment */ EA=Y; Y++; - EA=RM16(EAD); - konami_ICount-=5; + EA=RM16(cpustate, EAD); + cpustate->icount-=5; break; case 0x39: /* indirect - double auto increment */ EA=Y; Y+=2; - EA=RM16(EAD); - konami_ICount-=6; + EA=RM16(cpustate, EAD); + cpustate->icount-=6; break; case 0x3a: /* indirect - auto decrement */ Y--; EA=Y; - EA=RM16(EAD); - konami_ICount-=5; + EA=RM16(cpustate, EAD); + cpustate->icount-=5; break; case 0x3b: /* indirect - double auto decrement */ Y-=2; EA=Y; - EA=RM16(EAD); - konami_ICount-=6; + EA=RM16(cpustate, EAD); + cpustate->icount-=6; break; case 0x3c: /* indirect - postbyte offs */ - IMMBYTE(EA); + IMMBYTE(cpustate, EA); EA=Y+SIGNED(EA); - EA=RM16(EAD); - konami_ICount-=4; + EA=RM16(cpustate, EAD); + cpustate->icount-=4; break; case 0x3d: /* indirect - postword offs */ - IMMWORD(ea); + IMMWORD(cpustate, cpustate->ea); EA+=Y; - EA=RM16(EAD); - konami_ICount-=7; + EA=RM16(cpustate, EAD); + cpustate->icount-=7; break; case 0x3e: /* indirect - normal */ EA=Y; - EA=RM16(EAD); - konami_ICount-=3; + EA=RM16(cpustate, EAD); + cpustate->icount-=3; break; // case 0x3f: EA=0; break; /* indirect - extended */ @@ -3868,32 +3868,32 @@ INLINE void opcode2( void ) case 0x50: /* auto increment */ EA=U; U++; - konami_ICount-=2; + cpustate->icount-=2; break; case 0x51: /* double auto increment */ EA=U; U+=2; - konami_ICount-=3; + cpustate->icount-=3; break; case 0x52: /* auto decrement */ U--; EA=U; - konami_ICount-=2; + cpustate->icount-=2; break; case 0x53: /* double auto decrement */ U-=2; EA=U; - konami_ICount-=3; + cpustate->icount-=3; break; case 0x54: /* postbyte offs */ - IMMBYTE(EA); + IMMBYTE(cpustate, EA); EA=U+SIGNED(EA); - konami_ICount-=2; + cpustate->icount-=2; break; case 0x55: /* postword offs */ - IMMWORD(ea); + IMMWORD(cpustate, cpustate->ea); EA+=U; - konami_ICount-=4; + cpustate->icount-=4; break; case 0x56: /* normal */ EA=U; @@ -3902,43 +3902,43 @@ INLINE void opcode2( void ) case 0x58: /* indirect - auto increment */ EA=U; U++; - EA=RM16(EAD); - konami_ICount-=5; + EA=RM16(cpustate, EAD); + cpustate->icount-=5; break; case 0x59: /* indirect - double auto increment */ EA=U; U+=2; - EA=RM16(EAD); - konami_ICount-=6; + EA=RM16(cpustate, EAD); + cpustate->icount-=6; break; case 0x5a: /* indirect - auto decrement */ U--; EA=U; - EA=RM16(EAD); - konami_ICount-=5; + EA=RM16(cpustate, EAD); + cpustate->icount-=5; break; case 0x5b: /* indirect - double auto decrement */ U-=2; EA=U; - EA=RM16(EAD); - konami_ICount-=6; + EA=RM16(cpustate, EAD); + cpustate->icount-=6; break; case 0x5c: /* indirect - postbyte offs */ - IMMBYTE(EA); + IMMBYTE(cpustate, EA); EA=U+SIGNED(EA); - EA=RM16(EAD); - konami_ICount-=4; + EA=RM16(cpustate, EAD); + cpustate->icount-=4; break; case 0x5d: /* indirect - postword offs */ - IMMWORD(ea); + IMMWORD(cpustate, cpustate->ea); EA+=U; - EA=RM16(EAD); - konami_ICount-=7; + EA=RM16(cpustate, EAD); + cpustate->icount-=7; break; case 0x5e: /* indirect - normal */ EA=U; - EA=RM16(EAD); - konami_ICount-=3; + EA=RM16(cpustate, EAD); + cpustate->icount-=3; break; // case 0x5f: EA=0; break; /* indirect - extended */ @@ -3946,32 +3946,32 @@ INLINE void opcode2( void ) case 0x60: /* auto increment */ EAD=SD; S++; - konami_ICount-=2; + cpustate->icount-=2; break; case 0x61: /* double auto increment */ EAD=SD; S+=2; - konami_ICount-=3; + cpustate->icount-=3; break; case 0x62: /* auto decrement */ S--; EAD=SD; - konami_ICount-=2; + cpustate->icount-=2; break; case 0x63: /* double auto decrement */ S-=2; EAD=SD; - konami_ICount-=3; + cpustate->icount-=3; break; case 0x64: /* postbyte offs */ - IMMBYTE(EA); + IMMBYTE(cpustate, EA); EA=S+SIGNED(EA); - konami_ICount-=2; + cpustate->icount-=2; break; case 0x65: /* postword offs */ - IMMWORD(ea); + IMMWORD(cpustate, cpustate->ea); EA+=S; - konami_ICount-=4; + cpustate->icount-=4; break; case 0x66: /* normal */ EAD=SD; @@ -3980,43 +3980,43 @@ INLINE void opcode2( void ) case 0x68: /* indirect - auto increment */ EAD=SD; S++; - EA=RM16(EAD); - konami_ICount-=5; + EA=RM16(cpustate, EAD); + cpustate->icount-=5; break; case 0x69: /* indirect - double auto increment */ EAD=SD; S+=2; - EA=RM16(EAD); - konami_ICount-=6; + EA=RM16(cpustate, EAD); + cpustate->icount-=6; break; case 0x6a: /* indirect - auto decrement */ S--; EAD=SD; - EA=RM16(EAD); - konami_ICount-=5; + EA=RM16(cpustate, EAD); + cpustate->icount-=5; break; case 0x6b: /* indirect - double auto decrement */ S-=2; EAD=SD; - EA=RM16(EAD); - konami_ICount-=6; + EA=RM16(cpustate, EAD); + cpustate->icount-=6; break; case 0x6c: /* indirect - postbyte offs */ - IMMBYTE(EA); + IMMBYTE(cpustate, EA); EA=S+SIGNED(EA); - EA=RM16(EAD); - konami_ICount-=4; + EA=RM16(cpustate, EAD); + cpustate->icount-=4; break; case 0x6d: /* indirect - postword offs */ - IMMWORD(ea); + IMMWORD(cpustate, cpustate->ea); EA+=S; - EA=RM16(EAD); - konami_ICount-=7; + EA=RM16(cpustate, EAD); + cpustate->icount-=7; break; case 0x6e: /* indirect - normal */ EAD=SD; - EA=RM16(EAD); - konami_ICount-=3; + EA=RM16(cpustate, EAD); + cpustate->icount-=3; break; // case 0x6f: EA=0; break; /* indirect - extended */ @@ -4024,32 +4024,32 @@ INLINE void opcode2( void ) case 0x70: /* auto increment */ EAD=PCD; PC++; - konami_ICount-=2; + cpustate->icount-=2; break; case 0x71: /* double auto increment */ EAD=PCD; PC+=2; - konami_ICount-=3; + cpustate->icount-=3; break; case 0x72: /* auto decrement */ PC--; EAD=PCD; - konami_ICount-=2; + cpustate->icount-=2; break; case 0x73: /* double auto decrement */ PC-=2; EAD=PCD; - konami_ICount-=3; + cpustate->icount-=3; break; case 0x74: /* postbyte offs */ - IMMBYTE(EA); + IMMBYTE(cpustate, EA); EA=PC-1+SIGNED(EA); - konami_ICount-=2; + cpustate->icount-=2; break; case 0x75: /* postword offs */ - IMMWORD(ea); + IMMWORD(cpustate, cpustate->ea); EA+=PC-2; - konami_ICount-=4; + cpustate->icount-=4; break; case 0x76: /* normal */ EAD=PCD; @@ -4058,43 +4058,43 @@ INLINE void opcode2( void ) case 0x78: /* indirect - auto increment */ EAD=PCD; PC++; - EA=RM16(EAD); - konami_ICount-=5; + EA=RM16(cpustate, EAD); + cpustate->icount-=5; break; case 0x79: /* indirect - double auto increment */ EAD=PCD; PC+=2; - EA=RM16(EAD); - konami_ICount-=6; + EA=RM16(cpustate, EAD); + cpustate->icount-=6; break; case 0x7a: /* indirect - auto decrement */ PC--; EAD=PCD; - EA=RM16(EAD); - konami_ICount-=5; + EA=RM16(cpustate, EAD); + cpustate->icount-=5; break; case 0x7b: /* indirect - double auto decrement */ PC-=2; EAD=PCD; - EA=RM16(EAD); - konami_ICount-=6; + EA=RM16(cpustate, EAD); + cpustate->icount-=6; break; case 0x7c: /* indirect - postbyte offs */ - IMMBYTE(EA); + IMMBYTE(cpustate, EA); EA=PC-1+SIGNED(EA); - EA=RM16(EAD); - konami_ICount-=4; + EA=RM16(cpustate, EAD); + cpustate->icount-=4; break; case 0x7d: /* indirect - postword offs */ - IMMWORD(ea); + IMMWORD(cpustate, cpustate->ea); EA+=PC-2; - EA=RM16(EAD); - konami_ICount-=7; + EA=RM16(cpustate, EAD); + cpustate->icount-=7; break; case 0x7e: /* indirect - normal */ EAD=PCD; - EA=RM16(EAD); - konami_ICount-=3; + EA=RM16(cpustate, EAD); + cpustate->icount-=3; break; // case 0x7f: EA=0; break; /* indirect - extended */ @@ -4132,11 +4132,11 @@ INLINE void opcode2( void ) // case 0x9f: EA=0; break; /* indirect - ???? */ case 0xa0: /* register a */ EA=X+SIGNED(A); - konami_ICount-=1; + cpustate->icount-=1; break; case 0xa1: /* register b */ EA=X+SIGNED(B); - konami_ICount-=1; + cpustate->icount-=1; break; // case 0xa2: EA=0; break; /* ???? */ // case 0xa3: EA=0; break; /* ???? */ @@ -4145,17 +4145,17 @@ INLINE void opcode2( void ) // case 0xa6: EA=0; break; /* ???? */ case 0xa7: /* register d */ EA=X+D; - konami_ICount-=4; + cpustate->icount-=4; break; case 0xa8: /* indirect - register a */ EA=X+SIGNED(A); - EA=RM16(EAD); - konami_ICount-=4; + EA=RM16(cpustate, EAD); + cpustate->icount-=4; break; case 0xa9: /* indirect - register b */ EA=X+SIGNED(B); - EA=RM16(EAD); - konami_ICount-=4; + EA=RM16(cpustate, EAD); + cpustate->icount-=4; break; // case 0xaa: EA=0; break; /* indirect - ???? */ // case 0xab: EA=0; break; /* indirect - ???? */ @@ -4164,16 +4164,16 @@ INLINE void opcode2( void ) // case 0xae: EA=0; break; /* indirect - ???? */ case 0xaf: /* indirect - register d */ EA=X+D; - EA=RM16(EAD); - konami_ICount-=7; + EA=RM16(cpustate, EAD); + cpustate->icount-=7; break; case 0xb0: /* register a */ EA=Y+SIGNED(A); - konami_ICount-=1; + cpustate->icount-=1; break; case 0xb1: /* register b */ EA=Y+SIGNED(B); - konami_ICount-=1; + cpustate->icount-=1; break; // case 0xb2: EA=0; break; /* ???? */ // case 0xb3: EA=0; break; /* ???? */ @@ -4182,17 +4182,17 @@ INLINE void opcode2( void ) // case 0xb6: EA=0; break; /* ???? */ case 0xb7: /* register d */ EA=Y+D; - konami_ICount-=4; + cpustate->icount-=4; break; case 0xb8: /* indirect - register a */ EA=Y+SIGNED(A); - EA=RM16(EAD); - konami_ICount-=4; + EA=RM16(cpustate, EAD); + cpustate->icount-=4; break; case 0xb9: /* indirect - register b */ EA=Y+SIGNED(B); - EA=RM16(EAD); - konami_ICount-=4; + EA=RM16(cpustate, EAD); + cpustate->icount-=4; break; // case 0xba: EA=0; break; /* indirect - ???? */ // case 0xbb: EA=0; break; /* indirect - ???? */ @@ -4201,8 +4201,8 @@ INLINE void opcode2( void ) // case 0xbe: EA=0; break; /* indirect - ???? */ case 0xbf: /* indirect - register d */ EA=Y+D; - EA=RM16(EAD); - konami_ICount-=7; + EA=RM16(cpustate, EAD); + cpustate->icount-=7; break; // case 0xc0: EA=0; break; /* register a */ // case 0xc1: EA=0; break; /* register b */ @@ -4210,8 +4210,8 @@ INLINE void opcode2( void ) // case 0xc3: EA=0; break; /* ???? */ case 0xc4: EAD=0; - (*konami_direct[konami.ireg])(); - konami_ICount -= 1; + (*konami_direct[cpustate->ireg])(cpustate); + cpustate->icount -= 1; return; // case 0xc5: EA=0; break; /* ???? */ // case 0xc6: EA=0; break; /* ???? */ @@ -4221,19 +4221,19 @@ INLINE void opcode2( void ) // case 0xca: EA=0; break; /* indirect - ???? */ // case 0xcb: EA=0; break; /* indirect - ???? */ case 0xcc: /* indirect - direct */ - DIRWORD(ea); - konami_ICount-=4; + DIRWORD(cpustate, cpustate->ea); + cpustate->icount-=4; break; // case 0xcd: EA=0; break; /* indirect - ???? */ // case 0xce: EA=0; break; /* indirect - register d */ // case 0xcf: EA=0; break; /* indirect - ???? */ case 0xd0: /* register a */ EA=U+SIGNED(A); - konami_ICount-=1; + cpustate->icount-=1; break; case 0xd1: /* register b */ EA=U+SIGNED(B); - konami_ICount-=1; + cpustate->icount-=1; break; // case 0xd2: EA=0; break; /* ???? */ // case 0xd3: EA=0; break; /* ???? */ @@ -4242,17 +4242,17 @@ INLINE void opcode2( void ) // case 0xd6: EA=0; break; /* ???? */ case 0xd7: /* register d */ EA=U+D; - konami_ICount-=4; + cpustate->icount-=4; break; case 0xd8: /* indirect - register a */ EA=U+SIGNED(A); - EA=RM16(EAD); - konami_ICount-=4; + EA=RM16(cpustate, EAD); + cpustate->icount-=4; break; case 0xd9: /* indirect - register b */ EA=U+SIGNED(B); - EA=RM16(EAD); - konami_ICount-=4; + EA=RM16(cpustate, EAD); + cpustate->icount-=4; break; // case 0xda: EA=0; break; /* indirect - ???? */ // case 0xdb: EA=0; break; /* indirect - ???? */ @@ -4261,16 +4261,16 @@ INLINE void opcode2( void ) // case 0xde: EA=0; break; /* indirect - ???? */ case 0xdf: /* indirect - register d */ EA=U+D; - EA=RM16(EAD); - konami_ICount-=7; + EA=RM16(cpustate, EAD); + cpustate->icount-=7; break; case 0xe0: /* register a */ EA=S+SIGNED(A); - konami_ICount-=1; + cpustate->icount-=1; break; case 0xe1: /* register b */ EA=S+SIGNED(B); - konami_ICount-=1; + cpustate->icount-=1; break; // case 0xe2: EA=0; break; /* ???? */ // case 0xe3: EA=0; break; /* ???? */ @@ -4279,17 +4279,17 @@ INLINE void opcode2( void ) // case 0xe6: EA=0; break; /* ???? */ case 0xe7: /* register d */ EA=S+D; - konami_ICount-=4; + cpustate->icount-=4; break; case 0xe8: /* indirect - register a */ EA=S+SIGNED(A); - EA=RM16(EAD); - konami_ICount-=4; + EA=RM16(cpustate, EAD); + cpustate->icount-=4; break; case 0xe9: /* indirect - register b */ EA=S+SIGNED(B); - EA=RM16(EAD); - konami_ICount-=4; + EA=RM16(cpustate, EAD); + cpustate->icount-=4; break; // case 0xea: EA=0; break; /* indirect - ???? */ // case 0xeb: EA=0; break; /* indirect - ???? */ @@ -4298,16 +4298,16 @@ INLINE void opcode2( void ) // case 0xee: EA=0; break; /* indirect - ???? */ case 0xef: /* indirect - register d */ EA=S+D; - EA=RM16(EAD); - konami_ICount-=7; + EA=RM16(cpustate, EAD); + cpustate->icount-=7; break; case 0xf0: /* register a */ EA=PC+SIGNED(A); - konami_ICount-=1; + cpustate->icount-=1; break; case 0xf1: /* register b */ EA=PC+SIGNED(B); - konami_ICount-=1; + cpustate->icount-=1; break; // case 0xf2: EA=0; break; /* ???? */ // case 0xf3: EA=0; break; /* ???? */ @@ -4316,17 +4316,17 @@ INLINE void opcode2( void ) // case 0xf6: EA=0; break; /* ???? */ case 0xf7: /* register d */ EA=PC+D; - konami_ICount-=4; + cpustate->icount-=4; break; case 0xf8: /* indirect - register a */ EA=PC+SIGNED(A); - EA=RM16(EAD); - konami_ICount-=4; + EA=RM16(cpustate, EAD); + cpustate->icount-=4; break; case 0xf9: /* indirect - register b */ EA=PC+SIGNED(B); - EA=RM16(EAD); - konami_ICount-=4; + EA=RM16(cpustate, EAD); + cpustate->icount-=4; break; // case 0xfa: EA=0; break; /* indirect - ???? */ // case 0xfb: EA=0; break; /* indirect - ???? */ @@ -4335,12 +4335,12 @@ INLINE void opcode2( void ) // case 0xfe: EA=0; break; /* indirect - ???? */ case 0xff: /* indirect - register d */ EA=PC+D; - EA=RM16(EAD); - konami_ICount-=7; + EA=RM16(cpustate, EAD); + cpustate->icount-=7; break; default: logerror("KONAMI: Unknown/Invalid postbyte at PC = %04x\n", PC -1 ); EAD = 0; } - (*konami_indexed[konami.ireg])(); + (*konami_indexed[cpustate->ireg])(cpustate); } diff --git a/src/emu/cpu/konami/konamtbl.c b/src/emu/cpu/konami/konamtbl.c index d9a8c770194..4f2d0388263 100644 --- a/src/emu/cpu/konami/konamtbl.c +++ b/src/emu/cpu/konami/konamtbl.c @@ -1,356 +1,356 @@ -INLINE void abx(void); -INLINE void adca_di(void); -INLINE void adca_ex(void); -INLINE void adca_im(void); -INLINE void adca_ix(void); -INLINE void adcb_di(void); -INLINE void adcb_ex(void); -INLINE void adcb_im(void); -INLINE void adcb_ix(void); -INLINE void adda_di(void); -INLINE void adda_ex(void); -INLINE void adda_im(void); -INLINE void adda_ix(void); -INLINE void addb_di(void); -INLINE void addb_ex(void); -INLINE void addb_im(void); -INLINE void addb_ix(void); -INLINE void addd_di(void); -INLINE void addd_ex(void); -INLINE void addd_im(void); -INLINE void addd_ix(void); -INLINE void anda_di(void); -INLINE void anda_ex(void); -INLINE void anda_im(void); -INLINE void anda_ix(void); -INLINE void andb_di(void); -INLINE void andb_ex(void); -INLINE void andb_im(void); -INLINE void andb_ix(void); -INLINE void andcc(void); -INLINE void asl_di(void); -INLINE void asl_ex(void); -INLINE void asl_ix(void); -INLINE void asla(void); -INLINE void aslb(void); -INLINE void asr_di(void); -INLINE void asr_ex(void); -INLINE void asr_ix(void); -INLINE void asra(void); -INLINE void asrb(void); -INLINE void bcc(void); -INLINE void bcs(void); -INLINE void beq(void); -INLINE void bge(void); -INLINE void bgt(void); -INLINE void bhi(void); -INLINE void bita_di(void); -INLINE void bita_ex(void); -INLINE void bita_im(void); -INLINE void bita_ix(void); -INLINE void bitb_di(void); -INLINE void bitb_ex(void); -INLINE void bitb_im(void); -INLINE void bitb_ix(void); -INLINE void ble(void); -INLINE void bls(void); -INLINE void blt(void); -INLINE void bmi(void); -INLINE void bne(void); -INLINE void bpl(void); -INLINE void bra(void); -INLINE void brn(void); -INLINE void bsr(void); -INLINE void bvc(void); -INLINE void bvs(void); -INLINE void clr_di(void); -INLINE void clr_ex(void); -INLINE void clr_ix(void); -INLINE void clra(void); -INLINE void clrb(void); -INLINE void cmpa_di(void); -INLINE void cmpa_ex(void); -INLINE void cmpa_im(void); -INLINE void cmpa_ix(void); -INLINE void cmpb_di(void); -INLINE void cmpb_ex(void); -INLINE void cmpb_im(void); -INLINE void cmpb_ix(void); -INLINE void cmpd_di(void); -INLINE void cmpd_ex(void); -INLINE void cmpd_im(void); -INLINE void cmpd_ix(void); -INLINE void cmps_di(void); -INLINE void cmps_ex(void); -INLINE void cmps_im(void); -INLINE void cmps_ix(void); -INLINE void cmpu_di(void); -INLINE void cmpu_ex(void); -INLINE void cmpu_im(void); -INLINE void cmpu_ix(void); -INLINE void cmpx_di(void); -INLINE void cmpx_ex(void); -INLINE void cmpx_im(void); -INLINE void cmpx_ix(void); -INLINE void cmpy_di(void); -INLINE void cmpy_ex(void); -INLINE void cmpy_im(void); -INLINE void cmpy_ix(void); -INLINE void com_di(void); -INLINE void com_ex(void); -INLINE void com_ix(void); -INLINE void coma(void); -INLINE void comb(void); -INLINE void cwai(void); -INLINE void daa(void); -INLINE void dec_di(void); -INLINE void dec_ex(void); -INLINE void dec_ix(void); -INLINE void deca(void); -INLINE void decb(void); -INLINE void eora_di(void); -INLINE void eora_ex(void); -INLINE void eora_im(void); -INLINE void eora_ix(void); -INLINE void eorb_di(void); -INLINE void eorb_ex(void); -INLINE void eorb_im(void); -INLINE void eorb_ix(void); -INLINE void exg(void); -INLINE void illegal(void); -INLINE void inc_di(void); -INLINE void inc_ex(void); -INLINE void inc_ix(void); -INLINE void inca(void); -INLINE void incb(void); -INLINE void jmp_di(void); -INLINE void jmp_ex(void); -INLINE void jmp_ix(void); -INLINE void jsr_di(void); -INLINE void jsr_ex(void); -INLINE void jsr_ix(void); -INLINE void lbcc(void); -INLINE void lbcs(void); -INLINE void lbeq(void); -INLINE void lbge(void); -INLINE void lbgt(void); -INLINE void lbhi(void); -INLINE void lble(void); -INLINE void lbls(void); -INLINE void lblt(void); -INLINE void lbmi(void); -INLINE void lbne(void); -INLINE void lbpl(void); -INLINE void lbra(void); -INLINE void lbrn(void); -INLINE void lbsr(void); -INLINE void lbvc(void); -INLINE void lbvs(void); -INLINE void lda_di(void); -INLINE void lda_ex(void); -INLINE void lda_im(void); -INLINE void lda_ix(void); -INLINE void ldb_di(void); -INLINE void ldb_ex(void); -INLINE void ldb_im(void); -INLINE void ldb_ix(void); -INLINE void ldd_di(void); -INLINE void ldd_ex(void); -INLINE void ldd_im(void); -INLINE void ldd_ix(void); -INLINE void lds_di(void); -INLINE void lds_ex(void); -INLINE void lds_im(void); -INLINE void lds_ix(void); -INLINE void ldu_di(void); -INLINE void ldu_ex(void); -INLINE void ldu_im(void); -INLINE void ldu_ix(void); -INLINE void ldx_di(void); -INLINE void ldx_ex(void); -INLINE void ldx_im(void); -INLINE void ldx_ix(void); -INLINE void ldy_di(void); -INLINE void ldy_ex(void); -INLINE void ldy_im(void); -INLINE void ldy_ix(void); -INLINE void leas(void); -INLINE void leau(void); -INLINE void leax(void); -INLINE void leay(void); -INLINE void lsr_di(void); -INLINE void lsr_ex(void); -INLINE void lsr_ix(void); -INLINE void lsra(void); -INLINE void lsrb(void); -INLINE void mul(void); -INLINE void neg_di(void); -INLINE void neg_ex(void); -INLINE void neg_ix(void); -INLINE void nega(void); -INLINE void negb(void); -INLINE void nop(void); -INLINE void ora_di(void); -INLINE void ora_ex(void); -INLINE void ora_im(void); -INLINE void ora_ix(void); -INLINE void orb_di(void); -INLINE void orb_ex(void); -INLINE void orb_im(void); -INLINE void orb_ix(void); -INLINE void orcc(void); -INLINE void pshs(void); -INLINE void pshu(void); -INLINE void puls(void); -INLINE void pulu(void); -INLINE void rol_di(void); -INLINE void rol_ex(void); -INLINE void rol_ix(void); -INLINE void rola(void); -INLINE void rolb(void); -INLINE void ror_di(void); -INLINE void ror_ex(void); -INLINE void ror_ix(void); -INLINE void rora(void); -INLINE void rorb(void); -INLINE void rti(void); -INLINE void rts(void); -INLINE void sbca_di(void); -INLINE void sbca_ex(void); -INLINE void sbca_im(void); -INLINE void sbca_ix(void); -INLINE void sbcb_di(void); -INLINE void sbcb_ex(void); -INLINE void sbcb_im(void); -INLINE void sbcb_ix(void); -INLINE void sex(void); -INLINE void sta_di(void); -INLINE void sta_ex(void); -INLINE void sta_im(void); -INLINE void sta_ix(void); -INLINE void stb_di(void); -INLINE void stb_ex(void); -INLINE void stb_im(void); -INLINE void stb_ix(void); -INLINE void std_di(void); -INLINE void std_ex(void); -INLINE void std_im(void); -INLINE void std_ix(void); -INLINE void sts_di(void); -INLINE void sts_ex(void); -INLINE void sts_im(void); -INLINE void sts_ix(void); -INLINE void stu_di(void); -INLINE void stu_ex(void); -INLINE void stu_im(void); -INLINE void stu_ix(void); -INLINE void stx_di(void); -INLINE void stx_ex(void); -INLINE void stx_im(void); -INLINE void stx_ix(void); -INLINE void sty_di(void); -INLINE void sty_ex(void); -INLINE void sty_im(void); -INLINE void sty_ix(void); -INLINE void suba_di(void); -INLINE void suba_ex(void); -INLINE void suba_im(void); -INLINE void suba_ix(void); -INLINE void subb_di(void); -INLINE void subb_ex(void); -INLINE void subb_im(void); -INLINE void subb_ix(void); -INLINE void subd_di(void); -INLINE void subd_ex(void); -INLINE void subd_im(void); -INLINE void subd_ix(void); -INLINE void swi(void); -INLINE void swi2(void); -INLINE void swi3(void); -INLINE void sync(void); -INLINE void tfr(void); -INLINE void tst_di(void); -INLINE void tst_ex(void); -INLINE void tst_ix(void); -INLINE void tsta(void); -INLINE void tstb(void); +INLINE void abx(konami_state *cpustate); +INLINE void adca_di(konami_state *cpustate); +INLINE void adca_ex(konami_state *cpustate); +INLINE void adca_im(konami_state *cpustate); +INLINE void adca_ix(konami_state *cpustate); +INLINE void adcb_di(konami_state *cpustate); +INLINE void adcb_ex(konami_state *cpustate); +INLINE void adcb_im(konami_state *cpustate); +INLINE void adcb_ix(konami_state *cpustate); +INLINE void adda_di(konami_state *cpustate); +INLINE void adda_ex(konami_state *cpustate); +INLINE void adda_im(konami_state *cpustate); +INLINE void adda_ix(konami_state *cpustate); +INLINE void addb_di(konami_state *cpustate); +INLINE void addb_ex(konami_state *cpustate); +INLINE void addb_im(konami_state *cpustate); +INLINE void addb_ix(konami_state *cpustate); +INLINE void addd_di(konami_state *cpustate); +INLINE void addd_ex(konami_state *cpustate); +INLINE void addd_im(konami_state *cpustate); +INLINE void addd_ix(konami_state *cpustate); +INLINE void anda_di(konami_state *cpustate); +INLINE void anda_ex(konami_state *cpustate); +INLINE void anda_im(konami_state *cpustate); +INLINE void anda_ix(konami_state *cpustate); +INLINE void andb_di(konami_state *cpustate); +INLINE void andb_ex(konami_state *cpustate); +INLINE void andb_im(konami_state *cpustate); +INLINE void andb_ix(konami_state *cpustate); +INLINE void andcc(konami_state *cpustate); +INLINE void asl_di(konami_state *cpustate); +INLINE void asl_ex(konami_state *cpustate); +INLINE void asl_ix(konami_state *cpustate); +INLINE void asla(konami_state *cpustate); +INLINE void aslb(konami_state *cpustate); +INLINE void asr_di(konami_state *cpustate); +INLINE void asr_ex(konami_state *cpustate); +INLINE void asr_ix(konami_state *cpustate); +INLINE void asra(konami_state *cpustate); +INLINE void asrb(konami_state *cpustate); +INLINE void bcc(konami_state *cpustate); +INLINE void bcs(konami_state *cpustate); +INLINE void beq(konami_state *cpustate); +INLINE void bge(konami_state *cpustate); +INLINE void bgt(konami_state *cpustate); +INLINE void bhi(konami_state *cpustate); +INLINE void bita_di(konami_state *cpustate); +INLINE void bita_ex(konami_state *cpustate); +INLINE void bita_im(konami_state *cpustate); +INLINE void bita_ix(konami_state *cpustate); +INLINE void bitb_di(konami_state *cpustate); +INLINE void bitb_ex(konami_state *cpustate); +INLINE void bitb_im(konami_state *cpustate); +INLINE void bitb_ix(konami_state *cpustate); +INLINE void ble(konami_state *cpustate); +INLINE void bls(konami_state *cpustate); +INLINE void blt(konami_state *cpustate); +INLINE void bmi(konami_state *cpustate); +INLINE void bne(konami_state *cpustate); +INLINE void bpl(konami_state *cpustate); +INLINE void bra(konami_state *cpustate); +INLINE void brn(konami_state *cpustate); +INLINE void bsr(konami_state *cpustate); +INLINE void bvc(konami_state *cpustate); +INLINE void bvs(konami_state *cpustate); +INLINE void clr_di(konami_state *cpustate); +INLINE void clr_ex(konami_state *cpustate); +INLINE void clr_ix(konami_state *cpustate); +INLINE void clra(konami_state *cpustate); +INLINE void clrb(konami_state *cpustate); +INLINE void cmpa_di(konami_state *cpustate); +INLINE void cmpa_ex(konami_state *cpustate); +INLINE void cmpa_im(konami_state *cpustate); +INLINE void cmpa_ix(konami_state *cpustate); +INLINE void cmpb_di(konami_state *cpustate); +INLINE void cmpb_ex(konami_state *cpustate); +INLINE void cmpb_im(konami_state *cpustate); +INLINE void cmpb_ix(konami_state *cpustate); +INLINE void cmpd_di(konami_state *cpustate); +INLINE void cmpd_ex(konami_state *cpustate); +INLINE void cmpd_im(konami_state *cpustate); +INLINE void cmpd_ix(konami_state *cpustate); +INLINE void cmps_di(konami_state *cpustate); +INLINE void cmps_ex(konami_state *cpustate); +INLINE void cmps_im(konami_state *cpustate); +INLINE void cmps_ix(konami_state *cpustate); +INLINE void cmpu_di(konami_state *cpustate); +INLINE void cmpu_ex(konami_state *cpustate); +INLINE void cmpu_im(konami_state *cpustate); +INLINE void cmpu_ix(konami_state *cpustate); +INLINE void cmpx_di(konami_state *cpustate); +INLINE void cmpx_ex(konami_state *cpustate); +INLINE void cmpx_im(konami_state *cpustate); +INLINE void cmpx_ix(konami_state *cpustate); +INLINE void cmpy_di(konami_state *cpustate); +INLINE void cmpy_ex(konami_state *cpustate); +INLINE void cmpy_im(konami_state *cpustate); +INLINE void cmpy_ix(konami_state *cpustate); +INLINE void com_di(konami_state *cpustate); +INLINE void com_ex(konami_state *cpustate); +INLINE void com_ix(konami_state *cpustate); +INLINE void coma(konami_state *cpustate); +INLINE void comb(konami_state *cpustate); +INLINE void cwai(konami_state *cpustate); +INLINE void daa(konami_state *cpustate); +INLINE void dec_di(konami_state *cpustate); +INLINE void dec_ex(konami_state *cpustate); +INLINE void dec_ix(konami_state *cpustate); +INLINE void deca(konami_state *cpustate); +INLINE void decb(konami_state *cpustate); +INLINE void eora_di(konami_state *cpustate); +INLINE void eora_ex(konami_state *cpustate); +INLINE void eora_im(konami_state *cpustate); +INLINE void eora_ix(konami_state *cpustate); +INLINE void eorb_di(konami_state *cpustate); +INLINE void eorb_ex(konami_state *cpustate); +INLINE void eorb_im(konami_state *cpustate); +INLINE void eorb_ix(konami_state *cpustate); +INLINE void exg(konami_state *cpustate); +INLINE void illegal(konami_state *cpustate); +INLINE void inc_di(konami_state *cpustate); +INLINE void inc_ex(konami_state *cpustate); +INLINE void inc_ix(konami_state *cpustate); +INLINE void inca(konami_state *cpustate); +INLINE void incb(konami_state *cpustate); +INLINE void jmp_di(konami_state *cpustate); +INLINE void jmp_ex(konami_state *cpustate); +INLINE void jmp_ix(konami_state *cpustate); +INLINE void jsr_di(konami_state *cpustate); +INLINE void jsr_ex(konami_state *cpustate); +INLINE void jsr_ix(konami_state *cpustate); +INLINE void lbcc(konami_state *cpustate); +INLINE void lbcs(konami_state *cpustate); +INLINE void lbeq(konami_state *cpustate); +INLINE void lbge(konami_state *cpustate); +INLINE void lbgt(konami_state *cpustate); +INLINE void lbhi(konami_state *cpustate); +INLINE void lble(konami_state *cpustate); +INLINE void lbls(konami_state *cpustate); +INLINE void lblt(konami_state *cpustate); +INLINE void lbmi(konami_state *cpustate); +INLINE void lbne(konami_state *cpustate); +INLINE void lbpl(konami_state *cpustate); +INLINE void lbra(konami_state *cpustate); +INLINE void lbrn(konami_state *cpustate); +INLINE void lbsr(konami_state *cpustate); +INLINE void lbvc(konami_state *cpustate); +INLINE void lbvs(konami_state *cpustate); +INLINE void lda_di(konami_state *cpustate); +INLINE void lda_ex(konami_state *cpustate); +INLINE void lda_im(konami_state *cpustate); +INLINE void lda_ix(konami_state *cpustate); +INLINE void ldb_di(konami_state *cpustate); +INLINE void ldb_ex(konami_state *cpustate); +INLINE void ldb_im(konami_state *cpustate); +INLINE void ldb_ix(konami_state *cpustate); +INLINE void ldd_di(konami_state *cpustate); +INLINE void ldd_ex(konami_state *cpustate); +INLINE void ldd_im(konami_state *cpustate); +INLINE void ldd_ix(konami_state *cpustate); +INLINE void lds_di(konami_state *cpustate); +INLINE void lds_ex(konami_state *cpustate); +INLINE void lds_im(konami_state *cpustate); +INLINE void lds_ix(konami_state *cpustate); +INLINE void ldu_di(konami_state *cpustate); +INLINE void ldu_ex(konami_state *cpustate); +INLINE void ldu_im(konami_state *cpustate); +INLINE void ldu_ix(konami_state *cpustate); +INLINE void ldx_di(konami_state *cpustate); +INLINE void ldx_ex(konami_state *cpustate); +INLINE void ldx_im(konami_state *cpustate); +INLINE void ldx_ix(konami_state *cpustate); +INLINE void ldy_di(konami_state *cpustate); +INLINE void ldy_ex(konami_state *cpustate); +INLINE void ldy_im(konami_state *cpustate); +INLINE void ldy_ix(konami_state *cpustate); +INLINE void leas(konami_state *cpustate); +INLINE void leau(konami_state *cpustate); +INLINE void leax(konami_state *cpustate); +INLINE void leay(konami_state *cpustate); +INLINE void lsr_di(konami_state *cpustate); +INLINE void lsr_ex(konami_state *cpustate); +INLINE void lsr_ix(konami_state *cpustate); +INLINE void lsra(konami_state *cpustate); +INLINE void lsrb(konami_state *cpustate); +INLINE void mul(konami_state *cpustate); +INLINE void neg_di(konami_state *cpustate); +INLINE void neg_ex(konami_state *cpustate); +INLINE void neg_ix(konami_state *cpustate); +INLINE void nega(konami_state *cpustate); +INLINE void negb(konami_state *cpustate); +INLINE void nop(konami_state *cpustate); +INLINE void ora_di(konami_state *cpustate); +INLINE void ora_ex(konami_state *cpustate); +INLINE void ora_im(konami_state *cpustate); +INLINE void ora_ix(konami_state *cpustate); +INLINE void orb_di(konami_state *cpustate); +INLINE void orb_ex(konami_state *cpustate); +INLINE void orb_im(konami_state *cpustate); +INLINE void orb_ix(konami_state *cpustate); +INLINE void orcc(konami_state *cpustate); +INLINE void pshs(konami_state *cpustate); +INLINE void pshu(konami_state *cpustate); +INLINE void puls(konami_state *cpustate); +INLINE void pulu(konami_state *cpustate); +INLINE void rol_di(konami_state *cpustate); +INLINE void rol_ex(konami_state *cpustate); +INLINE void rol_ix(konami_state *cpustate); +INLINE void rola(konami_state *cpustate); +INLINE void rolb(konami_state *cpustate); +INLINE void ror_di(konami_state *cpustate); +INLINE void ror_ex(konami_state *cpustate); +INLINE void ror_ix(konami_state *cpustate); +INLINE void rora(konami_state *cpustate); +INLINE void rorb(konami_state *cpustate); +INLINE void rti(konami_state *cpustate); +INLINE void rts(konami_state *cpustate); +INLINE void sbca_di(konami_state *cpustate); +INLINE void sbca_ex(konami_state *cpustate); +INLINE void sbca_im(konami_state *cpustate); +INLINE void sbca_ix(konami_state *cpustate); +INLINE void sbcb_di(konami_state *cpustate); +INLINE void sbcb_ex(konami_state *cpustate); +INLINE void sbcb_im(konami_state *cpustate); +INLINE void sbcb_ix(konami_state *cpustate); +INLINE void sex(konami_state *cpustate); +INLINE void sta_di(konami_state *cpustate); +INLINE void sta_ex(konami_state *cpustate); +INLINE void sta_im(konami_state *cpustate); +INLINE void sta_ix(konami_state *cpustate); +INLINE void stb_di(konami_state *cpustate); +INLINE void stb_ex(konami_state *cpustate); +INLINE void stb_im(konami_state *cpustate); +INLINE void stb_ix(konami_state *cpustate); +INLINE void std_di(konami_state *cpustate); +INLINE void std_ex(konami_state *cpustate); +INLINE void std_im(konami_state *cpustate); +INLINE void std_ix(konami_state *cpustate); +INLINE void sts_di(konami_state *cpustate); +INLINE void sts_ex(konami_state *cpustate); +INLINE void sts_im(konami_state *cpustate); +INLINE void sts_ix(konami_state *cpustate); +INLINE void stu_di(konami_state *cpustate); +INLINE void stu_ex(konami_state *cpustate); +INLINE void stu_im(konami_state *cpustate); +INLINE void stu_ix(konami_state *cpustate); +INLINE void stx_di(konami_state *cpustate); +INLINE void stx_ex(konami_state *cpustate); +INLINE void stx_im(konami_state *cpustate); +INLINE void stx_ix(konami_state *cpustate); +INLINE void sty_di(konami_state *cpustate); +INLINE void sty_ex(konami_state *cpustate); +INLINE void sty_im(konami_state *cpustate); +INLINE void sty_ix(konami_state *cpustate); +INLINE void suba_di(konami_state *cpustate); +INLINE void suba_ex(konami_state *cpustate); +INLINE void suba_im(konami_state *cpustate); +INLINE void suba_ix(konami_state *cpustate); +INLINE void subb_di(konami_state *cpustate); +INLINE void subb_ex(konami_state *cpustate); +INLINE void subb_im(konami_state *cpustate); +INLINE void subb_ix(konami_state *cpustate); +INLINE void subd_di(konami_state *cpustate); +INLINE void subd_ex(konami_state *cpustate); +INLINE void subd_im(konami_state *cpustate); +INLINE void subd_ix(konami_state *cpustate); +INLINE void swi(konami_state *cpustate); +INLINE void swi2(konami_state *cpustate); +INLINE void swi3(konami_state *cpustate); +INLINE void sync(konami_state *cpustate); +INLINE void tfr(konami_state *cpustate); +INLINE void tst_di(konami_state *cpustate); +INLINE void tst_ex(konami_state *cpustate); +INLINE void tst_ix(konami_state *cpustate); +INLINE void tsta(konami_state *cpustate); +INLINE void tstb(konami_state *cpustate); -INLINE void clrd(void); /* 6309 */ -INLINE void clrw_ix(void); /* 6309 ? */ -INLINE void clrw_di(void); /* 6309 ? */ -INLINE void clrw_ex(void); /* 6309 ? */ -INLINE void negd(void); -INLINE void negw_ix(void); /* 6309 ? */ -INLINE void negw_di(void); /* 6309 ? */ -INLINE void negw_ex(void); /* 6309 ? */ -INLINE void lsrd( void ); /* 6309 */ -INLINE void lsrd_di( void ); /* 6309 */ -INLINE void lsrd_ix( void ); /* 6309 */ -INLINE void lsrd_ex( void ); /* 6309 */ -INLINE void rord( void ); /* 6309 ? */ -INLINE void rord_di( void ); /* 6309 */ -INLINE void rord_ix( void ); /* 6309 */ -INLINE void rord_ex( void ); /* 6309 */ -INLINE void asrd( void ); /* 6309 ? */ -INLINE void asrd_di( void ); /* 6309 */ -INLINE void asrd_ix( void ); /* 6309 */ -INLINE void asrd_ex( void ); /* 6309 */ -INLINE void asld( void ); /* 6309 */ -INLINE void asld_di( void ); /* 6309 */ -INLINE void asld_ix( void ); /* 6309 */ -INLINE void asld_ex( void ); /* 6309 */ -INLINE void rold( void ); /* 6309 ? */ -INLINE void rold_di( void ); /* 6309 */ -INLINE void rold_ix( void ); /* 6309 */ -INLINE void rold_ex( void ); /* 6309 */ -INLINE void tstd(void); -INLINE void tstw_di( void ); -INLINE void tstw_ix( void ); -INLINE void tstw_ex( void ); +INLINE void clrd(konami_state *cpustate); /* 6309 */ +INLINE void clrw_ix(konami_state *cpustate); /* 6309 ? */ +INLINE void clrw_di(konami_state *cpustate); /* 6309 ? */ +INLINE void clrw_ex(konami_state *cpustate); /* 6309 ? */ +INLINE void negd(konami_state *cpustate); +INLINE void negw_ix(konami_state *cpustate); /* 6309 ? */ +INLINE void negw_di(konami_state *cpustate); /* 6309 ? */ +INLINE void negw_ex(konami_state *cpustate); /* 6309 ? */ +INLINE void lsrd(konami_state *cpustate); /* 6309 */ +INLINE void lsrd_di(konami_state *cpustate); /* 6309 */ +INLINE void lsrd_ix(konami_state *cpustate); /* 6309 */ +INLINE void lsrd_ex(konami_state *cpustate); /* 6309 */ +INLINE void rord(konami_state *cpustate); /* 6309 ? */ +INLINE void rord_di(konami_state *cpustate); /* 6309 */ +INLINE void rord_ix(konami_state *cpustate); /* 6309 */ +INLINE void rord_ex(konami_state *cpustate); /* 6309 */ +INLINE void asrd(konami_state *cpustate); /* 6309 ? */ +INLINE void asrd_di(konami_state *cpustate); /* 6309 */ +INLINE void asrd_ix(konami_state *cpustate); /* 6309 */ +INLINE void asrd_ex(konami_state *cpustate); /* 6309 */ +INLINE void asld(konami_state *cpustate); /* 6309 */ +INLINE void asld_di(konami_state *cpustate); /* 6309 */ +INLINE void asld_ix(konami_state *cpustate); /* 6309 */ +INLINE void asld_ex(konami_state *cpustate); /* 6309 */ +INLINE void rold(konami_state *cpustate); /* 6309 ? */ +INLINE void rold_di(konami_state *cpustate); /* 6309 */ +INLINE void rold_ix(konami_state *cpustate); /* 6309 */ +INLINE void rold_ex(konami_state *cpustate); /* 6309 */ +INLINE void tstd(konami_state *cpustate); +INLINE void tstw_di(konami_state *cpustate); +INLINE void tstw_ix(konami_state *cpustate); +INLINE void tstw_ex(konami_state *cpustate); /* Custom opcodes */ -INLINE void setline_im( void ); -INLINE void setline_ix( void ); -INLINE void setline_di( void ); -INLINE void setline_ex( void ); -INLINE void bmove( void ); -INLINE void move( void ); -INLINE void decbjnz( void ); -INLINE void decxjnz( void ); -INLINE void bset( void ); -INLINE void bset2( void ); -INLINE void lmul(void); -INLINE void divx( void ); -INLINE void incd( void ); -INLINE void incw_di( void ); -INLINE void incw_ix( void ); -INLINE void incw_ex( void ); -INLINE void decd( void ); -INLINE void decw_di( void ); -INLINE void decw_ix( void ); -INLINE void decw_ex( void ); -INLINE void lsrw_di( void ); -INLINE void lsrw_ix( void ); -INLINE void lsrw_ex( void ); -INLINE void rorw_di( void ); -INLINE void rorw_ix( void ); -INLINE void rorw_ex( void ); -INLINE void asrw_di( void ); -INLINE void asrw_ix( void ); -INLINE void asrw_ex( void ); -INLINE void aslw_di( void ); -INLINE void aslw_ix( void ); -INLINE void aslw_ex( void ); -INLINE void rolw_di( void ); -INLINE void rolw_ix( void ); -INLINE void rolw_ex( void ); -INLINE void absa( void ); -INLINE void absb( void ); -INLINE void absd( void ); +INLINE void setline_im(konami_state *cpustate); +INLINE void setline_ix(konami_state *cpustate); +INLINE void setline_di(konami_state *cpustate); +INLINE void setline_ex(konami_state *cpustate); +INLINE void bmove(konami_state *cpustate); +INLINE void move(konami_state *cpustate); +INLINE void decbjnz(konami_state *cpustate); +INLINE void decxjnz(konami_state *cpustate); +INLINE void bset(konami_state *cpustate); +INLINE void bset2(konami_state *cpustate); +INLINE void lmul(konami_state *cpustate); +INLINE void divx(konami_state *cpustate); +INLINE void incd(konami_state *cpustate); +INLINE void incw_di(konami_state *cpustate); +INLINE void incw_ix(konami_state *cpustate); +INLINE void incw_ex(konami_state *cpustate); +INLINE void decd(konami_state *cpustate); +INLINE void decw_di(konami_state *cpustate); +INLINE void decw_ix(konami_state *cpustate); +INLINE void decw_ex(konami_state *cpustate); +INLINE void lsrw_di(konami_state *cpustate); +INLINE void lsrw_ix(konami_state *cpustate); +INLINE void lsrw_ex(konami_state *cpustate); +INLINE void rorw_di(konami_state *cpustate); +INLINE void rorw_ix(konami_state *cpustate); +INLINE void rorw_ex(konami_state *cpustate); +INLINE void asrw_di(konami_state *cpustate); +INLINE void asrw_ix(konami_state *cpustate); +INLINE void asrw_ex(konami_state *cpustate); +INLINE void aslw_di(konami_state *cpustate); +INLINE void aslw_ix(konami_state *cpustate); +INLINE void aslw_ex(konami_state *cpustate); +INLINE void rolw_di(konami_state *cpustate); +INLINE void rolw_ix(konami_state *cpustate); +INLINE void rolw_ex(konami_state *cpustate); +INLINE void absa(konami_state *cpustate); +INLINE void absb(konami_state *cpustate); +INLINE void absd(konami_state *cpustate); -INLINE void opcode2( void ); +INLINE void opcode2(konami_state *cpustate); -static void (*const konami_main[0x100])(void) = { +static void (*const konami_main[0x100])(konami_state *cpustate) = { illegal,illegal,illegal,illegal,illegal,illegal,illegal,illegal, /* 00 */ opcode2,opcode2,opcode2,opcode2,pshs ,pshu ,puls ,pulu , lda_im ,ldb_im ,opcode2,opcode2,adda_im,addb_im,opcode2,opcode2, /* 10 */ @@ -385,7 +385,7 @@ static void (*const konami_main[0x100])(void) = { illegal,illegal,illegal,illegal,illegal,illegal,illegal,illegal }; -static void (*const konami_indexed[0x100])(void) = { +static void (*const konami_indexed[0x100])(konami_state *cpustate) = { illegal,illegal,illegal,illegal,illegal,illegal,illegal,illegal, /* 00 */ leax ,leay ,leau ,leas ,illegal,illegal,illegal,illegal, illegal,illegal,lda_ix ,ldb_ix ,illegal,illegal,adda_ix,addb_ix, /* 10 */ @@ -420,7 +420,7 @@ static void (*const konami_indexed[0x100])(void) = { illegal,illegal,illegal,illegal,illegal,illegal,illegal,illegal }; -static void (*const konami_direct[0x100])(void) = { +static void (*const konami_direct[0x100])(konami_state *cpustate) = { illegal,illegal,illegal,illegal,illegal,illegal,illegal,illegal, /* 00 */ illegal,illegal,illegal,illegal,illegal,illegal,illegal,illegal, illegal,illegal,lda_di ,ldb_di ,illegal,illegal,adda_di,addb_di, /* 10 */ @@ -455,7 +455,7 @@ static void (*const konami_direct[0x100])(void) = { illegal,illegal,illegal,illegal,illegal,illegal,illegal,illegal }; -static void (*const konami_extended[0x100])(void) = { +static void (*const konami_extended[0x100])(konami_state *cpustate) = { illegal,illegal,illegal,illegal,illegal,illegal,illegal,illegal, /* 00 */ illegal,illegal,illegal,illegal,illegal,illegal,illegal,illegal, illegal,illegal,lda_ex ,ldb_ex ,illegal,illegal,adda_ex,addb_ex, /* 10 */ diff --git a/src/emu/cpuexec.c b/src/emu/cpuexec.c index 279d084a7a8..c43dda32a1b 100644 --- a/src/emu/cpuexec.c +++ b/src/emu/cpuexec.c @@ -925,6 +925,7 @@ void cpu_set_input_line_and_vector(const device_config *device, int line, int st { switch (classdata->header.cputype) { + case CPU_KONAMI: case CPU_Z80: case CPU_Z180: case CPU_M68000: diff --git a/src/mame/drivers/88games.c b/src/mame/drivers/88games.c index 79d04c5d91d..5b8bbe8916b 100644 --- a/src/mame/drivers/88games.c +++ b/src/mame/drivers/88games.c @@ -5,7 +5,6 @@ ***************************************************************************/ #include "driver.h" -#include "deprecat.h" #include "cpu/konami/konami.h" #include "cpu/z80/z80.h" #include "video/konamiic.h" @@ -14,7 +13,7 @@ static MACHINE_RESET( 88games ); -static void k88games_banking( int lines ); +static void k88games_banking( const device_config *device, int lines ); static UINT8 *ram; static UINT8 *banked_rom; @@ -469,12 +468,12 @@ ROM_END -static void k88games_banking( int lines ) +static void k88games_banking( const device_config *device, int lines ) { - UINT8 *RAM = memory_region(Machine, "main"); + UINT8 *RAM = memory_region(device->machine, "main"); int offs; -logerror("%04x: bank select %02x\n",cpu_get_pc(Machine->activecpu),lines); +logerror("%04x: bank select %02x\n",cpu_get_pc(device),lines); /* bits 0-2 select ROM bank for 0000-1fff */ /* bit 3: when 1, palette RAM at 1000-1fff */ @@ -511,7 +510,7 @@ logerror("%04x: bank select %02x\n",cpu_get_pc(Machine->activecpu),lines); static MACHINE_RESET( 88games ) { - cpu_set_info_fct(machine->cpu[0], CPUINFO_PTR_KONAMI_SETLINES_CALLBACK, (genf *)k88games_banking); + konami_configure_set_lines(machine->cpu[0], k88games_banking); paletteram = &memory_region(machine, "main")[0x20000]; } diff --git a/src/mame/drivers/aliens.c b/src/mame/drivers/aliens.c index 62612d33300..0204fdb0b88 100644 --- a/src/mame/drivers/aliens.c +++ b/src/mame/drivers/aliens.c @@ -8,7 +8,6 @@ Preliminary driver by: ***************************************************************************/ #include "driver.h" -#include "deprecat.h" #include "cpu/konami/konami.h" /* for the callback and the firq irq definition */ #include "video/konamiic.h" #include "sound/k007232.h" @@ -16,7 +15,7 @@ Preliminary driver by: /* prototypes */ static MACHINE_RESET( aliens ); -static void aliens_banking( int lines ); +static void aliens_banking( const device_config *device, int lines ); VIDEO_START( aliens ); @@ -481,23 +480,23 @@ ROM_END ***************************************************************************/ -static void aliens_banking( int lines ) +static void aliens_banking( const device_config *device, int lines ) { - UINT8 *RAM = memory_region(Machine, "main"); + UINT8 *RAM = memory_region(device->machine, "main"); int offs = 0x18000; if (lines & 0x10) offs -= 0x8000; offs += (lines & 0x0f)*0x2000; - memory_set_bankptr(Machine, 1, &RAM[offs] ); + memory_set_bankptr(device->machine, 1, &RAM[offs] ); } static MACHINE_RESET( aliens ) { UINT8 *RAM = memory_region(machine, "main"); - cpu_set_info_fct(machine->cpu[0], CPUINFO_PTR_KONAMI_SETLINES_CALLBACK, (genf *)aliens_banking); + konami_configure_set_lines(machine->cpu[0], aliens_banking); /* init the default bank */ memory_set_bankptr(machine, 1, &RAM[0x10000] ); diff --git a/src/mame/drivers/blockhl.c b/src/mame/drivers/blockhl.c index cef535408a7..49b0c0cd241 100644 --- a/src/mame/drivers/blockhl.c +++ b/src/mame/drivers/blockhl.c @@ -20,14 +20,13 @@ found it. ***************************************************************************/ #include "driver.h" -#include "deprecat.h" #include "cpu/konami/konami.h" /* for the callback and the firq irq definition */ #include "video/konamiic.h" #include "sound/2151intf.h" /* prototypes */ static MACHINE_RESET( blockhl ); -static void blockhl_banking( int lines ); +static void blockhl_banking( const device_config *device, int lines ); VIDEO_START( blockhl ); @@ -289,15 +288,15 @@ ROM_END ***************************************************************************/ -static void blockhl_banking( int lines ) +static void blockhl_banking( const device_config *device, int lines ) { - UINT8 *RAM = memory_region(Machine, "main"); + UINT8 *RAM = memory_region(device->machine, "main"); int offs; /* bits 0-1 = ROM bank */ rombank = lines & 0x03; offs = 0x10000 + (lines & 0x03) * 0x2000; - memory_set_bankptr(Machine, 1,&RAM[offs]); + memory_set_bankptr(device->machine, 1,&RAM[offs]); /* bits 3/4 = coin counters */ coin_counter_w(0,lines & 0x08); @@ -313,14 +312,14 @@ static void blockhl_banking( int lines ) /* other bits unknown */ - if ((lines & 0x84) != 0x80) logerror("%04x: setlines %02x\n",cpu_get_pc(Machine->activecpu),lines); + if ((lines & 0x84) != 0x80) logerror("%04x: setlines %02x\n",cpu_get_pc(device),lines); } static MACHINE_RESET( blockhl ) { UINT8 *RAM = memory_region(machine, "main"); - cpu_set_info_fct(machine->cpu[0], CPUINFO_PTR_KONAMI_SETLINES_CALLBACK, (genf *)blockhl_banking); + konami_configure_set_lines(machine->cpu[0], blockhl_banking); paletteram = &RAM[0x18000]; } diff --git a/src/mame/drivers/crimfght.c b/src/mame/drivers/crimfght.c index 0595e11e1be..330f2837a8c 100644 --- a/src/mame/drivers/crimfght.c +++ b/src/mame/drivers/crimfght.c @@ -12,7 +12,6 @@ Dip locations verified with manual (US) ***************************************************************************/ #include "driver.h" -#include "deprecat.h" #include "cpu/konami/konami.h" /* for the callback and the firq irq definition */ #include "video/konamiic.h" #include "sound/2151intf.h" @@ -21,7 +20,7 @@ Dip locations verified with manual (US) /* prototypes */ static MACHINE_RESET( crimfght ); -static void crimfght_banking( int lines ); +static void crimfght_banking( const device_config *device, int lines ); VIDEO_START( crimfght ); VIDEO_UPDATE( crimfght ); @@ -415,32 +414,32 @@ ROM_END ***************************************************************************/ -static void crimfght_banking( int lines ) +static void crimfght_banking( const device_config *device, int lines ) { - UINT8 *RAM = memory_region(Machine, "main"); + UINT8 *RAM = memory_region(device->machine, "main"); int offs = 0; /* bit 5 = select work RAM or palette */ if (lines & 0x20) { - memory_install_readwrite8_handler(cpu_get_address_space(Machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0000, 0x03ff, 0, 0, SMH_BANK3, paletteram_xBBBBBGGGGGRRRRR_be_w); - memory_set_bankptr(Machine, 3, paletteram); + memory_install_readwrite8_handler(cpu_get_address_space(device, ADDRESS_SPACE_PROGRAM), 0x0000, 0x03ff, 0, 0, SMH_BANK3, paletteram_xBBBBBGGGGGRRRRR_be_w); + memory_set_bankptr(device->machine, 3, paletteram); } else - memory_install_readwrite8_handler(cpu_get_address_space(Machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0000, 0x03ff, 0, 0, SMH_BANK1, SMH_BANK1); /* RAM */ + memory_install_readwrite8_handler(cpu_get_address_space(device, ADDRESS_SPACE_PROGRAM), 0x0000, 0x03ff, 0, 0, SMH_BANK1, SMH_BANK1); /* RAM */ /* bit 6 = enable char ROM reading through the video RAM */ K052109_set_RMRD_line((lines & 0x40) ? ASSERT_LINE : CLEAR_LINE); offs = 0x10000 + ((lines & 0x0f) * 0x2000); - memory_set_bankptr(Machine, 2, &RAM[offs]); + memory_set_bankptr(device->machine, 2, &RAM[offs]); } static MACHINE_RESET( crimfght ) { UINT8 *RAM = memory_region(machine, "main"); - cpu_set_info_fct(machine->cpu[0], CPUINFO_PTR_KONAMI_SETLINES_CALLBACK, (genf *)crimfght_banking); + konami_configure_set_lines(machine->cpu[0], crimfght_banking); /* init the default bank */ memory_set_bankptr(machine, 2, &RAM[0x10000] ); diff --git a/src/mame/drivers/gbusters.c b/src/mame/drivers/gbusters.c index 3fee517d6c6..2f077e49808 100644 --- a/src/mame/drivers/gbusters.c +++ b/src/mame/drivers/gbusters.c @@ -8,7 +8,6 @@ Preliminary driver by: ***************************************************************************/ #include "driver.h" -#include "deprecat.h" #include "cpu/konami/konami.h" /* for the callback and the firq irq definition */ #include "video/konamiic.h" #include "sound/2151intf.h" @@ -16,7 +15,7 @@ Preliminary driver by: /* prototypes */ static MACHINE_RESET( gbusters ); -static void gbusters_banking( int lines ); +static void gbusters_banking( const device_config *device, int lines ); extern int gbusters_priority; @@ -414,17 +413,17 @@ ROM_START( crazycop ) ROM_END -static void gbusters_banking( int lines ) +static void gbusters_banking( const device_config *device, int lines ) { - UINT8 *RAM = memory_region(Machine, "main"); + UINT8 *RAM = memory_region(device->machine, "main"); int offs = 0x10000; /* bits 0-3 ROM bank */ offs += (lines & 0x0f)*0x2000; - memory_set_bankptr(Machine, 1, &RAM[offs] ); + memory_set_bankptr(device->machine, 1, &RAM[offs] ); if (lines & 0xf0){ - //logerror("%04x: (lines) write %02x\n",cpu_get_pc(machine->activecpu), lines); + //logerror("%04x: (lines) write %02x\n",cpu_get_pc(device), lines); //popmessage("lines = %02x", lines); } @@ -435,7 +434,7 @@ static MACHINE_RESET( gbusters ) { UINT8 *RAM = memory_region(machine, "main"); - cpu_set_info_fct(machine->cpu[0], CPUINFO_PTR_KONAMI_SETLINES_CALLBACK, (genf *)gbusters_banking); + konami_configure_set_lines(machine->cpu[0], gbusters_banking); /* mirror address for banked ROM */ memcpy(&RAM[0x18000], &RAM[0x10000], 0x08000 ); diff --git a/src/mame/drivers/parodius.c b/src/mame/drivers/parodius.c index 4dea13d382f..fef6d80736c 100644 --- a/src/mame/drivers/parodius.c +++ b/src/mame/drivers/parodius.c @@ -7,7 +7,6 @@ driver by Nicola Salmoria ***************************************************************************/ #include "driver.h" -#include "deprecat.h" #include "cpu/konami/konami.h" /* for the callback and the firq irq definition */ #include "video/konamiic.h" #include "sound/2151intf.h" @@ -15,7 +14,7 @@ driver by Nicola Salmoria /* prototypes */ static MACHINE_RESET( parodius ); -static void parodius_banking( int lines ); +static void parodius_banking( const device_config *device, int lines ); VIDEO_START( parodius ); VIDEO_UPDATE( parodius ); @@ -381,23 +380,23 @@ ROM_END ***************************************************************************/ -static void parodius_banking(int lines) +static void parodius_banking(const device_config *device, int lines) { - UINT8 *RAM = memory_region(Machine, "main"); + UINT8 *RAM = memory_region(device->machine, "main"); int offs = 0; - if (lines & 0xf0) logerror("%04x: setlines %02x\n",cpu_get_pc(Machine->activecpu),lines); + if (lines & 0xf0) logerror("%04x: setlines %02x\n",cpu_get_pc(device),lines); offs = 0x10000 + (((lines & 0x0f)^0x0f) * 0x4000); if (offs >= 0x48000) offs -= 0x40000; - memory_set_bankptr(Machine, 1, &RAM[offs] ); + memory_set_bankptr(device->machine, 1, &RAM[offs] ); } static MACHINE_RESET( parodius ) { UINT8 *RAM = memory_region(machine, "main"); - cpu_set_info_fct(machine->cpu[0], CPUINFO_PTR_KONAMI_SETLINES_CALLBACK, (genf *)parodius_banking); + konami_configure_set_lines(machine->cpu[0], parodius_banking); paletteram = &memory_region(machine, "main")[0x48000]; diff --git a/src/mame/drivers/rollerg.c b/src/mame/drivers/rollerg.c index cf580a72ef9..b4f3a690f7e 100644 --- a/src/mame/drivers/rollerg.c +++ b/src/mame/drivers/rollerg.c @@ -7,7 +7,6 @@ driver by Nicola Salmoria ***************************************************************************/ #include "driver.h" -#include "deprecat.h" #include "video/konamiic.h" #include "cpu/konami/konami.h" /* for the callback and the firq irq definition */ #include "machine/eeprom.h" @@ -16,7 +15,7 @@ driver by Nicola Salmoria /* prototypes */ static MACHINE_RESET( rollerg ); -static void rollerg_banking( int lines ); +static void rollerg_banking( const device_config *device, int lines ); VIDEO_START( rollerg ); VIDEO_UPDATE( rollerg ); @@ -330,20 +329,20 @@ ROM_END ***************************************************************************/ -static void rollerg_banking( int lines ) +static void rollerg_banking( const device_config *device, int lines ) { - UINT8 *RAM = memory_region(Machine, "main"); + UINT8 *RAM = memory_region(device->machine, "main"); int offs = 0; offs = 0x10000 + ((lines & 0x07) * 0x4000); if (offs >= 0x28000) offs -= 0x20000; - memory_set_bankptr(Machine, 1,&RAM[offs]); + memory_set_bankptr(device->machine, 1,&RAM[offs]); } static MACHINE_RESET( rollerg ) { - cpu_set_info_fct(machine->cpu[0], CPUINFO_PTR_KONAMI_SETLINES_CALLBACK, (genf *)rollerg_banking); + konami_configure_set_lines(machine->cpu[0], rollerg_banking); readzoomroms = 0; } diff --git a/src/mame/drivers/surpratk.c b/src/mame/drivers/surpratk.c index e8c9694c25c..ab1f40ba084 100644 --- a/src/mame/drivers/surpratk.c +++ b/src/mame/drivers/surpratk.c @@ -9,14 +9,13 @@ driver by Nicola Salmoria ***************************************************************************/ #include "driver.h" -#include "deprecat.h" #include "cpu/konami/konami.h" /* for the callback and the firq irq definition */ #include "video/konamiic.h" #include "sound/2151intf.h" /* prototypes */ static MACHINE_RESET( surpratk ); -static void surpratk_banking( int lines ); +static void surpratk_banking( const device_config *device, int lines ); VIDEO_START( surpratk ); VIDEO_UPDATE( surpratk ); @@ -325,21 +324,21 @@ ROM_END ***************************************************************************/ -static void surpratk_banking(int lines) +static void surpratk_banking(const device_config *device, int lines) { - UINT8 *RAM = memory_region(Machine, "main"); + UINT8 *RAM = memory_region(device->machine, "main"); int offs = 0; -logerror("%04x: setlines %02x\n",cpu_get_pc(Machine->activecpu),lines); +logerror("%04x: setlines %02x\n",cpu_get_pc(device),lines); offs = 0x10000 + ((lines & 0x1f) * 0x2000); if (offs >= 0x48000) offs -= 0x40000; - memory_set_bankptr(Machine, 1,&RAM[offs]); + memory_set_bankptr(device->machine, 1,&RAM[offs]); } static MACHINE_RESET( surpratk ) { - cpu_set_info_fct(machine->cpu[0], CPUINFO_PTR_KONAMI_SETLINES_CALLBACK, (genf *)surpratk_banking); + konami_configure_set_lines(machine->cpu[0], surpratk_banking); paletteram = &memory_region(machine, "main")[0x48000]; } diff --git a/src/mame/drivers/thunderx.c b/src/mame/drivers/thunderx.c index 34a9033ff7a..0d53d8be3ab 100644 --- a/src/mame/drivers/thunderx.c +++ b/src/mame/drivers/thunderx.c @@ -9,7 +9,6 @@ K052591 emulation by Eddie Edwards ***************************************************************************/ #include "driver.h" -#include "deprecat.h" #include "cpu/konami/konami.h" /* for the callback and the firq irq definition */ #include "video/konamiic.h" #include "sound/2151intf.h" @@ -17,7 +16,7 @@ K052591 emulation by Eddie Edwards static MACHINE_RESET( scontra ); static MACHINE_RESET( thunderx ); -static void thunderx_banking(int lines); +static void thunderx_banking(const device_config *device, int lines); extern int scontra_priority; VIDEO_START( scontra ); @@ -1020,16 +1019,16 @@ ROM_END /***************************************************************************/ -static void thunderx_banking( int lines ) +static void thunderx_banking( const device_config *device, int lines ) { - UINT8 *RAM = memory_region(Machine, "main"); + UINT8 *RAM = memory_region(device->machine, "main"); int offs; // logerror("thunderx %04x: bank select %02x\n", cpu_get_pc(machine->activecpu), lines ); offs = 0x10000 + (((lines & 0x0f) ^ 0x08) * 0x2000); if (offs >= 0x28000) offs -= 0x20000; - memory_set_bankptr(Machine, 1, &RAM[offs] ); + memory_set_bankptr(device->machine, 1, &RAM[offs] ); } static MACHINE_RESET( scontra ) @@ -1043,7 +1042,7 @@ static MACHINE_RESET( thunderx ) { UINT8 *RAM = memory_region(machine, "main"); - cpu_set_info_fct(machine->cpu[0], CPUINFO_PTR_KONAMI_SETLINES_CALLBACK, (genf *)thunderx_banking); + konami_configure_set_lines(machine->cpu[0], thunderx_banking); memory_set_bankptr(machine, 1, &RAM[0x10000] ); /* init the default bank */ paletteram = &RAM[0x28000]; diff --git a/src/mame/drivers/vendetta.c b/src/mame/drivers/vendetta.c index 6189e517c5f..71c75dead38 100644 --- a/src/mame/drivers/vendetta.c +++ b/src/mame/drivers/vendetta.c @@ -87,7 +87,6 @@ Notes: ***************************************************************************/ #include "driver.h" -#include "deprecat.h" #include "video/konamiic.h" #include "cpu/konami/konami.h" /* for the callback and the firq irq definition */ #include "machine/eeprom.h" @@ -96,7 +95,7 @@ Notes: /* prototypes */ static MACHINE_RESET( vendetta ); -static void vendetta_banking( int lines ); +static void vendetta_banking( const device_config *device, int lines ); static void vendetta_video_banking( running_machine *machine, int select ); VIDEO_START( vendetta ); @@ -775,21 +774,21 @@ ROM_END ***************************************************************************/ -static void vendetta_banking( int lines ) +static void vendetta_banking( const device_config *device, int lines ) { - UINT8 *RAM = memory_region(Machine, "main"); + UINT8 *RAM = memory_region(device->machine, "main"); if ( lines >= 0x1c ) { - logerror("PC = %04x : Unknown bank selected %02x\n", cpu_get_pc(Machine->activecpu), lines ); + logerror("PC = %04x : Unknown bank selected %02x\n", cpu_get_pc(device), lines ); } else - memory_set_bankptr(Machine, 1, &RAM[ 0x10000 + ( lines * 0x2000 ) ] ); + memory_set_bankptr(device->machine, 1, &RAM[ 0x10000 + ( lines * 0x2000 ) ] ); } static MACHINE_RESET( vendetta ) { - cpu_set_info_fct(machine->cpu[0], CPUINFO_PTR_KONAMI_SETLINES_CALLBACK, (genf *)vendetta_banking); + konami_configure_set_lines(machine->cpu[0], vendetta_banking); paletteram = &memory_region(machine, "main")[0x48000]; irq_enabled = 0; diff --git a/src/mame/machine/simpsons.c b/src/mame/machine/simpsons.c index bbd0dfaa387..85440200743 100644 --- a/src/mame/machine/simpsons.c +++ b/src/mame/machine/simpsons.c @@ -4,7 +4,6 @@ #include "machine/eeprom.h" #include "sound/k053260.h" #include "includes/simpsons.h" -#include "deprecat.h" int simpsons_firq_enabled; @@ -115,16 +114,16 @@ READ8_HANDLER( simpsons_sound_r ) ***************************************************************************/ -static void simpsons_banking( int lines ) +static void simpsons_banking( const device_config *device, int lines ) { - memory_set_bank(Machine, 1, lines & 0x3f); + memory_set_bank(device->machine, 1, lines & 0x3f); } MACHINE_RESET( simpsons ) { UINT8 *RAM = memory_region(machine, "main"); - cpu_set_info_fct(machine->cpu[0], CPUINFO_PTR_KONAMI_SETLINES_CALLBACK, (genf *)simpsons_banking); + konami_configure_set_lines(machine->cpu[0], simpsons_banking); paletteram = &RAM[0x88000]; simpsons_xtraram = &RAM[0x89000]; |