mirror of
https://github.com/holub/mame
synced 2025-05-24 23:05:32 +03:00
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).
This commit is contained in:
parent
c023001a86
commit
63f26b610b
@ -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 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 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 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 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 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;
|
||||
|
||||
if( konami.int_state & (KONAMI_CWAI | KONAMI_SYNC) )
|
||||
cpustate->icount = cycles;
|
||||
check_irq_lines(cpustate);
|
||||
|
||||
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_main[ireg])(cpustate);
|
||||
|
||||
konami_ICount -= cycles1[konami.ireg];
|
||||
cpustate->icount -= cycles1[ireg];
|
||||
|
||||
} while( konami_ICount > 0 );
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
@ -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__ */
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -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 */
|
||||
|
@ -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:
|
||||
|
@ -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];
|
||||
}
|
||||
|
||||
|
@ -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] );
|
||||
|
@ -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];
|
||||
}
|
||||
|
@ -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] );
|
||||
|
@ -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 );
|
||||
|
@ -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];
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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];
|
||||
}
|
||||
|
@ -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];
|
||||
|
@ -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;
|
||||
|
@ -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];
|
||||
|
Loading…
Reference in New Issue
Block a user