mirror of
https://github.com/holub/mame
synced 2025-04-22 08:22:15 +03:00
changed IREM cpu decryption to be 'real-time' (it's a feature of the CPU)
moved decryption table setup to 'config' struct for the CPU. added latest tables from robiza, making Risky Challenge playable, promoted it to working told CPU core to not decrypt code after brkn instruction, enabling it again on iret, allowing me to remove several 'don't decrypt range' hacks in robiza's code. updated all drivers accordingly. currently the disassembly is a bit weird now, this will need looking at.
This commit is contained in:
parent
c552f36c5b
commit
b469de6db7
@ -114,6 +114,13 @@ typedef UINT32 DWORD;
|
||||
#include "nec.h"
|
||||
#include "necintrf.h"
|
||||
|
||||
|
||||
/* default configuration */
|
||||
static const nec_config default_config =
|
||||
{
|
||||
NULL
|
||||
};
|
||||
|
||||
extern int necv_dasm_one(char *buffer, UINT32 eip, const UINT8 *oprom);
|
||||
|
||||
/* NEC registers */
|
||||
@ -158,6 +165,10 @@ typedef struct
|
||||
int (*irq_callback)(int irqline);
|
||||
|
||||
memory_interface mem;
|
||||
|
||||
const nec_config *config;
|
||||
|
||||
|
||||
} nec_Regs;
|
||||
|
||||
/***************************************************************************/
|
||||
@ -185,10 +196,26 @@ static char seg_prefix; /* prefix segment indicator */
|
||||
|
||||
static UINT8 parity_table[256];
|
||||
|
||||
#include "cpuintrf.h"
|
||||
|
||||
static UINT8 fetchop(void)
|
||||
{
|
||||
UINT8 ret = cpu_readop( FETCH_XOR( ( I.sregs[PS]<<4)+I.ip++));
|
||||
|
||||
if (I.MF == 1)
|
||||
if (I.config->v25v35_decryptiontable)
|
||||
{
|
||||
ret = I.config->v25v35_decryptiontable[ret];
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
static void nec_reset (void)
|
||||
{
|
||||
const nec_config *config;
|
||||
unsigned int i,j,c;
|
||||
static const BREGS reg_name[8]={ AL, CL, DL, BL, AH, CH, DH, BH };
|
||||
int (*save_irqcallback)(int);
|
||||
@ -196,9 +223,12 @@ static void nec_reset (void)
|
||||
|
||||
save_irqcallback = I.irq_callback;
|
||||
save_mem = I.mem;
|
||||
config = I.config;
|
||||
memset( &I, 0, sizeof(I) );
|
||||
I.irq_callback = save_irqcallback;
|
||||
I.mem = save_mem;
|
||||
I.config = config;
|
||||
|
||||
|
||||
I.sregs[PS] = 0xffff;
|
||||
|
||||
@ -214,6 +244,9 @@ static void nec_reset (void)
|
||||
I.ZeroVal = I.ParityVal = 1;
|
||||
SetMD(1); /* set the mode-flag = native mode */
|
||||
|
||||
/* for v25+ / v35+ there is an internal decryption table */
|
||||
//I.config->v25v35_decryptiontable = gussun_test_decryption_table;
|
||||
|
||||
for (i = 0; i < 256; i++)
|
||||
{
|
||||
Mod_RM.reg.b[i] = reg_name[(i & 0x38) >> 3];
|
||||
@ -262,7 +295,7 @@ static void nec_interrupt(unsigned int_num,BOOLEAN md_flag)
|
||||
|
||||
static void nec_trap(void)
|
||||
{
|
||||
nec_instruction[FETCHOP]();
|
||||
nec_instruction[fetchop()]();
|
||||
nec_interrupt(1,0);
|
||||
}
|
||||
|
||||
@ -362,7 +395,7 @@ OP( 0x22, i_and_r8b ) { DEF_r8b; ANDB; RegByte(ModRM)=dst; CLKM(2,2,2,11,10,6
|
||||
OP( 0x23, i_and_r16w ) { DEF_r16w; ANDW; RegWord(ModRM)=dst; CLKR(15,15,8,15,11,6,2,EA); }
|
||||
OP( 0x24, i_and_ald8 ) { DEF_ald8; ANDB; I.regs.b[AL]=dst; CLKS(4,4,2); }
|
||||
OP( 0x25, i_and_axd16) { DEF_axd16; ANDW; I.regs.w[AW]=dst; CLKS(4,4,2); }
|
||||
OP( 0x26, i_es ) { seg_prefix=TRUE; prefix_base=I.sregs[DS1]<<4; CLK(2); nec_instruction[FETCHOP](); seg_prefix=FALSE; }
|
||||
OP( 0x26, i_es ) { seg_prefix=TRUE; prefix_base=I.sregs[DS1]<<4; CLK(2); nec_instruction[fetchop()](); seg_prefix=FALSE; }
|
||||
OP( 0x27, i_daa ) { ADJ4(6,0x60); CLKS(3,3,2); }
|
||||
|
||||
OP( 0x28, i_sub_br8 ) { DEF_br8; SUBB; PutbackRMByte(ModRM,dst); CLKM(2,2,2,16,13,7); }
|
||||
@ -371,7 +404,7 @@ OP( 0x2a, i_sub_r8b ) { DEF_r8b; SUBB; RegByte(ModRM)=dst; CLKM(2,2,2,11,10,6
|
||||
OP( 0x2b, i_sub_r16w ) { DEF_r16w; SUBW; RegWord(ModRM)=dst; CLKR(15,15,8,15,11,6,2,EA); }
|
||||
OP( 0x2c, i_sub_ald8 ) { DEF_ald8; SUBB; I.regs.b[AL]=dst; CLKS(4,4,2); }
|
||||
OP( 0x2d, i_sub_axd16) { DEF_axd16; SUBW; I.regs.w[AW]=dst; CLKS(4,4,2); }
|
||||
OP( 0x2e, i_cs ) { seg_prefix=TRUE; prefix_base=I.sregs[PS]<<4; CLK(2); nec_instruction[FETCHOP](); seg_prefix=FALSE; }
|
||||
OP( 0x2e, i_cs ) { seg_prefix=TRUE; prefix_base=I.sregs[PS]<<4; CLK(2); nec_instruction[fetchop()](); seg_prefix=FALSE; }
|
||||
OP( 0x2f, i_das ) { ADJ4(-6,-0x60); CLKS(3,3,2); }
|
||||
|
||||
OP( 0x30, i_xor_br8 ) { DEF_br8; XORB; PutbackRMByte(ModRM,dst); CLKM(2,2,2,16,13,7); }
|
||||
@ -380,7 +413,7 @@ OP( 0x32, i_xor_r8b ) { DEF_r8b; XORB; RegByte(ModRM)=dst; CLKM(2,2,2,11,10,6
|
||||
OP( 0x33, i_xor_r16w ) { DEF_r16w; XORW; RegWord(ModRM)=dst; CLKR(15,15,8,15,11,6,2,EA); }
|
||||
OP( 0x34, i_xor_ald8 ) { DEF_ald8; XORB; I.regs.b[AL]=dst; CLKS(4,4,2); }
|
||||
OP( 0x35, i_xor_axd16) { DEF_axd16; XORW; I.regs.w[AW]=dst; CLKS(4,4,2); }
|
||||
OP( 0x36, i_ss ) { seg_prefix=TRUE; prefix_base=I.sregs[SS]<<4; CLK(2); nec_instruction[FETCHOP](); seg_prefix=FALSE; }
|
||||
OP( 0x36, i_ss ) { seg_prefix=TRUE; prefix_base=I.sregs[SS]<<4; CLK(2); nec_instruction[fetchop()](); seg_prefix=FALSE; }
|
||||
OP( 0x37, i_aaa ) { ADJB(6, (I.regs.b[AL] > 0xf9) ? 2 : 1); CLKS(7,7,4); }
|
||||
|
||||
OP( 0x38, i_cmp_br8 ) { DEF_br8; SUBB; CLKM(2,2,2,11,10,6); }
|
||||
@ -389,7 +422,7 @@ OP( 0x3a, i_cmp_r8b ) { DEF_r8b; SUBB; CLKM(2,2,2,11,10,6); }
|
||||
OP( 0x3b, i_cmp_r16w ) { DEF_r16w; SUBW; CLKR(15,15,8,15,11,6,2,EA); }
|
||||
OP( 0x3c, i_cmp_ald8 ) { DEF_ald8; SUBB; CLKS(4,4,2); }
|
||||
OP( 0x3d, i_cmp_axd16) { DEF_axd16; SUBW; CLKS(4,4,2); }
|
||||
OP( 0x3e, i_ds ) { seg_prefix=TRUE; prefix_base=I.sregs[DS0]<<4; CLK(2); nec_instruction[FETCHOP](); seg_prefix=FALSE; }
|
||||
OP( 0x3e, i_ds ) { seg_prefix=TRUE; prefix_base=I.sregs[DS0]<<4; CLK(2); nec_instruction[fetchop()](); seg_prefix=FALSE; }
|
||||
OP( 0x3f, i_aas ) { ADJB(-6, (I.regs.b[AL] < 6) ? -2 : -1); CLKS(7,7,4); }
|
||||
|
||||
OP( 0x40, i_inc_ax ) { IncWordReg(AW); CLK(2); }
|
||||
@ -464,12 +497,13 @@ OP( 0x62, i_chkind ) {
|
||||
nec_ICount-=20;
|
||||
logerror("%06x: bound %04x high %04x low %04x tmp\n",activecpu_get_pc(),high,low,tmp);
|
||||
}
|
||||
OP( 0x64, i_repnc ) { UINT32 next = FETCHOP; UINT16 c = I.regs.w[CW];
|
||||
OP( 0x63, i_brkn ) { nec_interrupt(FETCH,1); CLKS(50,50,24); } // timing not verified, used by riskchal / gussun
|
||||
OP( 0x64, i_repnc ) { UINT32 next = fetchop(); UINT16 c = I.regs.w[CW];
|
||||
switch(next) { /* Segments */
|
||||
case 0x26: seg_prefix=TRUE; prefix_base=I.sregs[DS1]<<4; next = FETCHOP; CLK(2); break;
|
||||
case 0x2e: seg_prefix=TRUE; prefix_base=I.sregs[PS]<<4; next = FETCHOP; CLK(2); break;
|
||||
case 0x36: seg_prefix=TRUE; prefix_base=I.sregs[SS]<<4; next = FETCHOP; CLK(2); break;
|
||||
case 0x3e: seg_prefix=TRUE; prefix_base=I.sregs[DS0]<<4; next = FETCHOP; CLK(2); break;
|
||||
case 0x26: seg_prefix=TRUE; prefix_base=I.sregs[DS1]<<4; next = fetchop(); CLK(2); break;
|
||||
case 0x2e: seg_prefix=TRUE; prefix_base=I.sregs[PS]<<4; next = fetchop(); CLK(2); break;
|
||||
case 0x36: seg_prefix=TRUE; prefix_base=I.sregs[SS]<<4; next = fetchop(); CLK(2); break;
|
||||
case 0x3e: seg_prefix=TRUE; prefix_base=I.sregs[DS0]<<4; next = fetchop(); CLK(2); break;
|
||||
}
|
||||
|
||||
switch(next) {
|
||||
@ -492,12 +526,12 @@ OP( 0x64, i_repnc ) { UINT32 next = FETCHOP; UINT16 c = I.regs.w[CW];
|
||||
seg_prefix=FALSE;
|
||||
}
|
||||
|
||||
OP( 0x65, i_repc ) { UINT32 next = FETCHOP; UINT16 c = I.regs.w[CW];
|
||||
OP( 0x65, i_repc ) { UINT32 next = fetchop(); UINT16 c = I.regs.w[CW];
|
||||
switch(next) { /* Segments */
|
||||
case 0x26: seg_prefix=TRUE; prefix_base=I.sregs[DS1]<<4; next = FETCHOP; CLK(2); break;
|
||||
case 0x2e: seg_prefix=TRUE; prefix_base=I.sregs[PS]<<4; next = FETCHOP; CLK(2); break;
|
||||
case 0x36: seg_prefix=TRUE; prefix_base=I.sregs[SS]<<4; next = FETCHOP; CLK(2); break;
|
||||
case 0x3e: seg_prefix=TRUE; prefix_base=I.sregs[DS0]<<4; next = FETCHOP; CLK(2); break;
|
||||
case 0x26: seg_prefix=TRUE; prefix_base=I.sregs[DS1]<<4; next = fetchop(); CLK(2); break;
|
||||
case 0x2e: seg_prefix=TRUE; prefix_base=I.sregs[PS]<<4; next = fetchop(); CLK(2); break;
|
||||
case 0x36: seg_prefix=TRUE; prefix_base=I.sregs[SS]<<4; next = fetchop(); CLK(2); break;
|
||||
case 0x3e: seg_prefix=TRUE; prefix_base=I.sregs[DS0]<<4; next = fetchop(); CLK(2); break;
|
||||
}
|
||||
|
||||
switch(next) {
|
||||
@ -749,7 +783,7 @@ OP( 0xcb, i_retf ) { POP(I.ip); POP(I.sregs[PS]); CHANGE_PC; CLKS(29,29,16)
|
||||
OP( 0xcc, i_int3 ) { nec_interrupt(3,0); CLKS(50,50,24); }
|
||||
OP( 0xcd, i_int ) { nec_interrupt(FETCH,0); CLKS(50,50,24); }
|
||||
OP( 0xce, i_into ) { if (OF) { nec_interrupt(4,0); CLKS(52,52,26); } else CLK(3); }
|
||||
OP( 0xcf, i_iret ) { POP(I.ip); POP(I.sregs[PS]); i_popf(); CHANGE_PC; CLKS(39,39,19); }
|
||||
OP( 0xcf, i_iret ) { POP(I.ip); POP(I.sregs[PS]); i_popf(); SetMD(1); CHANGE_PC; CLKS(39,39,19); }
|
||||
|
||||
OP( 0xd0, i_rotshft_b ) {
|
||||
UINT32 src, dst; GetModRM; src = (UINT32)GetRMByte(ModRM); dst=src;
|
||||
@ -841,12 +875,12 @@ OP( 0xee, i_outdxal ) { write_port_byte(I.regs.w[DW], I.regs.b[AL]); CLKS(8,8,3
|
||||
OP( 0xef, i_outdxax ) { write_port_word(I.regs.w[DW], I.regs.w[AW]); CLKW(12,12,5,12,8,3,I.regs.w[DW]); }
|
||||
|
||||
OP( 0xf0, i_lock ) { logerror("%06x: Warning - BUSLOCK\n",activecpu_get_pc()); I.no_interrupt=1; CLK(2); }
|
||||
OP( 0xf2, i_repne ) { UINT32 next = FETCHOP; UINT16 c = I.regs.w[CW];
|
||||
OP( 0xf2, i_repne ) { UINT32 next = fetchop(); UINT16 c = I.regs.w[CW];
|
||||
switch(next) { /* Segments */
|
||||
case 0x26: seg_prefix=TRUE; prefix_base=I.sregs[DS1]<<4; next = FETCHOP; CLK(2); break;
|
||||
case 0x2e: seg_prefix=TRUE; prefix_base=I.sregs[PS]<<4; next = FETCHOP; CLK(2); break;
|
||||
case 0x36: seg_prefix=TRUE; prefix_base=I.sregs[SS]<<4; next = FETCHOP; CLK(2); break;
|
||||
case 0x3e: seg_prefix=TRUE; prefix_base=I.sregs[DS0]<<4; next = FETCHOP; CLK(2); break;
|
||||
case 0x26: seg_prefix=TRUE; prefix_base=I.sregs[DS1]<<4; next = fetchop(); CLK(2); break;
|
||||
case 0x2e: seg_prefix=TRUE; prefix_base=I.sregs[PS]<<4; next = fetchop(); CLK(2); break;
|
||||
case 0x36: seg_prefix=TRUE; prefix_base=I.sregs[SS]<<4; next = fetchop(); CLK(2); break;
|
||||
case 0x3e: seg_prefix=TRUE; prefix_base=I.sregs[DS0]<<4; next = fetchop(); CLK(2); break;
|
||||
}
|
||||
|
||||
switch(next) {
|
||||
@ -868,12 +902,12 @@ OP( 0xf2, i_repne ) { UINT32 next = FETCHOP; UINT16 c = I.regs.w[CW];
|
||||
}
|
||||
seg_prefix=FALSE;
|
||||
}
|
||||
OP( 0xf3, i_repe ) { UINT32 next = FETCHOP; UINT16 c = I.regs.w[CW];
|
||||
OP( 0xf3, i_repe ) { UINT32 next = fetchop(); UINT16 c = I.regs.w[CW];
|
||||
switch(next) { /* Segments */
|
||||
case 0x26: seg_prefix=TRUE; prefix_base=I.sregs[DS1]<<4; next = FETCHOP; CLK(2); break;
|
||||
case 0x2e: seg_prefix=TRUE; prefix_base=I.sregs[PS]<<4; next = FETCHOP; CLK(2); break;
|
||||
case 0x36: seg_prefix=TRUE; prefix_base=I.sregs[SS]<<4; next = FETCHOP; CLK(2); break;
|
||||
case 0x3e: seg_prefix=TRUE; prefix_base=I.sregs[DS0]<<4; next = FETCHOP; CLK(2); break;
|
||||
case 0x26: seg_prefix=TRUE; prefix_base=I.sregs[DS1]<<4; next = fetchop(); CLK(2); break;
|
||||
case 0x2e: seg_prefix=TRUE; prefix_base=I.sregs[PS]<<4; next = fetchop(); CLK(2); break;
|
||||
case 0x36: seg_prefix=TRUE; prefix_base=I.sregs[SS]<<4; next = fetchop(); CLK(2); break;
|
||||
case 0x3e: seg_prefix=TRUE; prefix_base=I.sregs[DS0]<<4; next = fetchop(); CLK(2); break;
|
||||
}
|
||||
|
||||
switch(next) {
|
||||
@ -1013,10 +1047,16 @@ static offs_t nec_dasm(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8
|
||||
}
|
||||
#endif /* ENABLE_DEBUGGER */
|
||||
|
||||
static void nec_init(int index, int clock, const void *config, int (*irqcallback)(int), int type)
|
||||
static void nec_init(int index, int clock, const void *_config, int (*irqcallback)(int), int type)
|
||||
{
|
||||
const nec_config *config = _config ? _config : &default_config;
|
||||
|
||||
|
||||
static const char *const names[]={"V20","V30","V33"};
|
||||
|
||||
I.config = config;
|
||||
|
||||
|
||||
state_save_register_item_array(names[type], index, I.regs.w);
|
||||
state_save_register_item_array(names[type], index, I.sregs);
|
||||
|
||||
@ -1180,7 +1220,7 @@ static int v20_execute(int cycles)
|
||||
I.no_interrupt--;
|
||||
|
||||
CALL_DEBUGGER((I.sregs[PS]<<4) + I.ip);
|
||||
nec_instruction[FETCHOP]();
|
||||
nec_instruction[fetchop()]();
|
||||
}
|
||||
return cycles - nec_ICount;
|
||||
}
|
||||
@ -1211,7 +1251,7 @@ static int v30_execute(int cycles) {
|
||||
I.no_interrupt--;
|
||||
|
||||
CALL_DEBUGGER((I.sregs[PS]<<4) + I.ip);
|
||||
nec_instruction[FETCHOP]();
|
||||
nec_instruction[fetchop()]();
|
||||
}
|
||||
return cycles - nec_ICount;
|
||||
}
|
||||
@ -1243,7 +1283,7 @@ static int v33_execute(int cycles)
|
||||
I.no_interrupt--;
|
||||
|
||||
CALL_DEBUGGER((I.sregs[PS]<<4) + I.ip);
|
||||
nec_instruction[FETCHOP]();
|
||||
nec_instruction[fetchop()]();
|
||||
}
|
||||
|
||||
return cycles - nec_ICount;
|
||||
|
@ -1,5 +1,12 @@
|
||||
#include "cpuintrf.h"
|
||||
|
||||
typedef struct _nec_config nec_config;
|
||||
struct _nec_config
|
||||
{
|
||||
const UINT8* v25v35_decryptiontable; // internal decryption table
|
||||
};
|
||||
|
||||
|
||||
typedef enum { DS1, PS, SS, DS0 } SREGS;
|
||||
typedef enum { AW, CW, DW, BW, SP, BP, IX, IY } WREGS;
|
||||
|
||||
@ -95,7 +102,9 @@ typedef enum { AH,AL,CH,CL,DH,DL,BH,BL,SPH,SPL,BPH,BPL,IXH,IXL,IYH,IYL } BREGS;
|
||||
|
||||
#define FETCH_XOR(a) ((a) ^ I.mem.fetch_xor)
|
||||
#define FETCH (cpu_readop_arg(FETCH_XOR((I.sregs[PS]<<4)+I.ip++)))
|
||||
#define FETCHOP (cpu_readop(FETCH_XOR((I.sregs[PS]<<4)+I.ip++)))
|
||||
|
||||
|
||||
#define FETCHOP ()
|
||||
#define FETCHWORD(var) { var=cpu_readop_arg(FETCH_XOR((I.sregs[PS]<<4)+I.ip))+(cpu_readop_arg(FETCH_XOR((I.sregs[PS]<<4)+I.ip+1))<<8); I.ip+=2; }
|
||||
#define PUSH(val) { I.regs.w[SP]-=2; write_word((((I.sregs[SS]<<4)+I.regs.w[SP])),val); }
|
||||
#define POP(var) { var = read_word((((I.sregs[SS]<<4)+I.regs.w[SP]))); I.regs.w[SP]+=2; }
|
||||
|
@ -97,6 +97,7 @@ static void i_pop_di(void);
|
||||
static void i_pusha(void);
|
||||
static void i_popa(void);
|
||||
static void i_chkind(void);
|
||||
static void i_brkn(void);
|
||||
static void i_repnc(void);
|
||||
static void i_repc(void);
|
||||
static void i_push_d16(void);
|
||||
@ -347,11 +348,11 @@ static void (*const nec_instruction[256])(void) =
|
||||
i_pusha, /* 0x60 */
|
||||
i_popa, /* 0x61 */
|
||||
i_chkind, /* 0x62 */
|
||||
i_invalid, /* 0x63 */
|
||||
i_repnc, /* 0x64 */
|
||||
i_repc, /* 0x65 */
|
||||
i_invalid, /* 0x66 */
|
||||
i_invalid, /* 0x67 */
|
||||
i_brkn, /* 0x63 */ // brkn - v25+ / 35+ only?
|
||||
i_repnc, /* 0x64 */
|
||||
i_repc, /* 0x65 */
|
||||
i_invalid, /* 0x66 */
|
||||
i_invalid, /* 0x67 */
|
||||
i_push_d16, /* 0x68 */
|
||||
i_imul_d16, /* 0x69 */
|
||||
i_push_d8, /* 0x6a */
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include "machine/irem_cpu.h"
|
||||
#include "sound/2151intf.h"
|
||||
#include "sound/iremga20.h"
|
||||
#include "cpu/nec/nec.h"
|
||||
|
||||
|
||||
#define M107_IRQ_0 ((m107_irq_vectorbase+0)/4) /* VBL interrupt*/
|
||||
@ -475,6 +476,8 @@ static const struct IremGA20_interface iremGA20_interface =
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
static const nec_config firebarr_config ={ rtypeleo_decryption_table, };
|
||||
|
||||
static MACHINE_DRIVER_START( firebarr )
|
||||
|
||||
/* basic machine hardware */
|
||||
@ -482,9 +485,9 @@ static MACHINE_DRIVER_START( firebarr )
|
||||
MDRV_CPU_PROGRAM_MAP(main_map,0)
|
||||
MDRV_CPU_IO_MAP(main_portmap,0)
|
||||
|
||||
MDRV_CPU_ADD(V30, 14318000/2)
|
||||
/* audio CPU */ /* 14.318 MHz */
|
||||
MDRV_CPU_ADD_TAG("sound", V30, 14318000/2)
|
||||
MDRV_CPU_PROGRAM_MAP(sound_map,0)
|
||||
MDRV_CPU_CONFIG(firebarr_config)
|
||||
|
||||
MDRV_MACHINE_START(m107)
|
||||
MDRV_MACHINE_RESET(m107)
|
||||
@ -516,17 +519,28 @@ static MACHINE_DRIVER_START( firebarr )
|
||||
MDRV_SOUND_ROUTE(1, "right", 1.0)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
|
||||
static const nec_config dsoccr94_config ={ dsoccr94_decryption_table, };
|
||||
static MACHINE_DRIVER_START( dsoccr94 )
|
||||
MDRV_IMPORT_FROM(firebarr)
|
||||
|
||||
/* basic machine hardware */
|
||||
MDRV_CPU_REPLACE("main", V33, 20000000/2) /* NEC V33, Could be 28MHz clock? */
|
||||
|
||||
MDRV_CPU_MODIFY("sound")
|
||||
MDRV_CPU_CONFIG(dsoccr94_config)
|
||||
|
||||
/* video hardware */
|
||||
MDRV_GFXDECODE(m107)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
|
||||
static const nec_config wpksoc_config ={ leagueman_decryption_table, };
|
||||
static MACHINE_DRIVER_START( wpksoc )
|
||||
MDRV_IMPORT_FROM(firebarr)
|
||||
MDRV_CPU_MODIFY("sound")
|
||||
MDRV_CPU_CONFIG(wpksoc_config)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
ROM_START( firebarr )
|
||||
@ -632,8 +646,6 @@ static DRIVER_INIT( firebarr )
|
||||
RAM = memory_region(REGION_CPU2);
|
||||
memcpy(RAM+0xffff0,RAM+0x1fff0,0x10); /* Sound cpu Start vector */
|
||||
|
||||
irem_cpu_decrypt(1,rtypeleo_decryption_table);
|
||||
|
||||
m107_irq_vectorbase=0x20;
|
||||
m107_spritesystem = 1;
|
||||
}
|
||||
@ -648,8 +660,6 @@ static DRIVER_INIT( dsoccr94 )
|
||||
RAM = memory_region(REGION_CPU2);
|
||||
memcpy(RAM+0xffff0,RAM+0x1fff0,0x10); /* Sound cpu Start vector */
|
||||
|
||||
irem_cpu_decrypt(1,dsoccr94_decryption_table);
|
||||
|
||||
m107_irq_vectorbase=0x80;
|
||||
m107_spritesystem = 0;
|
||||
}
|
||||
@ -664,7 +674,6 @@ static DRIVER_INIT( wpksoc )
|
||||
RAM = memory_region(REGION_CPU2);
|
||||
memcpy(RAM+0xffff0,RAM+0x1fff0,0x10); /* Sound cpu Start vector */
|
||||
|
||||
irem_cpu_decrypt(1,leagueman_decryption_table);
|
||||
|
||||
m107_irq_vectorbase=0x80;
|
||||
m107_spritesystem = 0;
|
||||
@ -672,6 +681,6 @@ static DRIVER_INIT( wpksoc )
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
GAME( 1993, firebarr, 0, firebarr, firebarr, firebarr, ROT270, "Irem", "Fire Barrel (Japan)", GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS )
|
||||
GAME( 1993, firebarr, 0, firebarr, firebarr, firebarr, ROT270, "Irem", "Fire Barrel (Japan)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS )
|
||||
GAME( 1994, dsoccr94, 0, dsoccr94, dsoccr94, dsoccr94, ROT0, "Irem (Data East Corporation license)", "Dream Soccer '94", 0 )
|
||||
GAME( 1995, wpksoc, 0, firebarr, wpksoc, wpksoc, ROT0, "Jaleco", "World PK Soccer", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS )
|
||||
GAME( 1995, wpksoc, 0, wpksoc, wpksoc, wpksoc, ROT0, "Jaleco", "World PK Soccer", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS )
|
||||
|
@ -76,6 +76,7 @@ kengo 0x18 --------------
|
||||
#include "sound/dac.h"
|
||||
#include "sound/2151intf.h"
|
||||
#include "m72.h"
|
||||
#include "cpu/nec/nec.h"
|
||||
|
||||
|
||||
#define MASTER_CLOCK XTAL_32MHz
|
||||
@ -1920,11 +1921,11 @@ static const struct YM2151interface ym2151_interface =
|
||||
static MACHINE_DRIVER_START( rtype )
|
||||
|
||||
/* basic machine hardware */
|
||||
MDRV_CPU_ADD(V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */
|
||||
MDRV_CPU_ADD_TAG("main",V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */
|
||||
MDRV_CPU_PROGRAM_MAP(rtype_map,0)
|
||||
MDRV_CPU_IO_MAP(m72_portmap,0)
|
||||
|
||||
MDRV_CPU_ADD(Z80, SOUND_CLOCK)
|
||||
MDRV_CPU_ADD_TAG("sound",Z80, SOUND_CLOCK)
|
||||
MDRV_CPU_PROGRAM_MAP(sound_ram_map,0)
|
||||
MDRV_CPU_IO_MAP(sound_portmap,0)
|
||||
/* IRQs are generated by main Z80 and YM2151 */
|
||||
@ -1986,11 +1987,11 @@ ADDRESS_MAP_END
|
||||
static MACHINE_DRIVER_START( m72 )
|
||||
|
||||
/* basic machine hardware */
|
||||
MDRV_CPU_ADD(V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */
|
||||
MDRV_CPU_ADD_TAG("main",V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */
|
||||
MDRV_CPU_PROGRAM_MAP(m72_map,0)
|
||||
MDRV_CPU_IO_MAP(m72_portmap,0)
|
||||
|
||||
MDRV_CPU_ADD(Z80, SOUND_CLOCK)
|
||||
MDRV_CPU_ADD_TAG("sound",Z80, SOUND_CLOCK)
|
||||
MDRV_CPU_PROGRAM_MAP(sound_ram_map,0)
|
||||
MDRV_CPU_IO_MAP(sound_portmap,0)
|
||||
MDRV_CPU_VBLANK_INT(fake_nmi,128) /* clocked by V1? (Vigilante) */
|
||||
@ -2027,7 +2028,7 @@ MACHINE_DRIVER_END
|
||||
static MACHINE_DRIVER_START( m72_8751 )
|
||||
MDRV_IMPORT_FROM(m72)
|
||||
|
||||
MDRV_CPU_ADD(I8751, 8000000)
|
||||
MDRV_CPU_ADD_TAG("mcu",I8751, 8000000)
|
||||
MDRV_CPU_PROGRAM_MAP(mcu_map,0)
|
||||
MDRV_CPU_DATA_MAP(mcu_data_map,0)
|
||||
MDRV_CPU_VBLANK_INT(irq0_line_pulse,1)
|
||||
@ -2037,11 +2038,11 @@ MACHINE_DRIVER_END
|
||||
static MACHINE_DRIVER_START( dkgenm72 )
|
||||
|
||||
/* basic machine hardware */
|
||||
MDRV_CPU_ADD(V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */
|
||||
MDRV_CPU_ADD_TAG("main",V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */
|
||||
MDRV_CPU_PROGRAM_MAP(m72_map,0)
|
||||
MDRV_CPU_IO_MAP(m72_portmap,0)
|
||||
|
||||
MDRV_CPU_ADD(Z80, SOUND_CLOCK)
|
||||
MDRV_CPU_ADD_TAG("sound",Z80, SOUND_CLOCK)
|
||||
MDRV_CPU_PROGRAM_MAP(sound_ram_map,0)
|
||||
MDRV_CPU_IO_MAP(sound_portmap,0)
|
||||
MDRV_CPU_VBLANK_INT(fake_nmi,128) /* clocked by V1? (Vigilante) */
|
||||
@ -2079,11 +2080,11 @@ MACHINE_DRIVER_END
|
||||
static MACHINE_DRIVER_START( xmultipl )
|
||||
|
||||
/* basic machine hardware */
|
||||
MDRV_CPU_ADD(V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */
|
||||
MDRV_CPU_ADD_TAG("main",V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */
|
||||
MDRV_CPU_PROGRAM_MAP(xmultipl_map,0)
|
||||
MDRV_CPU_IO_MAP(m72_portmap,0)
|
||||
|
||||
MDRV_CPU_ADD(Z80, SOUND_CLOCK)
|
||||
MDRV_CPU_ADD_TAG("sound",Z80, SOUND_CLOCK)
|
||||
MDRV_CPU_PROGRAM_MAP(sound_ram_map,0)
|
||||
MDRV_CPU_IO_MAP(sound_portmap,0)
|
||||
MDRV_CPU_VBLANK_INT(nmi_line_pulse,128) /* clocked by V1? (Vigilante) */
|
||||
@ -2121,11 +2122,11 @@ MACHINE_DRIVER_END
|
||||
static MACHINE_DRIVER_START( dbreed )
|
||||
|
||||
/* basic machine hardware */
|
||||
MDRV_CPU_ADD(V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */
|
||||
MDRV_CPU_ADD_TAG("main",V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */
|
||||
MDRV_CPU_PROGRAM_MAP(dbreed_map,0)
|
||||
MDRV_CPU_IO_MAP(hharry_portmap,0)
|
||||
|
||||
MDRV_CPU_ADD(Z80, SOUND_CLOCK)
|
||||
MDRV_CPU_ADD_TAG("sound",Z80, SOUND_CLOCK)
|
||||
MDRV_CPU_PROGRAM_MAP(sound_rom_map,0)
|
||||
MDRV_CPU_IO_MAP(rtype2_sound_portmap,0)
|
||||
MDRV_CPU_VBLANK_INT(nmi_line_pulse,128) /* clocked by V1? (Vigilante) */
|
||||
@ -2162,11 +2163,11 @@ MACHINE_DRIVER_END
|
||||
static MACHINE_DRIVER_START( dbreed72 )
|
||||
|
||||
/* basic machine hardware */
|
||||
MDRV_CPU_ADD(V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */
|
||||
MDRV_CPU_ADD_TAG("main", V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */
|
||||
MDRV_CPU_PROGRAM_MAP(dbreed72_map,0)
|
||||
MDRV_CPU_IO_MAP(m72_portmap,0)
|
||||
|
||||
MDRV_CPU_ADD(Z80, SOUND_CLOCK)
|
||||
MDRV_CPU_ADD_TAG("sound", Z80, SOUND_CLOCK)
|
||||
MDRV_CPU_PROGRAM_MAP(sound_ram_map,0)
|
||||
MDRV_CPU_IO_MAP(sound_portmap,0)
|
||||
MDRV_CPU_VBLANK_INT(nmi_line_pulse,128) /* clocked by V1? (Vigilante) */
|
||||
@ -2204,11 +2205,11 @@ MACHINE_DRIVER_END
|
||||
static MACHINE_DRIVER_START( rtype2 )
|
||||
|
||||
/* basic machine hardware */
|
||||
MDRV_CPU_ADD(V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */
|
||||
MDRV_CPU_ADD_TAG("main", V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */
|
||||
MDRV_CPU_PROGRAM_MAP(rtype2_map,0)
|
||||
MDRV_CPU_IO_MAP(rtype2_portmap,0)
|
||||
|
||||
MDRV_CPU_ADD(Z80, SOUND_CLOCK)
|
||||
MDRV_CPU_ADD_TAG("sound", Z80, SOUND_CLOCK)
|
||||
MDRV_CPU_PROGRAM_MAP(sound_rom_map,0)
|
||||
MDRV_CPU_IO_MAP(rtype2_sound_portmap,0)
|
||||
MDRV_CPU_VBLANK_INT(nmi_line_pulse,128) /* clocked by V1? (Vigilante) */
|
||||
@ -2245,11 +2246,11 @@ MACHINE_DRIVER_END
|
||||
static MACHINE_DRIVER_START( majtitle )
|
||||
|
||||
/* basic machine hardware */
|
||||
MDRV_CPU_ADD(V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */
|
||||
MDRV_CPU_ADD_TAG("main", V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */
|
||||
MDRV_CPU_PROGRAM_MAP(majtitle_map,0)
|
||||
MDRV_CPU_IO_MAP(majtitle_portmap,0)
|
||||
|
||||
MDRV_CPU_ADD(Z80, SOUND_CLOCK)
|
||||
MDRV_CPU_ADD_TAG("sound", Z80, SOUND_CLOCK)
|
||||
MDRV_CPU_PROGRAM_MAP(sound_rom_map,0)
|
||||
MDRV_CPU_IO_MAP(rtype2_sound_portmap,0)
|
||||
MDRV_CPU_VBLANK_INT(nmi_line_pulse,128) /* clocked by V1? (Vigilante) */
|
||||
@ -2286,11 +2287,11 @@ MACHINE_DRIVER_END
|
||||
static MACHINE_DRIVER_START( hharry )
|
||||
|
||||
/* basic machine hardware */
|
||||
MDRV_CPU_ADD(V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */
|
||||
MDRV_CPU_ADD_TAG("main", V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */
|
||||
MDRV_CPU_PROGRAM_MAP(hharry_map,0)
|
||||
MDRV_CPU_IO_MAP(hharry_portmap,0)
|
||||
|
||||
MDRV_CPU_ADD(Z80, SOUND_CLOCK)
|
||||
MDRV_CPU_ADD_TAG("sound", Z80, SOUND_CLOCK)
|
||||
MDRV_CPU_PROGRAM_MAP(sound_rom_map,0)
|
||||
MDRV_CPU_IO_MAP(rtype2_sound_portmap,0)
|
||||
MDRV_CPU_VBLANK_INT(nmi_line_pulse,128) /* clocked by V1? (Vigilante) */
|
||||
@ -2328,11 +2329,11 @@ MACHINE_DRIVER_END
|
||||
static MACHINE_DRIVER_START( hharryu )
|
||||
|
||||
/* basic machine hardware */
|
||||
MDRV_CPU_ADD(V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */
|
||||
MDRV_CPU_ADD_TAG("main", V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */
|
||||
MDRV_CPU_PROGRAM_MAP(hharryu_map,0)
|
||||
MDRV_CPU_IO_MAP(rtype2_portmap,0)
|
||||
|
||||
MDRV_CPU_ADD(Z80, SOUND_CLOCK)
|
||||
MDRV_CPU_ADD_TAG("sound", Z80, SOUND_CLOCK)
|
||||
MDRV_CPU_PROGRAM_MAP(sound_rom_map,0)
|
||||
MDRV_CPU_IO_MAP(rtype2_sound_portmap,0)
|
||||
MDRV_CPU_VBLANK_INT(nmi_line_pulse,128) /* clocked by V1? (Vigilante) */
|
||||
@ -2370,11 +2371,11 @@ MACHINE_DRIVER_END
|
||||
static MACHINE_DRIVER_START( poundfor )
|
||||
|
||||
/* basic machine hardware */
|
||||
MDRV_CPU_ADD(V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */
|
||||
MDRV_CPU_ADD_TAG("main", V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */
|
||||
MDRV_CPU_PROGRAM_MAP(rtype2_map,0)
|
||||
MDRV_CPU_IO_MAP(poundfor_portmap,0)
|
||||
|
||||
MDRV_CPU_ADD(Z80, SOUND_CLOCK)
|
||||
MDRV_CPU_ADD_TAG("sound", Z80, SOUND_CLOCK)
|
||||
MDRV_CPU_PROGRAM_MAP(sound_rom_map,0)
|
||||
MDRV_CPU_IO_MAP(poundfor_sound_portmap,0)
|
||||
MDRV_CPU_VBLANK_INT(fake_nmi,128) /* clocked by V1? (Vigilante) */
|
||||
@ -2408,14 +2409,14 @@ static MACHINE_DRIVER_START( poundfor )
|
||||
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "right", 0.40)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
static MACHINE_DRIVER_START( kengo )
|
||||
static MACHINE_DRIVER_START( cosmccop )
|
||||
|
||||
/* basic machine hardware */
|
||||
MDRV_CPU_ADD(V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */
|
||||
MDRV_CPU_ADD_TAG("main", V30,MASTER_CLOCK/2/2)
|
||||
MDRV_CPU_PROGRAM_MAP(kengo_map,0)
|
||||
MDRV_CPU_IO_MAP(kengo_portmap,0)
|
||||
|
||||
MDRV_CPU_ADD(Z80, SOUND_CLOCK)
|
||||
MDRV_CPU_ADD_TAG("sound", Z80, SOUND_CLOCK)
|
||||
MDRV_CPU_PROGRAM_MAP(sound_rom_map,0)
|
||||
MDRV_CPU_IO_MAP(rtype2_sound_portmap,0)
|
||||
MDRV_CPU_VBLANK_INT(nmi_line_pulse,128) /* clocked by V1? (Vigilante) */
|
||||
@ -2449,6 +2450,12 @@ static MACHINE_DRIVER_START( kengo )
|
||||
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "right", 0.40)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
static const nec_config kengo_config ={ gunforce_decryption_table, };
|
||||
static MACHINE_DRIVER_START( kengo )
|
||||
MDRV_IMPORT_FROM( cosmccop )
|
||||
MDRV_CPU_MODIFY("main")
|
||||
MDRV_CPU_CONFIG(kengo_config)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
@ -3539,12 +3546,6 @@ ROM_END
|
||||
|
||||
|
||||
|
||||
static DRIVER_INIT( kengo )
|
||||
{
|
||||
irem_cpu_decrypt(0,gunforce_decryption_table);
|
||||
}
|
||||
|
||||
|
||||
|
||||
GAME( 1987, rtype, 0, rtype, rtype, 0, ROT0, "Irem", "R-Type (World)", GAME_NO_COCKTAIL )
|
||||
GAME( 1987, rtypej, rtype, rtype, rtypep, 0, ROT0, "Irem", "R-Type (Japan)", GAME_NO_COCKTAIL )
|
||||
@ -3573,6 +3574,6 @@ GAME( 1990, poundfor, 0, poundfor, poundfor, 0, ROT270, "Irem", "P
|
||||
GAME( 1990, poundfoj, poundfor, poundfor, poundfor, 0, ROT270, "Irem", "Pound for Pound (Japan)", GAME_NO_COCKTAIL )
|
||||
GAME( 1990, poundfou, poundfor, poundfor, poundfor, 0, ROT270, "Irem America", "Pound for Pound (US)", GAME_NO_COCKTAIL )
|
||||
GAME( 1990, airduel, 0, m72, airduel, airduel, ROT270, "Irem", "Air Duel (Japan)", 0 )
|
||||
GAME( 1991, cosmccop, 0, kengo, gallop, 0, ROT0, "Irem", "Cosmic Cop (World)", GAME_NO_COCKTAIL )
|
||||
GAME( 1991, cosmccop, 0, cosmccop, gallop, 0, ROT0, "Irem", "Cosmic Cop (World)", GAME_NO_COCKTAIL )
|
||||
GAME( 1991, gallop, cosmccop, m72, gallop, gallop, ROT0, "Irem", "Gallop - Armed police Unit (Japan)", GAME_NO_COCKTAIL )
|
||||
GAME( 1991, kengo, 0, kengo, kengo, kengo, ROT0, "Irem", "Ken-Go", GAME_NO_COCKTAIL )
|
||||
GAME( 1991, kengo, 0, kengo, kengo, 0, ROT0, "Irem", "Ken-Go", GAME_NO_COCKTAIL )
|
||||
|
@ -22,10 +22,6 @@ Notes:
|
||||
selection moves too fast with the clock set at 16 MHz. It's still fast at
|
||||
8 MHz, but at least it's usable.
|
||||
|
||||
- Probably all games use a nec V35+ cpu: for gussun and risky challenge
|
||||
we need a proper V35+ core for the use of the 0x63 instruction (brkn, to call a unencrypted
|
||||
routine from encrypted code); for simulate the instruction there's an hack (m90_game_kludge).
|
||||
|
||||
*****************************************************************************/
|
||||
|
||||
#include "driver.h"
|
||||
@ -34,13 +30,12 @@ Notes:
|
||||
#include "audio/m72.h"
|
||||
#include "sound/dac.h"
|
||||
#include "sound/2151intf.h"
|
||||
#include "cpu/nec/nec.h"
|
||||
|
||||
static UINT32 bankaddress;
|
||||
|
||||
extern UINT16 *m90_video_data;
|
||||
|
||||
extern int m90_game_kludge;
|
||||
|
||||
VIDEO_UPDATE( m90 );
|
||||
VIDEO_UPDATE( m90_bootleg );
|
||||
WRITE16_HANDLER( m90_video_control_w );
|
||||
@ -654,11 +649,10 @@ static INTERRUPT_GEN( bomblord_interrupt )
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Basic hardware -- no decryption table is setup for CPU */
|
||||
static MACHINE_DRIVER_START( m90 )
|
||||
|
||||
/* basic machine hardware */
|
||||
MDRV_CPU_ADD(V30,32000000/4) /* 8 MHz ??????? */
|
||||
MDRV_CPU_ADD_TAG("main", V30,32000000/4)
|
||||
MDRV_CPU_PROGRAM_MAP(main_cpu,0)
|
||||
MDRV_CPU_IO_MAP(main_cpu_io,0)
|
||||
MDRV_CPU_VBLANK_INT(m90_interrupt,1)
|
||||
@ -697,18 +691,47 @@ static MACHINE_DRIVER_START( m90 )
|
||||
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
static MACHINE_DRIVER_START( quizf1 )
|
||||
|
||||
static const nec_config hasamu_config ={ gunforce_decryption_table, };
|
||||
static MACHINE_DRIVER_START( hasamu )
|
||||
MDRV_IMPORT_FROM( m90 )
|
||||
MDRV_SCREEN_VISIBLE_AREA(6*8, 54*8-1, 17*8-8, 47*8-1+8)
|
||||
MDRV_CPU_MODIFY("main")
|
||||
MDRV_CPU_CONFIG(hasamu_config)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
static const nec_config quizf1_config ={ lethalth_decryption_table, };
|
||||
static MACHINE_DRIVER_START( quizf1 )
|
||||
MDRV_IMPORT_FROM( m90 )
|
||||
MDRV_CPU_MODIFY("main")
|
||||
MDRV_CPU_CONFIG(quizf1_config)
|
||||
MDRV_SCREEN_VISIBLE_AREA(6*8, 54*8-1, 17*8-8, 47*8-1+8)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
static const nec_config matchit2_config ={ matchit2_decryption_table, };
|
||||
static MACHINE_DRIVER_START( matchit2 )
|
||||
MDRV_IMPORT_FROM( m90 )
|
||||
MDRV_CPU_MODIFY("main")
|
||||
MDRV_CPU_CONFIG(matchit2_config)
|
||||
MDRV_SCREEN_VISIBLE_AREA(6*8, 54*8-1, 17*8-8, 47*8-1+8)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
|
||||
static const nec_config riskchal_config ={ gussun_decryption_table, };
|
||||
static MACHINE_DRIVER_START( riskchal )
|
||||
MDRV_IMPORT_FROM( m90 )
|
||||
MDRV_CPU_MODIFY("main")
|
||||
MDRV_CPU_CONFIG(riskchal_config)
|
||||
MDRV_SCREEN_VISIBLE_AREA(10*8, 50*8-1, 17*8, 47*8-1)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
|
||||
static const nec_config bomberman_config ={ bomberman_decryption_table, };
|
||||
static MACHINE_DRIVER_START( bombrman )
|
||||
|
||||
/* basic machine hardware */
|
||||
MDRV_CPU_ADD(V30,32000000/4) /* 8 MHz ??????? */
|
||||
MDRV_CPU_ADD_TAG("main", V30,32000000/4)
|
||||
MDRV_CPU_CONFIG(bomberman_config)
|
||||
|
||||
MDRV_CPU_PROGRAM_MAP(main_cpu,0)
|
||||
MDRV_CPU_IO_MAP(main_cpu_io,0)
|
||||
MDRV_CPU_VBLANK_INT(m90_interrupt,1)
|
||||
@ -746,11 +769,14 @@ static MACHINE_DRIVER_START( bombrman )
|
||||
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
static const nec_config dynablaster_config ={ dynablaster_decryption_table, };
|
||||
|
||||
static MACHINE_DRIVER_START( bbmanw )
|
||||
|
||||
/* basic machine hardware */
|
||||
MDRV_CPU_ADD_TAG("main",V30,32000000/4) /* 8 MHz ??????? */
|
||||
MDRV_CPU_ADD_TAG("main", V30,32000000/4)
|
||||
MDRV_CPU_CONFIG(dynablaster_config)
|
||||
|
||||
MDRV_CPU_PROGRAM_MAP(main_cpu,0)
|
||||
MDRV_CPU_IO_MAP(main_cpu_io,0)
|
||||
MDRV_CPU_VBLANK_INT(m90_interrupt,1)
|
||||
@ -788,18 +814,25 @@ static MACHINE_DRIVER_START( bbmanw )
|
||||
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
static const nec_config no_table ={ NULL, };
|
||||
|
||||
|
||||
static MACHINE_DRIVER_START( bomblord )
|
||||
|
||||
MDRV_IMPORT_FROM( bbmanw )
|
||||
MDRV_CPU_MODIFY("main")
|
||||
MDRV_CPU_CONFIG(no_table)
|
||||
|
||||
MDRV_CPU_VBLANK_INT(bomblord_interrupt,1)
|
||||
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
|
||||
|
||||
static MACHINE_DRIVER_START( bootleg )
|
||||
|
||||
/* basic machine hardware */
|
||||
MDRV_CPU_ADD(V30,32000000/4) /* 16 MHz */
|
||||
MDRV_CPU_ADD_TAG("main", V30,32000000/4)
|
||||
MDRV_CPU_PROGRAM_MAP(bootleg_main_cpu,0)
|
||||
MDRV_CPU_IO_MAP(main_cpu_io,0)
|
||||
MDRV_CPU_VBLANK_INT(m90_interrupt,1)
|
||||
@ -1113,49 +1146,10 @@ ROM_END
|
||||
|
||||
|
||||
|
||||
static DRIVER_INIT( hasamu )
|
||||
{
|
||||
m90_game_kludge=0;
|
||||
irem_cpu_decrypt(0,gunforce_decryption_table);
|
||||
}
|
||||
|
||||
static DRIVER_INIT( bombrman )
|
||||
{
|
||||
m90_game_kludge=0;
|
||||
irem_cpu_decrypt(0,bomberman_decryption_table);
|
||||
}
|
||||
|
||||
/* Bomberman World executes encrypted code from RAM! */
|
||||
static UINT16 *bbmanw_ram_base;
|
||||
extern UINT8 *irem_cpu_decrypted;
|
||||
|
||||
static WRITE16_HANDLER( bbmanw_ram_write )
|
||||
{
|
||||
COMBINE_DATA(&bbmanw_ram_base[offset]);
|
||||
if (ACCESSING_LSB)
|
||||
irem_cpu_decrypted[0xa0c00+offset*2]=dynablaster_decryption_table[data & 0xff];
|
||||
if (ACCESSING_MSB)
|
||||
irem_cpu_decrypted[0xa0c00+offset*2+1]=dynablaster_decryption_table[(data >> 8) & 0xff];
|
||||
}
|
||||
|
||||
static READ16_HANDLER( bbmanw_ram_read )
|
||||
{
|
||||
return bbmanw_ram_base[offset];
|
||||
}
|
||||
|
||||
static DRIVER_INIT( bbmanw )
|
||||
{
|
||||
m90_game_kludge=0;
|
||||
irem_cpu_decrypt(0,dynablaster_decryption_table);
|
||||
|
||||
bbmanw_ram_base = memory_install_write16_handler(0, ADDRESS_SPACE_PROGRAM, 0xa0c00, 0xa0cff, 0, 0, bbmanw_ram_write);
|
||||
memory_install_read16_handler(0, ADDRESS_SPACE_PROGRAM, 0xa0c00, 0xa0cff, 0, 0, bbmanw_ram_read);
|
||||
}
|
||||
|
||||
static DRIVER_INIT( quizf1 )
|
||||
{
|
||||
m90_game_kludge=0;
|
||||
irem_cpu_decrypt(0,lethalth_decryption_table);
|
||||
bankaddress = 0;
|
||||
set_m90_bank();
|
||||
|
||||
@ -1163,30 +1157,13 @@ static DRIVER_INIT( quizf1 )
|
||||
state_save_register_func_postload(set_m90_bank);
|
||||
}
|
||||
|
||||
static DRIVER_INIT( riskchal )
|
||||
{
|
||||
m90_game_kludge=1;
|
||||
irem_cpu_decrypt(0,gussun_decryption_table);
|
||||
}
|
||||
|
||||
static DRIVER_INIT( gussun )
|
||||
{
|
||||
m90_game_kludge=2;
|
||||
irem_cpu_decrypt(0,gussun_decryption_table);
|
||||
}
|
||||
|
||||
static DRIVER_INIT( matchit2 )
|
||||
{
|
||||
m90_game_kludge=0;
|
||||
irem_cpu_decrypt(0,matchit2_decryption_table);
|
||||
}
|
||||
|
||||
static DRIVER_INIT( bomblord )
|
||||
{
|
||||
UINT8 *RAM = memory_region(REGION_CPU1);
|
||||
|
||||
int i;
|
||||
m90_game_kludge=0;
|
||||
for (i=0; i<0x100000; i+=8)
|
||||
{
|
||||
RAM[i+0]=BITSWAP8(RAM[i+0], 6, 4, 7, 3, 1, 2, 0, 5);
|
||||
@ -1202,17 +1179,17 @@ static DRIVER_INIT( bomblord )
|
||||
|
||||
|
||||
|
||||
GAME( 1991, hasamu, 0, m90, hasamu, hasamu, ROT0, "Irem", "Hasamu (Japan)", GAME_NO_COCKTAIL )
|
||||
GAME( 1991, dynablst, 0, bombrman, dynablst, bombrman, ROT0, "Irem (licensed from Hudson Soft)", "Dynablaster / Bomber Man", GAME_NO_COCKTAIL )
|
||||
GAME( 1991, bombrman, dynablst, bombrman, bombrman, bombrman, ROT0, "Irem (licensed from Hudson Soft)", "Bomber Man (Japan)", GAME_NO_COCKTAIL )
|
||||
GAME( 1991, atompunk, dynablst, bombrman, atompunk, bombrman, ROT0, "Irem America (licensed from Hudson Soft)", "Atomic Punk (US)", GAME_NO_COCKTAIL )
|
||||
GAME( 1991, hasamu, 0, hasamu, hasamu, 0, ROT0, "Irem", "Hasamu (Japan)", GAME_NO_COCKTAIL )
|
||||
GAME( 1991, dynablst, 0, bombrman, dynablst, 0, ROT0, "Irem (licensed from Hudson Soft)", "Dynablaster / Bomber Man", GAME_NO_COCKTAIL )
|
||||
GAME( 1991, bombrman, dynablst, bombrman, bombrman, 0, ROT0, "Irem (licensed from Hudson Soft)", "Bomber Man (Japan)", GAME_NO_COCKTAIL )
|
||||
GAME( 1991, atompunk, dynablst, bombrman, atompunk, 0, ROT0, "Irem America (licensed from Hudson Soft)", "Atomic Punk (US)", GAME_NO_COCKTAIL )
|
||||
GAME( 1991, dynablsb, dynablst, bootleg, bombrman, 0, ROT0, "bootleg", "Dynablaster (bootleg)", GAME_NOT_WORKING | GAME_NO_COCKTAIL )
|
||||
GAME( 1992, bbmanw, 0, bbmanw, bbmanw, bbmanw, ROT0, "Irem", "Bomber Man World / New Dyna Blaster - Global Quest", GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL )
|
||||
GAME( 1992, bbmanwj, bbmanw, bombrman, bbmanwj, bbmanw, ROT0, "Irem", "Bomber Man World (Japan)", GAME_NO_COCKTAIL )
|
||||
GAME( 1992, newapunk, bbmanw, bbmanw, bbmanwj, bbmanw, ROT0, "Irem America", "New Atomic Punk - Global Quest (US)", GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL )
|
||||
GAME( 1992, bbmanw, 0, bbmanw, bbmanw, 0, ROT0, "Irem", "Bomber Man World / New Dyna Blaster - Global Quest", GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL )
|
||||
GAME( 1992, bbmanwj, bbmanw, bbmanw, bbmanwj, 0, ROT0, "Irem", "Bomber Man World (Japan)", GAME_NO_COCKTAIL )
|
||||
GAME( 1992, newapunk, bbmanw, bbmanw, bbmanwj, 0, ROT0, "Irem America", "New Atomic Punk - Global Quest (US)", GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL )
|
||||
GAME( 1992, bomblord, bbmanw, bomblord, bbmanw, bomblord, ROT0, "bootleg", "Bomber Lord (bootleg)", GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL | GAME_NOT_WORKING )
|
||||
GAME( 1992, quizf1, 0, quizf1, quizf1, quizf1, ROT0, "Irem", "Quiz F-1 1,2finish", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_GRAPHICS | GAME_NO_COCKTAIL )
|
||||
GAME( 1993, riskchal, 0, m90, riskchal, riskchal, ROT0, "Irem", "Risky Challenge", GAME_NOT_WORKING | GAME_NO_COCKTAIL )
|
||||
GAME( 1993, gussun, riskchal, m90, riskchal, gussun, ROT0, "Irem", "Gussun Oyoyo (Japan)", GAME_NOT_WORKING | GAME_NO_COCKTAIL )
|
||||
GAME( 1993, matchit2, 0, quizf1, matchit2, matchit2, ROT0, "Tamtex", "Match It II", GAME_NO_COCKTAIL )
|
||||
GAME( 1993, shisen2, matchit2, quizf1, shisen2, matchit2, ROT0, "Tamtex", "Shisensho II", GAME_NO_COCKTAIL )
|
||||
GAME( 1993, riskchal, 0, riskchal, riskchal, 0, ROT0, "Irem", "Risky Challenge", GAME_IMPERFECT_GRAPHICS )
|
||||
GAME( 1993, gussun, riskchal, riskchal, riskchal, 0, ROT0, "Irem", "Gussun Oyoyo (Japan)", GAME_IMPERFECT_GRAPHICS )
|
||||
GAME( 1993, matchit2, 0, matchit2, matchit2, 0, ROT0, "Tamtex", "Match It II", GAME_NO_COCKTAIL )
|
||||
GAME( 1993, shisen2, matchit2, matchit2, shisen2, 0, ROT0, "Tamtex", "Shisensho II", GAME_NO_COCKTAIL )
|
||||
|
@ -195,6 +195,7 @@ Notes:
|
||||
#include "machine/irem_cpu.h"
|
||||
#include "sound/2151intf.h"
|
||||
#include "sound/iremga20.h"
|
||||
#include "cpu/nec/nec.h"
|
||||
|
||||
static UINT8 irqvector;
|
||||
static UINT16 sound_status;
|
||||
@ -958,7 +959,7 @@ static MACHINE_DRIVER_START( m92 )
|
||||
MDRV_CPU_PROGRAM_MAP(m92_map,0)
|
||||
MDRV_CPU_IO_MAP(m92_portmap,0)
|
||||
|
||||
MDRV_CPU_ADD(V30, 14318180/2) /* 14.31818 MHz */
|
||||
MDRV_CPU_ADD_TAG("sound" ,V30, 14318180/2) /* 14.31818 MHz */
|
||||
MDRV_CPU_PROGRAM_MAP(sound_map,0)
|
||||
|
||||
MDRV_MACHINE_START(m92)
|
||||
@ -991,22 +992,107 @@ static MACHINE_DRIVER_START( m92 )
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
|
||||
static const nec_config gunforce_config ={ gunforce_decryption_table, };
|
||||
static MACHINE_DRIVER_START( gunforce )
|
||||
MDRV_IMPORT_FROM( m92 )
|
||||
MDRV_CPU_MODIFY("sound")
|
||||
MDRV_CPU_CONFIG(gunforce_config)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
static const nec_config bmaster_config ={ bomberman_decryption_table, };
|
||||
static MACHINE_DRIVER_START( bmaster )
|
||||
MDRV_IMPORT_FROM( m92 )
|
||||
MDRV_CPU_MODIFY("sound")
|
||||
MDRV_CPU_CONFIG(bmaster_config)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
static const nec_config lethalth_config ={ lethalth_decryption_table, };
|
||||
static MACHINE_DRIVER_START( lethalth )
|
||||
MDRV_IMPORT_FROM(m92)
|
||||
|
||||
/* basic machine hardware */
|
||||
MDRV_CPU_MODIFY("main")
|
||||
MDRV_CPU_PROGRAM_MAP(lethalth_map,0)
|
||||
MDRV_CPU_MODIFY("sound")
|
||||
MDRV_CPU_CONFIG(lethalth_config)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
static const nec_config uccops_config ={ dynablaster_decryption_table, };
|
||||
static MACHINE_DRIVER_START( uccops )
|
||||
MDRV_IMPORT_FROM(m92)
|
||||
MDRV_CPU_MODIFY("sound")
|
||||
MDRV_CPU_CONFIG(uccops_config)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
static const nec_config mysticri_config ={ mysticri_decryption_table, };
|
||||
static MACHINE_DRIVER_START( mysticri )
|
||||
MDRV_IMPORT_FROM(m92)
|
||||
MDRV_CPU_MODIFY("sound")
|
||||
MDRV_CPU_CONFIG(mysticri_config)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
static const nec_config majtitl2_config ={ majtitl2_decryption_table, };
|
||||
static MACHINE_DRIVER_START( majtitl2 )
|
||||
MDRV_IMPORT_FROM(m92)
|
||||
MDRV_CPU_MODIFY("sound")
|
||||
MDRV_CPU_CONFIG(majtitl2_config)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
static const nec_config hook_config ={ hook_decryption_table, };
|
||||
static MACHINE_DRIVER_START( hook )
|
||||
MDRV_IMPORT_FROM(m92)
|
||||
MDRV_CPU_MODIFY("sound")
|
||||
MDRV_CPU_CONFIG(hook_config)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
static const nec_config rtypeleo_config ={ rtypeleo_decryption_table, };
|
||||
static MACHINE_DRIVER_START( rtypeleo )
|
||||
MDRV_IMPORT_FROM(m92)
|
||||
MDRV_CPU_MODIFY("sound")
|
||||
MDRV_CPU_CONFIG(rtypeleo_config)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
|
||||
static const nec_config inthunt_config ={ inthunt_decryption_table, };
|
||||
static MACHINE_DRIVER_START( inthunt )
|
||||
MDRV_IMPORT_FROM(m92)
|
||||
MDRV_CPU_MODIFY("sound")
|
||||
MDRV_CPU_CONFIG(inthunt_config)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
|
||||
static const nec_config nbbatman_config ={ leagueman_decryption_table, };
|
||||
static MACHINE_DRIVER_START( nbbatman )
|
||||
MDRV_IMPORT_FROM(m92)
|
||||
MDRV_CPU_MODIFY("sound")
|
||||
MDRV_CPU_CONFIG(nbbatman_config)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
|
||||
static const nec_config psoldier_config ={ psoldier_decryption_table, };
|
||||
static MACHINE_DRIVER_START( psoldier )
|
||||
MDRV_IMPORT_FROM(m92)
|
||||
|
||||
MDRV_CPU_MODIFY("sound")
|
||||
MDRV_CPU_CONFIG(psoldier_config)
|
||||
/* video hardware */
|
||||
MDRV_GFXDECODE(2)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
static const nec_config dsoccr94_config ={ dsoccr94_decryption_table, };
|
||||
static MACHINE_DRIVER_START( dsccr94j )
|
||||
MDRV_IMPORT_FROM(m92)
|
||||
MDRV_CPU_MODIFY("sound")
|
||||
MDRV_CPU_CONFIG(dsoccr94_config)
|
||||
/* video hardware */
|
||||
MDRV_GFXDECODE(2)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
static const nec_config gunforc2_config ={ lethalth_decryption_table, };
|
||||
static MACHINE_DRIVER_START( gunforc2 )
|
||||
MDRV_IMPORT_FROM(m92)
|
||||
MDRV_CPU_MODIFY("sound")
|
||||
MDRV_CPU_CONFIG(gunforc2_config)
|
||||
MACHINE_DRIVER_END
|
||||
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
ROM_START( bmaster ) /* M92-B-B PCB used for program rom locations */
|
||||
@ -1899,7 +1985,7 @@ ROM_START( geostorm )
|
||||
ROM_END
|
||||
|
||||
|
||||
static void init_m92(running_machine *machine, const UINT8 *decryption_table, int hasbanks)
|
||||
static void init_m92(running_machine *machine, int hasbanks)
|
||||
{
|
||||
UINT8 *RAM = memory_region(REGION_CPU1);
|
||||
|
||||
@ -1922,49 +2008,48 @@ static void init_m92(running_machine *machine, const UINT8 *decryption_table, in
|
||||
m92_sprite_buffer_busy=1;
|
||||
|
||||
setvector_callback(machine, NULL, VECTOR_INIT);
|
||||
irem_cpu_decrypt(1,decryption_table);
|
||||
}
|
||||
|
||||
static DRIVER_INIT( bmaster )
|
||||
{
|
||||
init_m92(machine, bomberman_decryption_table, 1);
|
||||
init_m92(machine, 1);
|
||||
}
|
||||
|
||||
static DRIVER_INIT( gunforce )
|
||||
{
|
||||
init_m92(machine, gunforce_decryption_table, 1);
|
||||
init_m92(machine, 1);
|
||||
}
|
||||
|
||||
static DRIVER_INIT( hook )
|
||||
{
|
||||
init_m92(machine, hook_decryption_table, 1);
|
||||
init_m92(machine, 1);
|
||||
}
|
||||
|
||||
static DRIVER_INIT( mysticri )
|
||||
{
|
||||
init_m92(machine, mysticri_decryption_table, 1);
|
||||
init_m92(machine, 1);
|
||||
}
|
||||
|
||||
static DRIVER_INIT( uccops )
|
||||
{
|
||||
init_m92(machine, dynablaster_decryption_table, 1);
|
||||
init_m92(machine, 1);
|
||||
}
|
||||
|
||||
static DRIVER_INIT( rtypeleo )
|
||||
{
|
||||
init_m92(machine, rtypeleo_decryption_table, 1);
|
||||
init_m92(machine, 1);
|
||||
m92_irq_vectorbase=0x20;
|
||||
}
|
||||
|
||||
static DRIVER_INIT( rtypelej )
|
||||
{
|
||||
init_m92(machine, rtypeleo_decryption_table, 1);
|
||||
init_m92(machine, 1);
|
||||
m92_irq_vectorbase=0x20;
|
||||
}
|
||||
|
||||
static DRIVER_INIT( majtitl2 )
|
||||
{
|
||||
init_m92(machine, majtitl2_decryption_table, 1);
|
||||
init_m92(machine, 1);
|
||||
|
||||
/* This game has an eprom on the game board */
|
||||
memory_install_read16_handler(0, ADDRESS_SPACE_PROGRAM, 0xf0000, 0xf3fff, 0, 0, m92_eeprom_r);
|
||||
@ -1975,18 +2060,18 @@ static DRIVER_INIT( majtitl2 )
|
||||
|
||||
static DRIVER_INIT( kaiteids )
|
||||
{
|
||||
init_m92(machine, inthunt_decryption_table, 1);
|
||||
init_m92(machine, 1);
|
||||
}
|
||||
|
||||
static DRIVER_INIT( inthunt )
|
||||
{
|
||||
init_m92(machine, inthunt_decryption_table, 1);
|
||||
init_m92(machine, 1);
|
||||
}
|
||||
|
||||
|
||||
static DRIVER_INIT( lethalth )
|
||||
{
|
||||
init_m92(machine, lethalth_decryption_table, 0);
|
||||
init_m92(machine, 0);
|
||||
m92_irq_vectorbase=0x20;
|
||||
|
||||
/* NOP out the bankswitcher */
|
||||
@ -1997,14 +2082,14 @@ static DRIVER_INIT( nbbatman )
|
||||
{
|
||||
UINT8 *RAM = memory_region(REGION_CPU1);
|
||||
|
||||
init_m92(machine, leagueman_decryption_table, 1);
|
||||
init_m92(machine, 1);
|
||||
|
||||
memcpy(RAM+0x80000,RAM+0x100000,0x20000);
|
||||
}
|
||||
|
||||
static DRIVER_INIT( ssoldier )
|
||||
{
|
||||
init_m92(machine, psoldier_decryption_table, 1);
|
||||
init_m92(machine, 1);
|
||||
m92_irq_vectorbase=0x20;
|
||||
/* main CPU expects an answer even before writing the first command */
|
||||
sound_status = 0x80;
|
||||
@ -2012,7 +2097,7 @@ static DRIVER_INIT( ssoldier )
|
||||
|
||||
static DRIVER_INIT( psoldier )
|
||||
{
|
||||
init_m92(machine, psoldier_decryption_table, 1);
|
||||
init_m92(machine, 1);
|
||||
m92_irq_vectorbase=0x20;
|
||||
/* main CPU expects an answer even before writing the first command */
|
||||
sound_status = 0x80;
|
||||
@ -2020,46 +2105,46 @@ static DRIVER_INIT( psoldier )
|
||||
|
||||
static DRIVER_INIT( dsccr94j )
|
||||
{
|
||||
init_m92(machine, dsoccr94_decryption_table, 1);
|
||||
init_m92(machine, 1);
|
||||
}
|
||||
|
||||
static DRIVER_INIT( gunforc2 )
|
||||
{
|
||||
UINT8 *RAM = memory_region(REGION_CPU1);
|
||||
init_m92(machine, lethalth_decryption_table, 1);
|
||||
init_m92(machine, 1);
|
||||
memcpy(RAM+0x80000,RAM+0x100000,0x20000);
|
||||
}
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
GAME( 1991, gunforce, 0, m92, gunforce, gunforce, ROT0, "Irem", "Gunforce - Battle Fire Engulfed Terror Island (World)", 0 )
|
||||
GAME( 1991, gunforcj, gunforce, m92, gunforce, gunforce, ROT0, "Irem", "Gunforce - Battle Fire Engulfed Terror Island (Japan)", 0 )
|
||||
GAME( 1991, gunforcu, gunforce, m92, gunforce, gunforce, ROT0, "Irem America", "Gunforce - Battle Fire Engulfed Terror Island (US)", 0 )
|
||||
GAME( 1991, bmaster, 0, m92, bmaster, bmaster, ROT0, "Irem", "Blade Master (World)", 0 )
|
||||
GAME( 1991, crossbld, bmaster, m92, bmaster, bmaster, ROT0, "Irem", "Cross Blades! (Japan)", 0 )
|
||||
GAME( 1991, lethalth, 0, lethalth, lethalth, lethalth, ROT270, "Irem", "Lethal Thunder (World)", 0 )
|
||||
GAME( 1991, thndblst, lethalth, lethalth, lethalth, lethalth, ROT270, "Irem", "Thunder Blaster (Japan)", 0 )
|
||||
GAME( 1992, uccops, 0, m92, uccops, uccops, ROT0, "Irem", "Undercover Cops (World)", 0 )
|
||||
GAME( 1992, uccopsar, uccops, m92, uccops, uccops, ROT0, "Irem", "Undercover Cops (Alpha Renewal Version)", 0 )
|
||||
GAME( 1992, uccopsj, uccops, m92, uccops, uccops, ROT0, "Irem", "Undercover Cops (Japan)", 0 )
|
||||
GAME( 1992, mysticri, 0, m92, mysticri, mysticri, ROT0, "Irem", "Mystic Riders (World)", 0 )
|
||||
GAME( 1992, gunhohki, mysticri, m92, mysticri, mysticri, ROT0, "Irem", "Gun Hohki (Japan)", 0 )
|
||||
GAME( 1992, majtitl2, 0, m92, majtitl2, majtitl2, ROT0, "Irem", "Major Title 2 (World)", 0 )
|
||||
GAME( 1992, majtit2j, majtitl2, m92, majtitl2, majtitl2, ROT0, "Irem", "Major Title 2 (Japan)", 0 )
|
||||
GAME( 1992, skingame, majtitl2, m92, majtitl2, majtitl2, ROT0, "Irem America", "The Irem Skins Game (US set 1)", 0 )
|
||||
GAME( 1992, skingam2, majtitl2, m92, majtitl2, majtitl2, ROT0, "Irem America", "The Irem Skins Game (US set 2)", 0 )
|
||||
GAME( 1992, hook, 0, m92, hook, hook, ROT0, "Irem", "Hook (World)", 0 )
|
||||
GAME( 1992, hooku, hook, m92, hook, hook, ROT0, "Irem America", "Hook (US)", 0 )
|
||||
GAME( 1992, hookj, hook, m92, hook, hook, ROT0, "Irem", "Hook (Japan)", 0 )
|
||||
GAME( 1992, rtypeleo, 0, m92, rtypeleo, rtypeleo, ROT0, "Irem", "R-Type Leo (World)", 0 )
|
||||
GAME( 1992, rtypelej, rtypeleo, m92, rtypeleo, rtypelej, ROT0, "Irem", "R-Type Leo (Japan)", 0 )
|
||||
GAME( 1993, inthunt, 0, m92, inthunt, inthunt, ROT0, "Irem", "In The Hunt (World)", 0 )
|
||||
GAME( 1993, inthuntu, inthunt, m92, inthunt, inthunt, ROT0, "Irem America", "In The Hunt (US)", 0 )
|
||||
GAME( 1993, kaiteids, inthunt, m92, inthunt, kaiteids, ROT0, "Irem", "Kaitei Daisensou (Japan)", 0 )
|
||||
GAME( 1993, nbbatman, 0, m92, nbbatman, nbbatman, ROT0, "Irem America", "Ninja Baseball Batman (US)", GAME_IMPERFECT_GRAPHICS )
|
||||
GAME( 1993, leaguemn, nbbatman, m92, nbbatman, nbbatman, ROT0, "Irem", "Yakyuu Kakutou League-Man (Japan)", GAME_IMPERFECT_GRAPHICS )
|
||||
GAME( 1993, ssoldier, 0, psoldier, psoldier, ssoldier, ROT0, "Irem America", "Superior Soldiers (US)", GAME_IMPERFECT_SOUND )
|
||||
GAME( 1993, psoldier, ssoldier, psoldier, psoldier, psoldier, ROT0, "Irem", "Perfect Soldiers (Japan)", GAME_IMPERFECT_SOUND )
|
||||
GAME( 1994, dsccr94j, dsoccr94, psoldier, dsccr94j, dsccr94j, ROT0, "Irem", "Dream Soccer '94 (Japan)", 0 )
|
||||
GAME( 1994, gunforc2, 0, m92, gunforc2, gunforc2, ROT0, "Irem", "Gunforce 2 (US)", 0 )
|
||||
GAME( 1994, geostorm, gunforc2, m92, gunforc2, gunforc2, ROT0, "Irem", "Geostorm (Japan)", 0 )
|
||||
GAME( 1991, gunforce, 0, gunforce, gunforce, gunforce, ROT0, "Irem", "Gunforce - Battle Fire Engulfed Terror Island (World)", 0 )
|
||||
GAME( 1991, gunforcj, gunforce, gunforce, gunforce, gunforce, ROT0, "Irem", "Gunforce - Battle Fire Engulfed Terror Island (Japan)", 0 )
|
||||
GAME( 1991, gunforcu, gunforce, gunforce, gunforce, gunforce, ROT0, "Irem America", "Gunforce - Battle Fire Engulfed Terror Island (US)", 0 )
|
||||
GAME( 1991, bmaster, 0, bmaster, bmaster, bmaster, ROT0, "Irem", "Blade Master (World)", 0 )
|
||||
GAME( 1991, crossbld, bmaster, bmaster, bmaster, bmaster, ROT0, "Irem", "Cross Blades! (Japan)", 0 )
|
||||
GAME( 1991, lethalth, 0, lethalth, lethalth, lethalth, ROT270, "Irem", "Lethal Thunder (World)", 0 )
|
||||
GAME( 1991, thndblst, lethalth, lethalth, lethalth, lethalth, ROT270, "Irem", "Thunder Blaster (Japan)", 0 )
|
||||
GAME( 1992, uccops, 0, uccops, uccops, uccops, ROT0, "Irem", "Undercover Cops (World)", 0 )
|
||||
GAME( 1992, uccopsar, uccops, uccops, uccops, uccops, ROT0, "Irem", "Undercover Cops (Alpha Renewal Version)", 0 )
|
||||
GAME( 1992, uccopsj, uccops, uccops, uccops, uccops, ROT0, "Irem", "Undercover Cops (Japan)", 0 )
|
||||
GAME( 1992, mysticri, 0, mysticri, mysticri, mysticri, ROT0, "Irem", "Mystic Riders (World)", 0 )
|
||||
GAME( 1992, gunhohki, mysticri, mysticri, mysticri, mysticri, ROT0, "Irem", "Gun Hohki (Japan)", 0 )
|
||||
GAME( 1992, majtitl2, 0, majtitl2, majtitl2, majtitl2, ROT0, "Irem", "Major Title 2 (World)", 0 )
|
||||
GAME( 1992, majtit2j, majtitl2, majtitl2, majtitl2, majtitl2, ROT0, "Irem", "Major Title 2 (Japan)", 0 )
|
||||
GAME( 1992, skingame, majtitl2, majtitl2, majtitl2, majtitl2, ROT0, "Irem America", "The Irem Skins Game (US set 1)", 0 )
|
||||
GAME( 1992, skingam2, majtitl2, majtitl2, majtitl2, majtitl2, ROT0, "Irem America", "The Irem Skins Game (US set 2)", 0 )
|
||||
GAME( 1992, hook, 0, hook, hook, hook, ROT0, "Irem", "Hook (World)", 0 )
|
||||
GAME( 1992, hooku, hook, hook, hook, hook, ROT0, "Irem America", "Hook (US)", 0 )
|
||||
GAME( 1992, hookj, hook, hook, hook, hook, ROT0, "Irem", "Hook (Japan)", 0 )
|
||||
GAME( 1992, rtypeleo, 0, rtypeleo, rtypeleo, rtypeleo, ROT0, "Irem", "R-Type Leo (World)", 0 )
|
||||
GAME( 1992, rtypelej, rtypeleo, rtypeleo, rtypeleo, rtypelej, ROT0, "Irem", "R-Type Leo (Japan)", 0 )
|
||||
GAME( 1993, inthunt, 0, inthunt, inthunt, inthunt, ROT0, "Irem", "In The Hunt (World)", 0 )
|
||||
GAME( 1993, inthuntu, inthunt, inthunt, inthunt, inthunt, ROT0, "Irem America", "In The Hunt (US)", 0 )
|
||||
GAME( 1993, kaiteids, inthunt, inthunt, inthunt, kaiteids, ROT0, "Irem", "Kaitei Daisensou (Japan)", 0 )
|
||||
GAME( 1993, nbbatman, 0, nbbatman, nbbatman, nbbatman, ROT0, "Irem America", "Ninja Baseball Batman (US)", GAME_IMPERFECT_GRAPHICS )
|
||||
GAME( 1993, leaguemn, nbbatman, nbbatman, nbbatman, nbbatman, ROT0, "Irem", "Yakyuu Kakutou League-Man (Japan)", GAME_IMPERFECT_GRAPHICS )
|
||||
GAME( 1993, ssoldier, 0, psoldier, psoldier, ssoldier, ROT0, "Irem America", "Superior Soldiers (US)", GAME_IMPERFECT_SOUND )
|
||||
GAME( 1993, psoldier, ssoldier, psoldier, psoldier, psoldier, ROT0, "Irem", "Perfect Soldiers (Japan)", GAME_IMPERFECT_SOUND )
|
||||
GAME( 1994, dsccr94j, dsoccr94, dsccr94j, dsccr94j, dsccr94j, ROT0, "Irem", "Dream Soccer '94 (Japan)", 0 )
|
||||
GAME( 1994, gunforc2, 0, gunforc2, gunforc2, gunforc2, ROT0, "Irem", "Gunforce 2 (US)", 0 )
|
||||
GAME( 1994, geostorm, gunforc2, gunforc2, gunforc2, gunforc2, ROT0, "Irem", "Geostorm (Japan)", 0 )
|
||||
|
@ -1,9 +1,10 @@
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Irem Custom V30 CPU:
|
||||
|
||||
It uses a simple opcode lookup encryption, the painful part is that it's
|
||||
preprogrammed into the cpu and isn't a algorithmic based one.
|
||||
Irem Custom V35+ CPU
|
||||
-- has internal 256 byte lookup table, handled in realtime. Bomberman
|
||||
World runs encrypted code from RAM, Risky Challenge expects to be able
|
||||
to run code in emulation (non-encrypted) mode for some subroutines..
|
||||
|
||||
Hasamu Nanao 08J27261A1 011 9102KK700
|
||||
Gunforce Nanao 08J27261A1 011 9106KK701
|
||||
@ -36,10 +37,11 @@
|
||||
|
||||
*****************************************************************************/
|
||||
|
||||
|
||||
|
||||
#include "driver.h"
|
||||
#include "irem_cpu.h"
|
||||
|
||||
int m90_game_kludge;
|
||||
|
||||
// CAVEATS:
|
||||
// 0x80 and 0x82 pre- opcodes can easily be confused. They perform exactly the same
|
||||
@ -299,38 +301,38 @@ const UINT8 inthunt_decryption_table[256] = {
|
||||
// 0xb8 (0x2b) not sure, could be 0x1b
|
||||
|
||||
const UINT8 gussun_decryption_table[256] = {
|
||||
0xcd,xxxx,xxxx,0x36,xxxx,0x52,0xb1,0x5b, 0x68,0xcd,xxxx,xxxx,xxxx,0xa8,xxxx,xxxx, /* 00 */
|
||||
// 0x63 gggg gggg gggg
|
||||
xxxx,xxxx,0x75,0x24,0x08,0x83,0x32,0xe9, xxxx,0x79,xxxx,0x8f,0x22,xxxx,0xac,xxxx, /* 10 */
|
||||
// ???? pppp gggg
|
||||
0x5d,0xa5,0x11,0x51,0x0a,0x29,xxxx,xxxx ,0xf8,0x98,0x91,0x40,0x28,0x00,0x03,0x5f, /* 20 */
|
||||
// gggg pppp gggg gggg gggg gggg pppp
|
||||
0x26,xxxx,xxxx,0x8b,0x2f,0x02,xxxx,xxxx, 0x8e,0xab,xxxx,xxxx,0xbc,0xf1,0xb3,xxxx, /* 30 */
|
||||
// gggg 0x90
|
||||
0x19,xxxx,0xc6,xxxx,xxxx,0x3a,xxxx,xxxx, xxxx,0x74,0x61,xxxx,0x33,xxxx,xxxx,xxxx, /* 40 */
|
||||
// ????
|
||||
xxxx,0x53,0xa0,0xc0,0xc3,0x41,0xfc,0xe7, xxxx,0x2c,0x7c,0x2b,xxxx,xxxx,0xba,0x2a, /* 50 */
|
||||
// gggg gggg gggg pppp gggg
|
||||
0xb0,xxxx,0x29,0x79,xxxx,xxxx,0xb5,0x07, 0xb9,xxxx,0x27,0x46,0xf9,xxxx,xxxx,xxxx, /* 60 */
|
||||
// ???? pppp gggg gggg
|
||||
xxxx,0xea,0x72,0x73,0xad,0xd1,0x3b,0x5e, 0xe5,0x57,xxxx,0x0d,xxxx,xxxx,0x42,0x3c, /* 70 */
|
||||
// gggg pppp ????
|
||||
xxxx,0x86,0x78,0x7d,0x30,0x25,0x2d,xxxx, 0x9a,0xeb,0x04,0x0b,0xa2,0xb8,0xf6,xxxx, /* 80 */
|
||||
// ???? pppp ???? pppp gggg
|
||||
xxxx,xxxx,0x9d,xxxx,0xbb,xxxx,xxxx,0xcb, 0xa9,0xcf,xxxx,0x60,0x43,0x56,xxxx,xxxx, /* 90 */
|
||||
// gggg gggg
|
||||
xxxx,0xa3,xxxx,xxxx,xxxx,xxxx,0xfa,0xb4, xxxx,0x81,0xe6,0x48,0x80,0x8c,0xd4,xxxx, /* a0 */
|
||||
// gggg ???? gggg gggg
|
||||
xxxx,xxxx,0x84,0xb6,0x77,0x3d,0x3e,xxxx, xxxx,0xb7,0x4b,xxxx,xxxx,xxxx,xxxx,xxxx, /* b0 */
|
||||
// gggg ???? gggg gggg ???? pppp
|
||||
xxxx,0xff,0x47,xxxx,0x55,0x1e,xxxx,0x59, 0x93,xxxx,xxxx,xxxx,0x88,0xc1,0x01,0xb2, /* c0 */
|
||||
// gggg pppp
|
||||
0x01,0x2e,0x06,0xc7,0x05,xxxx,0x8a,0x5a, 0x58,0xbe,xxxx,0x4e,xxxx,0x1f,0x23,xxxx, /* d0 */
|
||||
// ???? gggg
|
||||
0xe8,xxxx,0x89,0xa1,0xd0,xxxx,xxxx,0xe2, 0x38,0xfe,0x50,0x9c,xxxx,xxxx,xxxx,0x49, /* e0 */
|
||||
// gggg gggg
|
||||
0xfb,0x20,0xf3,xxxx,xxxx,0x0f,xxxx,xxxx, xxxx,0x76,0xf7,0xbd,0x39,0x7e,0xbf,xxxx, /* f0 */
|
||||
// pppp gggg gggg gggg
|
||||
0x63,xxxx,xxxx,0x36,xxxx,0x52,0xb1,0x5b, 0x68,0xcd,xxxx,xxxx,xxxx,0xa8,xxxx,xxxx, /* 00 */
|
||||
// 0x63 gggg gggg gggg
|
||||
xxxx,xxxx,0x75,0x24,0x08,0x83,0x32,0xe9, xxxx,0x79,xxxx,0x8f,0x22,xxxx,0xac,xxxx, /* 10 */
|
||||
// ???? pppp gggg
|
||||
0x5d,0xa5,0x11,0x51,0x0a,0x29,xxxx,xxxx ,0xf8,0x98,0x91,0x40,0x28,0x00,0x03,0x5f, /* 20 */
|
||||
// gggg gggg gggg gggg gggg gggg pppp
|
||||
0x26,xxxx,xxxx,0x8b,0x2f,0x02,xxxx,xxxx, 0x8e,0xab,xxxx,xxxx,0xbc,0x90,0xb3,xxxx, /* 30 */
|
||||
// gggg
|
||||
0x09,xxxx,0xc6,xxxx,xxxx,0x3a,xxxx,xxxx, xxxx,0x74,0x61,xxxx,0x33,xxxx,xxxx,xxxx, /* 40 */
|
||||
// gggg
|
||||
xxxx,0x53,0xa0,0xc0,0xc3,0x41,0xfc,0xe7, xxxx,0x2c,0x7c,0x2b,xxxx,0x4f,0xba,0x2a, /* 50 */
|
||||
// gggg gggg gggg pppp gggg gggg
|
||||
0xb0,xxxx,0x21,0x7d,xxxx,xxxx,0xb5,0x07, 0xb9,xxxx,0x27,0x46,0xf9,xxxx,xxxx,xxxx, /* 60 */
|
||||
// pppp pppp gggg gggg
|
||||
xxxx,0xea,0x72,0x73,0xad,0xd1,0x3b,0x5e, 0xe5,0x57,xxxx,0x0d,0xfd,xxxx,0x92,0x3c, /* 70 */
|
||||
// gggg pppp gggg gggg
|
||||
xxxx,0x86,0x78,0x7f,0x18,0x25,0x2d,xxxx, 0x9a,0xeb,0x04,0x0b,0xa2,0xb8,0xf6,xxxx, /* 80 */
|
||||
// pppp pppp ???? pppp gggg
|
||||
xxxx,xxxx,0x9d,xxxx,0xbb,xxxx,xxxx,0xcb, 0xa9,0xcf,xxxx,0x60,0x43,0x56,xxxx,xxxx, /* 90 */
|
||||
// gggg gggg
|
||||
xxxx,0xa3,xxxx,xxxx,0x82,xxxx,0xfa,0xb4, xxxx,0x81,0xe6,0x48,0x80,0x8c,0xd4,xxxx, /* a0 */
|
||||
// ???? gggg ???? gggg gggg
|
||||
0x42,xxxx,0x84,0xb6,0x77,0x3d,0x3e,xxxx, xxxx,0xb7,0x4b,xxxx,0xa4,xxxx,xxxx,xxxx, /* b0 */
|
||||
// gggg gggg ???? gggg gggg ???? pppp gggg
|
||||
xxxx,0xff,0x47,xxxx,0x55,0x1e,xxxx,0x59, 0x93,xxxx,xxxx,xxxx,0x88,0xc1,0x01,0xb2, /* c0 */
|
||||
// gggg pppp
|
||||
0x85,0x2e,0x06,0xc7,0x05,xxxx,0x8a,0x5a, 0x58,0xbe,xxxx,0x4e,xxxx,0x1f,0x23,xxxx, /* d0 */
|
||||
// gggg gggg
|
||||
0xe8,xxxx,0x89,0xa1,0xd0,xxxx,xxxx,0xe2, 0x38,0xfe,0x50,0x9c,xxxx,xxxx,xxxx,0x49, /* e0 */
|
||||
// gggg gggg
|
||||
0xfb,0x20,0xf3,xxxx,xxxx,0x0f,xxxx,xxxx, xxxx,0x76,0xf7,0xbd,0x39,0x7e,0xbf,xxxx, /* f0 */
|
||||
// pppp gggg gggg gggg
|
||||
};
|
||||
|
||||
|
||||
@ -752,94 +754,3 @@ const UINT8 test_decryption_table[256] = {
|
||||
xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx, xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx, /* E0 */
|
||||
xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx, xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx, /* F0 */
|
||||
};
|
||||
|
||||
static const UINT8 byte_count_table[256] = {
|
||||
2,2,2,2,2,3,1,1, 2,2,2,2,2,3,1,0, /* 00 */
|
||||
2,2,2,2,2,3,1,1, 2,2,2,2,2,3,1,1, /* 10 */
|
||||
2,2,2,2,2,3,1,1, 2,2,2,2,2,3,1,1, /* 20 */
|
||||
2,2,2,2,2,3,1,1, 2,2,2,2,2,3,1,1, /* 30 */
|
||||
1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, /* 40 */
|
||||
1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, /* 50 */
|
||||
1,1,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, /* 60 */
|
||||
1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, /* 70 */
|
||||
3,3,3,3,2,2,2,2, 2,2,2,2,0,0,0,0, /* 80 */
|
||||
1,1,1,1,1,1,1,1, 0,0,0,0,0,0,0,0, /* 90 */
|
||||
0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, /* A0 */
|
||||
2,2,2,2,2,2,2,2, 3,3,3,3,3,3,3,3, /* B0 */
|
||||
0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, /* C0 */
|
||||
0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, /* D0 */
|
||||
0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, /* E0 */
|
||||
0,0,0,0,0,0,0,0, 1,1,1,1,1,1,0,0, /* F0 */
|
||||
};
|
||||
|
||||
UINT8 *irem_cpu_decrypted;
|
||||
|
||||
void irem_cpu_decrypt(int cpu,const UINT8 *decryption_table)
|
||||
{
|
||||
int A,size;
|
||||
UINT8 *rom;
|
||||
// int t[256];
|
||||
#ifdef MAME_DEBUG
|
||||
// extern char *opmap1[];
|
||||
#endif
|
||||
|
||||
rom = memory_region(cpu+REGION_CPU1);
|
||||
size = memory_region_length(cpu+REGION_CPU1);
|
||||
irem_cpu_decrypted = auto_malloc(size);
|
||||
|
||||
memory_set_decrypted_region(cpu,0,size-1,irem_cpu_decrypted);
|
||||
for (A = 0;A < size; A++)
|
||||
irem_cpu_decrypted[A] = decryption_table[rom[A]];
|
||||
|
||||
// robiza note:
|
||||
// for "gussun" and "riskchal" is necessary an hack to not decrypt not encrypted routines
|
||||
// we need a real nec v25+/35+ core to support 0x63 (brkn for "break native") instruction
|
||||
// for now we use "cd" (int) instruction + hack
|
||||
|
||||
if (m90_game_kludge==1) // for riskchal
|
||||
{
|
||||
for (A = 0xa8fd;A < 0xa90c; A++)
|
||||
irem_cpu_decrypted[A] = rom[A];
|
||||
for (A = 0x12b3a;A < 0x12b4b; A++)
|
||||
irem_cpu_decrypted[A] = rom[A];
|
||||
for (A = 0x13500;A < 0x13510; A++)
|
||||
irem_cpu_decrypted[A] = rom[A];
|
||||
for (A = 0x14be5;A < 0x14bf5; A++)
|
||||
irem_cpu_decrypted[A] = rom[A];
|
||||
for (A = 0x130de;A < 0x130eb; A++)
|
||||
irem_cpu_decrypted[A] = rom[A];
|
||||
for (A = 0x147a4;A < 0x147bf; A++)
|
||||
irem_cpu_decrypted[A] = rom[A];
|
||||
|
||||
}
|
||||
if (m90_game_kludge==2) // for gussun
|
||||
{
|
||||
for (A = 0xa8fd;A < 0xa90c; A++)
|
||||
irem_cpu_decrypted[A] = rom[A];
|
||||
for (A = 0x1369c;A < 0x136ac; A++)
|
||||
irem_cpu_decrypted[A] = rom[A];
|
||||
for (A = 0x14ec8;A < 0x14ed8; A++)
|
||||
irem_cpu_decrypted[A] = rom[A];
|
||||
for (A = 0x13246;A < 0x13253; A++)
|
||||
irem_cpu_decrypted[A] = rom[A];
|
||||
for (A = 0x14a7d;A < 0x14a98; A++)
|
||||
irem_cpu_decrypted[A] = rom[A];
|
||||
}
|
||||
|
||||
/*
|
||||
for (A=0; A<256; A++) {
|
||||
t[A]=0;
|
||||
for (diff=0; diff<256; diff++)
|
||||
if (decryption_table[diff]==A) {
|
||||
t[A]++;
|
||||
}
|
||||
#ifdef MAME_DEBUG
|
||||
// if (t[A]==0) logerror("Unused: [%d] %02x\t%s\n",byte_count_table[A],A,opmap1[A]);
|
||||
// if (t[A]>1) logerror("DUPLICATE: %02x\t%s\n",A,opmap1[A]);
|
||||
#else
|
||||
if (t[A]==0) logerror("Unused: [%d] %02x\n",byte_count_table[A],A);
|
||||
if (t[A]>1) logerror("DUPLICATE: %02x\n",A);
|
||||
#endif
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user