mirror of
https://github.com/holub/mame
synced 2025-06-03 19:36:26 +03:00
quizf1: added opcodes [Roberto Zandona']
This commit is contained in:
parent
9c918a0ef0
commit
5b63ed1097
@ -2222,7 +2222,7 @@ GAME( 1992, uccopsar, uccops, uccops, uccops, uccops, ROT0, "Irem
|
||||
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 )
|
||||
// cheaply produced Korean board, has original chips, but lacks any proper labels - uses older revision sound program that doesn't work in MAME right now
|
||||
// cheaply produced Korean board, has original chips, but lacks any proper labels
|
||||
// main code is also significantly different to the supported original set, so it might just be a legitimate early revision on a cheap board
|
||||
GAME( 1992, mysticrib,mysticri, mysticri, mysticri, mysticri, ROT0, "Irem", "Mystic Riders (bootleg?)", 0)
|
||||
GAME( 1992, majtitl2, 0, majtitl2, majtitl2, majtitl2, ROT0, "Irem", "Major Title 2 (World)", 0 )
|
||||
|
@ -1,10 +1,10 @@
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Irem Custom V35+ CPU
|
||||
Irem Custom V35 Software Guard 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..
|
||||
World runs encrypted code from RAM, Risky Challenge and QuizF1 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
|
||||
@ -51,8 +51,9 @@
|
||||
|
||||
//double check 0x00 0x22 0x28 0x4a 0x34 in these tables
|
||||
|
||||
#define xxxx 0x90/* Unknown */
|
||||
#define xxxx 0x90 /* Unknown */
|
||||
|
||||
// gunforce, kengo, hasamu
|
||||
const UINT8 gunforce_decryption_table[256] = {
|
||||
0xff,xxxx,xxxx,0x2c,xxxx,xxxx,0x43,0x88, xxxx,0x13,0x0a,0xbd,0xba,0x60,0xea,xxxx, /* 00 */
|
||||
xxxx,xxxx,0xf2,0x29,0xb3,0x22,xxxx,0x0c, 0xa9,0x5f,0x9d,0x07,xxxx,xxxx,0x0b,0xbb, /* 10 */
|
||||
@ -87,6 +88,7 @@ const UINT8 gunforce_decryption_table[256] = {
|
||||
|
||||
// 0x00 is NOT 0x20 (no context in bomberman)
|
||||
|
||||
// bmaster, bomberman
|
||||
const UINT8 bomberman_decryption_table[256] = {
|
||||
xxxx,xxxx,0x79,xxxx,0x9d,0x48,xxxx,xxxx, xxxx,xxxx,0x2e,xxxx,xxxx,0xa5,0x72,xxxx, /* 00 */
|
||||
0x46,0x5b,0xb1,0x3a,0xc3,xxxx,0x35,xxxx, xxxx,0x23,xxxx,0x99,xxxx,0x05,xxxx,0x3c, /* 10 */
|
||||
@ -107,21 +109,22 @@ const UINT8 bomberman_decryption_table[256] = {
|
||||
};
|
||||
// 49 -> 4a (verified in a bombrman PCB)
|
||||
|
||||
// lethalth, gunforc2, quizf1
|
||||
const UINT8 lethalth_decryption_table[256] = {
|
||||
0x7f,0x26,0x5d,xxxx,0xba,xxxx,0x1e,0x5e, 0xb8,xxxx,0xbc,0xe8,0x01,xxxx,0x4a,0x25, /* 00 */
|
||||
// ssss !!!! !!!! !!!! !!!! !!!! !!!! !!!! !!!! !!!! !!!!
|
||||
xxxx,0xbd,xxxx,0x22,0x10,xxxx,0x02,0x57, 0x70,xxxx,0x7e,xxxx,0xe7,0x52,xxxx,0xa9, /* 10 */
|
||||
xxxx,0xbd,xxxx,0x22,0x10,xxxx,0x02,0x57, 0x70,xxxx,0x7c,xxxx,0xe7,0x52,xxxx,0xa9, /* 10 */
|
||||
// !!!! !!!! !!!! ???? !!!! !!!! gggg
|
||||
xxxx,xxxx,0xc6,0x06,0xa0,0xfe,0xcf,0x8e, 0x43,0x8f,0x2d,xxxx,0xd4,0x85,0x75,0xa2, /* 20 */
|
||||
// !!!! !!!! !!!! !!!! !!!! !!!! !!!! !!!!
|
||||
0x3d,xxxx,xxxx,0x38,0x7c,0x89,0xd1,0x80, 0x3b,0x72,0x07,xxxx,0x42,0x37,0x0a,0x18, /* 30 */
|
||||
0x3d,xxxx,xxxx,0x38,0x7e,0x89,0xd1,0x80, 0x3b,0x72,0x07,xxxx,0x42,0x37,0x0a,0x18, /* 30 */
|
||||
// gggg !!!! ???? !!!! !!!! !!!! !!!! !!!! !!!! ssss !!!!
|
||||
0x88,0xb4,0x98,0x8b,0xb9,0x9c,0xad,0x0e, 0x2b,xxxx,0xbf,xxxx,0x55,xxxx,0x56,0xb0, /* 40 */
|
||||
// !!!! pppp !!!! !!!! !!!! !!!! gggg !!!! !!!! !!!! !!!!
|
||||
0x93,0x91,xxxx,0xeb,xxxx,0x50,0x41,0x29, 0x47,xxxx,xxxx,0x60,xxxx,0xab,xxxx,xxxx, /* 50 */
|
||||
// pppp !!!! !!!! !!!! !!!! !!!! !!!! !!!!
|
||||
0xc3,0xe2,0xd0,0xb2,0x11,0x79,xxxx,0x08, xxxx,0xfb,xxxx,0x2c,0x23,xxxx,0x28,0x0d, /* 60 */
|
||||
// !!!! !!!! !!!! !!!! ???? !!!! !!!!
|
||||
0xc3,0xe2,0xd0,0xb2,0x11,0x79,xxxx,0x08, 0x82,0xfb,xxxx,0x2c,0x23,xxxx,0x28,0x0d, /* 60 */
|
||||
// !!!! !!!! !!!! !!!! gggg ???? !!!! !!!!
|
||||
xxxx,xxxx,xxxx,0x83,0x3c,xxxx,0x1b,0x34, 0x5b,xxxx,0x40,xxxx,xxxx,0x04,0xfc,0xcd, /* 70 */
|
||||
// !!!! !!!! !!!! !!!! !!!! ssss
|
||||
0xb1,0xf3,0x8a,xxxx,xxxx,0x87,xxxx,xxxx, xxxx,xxxx,xxxx,xxxx,0xbe,0x84,0x1f,0xe6, /* 80 */
|
||||
@ -130,20 +133,31 @@ const UINT8 lethalth_decryption_table[256] = {
|
||||
// !!!! !!!! !!!!
|
||||
0xa5,xxxx,xxxx,0xc7,xxxx,0x27,0x0b,xxxx, 0x20,xxxx,xxxx,xxxx,xxxx,xxxx,0x61,0x7d, /* A0 */
|
||||
// !!!! !!!! !!!! !!!! ????
|
||||
xxxx,xxxx,0x86,0x0f,xxxx,0xb7,xxxx,0x4f, xxxx,xxxx,0xc0,0xfd,xxxx,0x39,xxxx,0x77, /* B0 */
|
||||
// !!!! !!!! !!!! !!!! !!!!
|
||||
0x05,0x3a,xxxx,0x48,0x92,0x76,0x3e,0x03, xxxx,0xf8,xxxx,0x59,0xa8,0x5f,0xf9,0xbb, /* C0 */
|
||||
// !!!! !!!! pppp !!!! !!!! !!!! !!!! !!!!
|
||||
0x63,xxxx,0x86,0x0f,xxxx,0xb7,xxxx,0x4f, 0x13,xxxx,0xc0,0xfd,xxxx,0x39,xxxx,0x77, /* B0 */
|
||||
// ssss !!!! !!!! ???? !!!! !!!! !!!!
|
||||
0x05,0x3a,xxxx,0x48,0x92,0x71,0x3e,0x03, xxxx,0xf8,xxxx,0x59,0xa8,0x5f,0xf9,0xbb, /* C0 */
|
||||
// !!!! !!!! ???? !!!! !!!! !!!! !!!! !!!!
|
||||
0x81,0xfa,0x9d,0xe9,0x2e,0xa1,0xc1,0x33, xxxx,0x78,xxxx,0x0c,xxxx,0x24,0xaa,0xac, /* D0 */
|
||||
// !!!! !!!! !!!! !!!! !!!! !!!! !!!! !!!! ???? !!!! !!!!
|
||||
// !!!! !!!! !!!! !!!! !!!! !!!! !!!! !!!! gggg !!!! !!!!
|
||||
xxxx,0xb6,xxxx,0xea,xxxx,0x73,0xe5,0x58, 0x00,0xf7,xxxx,0x74,xxxx,0x76,xxxx,0xa3, /* E0 */
|
||||
// !!!! gggg !!!! !!!! !!!! !!!! ???? !!!!
|
||||
xxxx,0x5a,0xf6,0x32,0x46,0x2a,xxxx,xxxx, 0x53,0x4b,0x90,0x0d,0x51,0x68,0x99,0x13, /* F0 */
|
||||
// !!!! !!!! !!!! !!!! !!!! !!!! !!!! ???? !!!! !!!!
|
||||
xxxx,0x5a,0xf6,0x32,0x46,0x2a,xxxx,xxxx, 0x53,0x4b,0x90,0x35,0x51,0x68,0x99,0x13, /* F0 */
|
||||
// !!!! !!!! !!!! !!!! !!!! !!!! ???? !!!! !!!!
|
||||
};
|
||||
/*
|
||||
missing opcode:
|
||||
|
||||
1cedd : 68 c0 03
|
||||
17cb4 : b8 f0
|
||||
11bb9 : 2b d8
|
||||
11bda : 09 ...
|
||||
1a -> (7c,7e) ->
|
||||
34 -> (7c,7e) ->
|
||||
c5 -> (18d56 - from 1844f) (71,76,7a,7d,7e) -> to handle level number (a008d=00-0f) ->
|
||||
af -> (7d) (strange 71) ->
|
||||
ed -> (p76,7c,7e) ->
|
||||
fb ->
|
||||
|
||||
"!!!!" -> checked against gussun
|
||||
"gggg" -> very probably
|
||||
"pppp" -> probably
|
||||
@ -151,19 +165,12 @@ missing opcode:
|
||||
"????" -> missing
|
||||
|
||||
|
||||
1a -> (78,7c,7e) ->
|
||||
34 -> (78,7c,7e) -> 78
|
||||
|
||||
65 -> (79,
|
||||
af -> (79,7d) (strange 71) ->
|
||||
d9 -> (11e07 from 11de6) (70,78 -> to handle a01ce=000-7d0 -> 0x78
|
||||
ed -> (p76,78,7c,7e) ->
|
||||
fb ->
|
||||
|
||||
probably:
|
||||
42 -> 0x98 (083a3)
|
||||
50 -> 0x93 (083a7)
|
||||
c5 -> (18d56 - from 1844f) (71,73,76,79,7a,7d,7e) -> to handle level number (a008d=00-0f) -> 0x76
|
||||
|
||||
|
||||
very probably:
|
||||
48 -> 0x2b
|
||||
@ -173,7 +180,7 @@ sure:
|
||||
00 -> 0x7f
|
||||
3d -> 0x37
|
||||
7f -> 0xcd (little machine in the game - 16058)
|
||||
|
||||
b0 -> 0x63 (11479)
|
||||
*/
|
||||
// 0x2c (0xd4) complete guess
|
||||
// 0x2d (0x85) complete guess
|
||||
@ -188,15 +195,13 @@ sure:
|
||||
// 0xbd (0x39) guess - risky challenge use same code
|
||||
// 0xc3 (0x48) guess
|
||||
// and our collection of conditional branches:
|
||||
// 0xbf (0x7d) >= (monitor test)
|
||||
// 0x34 (0x7c) < or <= (seems more like <) | these two are used toghether
|
||||
// 0xaf (0x7f) > or >= (seems more like >) |
|
||||
// 0xed (0x7e) <= or < (seems more like <=)
|
||||
// 0x00 (0x7f) > ? | these two are used toghether
|
||||
// 0x34 (0x7e) < or <= (seems more like <) | these two are used toghether
|
||||
// 0xaf (0x7d) > or >=
|
||||
// 0xed (0x76) <= or < (seems more like <=)
|
||||
// 0x1a (0x7c) < ? | (rowscroll on pink screen on startup)
|
||||
// 0xc5 (0x7a) completely in the dark (game start after car seelction)
|
||||
|
||||
|
||||
// uccops, dynablaster
|
||||
const UINT8 dynablaster_decryption_table[256] = {
|
||||
0x1f,0x51,0x84,xxxx,0x3d,0x09,0x0d,xxxx, xxxx,0x57,xxxx,xxxx,xxxx,0x32,0x11,xxxx, /* 00 */
|
||||
xxxx,0x9c,xxxx,xxxx,0x4b,xxxx,xxxx,0x03, xxxx,xxxx,xxxx,0x89,0xb0,xxxx,xxxx,xxxx, /* 10 */
|
||||
@ -231,6 +236,7 @@ const UINT8 dynablaster_decryption_table[256] = {
|
||||
// NS010718 0xa0 was 0x00 (ADDB), verified to be 0x22 (ANDB)
|
||||
|
||||
/* note: mysticrib sound is identical revision to bbmanw sound code */
|
||||
// mysticri
|
||||
const UINT8 mysticri_decryption_table[256] = {
|
||||
xxxx,0x57,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx, 0xbf,0x43,xxxx,xxxx,0xb3,xxxx,0xfc,xxxx, /* 00 */
|
||||
/*r*/
|
||||
@ -257,8 +263,8 @@ const UINT8 mysticri_decryption_table[256] = {
|
||||
// 0xd5 (0x18) opcode is right but arguments could be swapped
|
||||
// 0x4e (0x2b) not sure, could be 0x1b
|
||||
// 0x8b (0xb3) needed by mysticrib
|
||||
// 0xb9 -> 4b (dec bw, PC=0x134e) in mysticrib, needed by reading Irem GA20 status after it
|
||||
|
||||
// majtitl2
|
||||
const UINT8 majtitl2_decryption_table[256] = {
|
||||
0x87,xxxx,0x78,0xaa,xxxx,xxxx,xxxx,0x2c, 0x32,0x0a,0x0f,xxxx,0x5e,xxxx,0xc6,0x8a, /* 00 */
|
||||
0x33,xxxx,xxxx,xxxx,xxxx,0xea,xxxx,0x72, xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,0x24,0x55, /* 10 */
|
||||
@ -280,7 +286,7 @@ const UINT8 majtitl2_decryption_table[256] = {
|
||||
// 0x7c (0x18) opcode is right but arguments could be swapped
|
||||
// 0x70 (0x2b) not sure, could be 0x1b
|
||||
|
||||
|
||||
// hook
|
||||
const UINT8 hook_decryption_table[256] = {
|
||||
0xb6,0x20,0x22,xxxx,0x0f,0x57,0x59,0xc6, 0xeb,xxxx,0xb0,0xbb,0x3b,xxxx,xxxx,xxxx, /* 00 */
|
||||
0x36,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx, xxxx,0xfe,xxxx,xxxx,xxxx,xxxx,xxxx,0xa0, /* 10 */
|
||||
@ -302,7 +308,7 @@ const UINT8 hook_decryption_table[256] = {
|
||||
// 0x87 (0x18) opcode is right but arguments could be swapped
|
||||
// 0xbb (0x2b) not sure, could be 0x1b
|
||||
|
||||
|
||||
// rtypeleo
|
||||
const UINT8 rtypeleo_decryption_table[256] = {
|
||||
0x5d,xxxx,0xc6,xxxx,xxxx,xxxx,0x2a,0x3a,xxxx,xxxx,xxxx,0x86,xxxx,0x22,xxxx,0xf3, /* 00 */
|
||||
xxxx,xxxx,xxxx,xxxx,xxxx,0x38,0xf7,0x42,0x04,xxxx,xxxx,0x1f,0x4b,xxxx,xxxx,0x58, /* 10 */
|
||||
@ -320,14 +326,14 @@ const UINT8 rtypeleo_decryption_table[256] = {
|
||||
xxxx,xxxx,xxxx,xxxx,0x81,xxxx,0x79,xxxx,xxxx,0x24,0x23,xxxx,xxxx,0xb0,0x07,0xff, /* D0 */
|
||||
xxxx,0xba,0xf6,0x51,xxxx,xxxx,xxxx,0xfe,xxxx,0x92,xxxx,xxxx,xxxx,xxxx,0xe9,xxxx, /* E0 */
|
||||
xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,0xe8,0xd2,xxxx,0x18,xxxx,xxxx,xxxx,0xd1,xxxx,xxxx, /* F0 */
|
||||
// ^^^^
|
||||
// ^^^^
|
||||
};
|
||||
// 0xf9 (0x18) opcode is right but arguments could be swapped
|
||||
// 0x80 (0x2b) not sure, could be 0x1b
|
||||
// 0x16 (0x01) guess (wrong?)
|
||||
// fixed 0x16 = 0xf7 mapping
|
||||
// 3d = correct
|
||||
|
||||
// inthunt
|
||||
const UINT8 inthunt_decryption_table[256] = {
|
||||
0x1f,xxxx,0xbb,0x50,xxxx,0x58,0x42,0x57, xxxx,xxxx,0xe9,xxxx,xxxx,xxxx,xxxx,0x0b, /* 00 */
|
||||
xxxx,xxxx,0x9d,0x9c,xxxx,xxxx,0x1e,xxxx, xxxx,0xb4,0x5b,xxxx,xxxx,xxxx,xxxx,xxxx, /* 10 */
|
||||
@ -349,6 +355,7 @@ const UINT8 inthunt_decryption_table[256] = {
|
||||
// 0x77 (0x18) opcode is right but arguments could be swapped
|
||||
// 0xb8 (0x2b) not sure, could be 0x1b
|
||||
|
||||
// gussun
|
||||
const UINT8 gussun_decryption_table[256] = {
|
||||
0x63,xxxx,xxxx,0x36,xxxx,0x52,0xb1,0x5b, 0x68,0xcd,xxxx,xxxx,xxxx,0xa8,xxxx,xxxx, /* 00 */
|
||||
// gggg gggg gggg gggg
|
||||
@ -455,9 +462,6 @@ f9 -> 76 (16d02(f 16cfa)-16598-165a1-18de7(f 18dc4) no 71(no),77(no),(icons? 70,
|
||||
fb -> bd
|
||||
fd -> 7e (1d659 - routine from 1d63c to 1d65e) no 70,76,77,78,79,7a,7b, 7c,7d,7e,7f ok 7e
|
||||
|
||||
V35 core:
|
||||
0f 92
|
||||
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
|
||||
AS notes:
|
||||
@ -498,6 +502,7 @@ clc
|
||||
ret
|
||||
*/
|
||||
|
||||
// leagueman
|
||||
const UINT8 leagueman_decryption_table[256] = {
|
||||
xxxx,xxxx,xxxx,0x55,0xbb,xxxx,0x23,0x79, xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,0x38,xxxx, /* 00 */
|
||||
0x01,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx, 0x3d,xxxx,xxxx,xxxx,0xba,xxxx,0x1e,xxxx, /* 10 */
|
||||
@ -519,7 +524,7 @@ const UINT8 leagueman_decryption_table[256] = {
|
||||
// 0x25 (0x4b) guess
|
||||
// 0x10 (0x01) guess (wrong?)
|
||||
|
||||
|
||||
// psoldier
|
||||
const UINT8 psoldier_decryption_table[256] = {
|
||||
xxxx,xxxx,xxxx,0x8a,xxxx,0xaa,xxxx,xxxx, xxxx,0x20,0x23,0x55,xxxx,0xb5,0x0a,xxxx, /* 00 */
|
||||
xxxx,0x46,xxxx,0xb6,xxxx,0x74,0x8b,xxxx, xxxx,0xba,0x01,xxxx,xxxx,0x5a,0x86,0xfb, /* 10 */
|
||||
@ -541,7 +546,7 @@ const UINT8 psoldier_decryption_table[256] = {
|
||||
// 0x9e (0x4b) guess
|
||||
// 0x1a (0x01) guess (wrong?)
|
||||
|
||||
|
||||
// dsoccr94
|
||||
const UINT8 dsoccr94_decryption_table[256] = {
|
||||
xxxx,0xd1,xxxx,xxxx,xxxx,0x79,0x2e,xxxx, xxxx,xxxx,0x5a,0x0f,xxxx,xxxx,0x43,xxxx, /* 00 */
|
||||
xxxx,xxxx,0xe8,0x50,xxxx,xxxx,xxxx,0xa0, 0x5d,0x22,xxxx,xxxx,0xb2,0x3a,xxxx,xxxx, /* 10 */
|
||||
@ -567,6 +572,7 @@ const UINT8 dsoccr94_decryption_table[256] = {
|
||||
|
||||
|
||||
/* preliminary table by Pierpaolo Prazzoli */
|
||||
// matchit2
|
||||
const UINT8 matchit2_decryption_table[256] = {
|
||||
xxxx,0x86,0x0a,xxxx,0x32,0x01,0x81,0xbe, 0xea,xxxx,0xbb,xxxx,xxxx,xxxx,0xa5,0xf6, /* 00 */
|
||||
// new new new new new new new new new
|
||||
|
Loading…
Reference in New Issue
Block a user