quizf1: added opcodes [Roberto Zandona']

This commit is contained in:
Roberto Zandona 2011-01-26 23:19:24 +00:00
parent 9c918a0ef0
commit 5b63ed1097
2 changed files with 47 additions and 41 deletions

View File

@ -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, 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, 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, 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 // 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, 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 ) GAME( 1992, majtitl2, 0, majtitl2, majtitl2, majtitl2, ROT0, "Irem", "Major Title 2 (World)", 0 )

View File

@ -1,10 +1,10 @@
/***************************************************************************** /*****************************************************************************
Irem Custom V35+ CPU Irem Custom V35 Software Guard CPU
-- has internal 256 byte lookup table, handled in realtime. Bomberman -- has internal 256 byte lookup table, handled in realtime. Bomberman
World runs encrypted code from RAM, Risky Challenge expects to be able World runs encrypted code from RAM, Risky Challenge and QuizF1 expects
to run code in emulation (non-encrypted) mode for some subroutines.. to be able to run code in emulation (non-encrypted) mode for some subroutines..
Hasamu Nanao 08J27261A1 011 9102KK700 Hasamu Nanao 08J27261A1 011 9102KK700
Gunforce Nanao 08J27261A1 011 9106KK701 Gunforce Nanao 08J27261A1 011 9106KK701
@ -51,8 +51,9 @@
//double check 0x00 0x22 0x28 0x4a 0x34 in these tables //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] = { const UINT8 gunforce_decryption_table[256] = {
0xff,xxxx,xxxx,0x2c,xxxx,xxxx,0x43,0x88, xxxx,0x13,0x0a,0xbd,0xba,0x60,0xea,xxxx, /* 00 */ 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 */ 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) // 0x00 is NOT 0x20 (no context in bomberman)
// bmaster, bomberman
const UINT8 bomberman_decryption_table[256] = { const UINT8 bomberman_decryption_table[256] = {
xxxx,xxxx,0x79,xxxx,0x9d,0x48,xxxx,xxxx, xxxx,xxxx,0x2e,xxxx,xxxx,0xa5,0x72,xxxx, /* 00 */ 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 */ 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) // 49 -> 4a (verified in a bombrman PCB)
// lethalth, gunforc2, quizf1
const UINT8 lethalth_decryption_table[256] = { const UINT8 lethalth_decryption_table[256] = {
0x7f,0x26,0x5d,xxxx,0xba,xxxx,0x1e,0x5e, 0xb8,xxxx,0xbc,0xe8,0x01,xxxx,0x4a,0x25, /* 00 */ 0x7f,0x26,0x5d,xxxx,0xba,xxxx,0x1e,0x5e, 0xb8,xxxx,0xbc,0xe8,0x01,xxxx,0x4a,0x25, /* 00 */
// ssss !!!! !!!! !!!! !!!! !!!! !!!! !!!! !!!! !!!! !!!! // 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 // !!!! !!!! !!!! ???? !!!! !!!! gggg
xxxx,xxxx,0xc6,0x06,0xa0,0xfe,0xcf,0x8e, 0x43,0x8f,0x2d,xxxx,0xd4,0x85,0x75,0xa2, /* 20 */ 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 !!!! // gggg !!!! ???? !!!! !!!! !!!! !!!! !!!! !!!! ssss !!!!
0x88,0xb4,0x98,0x8b,0xb9,0x9c,0xad,0x0e, 0x2b,xxxx,0xbf,xxxx,0x55,xxxx,0x56,0xb0, /* 40 */ 0x88,0xb4,0x98,0x8b,0xb9,0x9c,0xad,0x0e, 0x2b,xxxx,0xbf,xxxx,0x55,xxxx,0x56,0xb0, /* 40 */
// !!!! pppp !!!! !!!! !!!! !!!! gggg !!!! !!!! !!!! !!!! // !!!! pppp !!!! !!!! !!!! !!!! gggg !!!! !!!! !!!! !!!!
0x93,0x91,xxxx,0xeb,xxxx,0x50,0x41,0x29, 0x47,xxxx,xxxx,0x60,xxxx,0xab,xxxx,xxxx, /* 50 */ 0x93,0x91,xxxx,0xeb,xxxx,0x50,0x41,0x29, 0x47,xxxx,xxxx,0x60,xxxx,0xab,xxxx,xxxx, /* 50 */
// pppp !!!! !!!! !!!! !!!! !!!! !!!! !!!! // 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 */ xxxx,xxxx,xxxx,0x83,0x3c,xxxx,0x1b,0x34, 0x5b,xxxx,0x40,xxxx,xxxx,0x04,0xfc,0xcd, /* 70 */
// !!!! !!!! !!!! !!!! !!!! ssss // !!!! !!!! !!!! !!!! !!!! ssss
0xb1,0xf3,0x8a,xxxx,xxxx,0x87,xxxx,xxxx, xxxx,xxxx,xxxx,xxxx,0xbe,0x84,0x1f,0xe6, /* 80 */ 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 */ 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 */ 0x63,xxxx,0x86,0x0f,xxxx,0xb7,xxxx,0x4f, 0x13,xxxx,0xc0,0xfd,xxxx,0x39,xxxx,0x77, /* B0 */
// !!!! !!!! !!!! !!!! !!!! // ssss !!!! !!!! ???? !!!! !!!! !!!!
0x05,0x3a,xxxx,0x48,0x92,0x76,0x3e,0x03, xxxx,0xf8,xxxx,0x59,0xa8,0x5f,0xf9,0xbb, /* C0 */ 0x05,0x3a,xxxx,0x48,0x92,0x71,0x3e,0x03, xxxx,0xf8,xxxx,0x59,0xa8,0x5f,0xf9,0xbb, /* C0 */
// !!!! !!!! pppp !!!! !!!! !!!! !!!! !!!! // !!!! !!!! ???? !!!! !!!! !!!! !!!! !!!!
0x81,0xfa,0x9d,0xe9,0x2e,0xa1,0xc1,0x33, xxxx,0x78,xxxx,0x0c,xxxx,0x24,0xaa,0xac, /* D0 */ 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 */ xxxx,0xb6,xxxx,0xea,xxxx,0x73,0xe5,0x58, 0x00,0xf7,xxxx,0x74,xxxx,0x76,xxxx,0xa3, /* E0 */
// !!!! gggg !!!! !!!! !!!! !!!! ???? !!!! // !!!! 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: 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 "!!!!" -> checked against gussun
"gggg" -> very probably "gggg" -> very probably
"pppp" -> probably "pppp" -> probably
@ -151,19 +165,12 @@ missing opcode:
"????" -> missing "????" -> 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: probably:
42 -> 0x98 (083a3) 42 -> 0x98 (083a3)
50 -> 0x93 (083a7) 50 -> 0x93 (083a7)
c5 -> (18d56 - from 1844f) (71,73,76,79,7a,7d,7e) -> to handle level number (a008d=00-0f) -> 0x76
very probably: very probably:
48 -> 0x2b 48 -> 0x2b
@ -173,7 +180,7 @@ sure:
00 -> 0x7f 00 -> 0x7f
3d -> 0x37 3d -> 0x37
7f -> 0xcd (little machine in the game - 16058) 7f -> 0xcd (little machine in the game - 16058)
b0 -> 0x63 (11479)
*/ */
// 0x2c (0xd4) complete guess // 0x2c (0xd4) complete guess
// 0x2d (0x85) complete guess // 0x2d (0x85) complete guess
@ -188,15 +195,13 @@ sure:
// 0xbd (0x39) guess - risky challenge use same code // 0xbd (0x39) guess - risky challenge use same code
// 0xc3 (0x48) guess // 0xc3 (0x48) guess
// and our collection of conditional branches: // and our collection of conditional branches:
// 0xbf (0x7d) >= (monitor test) // 0x34 (0x7e) < or <= (seems more like <) | these two are used toghether
// 0x34 (0x7c) < or <= (seems more like <) | these two are used toghether // 0xaf (0x7d) > or >=
// 0xaf (0x7f) > or >= (seems more like >) | // 0xed (0x76) <= or < (seems more like <=)
// 0xed (0x7e) <= or < (seems more like <=)
// 0x00 (0x7f) > ? | these two are used toghether
// 0x1a (0x7c) < ? | (rowscroll on pink screen on startup) // 0x1a (0x7c) < ? | (rowscroll on pink screen on startup)
// 0xc5 (0x7a) completely in the dark (game start after car seelction) // 0xc5 (0x7a) completely in the dark (game start after car seelction)
// uccops, dynablaster
const UINT8 dynablaster_decryption_table[256] = { const UINT8 dynablaster_decryption_table[256] = {
0x1f,0x51,0x84,xxxx,0x3d,0x09,0x0d,xxxx, xxxx,0x57,xxxx,xxxx,xxxx,0x32,0x11,xxxx, /* 00 */ 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 */ 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) // NS010718 0xa0 was 0x00 (ADDB), verified to be 0x22 (ANDB)
/* note: mysticrib sound is identical revision to bbmanw sound code */ /* note: mysticrib sound is identical revision to bbmanw sound code */
// mysticri
const UINT8 mysticri_decryption_table[256] = { const UINT8 mysticri_decryption_table[256] = {
xxxx,0x57,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx, 0xbf,0x43,xxxx,xxxx,0xb3,xxxx,0xfc,xxxx, /* 00 */ xxxx,0x57,xxxx,xxxx,xxxx,xxxx,xxxx,xxxx, 0xbf,0x43,xxxx,xxxx,0xb3,xxxx,0xfc,xxxx, /* 00 */
/*r*/ /*r*/
@ -257,8 +263,8 @@ const UINT8 mysticri_decryption_table[256] = {
// 0xd5 (0x18) opcode is right but arguments could be swapped // 0xd5 (0x18) opcode is right but arguments could be swapped
// 0x4e (0x2b) not sure, could be 0x1b // 0x4e (0x2b) not sure, could be 0x1b
// 0x8b (0xb3) needed by mysticrib // 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] = { const UINT8 majtitl2_decryption_table[256] = {
0x87,xxxx,0x78,0xaa,xxxx,xxxx,xxxx,0x2c, 0x32,0x0a,0x0f,xxxx,0x5e,xxxx,0xc6,0x8a, /* 00 */ 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 */ 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 // 0x7c (0x18) opcode is right but arguments could be swapped
// 0x70 (0x2b) not sure, could be 0x1b // 0x70 (0x2b) not sure, could be 0x1b
// hook
const UINT8 hook_decryption_table[256] = { const UINT8 hook_decryption_table[256] = {
0xb6,0x20,0x22,xxxx,0x0f,0x57,0x59,0xc6, 0xeb,xxxx,0xb0,0xbb,0x3b,xxxx,xxxx,xxxx, /* 00 */ 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 */ 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 // 0x87 (0x18) opcode is right but arguments could be swapped
// 0xbb (0x2b) not sure, could be 0x1b // 0xbb (0x2b) not sure, could be 0x1b
// rtypeleo
const UINT8 rtypeleo_decryption_table[256] = { const UINT8 rtypeleo_decryption_table[256] = {
0x5d,xxxx,0xc6,xxxx,xxxx,xxxx,0x2a,0x3a,xxxx,xxxx,xxxx,0x86,xxxx,0x22,xxxx,0xf3, /* 00 */ 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 */ 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,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,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 */ 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 // 0xf9 (0x18) opcode is right but arguments could be swapped
// 0x80 (0x2b) not sure, could be 0x1b // 0x80 (0x2b) not sure, could be 0x1b
// 0x16 (0x01) guess (wrong?)
// fixed 0x16 = 0xf7 mapping // fixed 0x16 = 0xf7 mapping
// 3d = correct // 3d = correct
// inthunt
const UINT8 inthunt_decryption_table[256] = { const UINT8 inthunt_decryption_table[256] = {
0x1f,xxxx,0xbb,0x50,xxxx,0x58,0x42,0x57, xxxx,xxxx,0xe9,xxxx,xxxx,xxxx,xxxx,0x0b, /* 00 */ 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 */ 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 // 0x77 (0x18) opcode is right but arguments could be swapped
// 0xb8 (0x2b) not sure, could be 0x1b // 0xb8 (0x2b) not sure, could be 0x1b
// gussun
const UINT8 gussun_decryption_table[256] = { const UINT8 gussun_decryption_table[256] = {
0x63,xxxx,xxxx,0x36,xxxx,0x52,0xb1,0x5b, 0x68,0xcd,xxxx,xxxx,xxxx,0xa8,xxxx,xxxx, /* 00 */ 0x63,xxxx,xxxx,0x36,xxxx,0x52,0xb1,0x5b, 0x68,0xcd,xxxx,xxxx,xxxx,0xa8,xxxx,xxxx, /* 00 */
// gggg gggg gggg gggg // 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 fb -> bd
fd -> 7e (1d659 - routine from 1d63c to 1d65e) no 70,76,77,78,79,7a,7b, 7c,7d,7e,7f ok 7e 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: AS notes:
@ -498,6 +502,7 @@ clc
ret ret
*/ */
// leagueman
const UINT8 leagueman_decryption_table[256] = { const UINT8 leagueman_decryption_table[256] = {
xxxx,xxxx,xxxx,0x55,0xbb,xxxx,0x23,0x79, xxxx,xxxx,xxxx,xxxx,xxxx,xxxx,0x38,xxxx, /* 00 */ 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 */ 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 // 0x25 (0x4b) guess
// 0x10 (0x01) guess (wrong?) // 0x10 (0x01) guess (wrong?)
// psoldier
const UINT8 psoldier_decryption_table[256] = { const UINT8 psoldier_decryption_table[256] = {
xxxx,xxxx,xxxx,0x8a,xxxx,0xaa,xxxx,xxxx, xxxx,0x20,0x23,0x55,xxxx,0xb5,0x0a,xxxx, /* 00 */ 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 */ 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 // 0x9e (0x4b) guess
// 0x1a (0x01) guess (wrong?) // 0x1a (0x01) guess (wrong?)
// dsoccr94
const UINT8 dsoccr94_decryption_table[256] = { const UINT8 dsoccr94_decryption_table[256] = {
xxxx,0xd1,xxxx,xxxx,xxxx,0x79,0x2e,xxxx, xxxx,xxxx,0x5a,0x0f,xxxx,xxxx,0x43,xxxx, /* 00 */ 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 */ 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 */ /* preliminary table by Pierpaolo Prazzoli */
// matchit2
const UINT8 matchit2_decryption_table[256] = { const UINT8 matchit2_decryption_table[256] = {
xxxx,0x86,0x0a,xxxx,0x32,0x01,0x81,0xbe, 0xea,xxxx,0xbb,xxxx,xxxx,xxxx,0xa5,0xf6, /* 00 */ 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 // new new new new new new new new new