misc/norautp.cpp: mostly decrypted norautua and norautub. Still incomplete, but norautub is nearing playability

This commit is contained in:
Ivan Vangelista 2023-08-05 19:28:38 +02:00
parent 8b041449ba
commit 5b3c853e42
2 changed files with 720 additions and 34 deletions

View File

@ -839,6 +839,12 @@ void norautp_state::norautp_map(address_map &map)
map(0x2000, 0x27ff).ram().share("nvram"); /* 6116 */
}
void norautp_state::decrypted_opcodes_map(address_map &map)
{
map.global_mask(0x3fff);
map(0x0000, 0x1fff).rom().share(m_decrypted_opcodes);
}
void norautp_state::norautp_portmap(address_map &map)
{
map.global_mask(0xff);
@ -1370,6 +1376,13 @@ void norautp_state::norautp(machine_config &config)
m_maincpu->set_vblank_int("screen", FUNC(norautp_state::irq0_line_hold));
}
void norautp_state::norautu(machine_config &config)
{
norautp(config);
m_maincpu->set_addrmap(AS_OPCODES, &norautp_state::decrypted_opcodes_map);
}
void norautp_state::norautpl(machine_config &config)
{
noraut_base(config);
@ -1644,7 +1657,7 @@ ROM_END
/*
Noraut Deluxe Poker (console).
From PCB with daghterboard.
From PCB with daughterboard.
----
@ -2158,7 +2171,7 @@ ROM_END
/*
Noraut 2 bet joker hard console.
From PCB with daghterboard.
From PCB with daughterboard.
----
@ -2179,7 +2192,7 @@ ROM_END
/*
Noraut 4 bet joker console.
From PCB with daghterboard.
From PCB with daughterboard.
----
@ -3692,43 +3705,712 @@ ROM_END
// ROM[0x0b0b] = 0x00;
//}
/*
The following tables are for the norautua and norautub set. The encryption seems based on substitution tables
chosen by bits 0, 1, 2 and 3 of the address and the M1 line.
However, it is unprobable that games this old and simple use 0x2000 of ROM to hold such large tables, so they can
probably be calculated if the algorithm is identified.
norautub is closer to norautjo so it mostly works, while norautua diverges somewhat and hits some unknown opcodes.
*/
void norautp_state::init_enc()
{
/* Attempt to decrypt the program ROM */
uint8_t unkn = 0x00;
// uint8_t *rom = memregion("maincpu")->base();
// uint8_t *buffer;
// int size = 0x2000; //memregion("maincpu")->bytes();
// int start = 0;
// int i;
// opcodes
static const uint8_t opcodes_sub_table_00[0x100] =
{// 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
unkn, unkn, 0x7f, 0xb0, 0xed, 0x28, unkn, unkn, unkn, 0xd5, 0xd0, unkn, 0x7e, unkn, unkn, unkn, // 0x0x
0x4e, unkn, unkn, unkn, unkn, unkn, unkn, 0x04, unkn, 0x2a, unkn, unkn, 0x0c, 0x09, unkn, unkn, // 0x1x
unkn, 0xea, 0xa9, unkn, 0xbb, 0x3d, unkn, unkn, unkn, unkn, 0x66, unkn, unkn, unkn, unkn, unkn, // 0x2x
unkn, unkn, 0x1d, unkn, 0x77, unkn, unkn, 0x3e, unkn, 0x23, 0xe5, unkn, 0xb9, 0x0e, unkn, unkn, // 0x3x
unkn, 0x35, unkn, 0xb8, unkn, unkn, unkn, 0xf1, unkn, 0xf7, unkn, unkn, 0x36, 0xdf, unkn, unkn, // 0x4x
unkn, unkn, unkn, unkn, 0xfe, unkn, unkn, 0x20, unkn, 0x33, 0x2b, unkn, unkn, 0x10, 0x57, unkn, // 0x5x
unkn, 0xca, 0x13, 0xcb, 0xc1, 0xeb, 0xa3, 0xdd, 0x46, unkn, unkn, 0xb7, unkn, unkn, unkn, unkn, // 0x6x
unkn, 0xf3, unkn, unkn, unkn, unkn, 0xc2, 0x7c, unkn, 0xcd, unkn, unkn, 0x42, 0xc8, 0x32, 0x22, // 0x7x
unkn, unkn, 0x83, unkn, unkn, unkn, unkn, unkn, unkn, 0x06, unkn, 0x5b, unkn, unkn, 0xfd, 0xa5, // 0x8x
unkn, 0xc3, 0xe7, unkn, unkn, unkn, unkn, unkn, unkn, unkn, 0x71, unkn, 0x3a, unkn, unkn, 0x0f, // 0x9x
0x34, unkn, 0xda, unkn, unkn, unkn, 0x85, unkn, 0xe6, unkn, unkn, unkn, unkn, 0xe3, unkn, unkn, // 0xax
unkn, 0x1e, 0x05, unkn, 0x4f, unkn, unkn, unkn, unkn, unkn, 0xaf, unkn, 0x01, 0x5f, unkn, unkn, // 0xbx
unkn, 0x38, 0x30, unkn, unkn, 0x6f, 0x70, 0x16, unkn, 0xc9, unkn, 0xc5, 0x78, 0x7a, unkn, unkn, // 0xcx
unkn, 0xd1, unkn, unkn, 0xbe, unkn, unkn, 0x79, unkn, unkn, unkn, unkn, 0x6a, 0x37, unkn, unkn, // 0xdx
unkn, 0x7d, unkn, unkn, unkn, 0x21, unkn, unkn, unkn, 0x1f, unkn, unkn, unkn, unkn, 0x11, 0xfa, // 0xex
unkn, unkn, unkn, 0x08, 0x7b, 0x5e, 0x47, 0xdb, unkn, 0x18, 0x07, 0xc0, unkn, unkn, unkn, unkn, // 0xfx
};
static const uint8_t opcodes_sub_table_01[0x100] =
{// 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
unkn, 0xdf, unkn, unkn, 0xfe, 0x83, unkn, unkn, unkn, 0x07, unkn, unkn, 0x7a, unkn, 0x30, unkn, // 0x0x
unkn, 0x0e, unkn, unkn, unkn, 0x18, 0xba, unkn, unkn, 0xfb, unkn, unkn, 0x0b, unkn, 0x16, unkn, // 0x1x
unkn, 0xf6, 0xb5, unkn, unkn, 0xc1, unkn, unkn, 0x78, unkn, 0x35, 0xd6, unkn, 0xc5, unkn, unkn, // 0x2x
unkn, unkn, 0xd1, 0xb1, 0x1b, unkn, 0x46, 0xc2, 0x06, unkn, unkn, 0xe6, unkn, 0x7e, unkn, unkn, // 0x3x
unkn, unkn, unkn, unkn, unkn, 0x34, unkn, unkn, 0xe7, unkn, 0xea, unkn, 0x2b, 0xca, unkn, unkn, // 0x4x
0x09, 0xf5, unkn, unkn, 0x60, 0x20, unkn, unkn, 0x3d, unkn, 0x79, 0x6a, unkn, unkn, 0xc3, 0x2a, // 0x5x
unkn, unkn, unkn, 0x7d, 0x23, unkn, unkn, unkn, unkn, 0x0f, unkn, unkn, 0x38, 0x04, unkn, 0x3e, // 0x6x
0x4e, unkn, 0xcc, unkn, 0x81, 0xb0, 0xe5, unkn, unkn, 0xda, unkn, unkn, unkn, 0xb9, unkn, unkn, // 0x7x
unkn, unkn, 0x21, 0xaf, unkn, 0xc8, unkn, unkn, unkn, unkn, 0x28, unkn, unkn, unkn, unkn, unkn, // 0x8x
unkn, unkn, unkn, 0x1a, 0xcd, 0xfd, 0x10, 0xb7, unkn, unkn, unkn, unkn, unkn, unkn, unkn, 0xc0, // 0x9x
0x27, 0x14, unkn, unkn, unkn, unkn, 0x1d, unkn, unkn, 0xa0, 0x33, unkn, unkn, 0x01, 0xdd, 0xed, // 0xax
0x11, 0x08, unkn, unkn, 0x4f, unkn, 0x1e, unkn, unkn, 0xc9, unkn, unkn, 0xcb, unkn, 0x36, 0xd5, // 0xbx
unkn, unkn, 0x6f, unkn, unkn, unkn, unkn, 0x13, unkn, 0x22, unkn, 0xa8, 0xb8, unkn, unkn, unkn, // 0xcx
unkn, 0x77, unkn, unkn, unkn, 0x5f, unkn, unkn, 0x00, 0x2f, unkn, unkn, unkn, 0xa3, unkn, unkn, // 0xdx
unkn, unkn, unkn, 0x3a, unkn, unkn, unkn, 0xd2, unkn, 0x57, unkn, unkn, 0x32, unkn, unkn, unkn, // 0xex
0x1f, unkn, unkn, unkn, unkn, 0x7b, unkn, 0x47, unkn, unkn, unkn, unkn, unkn, unkn, unkn, 0x17, // 0xfx
};
// for (i = start; i < size; i++)
// {
// rom[i] = rom[i] ^ 0x09 ^ 0xff;
// rom[i+1] = rom[i+1] ^ 0xfb ^ 0xff;
// rom[i+2] = rom[i+2] ^ 0xb2 ^ 0xff;
// rom[i+3] = rom[i+3] ^ 0x60 ^ 0xff;
// rom[i+4] = rom[i+4] ^ 0xce ^ 0xff;
// rom[i+5] = rom[i+5] ^ 0x44 ^ 0xff;
// rom[i+6] = rom[i+6] ^ 0x6e ^ 0xff;
// rom[i+7] = rom[i+7] ^ 0x61 ^ 0xff;
// rom[i+8] = rom[i+8] ^ 0x37 ^ 0xff;
// rom[i+9] = rom[i+9] ^ 0x5e ^ 0xff;
// rom[i+10] = rom[i+10] ^ 0xfb ^ 0xff;
// rom[i+11] = rom[i+11] ^ 0xc6 ^ 0xff;
// rom[i+12] = rom[i+12] ^ 0x1d ^ 0xff;
// rom[i+13] = rom[i+13] ^ 0x33 ^ 0xff;
// rom[i+14] = rom[i+14] ^ 0x00 ^ 0xff;
// rom[i+15] = rom[i+15] ^ 0xff ^ 0xff;
static const uint8_t opcodes_sub_table_02[0x100] =
{// 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
0xfe, unkn, unkn, unkn, 0x07, unkn, 0xda, 0x10, unkn, 0x32, 0x7e, unkn, 0xa7, unkn, 0xfb, unkn, // 0x0x
0x36, 0xb0, 0x3e, unkn, 0x20, unkn, 0xe5, unkn, 0x79, 0xe6, unkn, unkn, 0x73, unkn, 0xc4, unkn, // 0x1x
0xb8, unkn, unkn, unkn, unkn, unkn, unkn, 0x43, 0x86, 0x78, unkn, unkn, unkn, unkn, 0xc9, unkn, // 0x2x
unkn, unkn, unkn, 0x34, unkn, unkn, 0x47, unkn, 0x4f, unkn, unkn, 0xc1, 0xcf, 0x2f, 0xed, unkn, // 0x3x
unkn, 0xc5, unkn, unkn, unkn, unkn, unkn, unkn, 0xff, 0x11, unkn, unkn, 0xf3, unkn, unkn, 0xfd, // 0x4x
0x3f, 0xc0, unkn, 0xa3, 0xe9, unkn, 0x1a, 0x1e, 0x0a, 0x7a, 0xd3, 0x90, unkn, 0xcc, 0x31, unkn, // 0x5x
0xd1, unkn, unkn, unkn, 0xdf, 0x2b, unkn, 0x3a, unkn, unkn, unkn, unkn, 0x2a, 0xbf, unkn, unkn, // 0x6x
unkn, 0xdd, 0x46, unkn, 0xc8, unkn, 0x33, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, // 0x7x
unkn, unkn, unkn, unkn, unkn, unkn, 0x15, unkn, unkn, unkn, unkn, unkn, unkn, 0x23, 0x06, unkn, // 0x8x
unkn, unkn, unkn, unkn, 0xbe, unkn, unkn, unkn, 0x57, unkn, unkn, 0x21, unkn, 0x22, unkn, unkn, // 0x9x
0xb9, unkn, unkn, 0xf6, 0xe1, unkn, unkn, 0xe7, unkn, unkn, unkn, 0xd8, unkn, 0x5f, unkn, unkn, // 0xax
unkn, 0x87, 0x28, 0x68, unkn, 0xaf, 0x0d, unkn, unkn, 0xca, 0xbb, unkn, 0x35, unkn, unkn, unkn, // 0xbx
unkn, 0x9e, unkn, 0xc3, unkn, unkn, 0x0e, unkn, unkn, 0xd5, 0x0f, 0x18, unkn, unkn, unkn, unkn, // 0xcx
0x01, 0xd7, 0xb7, 0xa8, unkn, 0xcd, unkn, unkn, 0x1d, 0xf1, 0xd0, unkn, unkn, 0x4e, unkn, unkn, // 0xdx
unkn, unkn, unkn, 0x30, 0x09, 0x7c, 0xc6, 0x77, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, // 0xex
unkn, unkn, unkn, 0x56, 0x7b, unkn, 0x3d, unkn, unkn, unkn, 0x38, 0xcb, unkn, unkn, unkn, unkn, // 0xfx
};
// i = i + 16;
// }
static const uint8_t opcodes_sub_table_03[0x100] =
{// 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
0xfd, unkn, unkn, unkn, unkn, unkn, 0x3d, unkn, 0xcf, unkn, 0x06, unkn, 0x05, unkn, unkn, unkn, // 0x0x
0xd9, unkn, unkn, 0xf1, 0xdd, 0xda, 0x01, unkn, unkn, unkn, unkn, unkn, 0x18, unkn, unkn, unkn, // 0x1x
unkn, unkn, unkn, unkn, 0xd3, unkn, 0x87, 0xf5, unkn, unkn, 0x34, unkn, unkn, unkn, unkn, unkn, // 0x2x
unkn, unkn, unkn, unkn, unkn, unkn, 0x1e, 0x78, unkn, unkn, unkn, 0x26, 0x22, unkn, unkn, unkn, // 0x3x
unkn, unkn, unkn, 0x46, unkn, 0xf7, 0x3f, unkn, unkn, unkn, 0xe7, unkn, unkn, 0x80, 0xdb, unkn, // 0x4x
unkn, 0xcc, unkn, 0xc8, 0xb8, 0x32, unkn, unkn, 0xb0, 0xd1, unkn, unkn, unkn, 0x7c, unkn, unkn, // 0x5x
unkn, 0xcd, unkn, unkn, unkn, 0xb7, 0xc6, 0x47, unkn, unkn, unkn, 0x19, unkn, unkn, 0x23, unkn, // 0x6x
unkn, unkn, unkn, unkn, unkn, 0x31, unkn, unkn, 0xaf, 0xb1, 0x11, 0x20, unkn, unkn, 0x16, unkn, // 0x7x
unkn, unkn, unkn, 0x7e, unkn, unkn, unkn, unkn, unkn, 0xc2, unkn, 0x3c, unkn, unkn, unkn, unkn, // 0x8x
0x56, unkn, unkn, 0x79, 0x7a, unkn, unkn, unkn, 0x4e, unkn, unkn, 0xbe, unkn, unkn, unkn, unkn, // 0x9x
unkn, unkn, 0x30, 0x36, unkn, unkn, unkn, 0xa6, unkn, 0x76, unkn, unkn, 0x7b, unkn, 0xe1, unkn, // 0xax
unkn, unkn, 0x81, unkn, 0xfa, 0xc5, 0x4f, 0x90, 0xf2, unkn, 0xcb, unkn, unkn, unkn, unkn, 0x10, // 0xbx
0xc0, 0x7d, 0xe6, unkn, unkn, unkn, 0xca, unkn, unkn, unkn, 0xd5, unkn, unkn, 0x2f, 0xc3, unkn, // 0xcx
0xba, unkn, 0x21, 0x2a, 0x52, unkn, unkn, 0x3a, unkn, unkn, 0x77, 0xed, unkn, unkn, unkn, unkn, // 0xdx
0x38, 0xee, unkn, unkn, unkn, 0x0f, unkn, unkn, unkn, unkn, 0x3e, unkn, unkn, 0x0e, unkn, 0x28, // 0xex
unkn, 0xc9, 0xb9, 0xe5, unkn, 0x24, unkn, 0xd0, 0xfe, 0xa5, 0x27, 0x15, unkn, unkn, 0xdf, unkn, // 0xfx
};
// buffer = alloc_array_or_die(uint8_t, size);
// memcpy(buffer, rom, size);
static const uint8_t opcodes_sub_table_04[0x100] =
{// 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
0x70, 0x7e, unkn, 0xe5, 0xc1, 0xd8, 0xb8, unkn, unkn, unkn, unkn, 0xa5, 0xf3, 0xd3, unkn, 0x79, // 0x0x
unkn, 0xd2, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, 0xd5, unkn, 0x7f, unkn, unkn, 0x21, // 0x1x
unkn, unkn, 0xaf, 0x31, unkn, unkn, unkn, 0x71, unkn, unkn, unkn, unkn, unkn, unkn, unkn, 0xa6, // 0x2x
unkn, unkn, 0x7a, unkn, unkn, 0x37, unkn, unkn, 0xcd, unkn, 0xb1, unkn, 0xfa, unkn, unkn, unkn, // 0x3x
unkn, unkn, 0x2a, unkn, 0x04, unkn, 0xc8, 0x2f, unkn, 0x1a, unkn, unkn, unkn, unkn, 0xca, unkn, // 0x4x
0x30, unkn, unkn, unkn, 0x1d, unkn, unkn, 0x46, 0xb5, unkn, 0x1e, unkn, 0xee, 0xc6, 0xd6, unkn, // 0x5x
0x0d, 0x4f, unkn, unkn, unkn, 0x0e, 0xf7, 0x57, 0xd9, 0xdf, 0x56, unkn, unkn, unkn, unkn, 0x06, // 0x6x
0x81, unkn, 0xc3, unkn, 0x18, unkn, unkn, 0xb9, 0x10, 0x1c, unkn, unkn, unkn, unkn, unkn, unkn, // 0x7x
unkn, unkn, unkn, 0x11, unkn, 0xcb, unkn, 0x0f, unkn, unkn, 0xeb, unkn, unkn, 0xc9, unkn, unkn, // 0x8x
0xd7, 0x2b, unkn, unkn, unkn, unkn, 0x7d, 0x72, unkn, unkn, unkn, 0x3e, unkn, unkn, unkn, 0x23, // 0x9x
0x5f, unkn, unkn, 0xdd, 0x7c, 0x32, 0x38, unkn, 0xe1, 0xb6, unkn, unkn, unkn, 0xf2, unkn, unkn, // 0xax
unkn, 0xd0, unkn, 0xc4, unkn, unkn, unkn, 0x22, unkn, 0xbf, unkn, 0xda, unkn, 0xf5, 0x52, unkn, // 0xbx
unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, 0x47, unkn, 0xbe, 0x4e, unkn, 0x3a, 0x77, 0x01, // 0xcx
0x6f, unkn, 0x17, unkn, 0x20, 0x07, 0xb7, unkn, 0x34, unkn, unkn, unkn, unkn, 0x35, unkn, unkn, // 0xdx
unkn, unkn, unkn, unkn, 0x16, unkn, unkn, unkn, 0xfd, unkn, unkn, 0x28, unkn, 0x36, 0xfe, 0xe6, // 0xex
unkn, unkn, 0xb0, unkn, 0xed, unkn, unkn, unkn, unkn, unkn, unkn, 0x78, unkn, unkn, unkn, unkn, // 0xfx
};
// free(buffer);
static const uint8_t opcodes_sub_table_05[0x100] =
{// 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
unkn, 0xc9, 0x07, 0x2b, 0x09, unkn, 0xeb, 0xb2, unkn, unkn, 0xb6, 0x08, unkn, unkn, unkn, unkn, // 0x0x
unkn, 0xc1, 0x1e, unkn, 0x78, 0xa9, unkn, 0x18, unkn, unkn, unkn, unkn, 0x2a, unkn, unkn, 0x16, // 0x1x
unkn, unkn, unkn, 0x28, 0xb9, 0xfd, 0xed, unkn, unkn, 0xf6, unkn, unkn, 0x06, unkn, 0x20, 0x23, // 0x2x
unkn, unkn, unkn, unkn, 0xf1, unkn, unkn, 0x3a, unkn, unkn, unkn, 0xe6, unkn, 0xe5, unkn, unkn, // 0x3x
unkn, unkn, unkn, 0x11, 0xc8, unkn, 0x6f, unkn, unkn, unkn, unkn, unkn, 0x47, unkn, unkn, unkn, // 0x4x
unkn, unkn, 0xdf, unkn, unkn, unkn, 0xc4, unkn, unkn, 0x36, 0xb7, unkn, 0xe1, unkn, 0xaf, unkn, // 0x5x
0xcd, unkn, unkn, 0x7d, unkn, unkn, unkn, unkn, unkn, 0xdd, unkn, unkn, 0x30, unkn, unkn, unkn, // 0x6x
0x7e, unkn, unkn, 0xc3, 0x14, unkn, unkn, unkn, unkn, unkn, unkn, 0x87, 0xcb, unkn, unkn, unkn, // 0x7x
unkn, unkn, unkn, unkn, 0xb8, 0xf5, unkn, 0xdb, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, // 0x8x
unkn, 0xc0, unkn, 0x2f, 0x0b, unkn, unkn, 0xd5, 0x17, unkn, unkn, 0xa3, 0xa6, 0x01, 0x21, 0x22, // 0x9x
unkn, unkn, 0x57, unkn, unkn, 0xd1, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, 0x0e, // 0xax
unkn, unkn, 0x1d, 0x3e, 0xfb, 0x5b, unkn, 0x13, unkn, unkn, 0xd2, unkn, 0x38, 0x10, 0x3d, 0x7a, // 0xbx
unkn, unkn, unkn, unkn, unkn, unkn, 0xd8, 0x72, unkn, 0xbe, 0x0f, unkn, 0xca, unkn, unkn, unkn, // 0xcx
unkn, 0x66, unkn, unkn, 0xfe, unkn, unkn, unkn, unkn, 0xb0, unkn, unkn, 0x15, 0x32, 0x79, unkn, // 0xdx
0x0c, 0xda, 0x5f, 0xe7, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, 0x35, 0x70, unkn, // 0xex
unkn, unkn, unkn, 0x77, unkn, unkn, unkn, 0x7c, unkn, unkn, unkn, unkn, 0xba, 0x4e, unkn, 0xb5, // 0xfx
};
static const uint8_t opcodes_sub_table_06[0x100] =
{// 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
0xfb, 0xc1, 0xaf, 0xfd, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, // 0x0x
0x31, unkn, unkn, unkn, unkn, unkn, 0x7e, 0xbe, 0x77, unkn, unkn, unkn, 0x1e, unkn, unkn, 0x1b, // 0x1x
unkn, unkn, unkn, 0x3a, unkn, 0x0c, unkn, 0xc8, 0x2f, unkn, 0xe1, unkn, 0xeb, 0xa0, 0x7c, 0xa2, // 0x2x
unkn, unkn, unkn, 0xb5, unkn, unkn, unkn, unkn, unkn, 0x35, unkn, 0xc9, unkn, unkn, unkn, unkn, // 0x3x
unkn, unkn, unkn, unkn, unkn, 0xc4, unkn, unkn, 0x72, 0xab, 0x36, unkn, 0x32, 0xe7, unkn, 0xc0, // 0x4x
0xd1, unkn, 0x0e, 0x19, unkn, unkn, 0xcd, 0x5b, unkn, unkn, 0xf6, unkn, unkn, 0xb9, 0x7a, unkn, // 0x5x
unkn, 0x7b, unkn, 0xb8, 0x2b, unkn, unkn, 0xdd, 0xc5, unkn, unkn, 0xa3, 0xed, unkn, unkn, 0x38, // 0x6x
unkn, 0x06, unkn, unkn, unkn, 0x01, unkn, 0x23, unkn, 0xcb, unkn, unkn, unkn, 0x20, unkn, unkn, // 0x7x
0x16, 0xd5, unkn, unkn, 0xd3, 0xfe, unkn, unkn, unkn, unkn, unkn, 0x0f, 0x3e, unkn, unkn, 0x28, // 0x8x
unkn, 0x78, unkn, unkn, unkn, 0xa8, unkn, 0xb6, 0xd6, unkn, unkn, unkn, unkn, unkn, unkn, unkn, // 0x9x
unkn, 0xd7, unkn, 0xe5, unkn, 0x18, unkn, 0x09, unkn, 0x11, unkn, 0x07, unkn, unkn, 0xcc, unkn, // 0xax
unkn, 0x15, unkn, unkn, unkn, unkn, 0xf5, unkn, unkn, 0xdf, unkn, 0x30, unkn, unkn, unkn, unkn, // 0xbx
unkn, 0x47, 0x4f, unkn, unkn, unkn, unkn, unkn, 0xd8, unkn, unkn, unkn, unkn, unkn, 0x3c, 0x79, // 0xcx
0x5f, unkn, 0x08, 0x3d, unkn, unkn, 0x21, unkn, unkn, unkn, unkn, unkn, 0x37, 0x2a, 0x10, unkn, // 0xdx
unkn, 0x1d, 0xe6, unkn, 0x57, unkn, unkn, unkn, 0x14, unkn, unkn, 0xc3, unkn, unkn, unkn, unkn, // 0xex
unkn, unkn, unkn, 0xb0, 0xb7, unkn, unkn, 0x6f, unkn, unkn, unkn, 0x22, unkn, unkn, unkn, unkn, // 0xfx
};
static const uint8_t opcodes_sub_table_07[0x100] =
{// 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
0x11, 0xc6, unkn, unkn, 0x2b, unkn, unkn, unkn, unkn, unkn, unkn, 0x3a, unkn, unkn, 0x21, 0x4e, // 0x0x
unkn, unkn, 0xc3, 0x30, unkn, 0x76, 0x69, unkn, unkn, 0x04, unkn, 0xcd, unkn, 0xc2, unkn, 0x46, // 0x1x
0xc9, unkn, unkn, unkn, 0xd3, unkn, 0xe9, 0xbe, 0xb5, unkn, unkn, unkn, 0x87, unkn, unkn, unkn, // 0x2x
0x0f, 0x28, 0x78, unkn, unkn, unkn, 0x02, 0x10, unkn, 0xf5, unkn, unkn, unkn, unkn, unkn, 0xdf, // 0x3x
0x60, unkn, unkn, 0x1d, 0x0d, unkn, unkn, unkn, 0xfe, 0xed, unkn, unkn, 0x7e, 0xc8, unkn, unkn, // 0x4x
unkn, 0x47, unkn, 0xb8, 0x32, unkn, 0x1b, 0xcc, 0xd5, unkn, unkn, 0xe7, 0xfd, unkn, 0xaf, unkn, // 0x5x
unkn, unkn, 0x2f, unkn, unkn, unkn, unkn, unkn, 0xf3, unkn, unkn, unkn, unkn, 0x2a, 0x23, unkn, // 0x6x
unkn, 0x42, 0xa6, 0xb1, 0x1e, 0x36, unkn, 0xc1, unkn, unkn, unkn, unkn, unkn, unkn, 0xdd, unkn, // 0x7x
0x05, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, // 0x8x
unkn, unkn, 0x3d, unkn, 0xe6, unkn, 0x72, 0xcf, unkn, 0x77, unkn, 0x57, 0xc0, 0xa0, 0x7a, unkn, // 0x9x
0x52, unkn, unkn, 0x7c, unkn, unkn, unkn, unkn, unkn, 0xe1, unkn, unkn, unkn, unkn, 0xd0, 0xb9, // 0xax
0x3e, 0x07, unkn, 0xb7, unkn, unkn, 0xd6, 0x15, unkn, unkn, unkn, unkn, unkn, 0x79, unkn, unkn, // 0xbx
unkn, unkn, 0x20, unkn, unkn, unkn, 0x0e, 0xca, 0x1a, 0x06, unkn, unkn, unkn, 0xf6, 0xcb, 0xda, // 0xcx
unkn, unkn, unkn, 0x4f, 0x18, unkn, 0xdb, 0xb2, unkn, 0x38, 0x27, unkn, unkn, unkn, 0x81, unkn, // 0xdx
unkn, 0xd1, unkn, unkn, unkn, 0x7b, unkn, unkn, unkn, 0xc4, unkn, unkn, unkn, 0xd2, unkn, unkn, // 0xex
0x56, unkn, 0x5f, unkn, 0x80, unkn, 0x16, unkn, unkn, 0xc5, unkn, unkn, unkn, unkn, 0x22, unkn, // 0xfx
};
static const uint8_t opcodes_sub_table_08[0x100] =
{// 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
unkn, 0x19, unkn, unkn, unkn, unkn, 0xc8, unkn, unkn, unkn, 0x27, unkn, unkn, 0x37, unkn, 0x2b, // 0x0x
unkn, 0x28, 0x0e, unkn, 0x69, 0x3e, unkn, 0xcc, unkn, unkn, 0x3d, unkn, unkn, 0xc3, unkn, 0x77, // 0x1x
0x16, unkn, unkn, unkn, 0x23, unkn, 0xca, 0xe7, unkn, 0x1d, 0x4e, 0xc9, unkn, 0xc4, unkn, unkn, // 0x2x
unkn, unkn, unkn, 0x1f, unkn, 0x47, unkn, 0x17, unkn, unkn, unkn, unkn, 0xcd, 0x0d, 0xfe, unkn, // 0x3x
0xdf, unkn, unkn, 0x68, unkn, 0xd8, 0x22, unkn, unkn, unkn, unkn, unkn, unkn, unkn, 0xe1, 0xe5, // 0x4x
unkn, unkn, 0xb6, unkn, unkn, unkn, unkn, 0x32, unkn, unkn, 0xbe, unkn, unkn, unkn, unkn, 0x11, // 0x5x
unkn, unkn, unkn, unkn, unkn, unkn, unkn, 0x35, unkn, 0x7a, unkn, unkn, unkn, unkn, unkn, 0x56, // 0x6x
0xd3, unkn, unkn, unkn, unkn, 0x71, unkn, unkn, 0x06, unkn, 0xf6, unkn, unkn, 0x36, unkn, unkn, // 0x7x
unkn, unkn, 0xcb, 0xba, unkn, unkn, unkn, unkn, unkn, 0x10, unkn, 0xdd, 0xc6, unkn, unkn, unkn, // 0x8x
0x1e, 0x4f, unkn, unkn, unkn, 0x3a, 0xb9, 0x18, 0x78, unkn, 0x2a, unkn, 0x14, unkn, unkn, 0x52, // 0x9x
unkn, unkn, 0x57, 0xa6, unkn, unkn, unkn, 0x38, unkn, 0xe6, unkn, 0x21, 0xc1, unkn, unkn, 0xa0, // 0xax
0xbf, unkn, unkn, unkn, unkn, unkn, unkn, 0xb7, 0x01, 0xd5, 0x42, unkn, 0x7c, unkn, 0xf2, unkn, // 0xbx
unkn, 0xf5, unkn, 0xf1, 0xdb, 0xb0, unkn, 0x0f, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, // 0xcx
unkn, unkn, unkn, unkn, 0x04, unkn, unkn, unkn, 0xd7, unkn, 0x5f, unkn, 0x34, unkn, unkn, unkn, // 0xdx
0x30, 0x1b, 0xbb, unkn, unkn, 0xb5, 0x20, unkn, unkn, unkn, unkn, unkn, 0x07, unkn, 0x12, 0x79, // 0xex
unkn, unkn, unkn, unkn, unkn, unkn, 0x7e, unkn, unkn, 0xaf, 0x46, unkn, unkn, unkn, unkn, 0xc0, // 0xfx
};
static const uint8_t opcodes_sub_table_09[0x100] =
{// 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
0xca, 0x3d, unkn, unkn, unkn, unkn, unkn, unkn, 0x66, 0x20, unkn, unkn, 0x7c, 0xed, unkn, 0x77, // 0x0x
0x10, unkn, 0xfa, 0xb8, unkn, unkn, unkn, 0xbb, 0x3c, 0x7f, unkn, 0xa6, unkn, unkn, unkn, unkn, // 0x1x
unkn, 0xd7, 0x38, 0x1f, 0xdf, unkn, 0xd2, 0xf6, unkn, unkn, 0x23, 0x1e, 0xc3, unkn, 0x2f, 0x1a, // 0x2x
0xd3, unkn, unkn, unkn, unkn, 0xb9, unkn, unkn, 0x16, unkn, 0xb5, 0xb0, 0x79, unkn, unkn, unkn, // 0x3x
0xcd, unkn, unkn, 0xc2, unkn, unkn, unkn, unkn, unkn, 0x0b, 0x3e, unkn, 0x17, 0x12, 0xdb, 0x52, // 0x4x
unkn, unkn, 0x28, 0x24, 0x34, 0xb6, 0xcb, 0x36, 0x6f, 0xea, unkn, unkn, unkn, 0x7e, unkn, unkn, // 0x5x
unkn, unkn, unkn, unkn, 0xf7, 0x4e, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, 0xc8, unkn, // 0x6x
0xe6, 0xf5, 0xb7, unkn, unkn, 0xdd, unkn, 0x27, unkn, 0xda, 0x87, unkn, unkn, unkn, 0xa5, unkn, // 0x7x
unkn, unkn, 0xf1, unkn, unkn, unkn, unkn, 0x47, unkn, 0xd6, unkn, unkn, 0x0e, unkn, unkn, 0x35, // 0x8x
unkn, unkn, unkn, 0xd1, 0x22, unkn, unkn, unkn, unkn, 0x2a, unkn, 0x15, unkn, unkn, unkn, unkn, // 0x9x
0x0c, 0x57, unkn, unkn, unkn, unkn, 0x32, 0x67, unkn, unkn, unkn, unkn, 0x5f, unkn, unkn, unkn, // 0xax
0x58, unkn, unkn, unkn, unkn, 0x14, unkn, 0x19, 0xe5, 0x2b, 0xaf, unkn, 0x29, unkn, unkn, 0x1d, // 0xbx
0x11, unkn, 0x4f, unkn, 0xa9, unkn, unkn, unkn, 0x01, 0xfe, 0x30, 0xc9, unkn, 0xb3, unkn, 0x04, // 0xcx
0x56, unkn, unkn, 0x3a, unkn, 0x0f, unkn, 0xe1, unkn, unkn, 0x18, unkn, 0x21, unkn, 0xc0, unkn, // 0xdx
unkn, unkn, unkn, unkn, 0xd5, 0xb1, unkn, unkn, 0xc5, unkn, unkn, unkn, 0x06, unkn, unkn, 0xc1, // 0xex
0x7a, unkn, unkn, 0x7d, unkn, 0x13, unkn, unkn, 0x07, unkn, unkn, 0xe7, unkn, unkn, unkn, 0xfb, // 0xfx
};
static const uint8_t opcodes_sub_table_0a[0x100] =
{// 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
unkn, unkn, 0xcb, 0xb5, unkn, 0xb9, unkn, 0xca, 0x18, unkn, 0x38, unkn, 0x47, 0x04, 0x2f, 0xed, // 0x0x
0xc1, unkn, 0x34, unkn, unkn, unkn, 0x7b, 0xb1, 0xc5, unkn, unkn, unkn, 0x1d, unkn, unkn, unkn, // 0x1x
unkn, 0xdd, unkn, unkn, unkn, 0x27, unkn, unkn, unkn, 0x1a, unkn, unkn, 0x3d, 0xf6, unkn, unkn, // 0x2x
unkn, unkn, 0x6f, 0x06, 0x1e, 0x13, 0xd8, unkn, unkn, 0x10, 0x1b, 0x28, unkn, 0x4f, 0x11, 0xa3, // 0x3x
0x23, unkn, 0xe6, unkn, 0x7d, 0xc0, 0xd5, unkn, 0xc8, 0x2b, unkn, unkn, unkn, unkn, 0x3a, unkn, // 0x4x
unkn, unkn, unkn, unkn, unkn, unkn, unkn, 0xfe, unkn, 0xc2, 0xaf, unkn, 0x20, unkn, 0x14, unkn, // 0x5x
0x12, unkn, unkn, 0xcd, 0xda, 0xfb, unkn, unkn, unkn, unkn, unkn, unkn, 0x35, 0xa1, 0x57, unkn, // 0x6x
unkn, 0x7c, unkn, 0x87, 0xab, unkn, unkn, 0x0e, unkn, unkn, 0xc3, unkn, unkn, unkn, 0xb7, unkn, // 0x7x
0x79, unkn, unkn, unkn, unkn, 0x16, 0xd7, 0x01, 0x4d, unkn, unkn, 0x36, unkn, 0x58, unkn, 0x30, // 0x8x
unkn, unkn, unkn, unkn, 0xe1, unkn, unkn, 0x8e, unkn, 0xb8, unkn, unkn, 0xe7, 0xfd, unkn, unkn, // 0x9x
0xb0, unkn, unkn, unkn, 0xb3, unkn, 0xbe, unkn, unkn, 0xc9, 0x67, unkn, unkn, unkn, unkn, 0x7a, // 0xax
unkn, unkn, 0x3c, 0x22, 0x19, 0x2a, 0x5e, unkn, unkn, 0x78, unkn, unkn, unkn, 0x3e, 0x4e, unkn, // 0xbx
unkn, 0xe5, unkn, unkn, 0xf2, unkn, unkn, 0xc6, 0x32, unkn, 0xae, unkn, 0x70, unkn, unkn, unkn, // 0xcx
unkn, unkn, unkn, 0xf5, 0x77, 0x21, 0xa5, 0x7e, unkn, 0xdf, unkn, unkn, unkn, 0x31, 0xf3, unkn, // 0xdx
0xc4, unkn, 0x0f, 0x7f, unkn, unkn, unkn, unkn, unkn, unkn, 0x07, 0x1f, unkn, unkn, unkn, 0x05, // 0xex
unkn, unkn, 0x5f, unkn, unkn, unkn, 0x15, unkn, unkn, unkn, unkn, 0xd3, 0xd1, unkn, unkn, unkn, // 0xfx
};
static const uint8_t opcodes_sub_table_0b[0x100] =
{// 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
0x38, unkn, unkn, unkn, unkn, unkn, 0xb1, unkn, 0xb5, 0x1d, 0xb6, unkn, 0x34, unkn, unkn, unkn, // 0x0x
unkn, 0x4d, unkn, unkn, 0xcb, 0xc3, unkn, unkn, unkn, 0x3a, unkn, unkn, unkn, 0xfd, unkn, unkn, // 0x1x
unkn, unkn, unkn, 0xb7, 0x4f, unkn, unkn, 0x28, 0x47, unkn, unkn, unkn, unkn, unkn, 0xe5, 0x18, // 0x2x
unkn, unkn, unkn, unkn, unkn, 0xc2, unkn, 0x7c, unkn, 0xa5, unkn, unkn, unkn, unkn, unkn, unkn, // 0x3x
0x19, unkn, unkn, unkn, unkn, unkn, unkn, 0xfe, unkn, unkn, unkn, unkn, unkn, 0x15, 0xe6, 0x10, // 0x4x
unkn, 0xd1, 0x57, 0x3d, 0x79, unkn, unkn, 0xc5, unkn, 0x32, unkn, unkn, 0xd6, unkn, 0x2f, unkn, // 0x5x
unkn, unkn, unkn, unkn, 0x02, unkn, unkn, unkn, 0xbe, 0x04, unkn, unkn, 0xae, 0xaf, 0xe1, 0x21, // 0x6x
unkn, 0x0f, unkn, 0xe9, 0x23, 0xb9, 0xc6, unkn, unkn, 0x35, unkn, 0x70, unkn, 0xb0, 0x12, unkn, // 0x7x
unkn, unkn, 0xed, unkn, 0xd7, unkn, unkn, unkn, unkn, 0xb3, unkn, 0x78, unkn, unkn, unkn, 0x1c, // 0x8x
0xa3, unkn, 0x20, unkn, unkn, unkn, unkn, unkn, unkn, unkn, 0x16, 0x1a, unkn, 0x2b, unkn, 0xc0, // 0x9x
unkn, unkn, 0xda, unkn, 0x77, 0xf2, unkn, 0xf5, unkn, 0xd3, unkn, unkn, 0x09, unkn, 0x36, unkn, // 0xax
0x2a, unkn, unkn, unkn, 0x7d, unkn, 0x52, unkn, 0x1e, unkn, 0x0b, unkn, unkn, unkn, unkn, 0xd8, // 0xbx
0xa6, 0x08, 0x7e, unkn, unkn, unkn, 0x01, unkn, unkn, unkn, 0xcd, 0xca, unkn, unkn, 0xdd, unkn, // 0xcx
0x0e, 0xe7, 0x3c, unkn, unkn, 0x7a, unkn, unkn, unkn, unkn, 0x31, unkn, unkn, 0x07, unkn, unkn, // 0xdx
unkn, unkn, unkn, unkn, unkn, unkn, unkn, 0x0d, 0x46, unkn, 0x11, unkn, 0xdb, unkn, 0x5f, 0x22, // 0xex
unkn, 0x5b, 0xd2, 0x3e, unkn, unkn, unkn, unkn, unkn, 0x13, 0x0a, 0xbb, 0xc9, 0x06, unkn, unkn, // 0xfx
};
static const uint8_t opcodes_sub_table_0c[0x100] =
{// 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
unkn, 0x3c, 0x06, unkn, 0xc1, 0x0f, 0x18, 0x0d, unkn, unkn, unkn, 0xd7, unkn, 0x77, 0x2c, unkn, // 0x0x
0x78, 0x30, unkn, unkn, unkn, 0xdb, unkn, unkn, unkn, 0xb9, 0xd1, 0x7e, unkn, unkn, 0xfe, 0x72, // 0x1x
unkn, unkn, unkn, unkn, unkn, 0x1f, 0xd8, unkn, unkn, unkn, 0xc5, unkn, 0xd3, unkn, unkn, unkn, // 0x2x
0xc3, 0x22, unkn, unkn, 0x7f, unkn, unkn, 0x86, unkn, 0x56, unkn, unkn, 0x52, unkn, unkn, 0xd2, // 0x3x
unkn, unkn, 0x32, unkn, unkn, unkn, unkn, 0x3e, 0xb7, unkn, unkn, 0xb5, 0x3d, unkn, unkn, unkn, // 0x4x
unkn, 0x47, 0x66, unkn, unkn, unkn, 0x14, unkn, unkn, 0xb3, 0x71, unkn, unkn, unkn, unkn, 0x20, // 0x5x
unkn, unkn, unkn, 0xe6, unkn, 0x57, unkn, 0xdf, 0x2a, unkn, 0x4f, unkn, unkn, 0x79, unkn, 0xbe, // 0x6x
unkn, 0xe7, unkn, 0xc8, unkn, 0x5b, unkn, unkn, 0x46, 0xc0, unkn, unkn, 0x5e, unkn, unkn, unkn, // 0x7x
0x7b, unkn, 0x23, unkn, 0xd6, 0x16, 0x7d, unkn, unkn, unkn, unkn, unkn, unkn, 0xc9, 0x21, unkn, // 0x8x
0xf1, unkn, 0xb1, unkn, 0x43, unkn, unkn, unkn, 0xf6, unkn, 0xbb, 0x27, unkn, unkn, 0x04, unkn, // 0x9x
0xea, unkn, 0x01, 0xdd, unkn, unkn, unkn, unkn, 0x3f, unkn, unkn, unkn, unkn, unkn, unkn, 0x28, // 0xax
unkn, unkn, 0xda, unkn, 0xcd, unkn, unkn, unkn, unkn, 0xaf, 0x38, unkn, unkn, 0xe9, 0x34, 0x36, // 0xbx
0xf5, unkn, unkn, 0x10, unkn, 0x1a, unkn, 0x7c, unkn, unkn, 0xc2, unkn, 0x07, 0xcb, 0x11, unkn, // 0xcx
0x3a, unkn, unkn, 0xe5, 0xd5, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, // 0xdx
0xca, 0xb8, unkn, unkn, 0x2f, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, // 0xex
unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, 0x5f, unkn, 0x1e, unkn, 0x2b, unkn, unkn, // 0xfx
};
static const uint8_t opcodes_sub_table_0d[0x100] =
{// 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
unkn, 0x35, 0xcd, unkn, unkn, 0x38, unkn, 0x47, unkn, unkn, unkn, unkn, 0xfb, 0x24, unkn, unkn, // 0x0x
0xd7, 0x7e, unkn, unkn, unkn, unkn, unkn, unkn, unkn, 0xb1, unkn, 0xf6, unkn, unkn, unkn, unkn, // 0x1x
unkn, unkn, unkn, 0x3e, unkn, 0xd0, 0x4a, unkn, unkn, unkn, 0xb2, unkn, unkn, unkn, 0x01, 0xf7, // 0x2x
unkn, unkn, 0xd2, unkn, 0x66, unkn, unkn, unkn, 0xaf, 0x2b, 0x16, unkn, unkn, unkn, 0xe7, 0xfd, // 0x3x
0xf1, 0x02, 0x7c, unkn, unkn, unkn, unkn, unkn, unkn, 0xea, 0x34, unkn, unkn, unkn, unkn, unkn, // 0x4x
0xdf, 0xb8, unkn, 0xd6, unkn, unkn, 0x2f, 0x18, 0x1b, unkn, unkn, 0xed, 0x77, 0x4e, 0x7b, unkn, // 0x5x
0x11, unkn, unkn, unkn, 0x79, 0xff, 0x23, unkn, unkn, 0x26, 0x28, 0xfe, unkn, unkn, unkn, 0x57, // 0x6x
unkn, unkn, unkn, unkn, 0xe6, 0xc5, 0x32, unkn, unkn, 0x1d, unkn, 0xf2, unkn, unkn, 0x7a, unkn, // 0x7x
unkn, 0xcb, 0x04, unkn, 0x06, 0xb7, unkn, unkn, unkn, 0x2a, 0xbb, 0x27, unkn, unkn, unkn, unkn, // 0x8x
0x6f, 0x0f, unkn, 0x3f, unkn, 0xcc, 0x3a, 0x4f, 0xc6, unkn, unkn, unkn, 0x1a, 0x0e, unkn, unkn, // 0x9x
unkn, unkn, unkn, unkn, unkn, 0x22, unkn, unkn, unkn, unkn, unkn, 0xc4, 0x14, 0xc0, unkn, unkn, // 0xax
0x07, 0x20, unkn, 0xc2, unkn, unkn, unkn, unkn, unkn, unkn, unkn, 0xe5, unkn, 0x21, unkn, unkn, // 0xbx
0xc3, unkn, 0x46, unkn, 0x3c, unkn, 0x87, unkn, unkn, unkn, unkn, unkn, unkn, 0xd8, 0xd1, unkn, // 0xcx
0x78, unkn, 0xd3, 0xc9, unkn, unkn, unkn, 0xc1, unkn, 0x86, unkn, unkn, 0xb5, unkn, unkn, unkn, // 0xdx
0xdd, unkn, unkn, unkn, unkn, unkn, 0xe1, unkn, 0x72, unkn, 0x15, unkn, unkn, 0x30, unkn, 0x10, // 0xex
unkn, unkn, unkn, unkn, 0xbe, unkn, 0xda, 0xdb, unkn, 0x1e, unkn, unkn, 0x36, unkn, unkn, unkn, // 0xfx
};
static const uint8_t opcodes_sub_table_0e[0x100] =
{// 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
0xfd, unkn, 0x20, unkn, unkn, unkn, 0x35, unkn, unkn, 0xdd, 0x0a, 0xd8, 0x01, unkn, unkn, unkn, // 0x0x
unkn, 0x04, 0xbf, unkn, 0x87, unkn, 0x05, unkn, unkn, unkn, 0x16, unkn, 0xa1, 0xaf, unkn, unkn, // 0x1x
unkn, 0xf7, 0x46, unkn, 0x42, unkn, 0xb1, 0x47, unkn, 0xc4, unkn, unkn, unkn, 0xc0, 0x38, unkn, // 0x2x
0x1e, unkn, unkn, unkn, unkn, 0x0f, 0x3d, unkn, unkn, unkn, unkn, unkn, 0xdf, unkn, unkn, unkn, // 0x3x
0x57, 0x56, unkn, unkn, unkn, 0x79, 0xa2, unkn, unkn, unkn, 0x6f, unkn, 0x9e, 0xd7, unkn, 0xed, // 0x4x
0x4e, unkn, unkn, 0x19, unkn, 0x15, unkn, unkn, 0x86, unkn, 0x23, unkn, unkn, unkn, 0xbb, unkn, // 0x5x
unkn, unkn, unkn, 0x4f, 0xe7, 0x22, unkn, unkn, unkn, unkn, unkn, 0xd0, 0xc6, 0xb0, unkn, unkn, // 0x6x
unkn, 0x7a, 0xd2, unkn, unkn, 0xc5, 0xe5, unkn, unkn, unkn, 0x0e, unkn, unkn, unkn, unkn, unkn, // 0x7x
0xf5, unkn, unkn, unkn, 0x11, unkn, unkn, unkn, unkn, 0x2a, unkn, 0xd3, unkn, unkn, 0xcb, unkn, // 0x8x
0x8e, 0x7c, 0x7e, unkn, 0xc1, unkn, unkn, unkn, 0x36, unkn, unkn, unkn, 0x21, unkn, 0xe9, unkn, // 0x9x
0x3a, 0x4a, 0xa5, 0xba, unkn, 0x77, unkn, 0xd5, unkn, unkn, unkn, unkn, unkn, unkn, unkn, 0xc3, // 0xax
unkn, unkn, 0x3e, 0x32, unkn, unkn, unkn, unkn, unkn, 0x2b, 0xc9, 0xe6, unkn, unkn, unkn, unkn, // 0xbx
unkn, unkn, 0x75, unkn, 0xa6, unkn, unkn, 0x07, unkn, unkn, 0xcf, unkn, 0x0d, unkn, 0xc2, unkn, // 0xcx
unkn, unkn, unkn, unkn, 0x28, unkn, unkn, 0x1a, 0xe1, 0xd1, 0xc8, unkn, unkn, 0xb9, unkn, unkn, // 0xdx
unkn, unkn, 0x12, 0xb7, unkn, unkn, unkn, unkn, 0x7f, unkn, unkn, unkn, 0x06, unkn, unkn, unkn, // 0xex
0xd6, 0xca, unkn, 0x66, unkn, unkn, unkn, 0x7b, 0x18, 0xcd, 0x70, 0xfe, unkn, unkn, 0x71, 0xf1, // 0xfx
};
static const uint8_t opcodes_sub_table_0f[0x100] =
{// 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
unkn, unkn, unkn, 0xaf, 0x0d, unkn, unkn, unkn, unkn, unkn, 0xb2, 0xe7, unkn, unkn, 0xd1, unkn, // 0x0x
unkn, unkn, unkn, unkn, unkn, 0x0f, 0x77, unkn, unkn, 0xba, 0xa5, unkn, unkn, unkn, 0x18, 0xd3, // 0x1x
0x79, 0x5f, unkn, 0xf6, unkn, unkn, unkn, 0x0c, unkn, unkn, unkn, unkn, unkn, unkn, 0x7c, unkn, // 0x2x
unkn, unkn, unkn, 0xc5, unkn, unkn, unkn, unkn, 0xc6, unkn, unkn, 0x6f, 0xfd, 0xeb, unkn, unkn, // 0x3x
unkn, 0x30, 0xe6, unkn, 0xfb, unkn, unkn, unkn, 0xb1, unkn, unkn, unkn, unkn, unkn, unkn, 0x36, // 0x4x
0xcd, 0x04, unkn, unkn, 0x1d, 0x35, unkn, 0xdd, unkn, 0xb5, 0x12, unkn, unkn, unkn, unkn, unkn, // 0x5x
unkn, unkn, 0x4e, 0x47, 0x38, unkn, unkn, 0x3e, 0x7e, unkn, unkn, unkn, unkn, unkn, unkn, unkn, // 0x6x
unkn, unkn, unkn, 0x32, unkn, unkn, 0x06, unkn, unkn, unkn, unkn, 0xc9, unkn, 0x75, 0x29, 0x19, // 0x7x
unkn, 0x5b, unkn, 0x2f, 0x28, unkn, unkn, unkn, unkn, unkn, unkn, unkn, 0xb9, unkn, unkn, 0xfe, // 0x8x
0x85, 0xdb, unkn, 0x57, 0xe5, unkn, unkn, 0x15, 0x0e, unkn, 0xd8, 0x09, 0x3a, unkn, unkn, unkn, // 0x9x
unkn, 0x22, 0x16, 0xc1, unkn, unkn, unkn, unkn, 0x05, 0xc8, 0xe3, unkn, 0xbe, unkn, unkn, unkn, // 0xax
unkn, 0x3d, unkn, unkn, 0x3c, 0x21, unkn, unkn, unkn, 0x23, unkn, unkn, 0x11, unkn, unkn, 0x2a, // 0xbx
0xed, 0xc3, 0xe1, 0xd6, unkn, 0xb0, unkn, 0x1e, unkn, unkn, 0xf7, unkn, unkn, unkn, 0xf1, 0x34, // 0xcx
unkn, 0x0a, unkn, 0xd0, 0x2b, unkn, unkn, 0x13, unkn, unkn, 0xd5, unkn, unkn, unkn, 0x08, unkn, // 0xdx
0xd2, 0x01, unkn, 0x42, unkn, 0x20, 0xca, unkn, unkn, unkn, unkn, unkn, 0xb8, unkn, 0xc2, 0xc0, // 0xex
0x31, 0xcb, 0x07, unkn, unkn, 0x27, unkn, unkn, unkn, unkn, 0xb7, 0x7a, unkn, 0x10, unkn, unkn, // 0xfx
};
uint8_t *rom = memregion("maincpu")->base();
for (int i = 0; i < 0x2000; i++)
{
uint8_t x = rom[i];
switch(i & 0x0f)
{
case 0x00: m_decrypted_opcodes[i] = opcodes_sub_table_00[x]; break;
case 0x01: m_decrypted_opcodes[i] = opcodes_sub_table_01[x]; break;
case 0x02: m_decrypted_opcodes[i] = opcodes_sub_table_02[x]; break;
case 0x03: m_decrypted_opcodes[i] = opcodes_sub_table_03[x]; break;
case 0x04: m_decrypted_opcodes[i] = opcodes_sub_table_04[x]; break;
case 0x05: m_decrypted_opcodes[i] = opcodes_sub_table_05[x]; break;
case 0x06: m_decrypted_opcodes[i] = opcodes_sub_table_06[x]; break;
case 0x07: m_decrypted_opcodes[i] = opcodes_sub_table_07[x]; break;
case 0x08: m_decrypted_opcodes[i] = opcodes_sub_table_08[x]; break;
case 0x09: m_decrypted_opcodes[i] = opcodes_sub_table_09[x]; break;
case 0x0a: m_decrypted_opcodes[i] = opcodes_sub_table_0a[x]; break;
case 0x0b: m_decrypted_opcodes[i] = opcodes_sub_table_0b[x]; break;
case 0x0c: m_decrypted_opcodes[i] = opcodes_sub_table_0c[x]; break;
case 0x0d: m_decrypted_opcodes[i] = opcodes_sub_table_0d[x]; break;
case 0x0e: m_decrypted_opcodes[i] = opcodes_sub_table_0e[x]; break;
case 0x0f: m_decrypted_opcodes[i] = opcodes_sub_table_0f[x]; break;
}
}
// data
static const uint8_t data_sub_table_00[0x100] =
{// 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
0xfd, unkn, unkn, unkn, 0x86, 0x6c, unkn, 0x00, 0x0c, 0xff, 0x60, unkn, unkn, unkn, 0x24, unkn, // 0x0x
0x07, unkn, 0x78, unkn, 0x55, unkn, 0x1a, 0xe9, 0x5b, 0x32, 0x0b, unkn, unkn, unkn, unkn, unkn, // 0x1x
0x62, unkn, unkn, unkn, unkn, unkn, 0x66, unkn, 0x49, 0xe4, unkn, 0x16, 0x0f, 0x17, unkn, unkn, // 0x2x
0xce, unkn, 0x04, 0x5e, 0xa5, 0x3c, 0x01, unkn, 0x50, unkn, 0x54, unkn, 0x69, 0xf8, 0xc5, 0x82, // 0x3x
0x45, unkn, unkn, unkn, 0x0a, 0x14, unkn, 0x93, 0x1f, unkn, unkn, 0x1b, 0x13, unkn, unkn, 0x4a, // 0x4x
unkn, unkn, 0x63, 0x83, 0x0e, unkn, unkn, 0x7e, unkn, 0xd7, 0x39, unkn, unkn, 0x3b, 0xa7, 0xc6, // 0x5x
0x23, 0x1d, unkn, unkn, unkn, unkn, 0x56, 0x90, 0x65, 0x44, unkn, unkn, 0x67, 0x57, 0x46, 0xef, // 0x6x
0x3f, 0xf1, unkn, unkn, unkn, unkn, 0x10, 0xf0, unkn, unkn, unkn, 0x08, unkn, unkn, unkn, 0x3e, // 0x7x
unkn, 0x41, unkn, unkn, unkn, 0x8c, 0x03, unkn, 0xa4, unkn, unkn, 0xd8, unkn, 0xb4, 0xee, 0x6e, // 0x8x
0x96, 0x6a, 0x27, 0xad, 0x12, unkn, unkn, 0x30, 0x2b, 0x53, 0x48, unkn, 0x80, 0x42, 0x77, unkn, // 0x9x
0x11, unkn, unkn, 0xb0, 0x52, 0xf9, unkn, 0x85, unkn, unkn, 0x5c, 0x09, unkn, 0x22, 0x4d, unkn, // 0xax
unkn, 0xe0, 0x2a, 0x64, 0x1c, 0x05, 0x4c, unkn, 0x18, 0x2d, 0x20, unkn, 0xd0, unkn, unkn, 0x7c, // 0xbx
unkn, unkn, unkn, unkn, 0x0d, unkn, 0x47, 0x15, 0x75, 0xd1, unkn, unkn, 0x2c, unkn, 0xc0, 0xbb, // 0xcx
0xa2, unkn, 0x35, unkn, 0x4f, unkn, unkn, unkn, 0x2e, 0x43, unkn, unkn, 0x68, 0x25, unkn, 0xf3, // 0xdx
unkn, 0x4b, 0xe8, 0xf4, unkn, unkn, 0xbf, unkn, 0x31, 0xf5, 0xa0, unkn, unkn, 0xc4, 0x1e, 0x4e, // 0xex
0x8e, unkn, unkn, unkn, unkn, 0xe6, 0x76, 0x33, 0x06, unkn, unkn, unkn, unkn, 0x02, unkn, unkn // 0xfx
};
static const uint8_t data_sub_table_01[0x100] =
{// 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
unkn, unkn, 0x52, unkn, unkn, 0x85, 0x34, 0x60, unkn, unkn, 0x56, unkn, unkn, 0x0b, unkn, 0x7f, // 0x0x
unkn, unkn, 0x9e, 0x1d, 0x63, 0x2a, 0xb0, unkn, unkn, unkn, unkn, 0x4e, unkn, 0x35, 0xea, unkn, // 0x1x
0x0d, 0xe2, 0x40, 0x45, unkn, unkn, unkn, unkn, 0x08, 0xef, 0x21, unkn, 0x7e, 0x10, unkn, 0x2d, // 0x2x
0x19, 0x0a, unkn, 0x0f, unkn, unkn, 0x50, 0xf4, unkn, unkn, 0x06, unkn, unkn, 0x4d, unkn, unkn, // 0x3x
0x30, 0xb4, unkn, 0xf8, unkn, 0xad, 0x1c, 0x3b, unkn, 0x2b, 0x93, 0xe4, unkn, unkn, unkn, unkn, // 0x4x
0x55, unkn, 0x2e, 0x05, 0xd7, 0x84, unkn, unkn, 0x6a, unkn, 0xcc, unkn, unkn, unkn, 0xe8, unkn, // 0x5x
0xc0, unkn, 0xe9, 0x13, unkn, 0x4a, 0x61, 0x1b, 0xaa, unkn, unkn, 0x59, unkn, unkn, unkn, unkn, // 0x6x
0x6c, unkn, unkn, unkn, 0xfb, unkn, unkn, unkn, 0x66, unkn, unkn, unkn, 0xf9, 0x4c, unkn, unkn, // 0x7x
unkn, 0x53, 0xe6, 0x46, 0x49, 0x1f, 0x09, unkn, 0x00, unkn, 0x16, 0xa0, unkn, 0x17, 0xa2, 0xa4, // 0x8x
unkn, 0x1e, 0x5a, unkn, 0x74, unkn, 0x5e, unkn, 0xcf, 0xc4, 0x65, unkn, unkn, unkn, 0x26, unkn, // 0x9x
unkn, 0x1a, 0x7c, 0x4b, unkn, unkn, unkn, 0x51, 0xc2, 0x47, unkn, unkn, unkn, 0x43, 0x3c, 0x62, // 0xax
unkn, unkn, unkn, 0x23, 0x18, 0x2c, 0x5b, 0x04, unkn, unkn, unkn, 0x42, 0xf0, 0x0e, unkn, 0xfc, // 0xbx
0x0c, 0xf3, unkn, 0xdd, 0x32, unkn, 0x54, 0x4f, unkn, 0x41, unkn, unkn, 0x03, unkn, unkn, unkn, // 0xcx
unkn, 0x7b, 0x68, unkn, 0x44, 0x02, 0x37, unkn, unkn, unkn, 0x48, 0x12, 0xb6, 0x20, unkn, 0x57, // 0xdx
0x2f, unkn, 0x8e, 0x15, 0x07, unkn, unkn, 0xfd, unkn, 0xa6, 0xa1, unkn, unkn, unkn, unkn, unkn, // 0xex
0x80, unkn, 0x01, 0x64, 0x39, 0x3d, unkn, 0x90, unkn, unkn, 0x76, 0xff, 0xf1, unkn, 0x11, unkn // 0xfx
};
static const uint8_t data_sub_table_02[0x100] =
{// 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
unkn, unkn, 0x43, 0x4a, unkn, 0xb3, 0x93, 0x1a, 0xdc, unkn, unkn, unkn, 0xa7, 0x48, unkn, 0xd7, // 0x0x
unkn, unkn, 0x05, unkn, unkn, unkn, unkn, unkn, 0x15, unkn, 0x60, 0x42, unkn, unkn, 0x2a, unkn, // 0x1x
0x67, unkn, 0x38, unkn, 0x55, unkn, unkn, 0xac, 0x83, unkn, 0xa1, unkn, 0xf4, unkn, unkn, 0x46, // 0x2x
unkn, 0x50, unkn, 0x18, 0x3e, 0x11, 0xe6, unkn, unkn, 0x62, 0x76, 0x5e, 0xe0, 0x0f, 0xfd, 0x2e, // 0x3x
0x45, 0x33, 0x61, unkn, 0x2d, unkn, 0x1c, 0x24, 0x19, unkn, unkn, 0xc9, unkn, 0x02, 0xc7, unkn, // 0x4x
0x2c, unkn, 0x0e, 0xc0, 0x08, unkn, 0xf8, 0x14, 0x7e, 0xad, 0x3b, unkn, unkn, 0x39, unkn, 0xf6, // 0x5x
0xa5, unkn, 0x4c, unkn, 0x23, 0x54, unkn, unkn, unkn, 0x0a, unkn, unkn, unkn, unkn, unkn, unkn, // 0x6x
0x2b, 0xdd, 0x6b, unkn, 0x5c, unkn, 0x00, unkn, unkn, unkn, unkn, 0x36, unkn, 0x57, 0xce, unkn, // 0x7x
0x1d, unkn, unkn, unkn, 0xbf, 0x32, 0xf0, 0x4f, 0x16, 0x35, 0x63, 0x21, 0x0c, 0x1b, unkn, unkn, // 0x8x
0x56, unkn, 0xef, unkn, 0x06, unkn, 0x59, 0x04, 0x41, unkn, unkn, unkn, 0x4b, unkn, unkn, unkn, // 0x9x
0x28, 0x7b, 0x3d, unkn, unkn, 0x12, 0xb6, unkn, 0x44, 0xb4, unkn, unkn, unkn, 0x09, unkn, unkn, // 0xax
0xd2, unkn, 0xff, 0x3c, 0x6a, 0x20, 0xab, unkn, unkn, 0x40, 0xee, 0xa0, unkn, 0xbb, 0x68, 0x1e, // 0xbx
0xc5, 0x49, 0x6d, unkn, unkn, 0x17, 0xfc, unkn, unkn, 0xb0, unkn, unkn, 0x2f, unkn, 0xbe, unkn, // 0xcx
unkn, unkn, 0x10, unkn, 0x3a, unkn, 0x4d, unkn, 0xf2, 0x0d, 0xd0, unkn, unkn, 0x34, unkn, 0xbd, // 0xdx
unkn, unkn, 0x4e, 0x3f, unkn, 0xcc, 0x0b, 0x7c, 0x01, unkn, 0x88, 0x5a, 0x53, 0x03, unkn, unkn, // 0xex
0xc6, unkn, 0xf7, 0x30, unkn, 0x13, 0x85, unkn, unkn, unkn, unkn, 0x51, 0x52, 0x80, 0x07, 0xf5 // 0xfx
};
static const uint8_t data_sub_table_03[0x100] =
{// 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
0xad, 0x34, unkn, unkn, unkn, unkn, 0x30, 0x09, unkn, unkn, unkn, unkn, unkn, unkn, 0x17, 0x3e, // 0x0x
0x60, unkn, unkn, unkn, 0xa2, unkn, 0x21, 0x39, 0x80, unkn, unkn, 0x7d, 0x05, 0x28, 0x06, 0x25, // 0x1x
0x0d, unkn, 0x10, 0xb6, 0x26, unkn, 0x24, 0x57, 0xef, unkn, 0x0e, unkn, 0xee, 0x67, unkn, unkn, // 0x2x
unkn, 0x1f, 0x32, unkn, unkn, 0x38, unkn, 0x69, unkn, 0xf6, unkn, unkn, 0x65, 0x2c, 0x23, 0x14, // 0x3x
0x40, unkn, 0x04, 0x3c, 0x12, 0xe3, 0x4c, unkn, unkn, 0xf8, unkn, 0xc5, 0x4e, unkn, unkn, 0x15, // 0x4x
0xf1, 0x20, unkn, 0x93, unkn, 0x94, unkn, 0x16, 0xa5, unkn, unkn, 0xdc, 0x5a, unkn, 0x19, unkn, // 0x5x
0xff, unkn, 0x3b, unkn, 0x55, 0x4b, unkn, unkn, 0x54, 0x47, unkn, 0x50, unkn, unkn, 0x46, unkn, // 0x6x
unkn, unkn, unkn, 0x13, unkn, 0x6e, unkn, unkn, unkn, 0xb0, unkn, 0xb3, 0x90, 0x7a, unkn, unkn, // 0x7x
0xd7, 0xf0, unkn, 0x42, unkn, unkn, 0xc3, unkn, unkn, 0xd5, unkn, 0x22, 0x4a, unkn, 0x4f, unkn, // 0x8x
unkn, 0x6a, 0xdb, 0xf7, unkn, 0x37, unkn, unkn, 0xfc, 0x02, unkn, unkn, 0xbd, unkn, unkn, unkn, // 0x9x
0x11, 0x53, unkn, unkn, unkn, 0x1c, unkn, 0x52, 0x63, 0xbc, 0x41, 0xf9, unkn, unkn, 0xc4, unkn, // 0xax
0x18, unkn, 0xbb, 0x0f, 0x4d, 0x1b, unkn, unkn, unkn, 0xe0, unkn, 0x61, 0x43, unkn, 0x44, 0xaa, // 0xbx
unkn, 0x0b, unkn, unkn, 0xcc, 0x98, 0x59, 0x2d, 0x35, 0x1d, 0x49, 0x0c, 0x1a, unkn, 0xe9, unkn, // 0xcx
0x6b, 0x3f, 0x7e, unkn, unkn, unkn, 0xf4, unkn, 0x9e, unkn, 0x2b, unkn, unkn, unkn, unkn, unkn, // 0xdx
0x56, unkn, 0xa7, 0x0a, 0x45, 0x2e, 0x62, unkn, unkn, 0x2a, 0x48, unkn, 0xe6, 0x03, unkn, 0xd8, // 0xex
unkn, 0x66, unkn, 0xf5, unkn, 0x08, 0x01, unkn, unkn, unkn, 0x00, unkn, unkn, 0x1e, unkn, unkn // 0xfx
};
static const uint8_t data_sub_table_04[0x100] =
{// 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
unkn, unkn, 0x2f, unkn, unkn, 0xcc, unkn, 0x35, unkn, 0x4f, 0x3e, unkn, 0x12, unkn, unkn, 0x30, // 0x0x
unkn, unkn, unkn, 0xf0, unkn, unkn, 0x64, 0xaf, 0xd9, unkn, 0x2c, unkn, 0x2b, unkn, unkn, unkn, // 0x1x
unkn, 0xbf, unkn, 0x13, 0x65, 0x52, unkn, unkn, 0x4a, 0x09, 0xc3, 0x08, 0xa0, 0x04, unkn, 0x62, // 0x2x
0x4d, unkn, unkn, 0x47, unkn, unkn, unkn, unkn, unkn, 0xc4, unkn, 0x3c, 0xf3, 0x67, 0x0d, unkn, // 0x3x
0xb9, unkn, 0x14, 0x05, unkn, 0x4c, unkn, 0x60, unkn, 0xd3, 0xd4, unkn, unkn, unkn, unkn, 0x16, // 0x4x
0xa7, 0x69, 0x9c, unkn, 0x90, 0x1f, unkn, unkn, unkn, 0x49, unkn, 0x56, unkn, 0xfe, unkn, 0x8e, // 0x5x
0x27, 0x54, 0x66, unkn, 0x01, 0x03, 0x20, 0x0e, 0xf5, unkn, unkn, unkn, unkn, 0xc2, unkn, 0x25, // 0x6x
unkn, 0x21, unkn, 0xad, 0x51, 0x23, unkn, 0xd0, unkn, 0x06, unkn, unkn, unkn, unkn, 0xe9, 0x48, // 0x7x
unkn, 0xc5, unkn, 0x45, unkn, unkn, unkn, 0x0f, 0xfd, unkn, 0xfa, 0x32, unkn, 0xf7, unkn, 0x68, // 0x8x
unkn, unkn, 0x0a, 0xc1, 0x8c, 0x22, 0xed, 0x28, 0xb1, 0x55, 0x6a, unkn, unkn, 0x1a, 0x46, unkn, // 0x9x
0x42, 0x24, 0x4b, unkn, unkn, unkn, unkn, unkn, unkn, 0x3f, 0x73, 0x00, 0xcb, 0x2d, unkn, unkn, // 0xax
0x3b, 0xfc, unkn, 0xe8, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, 0xbc, 0x15, 0x50, unkn, // 0xbx
0x6f, 0x57, 0x33, 0x7c, unkn, unkn, 0xc6, unkn, 0xe0, 0x2a, unkn, 0x63, unkn, unkn, 0xff, 0xe6, // 0xcx
0x41, 0x1e, 0x43, 0xf9, unkn, 0x76, 0x2e, unkn, 0x44, unkn, 0x58, 0x0c, unkn, 0x1d, 0x53, 0x1b, // 0xdx
0x85, unkn, 0xa5, unkn, unkn, 0xb2, 0x02, 0x07, unkn, 0x91, 0xd8, unkn, 0x10, 0xca, unkn, unkn, // 0xex
unkn, 0x80, 0xe2, unkn, unkn, 0x1c, unkn, 0x4e, unkn, unkn, 0x17, 0x18, 0x11, 0x0b, unkn, 0x7f // 0xfx
};
static const uint8_t data_sub_table_05[0x100] =
{// 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
0x2a, unkn, unkn, unkn, unkn, 0xe0, unkn, 0x3b, unkn, unkn, 0x79, 0x50, unkn, unkn, unkn, unkn, // 0x0x
unkn, unkn, unkn, 0x4b, unkn, unkn, 0x28, unkn, 0x07, 0x0a, 0xc5, unkn, unkn, 0x69, unkn, unkn, // 0x1x
unkn, 0x06, 0xc8, unkn, unkn, unkn, 0x3c, unkn, 0x6c, unkn, unkn, unkn, 0x11, 0x17, unkn, unkn, // 0x2x
0x66, unkn, unkn, 0x8a, unkn, 0x09, 0xfb, unkn, unkn, 0xcf, 0xc9, unkn, 0xd4, 0x1f, 0xb0, 0x7c, // 0x3x
unkn, unkn, 0x04, unkn, 0xff, 0x20, 0x02, 0x60, unkn, unkn, 0x12, 0x84, unkn, 0xef, 0xd7, 0xaa, // 0x4x
unkn, 0x34, unkn, unkn, unkn, unkn, unkn, 0x49, 0x56, 0xbe, 0x10, 0x4d, 0x7f, unkn, unkn, 0x1d, // 0x5x
unkn, unkn, 0xf6, 0x36, unkn, unkn, unkn, unkn, unkn, 0xb6, 0xce, 0xf7, 0xb4, unkn, unkn, 0x43, // 0x6x
unkn, 0x3e, 0x4c, 0xc3, unkn, unkn, unkn, 0x00, unkn, 0x93, unkn, 0x01, 0x16, 0x0f, unkn, unkn, // 0x7x
unkn, unkn, unkn, unkn, unkn, unkn, 0xba, 0xbf, unkn, 0xad, 0x13, unkn, unkn, unkn, unkn, 0x44, // 0x8x
unkn, 0x26, unkn, 0x32, 0xc0, 0x21, unkn, unkn, 0x24, 0x64, 0x14, unkn, unkn, 0x2d, 0x4f, 0x0c, // 0x9x
unkn, unkn, 0x58, 0x1b, unkn, unkn, 0x99, unkn, 0x80, 0x2e, unkn, unkn, unkn, unkn, unkn, unkn, // 0xax
0x46, 0xac, unkn, unkn, unkn, unkn, 0x4e, unkn, unkn, 0x08, 0xfe, 0x57, unkn, unkn, 0xda, 0xa9, // 0xbx
0x63, 0x18, unkn, 0x0e, 0x3f, unkn, 0x76, 0x4a, unkn, 0xb3, 0x03, unkn, unkn, unkn, 0x6a, 0x52, // 0xcx
unkn, unkn, unkn, 0xf5, 0x31, 0xf0, unkn, 0x41, 0x70, 0xe9, 0x05, 0xe6, 0xfc, unkn, 0x0d, 0x90, // 0xdx
unkn, 0xa2, unkn, unkn, unkn, unkn, 0xe5, 0xf8, 0x62, 0x55, 0x45, unkn, unkn, 0x42, 0x68, 0x1e, // 0xex
unkn, 0x48, 0x15, 0x54, 0x1a, 0xe4, 0x33, 0x53, 0x30, 0x61, 0x1c, 0x40, 0x22, 0x0b, unkn, unkn // 0xfx
};
static const uint8_t data_sub_table_06[0x100] =
{// 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
unkn, unkn, 0xe6, unkn, unkn, unkn, 0xc6, unkn, unkn, 0xf1, unkn, 0x23, 0x4f, 0xb8, unkn, unkn, // 0x0x
0x06, unkn, 0x7c, 0xda, unkn, unkn, 0xbf, unkn, unkn, unkn, 0x47, unkn, 0x44, 0x20, 0x93, 0x37, // 0x1x
unkn, unkn, unkn, unkn, unkn, unkn, 0x2f, unkn, 0x27, 0xed, 0x56, unkn, 0x2d, unkn, 0x45, unkn, // 0x2x
unkn, 0x58, 0x62, unkn, 0x65, unkn, unkn, unkn, 0x2a, unkn, unkn, unkn, 0x0c, unkn, unkn, 0x86, // 0x3x
0x05, 0xce, 0x0f, unkn, 0x11, 0x01, unkn, unkn, unkn, unkn, unkn, 0x1e, unkn, unkn, 0x21, unkn, // 0x4x
0x02, unkn, unkn, unkn, unkn, 0xf6, unkn, 0x80, 0x1a, unkn, 0x3d, 0x7b, 0x17, 0x70, 0x36, 0x77, // 0x5x
0x5e, 0xd1, unkn, 0xd0, 0x0b, unkn, 0x2e, unkn, 0x48, unkn, 0x24, 0xb0, unkn, unkn, 0xff, 0x10, // 0x6x
unkn, 0x40, 0xb6, unkn, 0x51, unkn, 0xe0, 0xad, 0x28, 0xc9, 0x9c, 0x1c, 0x57, unkn, 0x2c, 0x13, // 0x7x
0x53, unkn, 0x31, unkn, 0x8e, 0x43, unkn, 0x54, 0x49, 0xe5, unkn, unkn, 0x64, unkn, 0x34, 0x35, // 0x8x
0x1f, 0xf0, 0x3c, 0x4b, unkn, 0x19, unkn, unkn, 0x52, unkn, 0x00, 0x8c, unkn, 0xdf, unkn, 0x0d, // 0x9x
0x08, 0x4a, 0x1b, 0x2b, unkn, 0x4c, unkn, unkn, 0x63, unkn, 0xcf, 0xa1, 0x1d, unkn, unkn, 0x16, // 0xax
0xf5, unkn, 0x60, unkn, unkn, unkn, unkn, 0x50, 0x7a, 0x14, 0x03, 0xcb, unkn, unkn, unkn, unkn, // 0xbx
0x30, unkn, 0x78, 0x4d, unkn, 0x6b, unkn, unkn, unkn, 0x95, unkn, 0x42, unkn, unkn, 0xbe, 0x12, // 0xcx
0x83, 0xfe, 0x33, 0x90, unkn, 0xf4, 0x6e, 0x46, 0x07, 0x0a, 0xcc, 0x7f, unkn, unkn, unkn, 0xc0, // 0xdx
unkn, 0x3b, 0xb9, 0xa4, 0x09, unkn, 0x59, 0xfc, unkn, 0x4e, unkn, 0xf9, 0x41, 0x9a, 0xd3, 0x0e, // 0xex
unkn, unkn, unkn, 0x15, 0x32, unkn, 0x8b, 0x55, 0x18, 0x25, 0x04, 0x29, unkn, unkn, unkn, unkn // 0xfx
};
static const uint8_t data_sub_table_07[0x100] =
{// 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
0x0e, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, 0x3e, unkn, 0x08, unkn, unkn, 0x15, unkn, // 0x0x
unkn, 0x32, unkn, unkn, unkn, unkn, 0x87, unkn, 0x04, 0x47, 0x56, unkn, unkn, 0x69, 0x1c, 0x1e, // 0x1x
0x53, 0xed, 0x66, unkn, 0x40, unkn, 0x16, 0x2d, unkn, unkn, unkn, 0xda, unkn, 0xe5, unkn, unkn, // 0x2x
0x54, 0x06, 0x43, 0x24, unkn, 0x9a, 0x6e, 0x50, unkn, 0xdf, unkn, 0x20, 0xbc, 0xbf, 0xcf, unkn, // 0x3x
0x65, unkn, 0x4c, 0xb4, unkn, unkn, unkn, 0xf9, unkn, unkn, 0x1b, 0x8e, 0xe9, unkn, 0x01, 0x1d, // 0x4x
0xa5, 0x1f, 0xf7, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, 0x03, 0x28, 0x4e, 0x17, // 0x5x
0x9e, 0xff, unkn, 0x05, 0x26, unkn, 0x0d, unkn, 0x3d, 0xcb, 0x11, 0x0f, 0x25, 0x1a, unkn, 0x38, // 0x6x
0xfb, 0x0a, 0x5a, 0x2a, unkn, unkn, 0x4d, 0xe0, unkn, unkn, unkn, unkn, 0x9f, 0xf0, 0x68, unkn, // 0x7x
unkn, 0xe8, 0x30, 0x60, unkn, 0xf4, 0x2e, 0x8b, 0x46, unkn, 0x27, unkn, 0x0b, 0xc0, 0x21, unkn, // 0x8x
unkn, unkn, unkn, 0x83, unkn, 0x6a, unkn, 0x84, unkn, unkn, 0x33, 0x3a, unkn, 0x18, unkn, 0xb0, // 0x9x
0xc9, unkn, 0x80, 0x3c, 0x07, 0xd5, unkn, 0x19, 0xc3, 0xcc, unkn, 0x57, unkn, 0x90, 0xfe, unkn, // 0xax
0xa4, 0x23, 0xa0, unkn, unkn, 0x41, unkn, 0xca, 0x35, 0x48, unkn, 0x00, unkn, 0x13, unkn, 0x44, // 0xbx
unkn, unkn, 0x4f, unkn, unkn, unkn, 0xc2, 0x09, unkn, 0x2b, 0xba, 0x34, unkn, unkn, 0x14, 0x2c, // 0xcx
0x86, unkn, 0x10, 0x12, unkn, 0xad, unkn, 0x7c, unkn, 0x4a, unkn, 0x45, 0x59, unkn, 0x63, unkn, // 0xdx
0x49, unkn, unkn, 0x67, 0x02, 0x4b, unkn, unkn, 0x6d, unkn, unkn, unkn, 0x55, 0x7e, unkn, unkn, // 0xex
0xd0, 0xf6, unkn, unkn, unkn, unkn, unkn, unkn, 0xef, 0x42, 0x51, unkn, unkn, unkn, unkn, 0x52 // 0xfx
};
static const uint8_t data_sub_table_08[0x100] =
{// 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
0x21, 0x6d, unkn, unkn, unkn, unkn, 0x32, unkn, unkn, 0x1a, 0x9a, unkn, 0x38, unkn, unkn, unkn, // 0x0x
0xcb, 0x3e, unkn, unkn, 0x16, 0x4e, unkn, unkn, 0xa4, unkn, 0xf6, 0xd0, unkn, 0x63, 0x08, 0x46, // 0x1x
0x02, unkn, 0x23, unkn, 0xed, unkn, 0xfa, unkn, unkn, unkn, unkn, 0x00, 0x2a, 0xc5, unkn, unkn, // 0x2x
0x3b, 0xf3, unkn, unkn, unkn, 0x67, 0xe0, 0xff, unkn, 0x4f, 0x53, 0x68, unkn, unkn, unkn, unkn, // 0x3x
0xf9, unkn, 0x2d, unkn, 0x5c, 0x1e, 0x0e, unkn, 0x54, unkn, unkn, unkn, 0x66, 0x4b, 0x0d, 0x90, // 0x4x
0x52, 0xc4, 0xb3, 0xa0, unkn, unkn, unkn, 0xf8, 0x45, unkn, unkn, 0x6b, unkn, 0x4a, 0x0f, 0x1c, // 0x5x
0xfc, 0x4d, 0x0c, 0x1d, unkn, 0x17, unkn, 0xad, unkn, 0xc2, 0xe6, unkn, 0x12, 0x04, 0x1b, 0x2b, // 0x6x
0x62, 0x6a, 0x85, unkn, 0xb4, unkn, 0x11, 0x64, 0xd7, unkn, unkn, unkn, 0xa2, 0xe9, 0x7c, 0xca, // 0x7x
unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, 0xc7, 0xb7, 0x18, 0xab, unkn, unkn, 0x2c, 0xa1, // 0x8x
0x30, unkn, unkn, 0x73, 0x9c, unkn, 0x25, 0xd6, unkn, 0x03, 0xf4, 0x0b, 0xf0, 0x58, unkn, 0x7d, // 0x9x
unkn, 0x97, unkn, 0xd5, unkn, unkn, unkn, unkn, 0xb6, unkn, 0x57, unkn, 0x55, 0x60, 0x59, unkn, // 0xax
0x06, 0x42, 0xe8, unkn, 0xc0, 0x20, unkn, unkn, unkn, unkn, unkn, unkn, 0x84, unkn, 0x01, unkn, // 0xbx
0x0a, 0x09, 0x56, unkn, 0x44, unkn, unkn, 0x49, 0x39, 0xbc, unkn, 0x05, unkn, unkn, unkn, 0x8d, // 0xcx
0x80, unkn, unkn, 0xcc, 0x41, 0xbf, unkn, 0x50, unkn, 0x65, unkn, 0x15, unkn, unkn, unkn, 0xb0, // 0xdx
0x47, 0x93, unkn, 0x48, 0x5d, unkn, 0x37, unkn, 0x43, 0xfe, 0x40, 0x33, 0x07, 0x10, unkn, 0x76, // 0xex
unkn, 0x13, 0xef, 0x3c, unkn, 0x8e, unkn, 0xc3, unkn, unkn, unkn, unkn, unkn, 0x2e, unkn, unkn // 0xfx
};
static const uint8_t data_sub_table_09[0x100] =
{// 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
0xb1, 0xfd, unkn, 0xdc, unkn, unkn, 0x4f, 0x96, unkn, 0x2b, 0x34, unkn, 0x56, 0x90, 0x3b, 0xf5, // 0x0x
unkn, unkn, unkn, 0x59, unkn, 0x2e, unkn, 0x58, 0x79, 0x0f, 0xb0, unkn, unkn, unkn, unkn, unkn, // 0x1x
0xc0, unkn, 0xfc, unkn, unkn, unkn, 0x11, 0x2c, unkn, 0x80, unkn, 0x10, unkn, unkn, 0xc8, 0x3c, // 0x2x
unkn, 0x37, 0x63, unkn, 0x02, unkn, unkn, unkn, 0x33, unkn, unkn, unkn, unkn, unkn, unkn, 0x62, // 0x3x
unkn, unkn, 0x14, 0x2a, unkn, 0x38, 0x92, unkn, unkn, unkn, unkn, 0x45, unkn, 0x18, 0x0c, 0x46, // 0x4x
0x1b, 0x1d, unkn, unkn, 0xe0, unkn, unkn, 0xad, unkn, 0x42, unkn, 0x03, 0xc6, 0xf1, 0xff, 0xf7, // 0x5x
unkn, unkn, unkn, unkn, 0xa1, unkn, unkn, unkn, unkn, 0x13, 0x26, 0xb6, 0x19, unkn, unkn, 0xa4, // 0x6x
unkn, 0x6a, 0xaa, unkn, 0x01, unkn, 0xf9, 0x20, unkn, 0x3e, unkn, 0x07, unkn, 0x06, unkn, unkn, // 0x7x
0xc3, 0xd2, unkn, 0x2d, unkn, 0x0a, 0xc5, unkn, unkn, unkn, 0x44, 0xd7, 0x52, 0xf2, unkn, unkn, // 0x8x
0x4c, unkn, 0x28, 0x48, unkn, 0x76, unkn, unkn, 0xd5, 0x50, 0xd4, 0x32, 0x0e, 0x08, 0x09, unkn, // 0x9x
0x4d, 0x93, unkn, 0xf0, unkn, unkn, 0xbc, unkn, unkn, 0x16, unkn, unkn, 0x55, 0x3a, 0x8e, 0x60, // 0xax
0xcc, 0xe8, unkn, unkn, unkn, unkn, unkn, unkn, 0x05, 0x53, unkn, 0xaf, unkn, 0xfa, 0xbb, unkn, // 0xbx
0xd0, 0xfe, unkn, unkn, 0xee, unkn, unkn, 0x12, 0x85, unkn, 0x30, 0x15, unkn, 0x04, 0x00, 0xce, // 0xcx
0x65, 0x4a, unkn, unkn, 0x0b, unkn, 0x49, unkn, unkn, 0x6c, 0x0d, 0x41, 0x7c, unkn, 0xda, unkn, // 0xdx
0x4e, unkn, unkn, unkn, unkn, 0x17, unkn, unkn, 0xf8, 0xd6, unkn, unkn, unkn, unkn, 0x43, 0x4b, // 0xex
unkn, 0x54, 0x1c, 0x1e, unkn, unkn, unkn, unkn, 0xe6, unkn, unkn, unkn, 0x95, unkn, 0x57, unkn // 0xfx
};
static const uint8_t data_sub_table_0a[0x100] =
{// 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
0x20, unkn, unkn, 0x62, 0x69, unkn, unkn, 0xc0, unkn, unkn, 0x98, unkn, unkn, unkn, unkn, 0x0e, // 0x0x
0x70, 0xfe, unkn, unkn, unkn, 0x18, 0x2c, 0x57, unkn, unkn, 0xe9, 0x50, 0x46, 0x16, 0xe6, unkn, // 0x1x
unkn, unkn, 0x03, unkn, 0xe4, unkn, 0x64, 0xe8, 0xad, unkn, 0x05, 0x0a, 0x21, 0x07, unkn, unkn, // 0x2x
unkn, 0x0c, 0x56, 0x27, 0x4b, unkn, unkn, 0x80, 0x6c, unkn, unkn, 0x3f, 0x25, 0x63, 0x00, unkn, // 0x3x
0x4e, unkn, 0xd3, 0x41, 0x39, unkn, unkn, 0x09, unkn, 0x2a, unkn, 0x5d, unkn, 0x04, 0xd5, 0x2d, // 0x4x
0xbc, unkn, unkn, unkn, unkn, 0x91, unkn, unkn, 0x48, unkn, unkn, 0x35, 0x8e, unkn, 0xf7, unkn, // 0x5x
unkn, unkn, unkn, 0x1d, unkn, unkn, 0xf5, unkn, 0xf2, 0x6e, unkn, unkn, unkn, 0xf8, unkn, unkn, // 0x6x
unkn, 0x3b, unkn, 0x4c, unkn, 0x08, unkn, unkn, 0x85, unkn, 0x52, 0xc6, 0x60, unkn, 0x0f, unkn, // 0x7x
0x76, unkn, 0x55, 0x66, unkn, 0x45, unkn, unkn, unkn, 0x5c, 0xd0, unkn, 0xa1, unkn, unkn, unkn, // 0x8x
unkn, 0xf0, unkn, 0x78, unkn, unkn, 0x43, 0xfd, unkn, unkn, 0xa4, 0x75, 0x2e, 0x2b, unkn, 0x1f, // 0x9x
0xd1, unkn, 0x54, unkn, 0x10, 0xbf, unkn, unkn, unkn, 0x1e, 0xc1, unkn, 0x0d, 0x32, 0xc7, unkn, // 0xax
0xcf, unkn, 0x14, unkn, unkn, unkn, unkn, unkn, 0x01, unkn, unkn, unkn, 0x1c, unkn, 0x3c, unkn, // 0xbx
0xa2, 0xf9, 0xb0, 0x44, unkn, 0x24, unkn, unkn, unkn, 0x12, 0x68, 0xe0, 0x11, 0x4d, unkn, 0x13, // 0xcx
unkn, 0x94, 0x49, unkn, unkn, unkn, unkn, 0x17, 0x33, unkn, unkn, unkn, unkn, 0xdf, 0xf4, unkn, // 0xdx
unkn, unkn, 0x30, unkn, 0x06, unkn, 0x02, unkn, 0x53, unkn, unkn, 0x9a, 0x92, 0x34, unkn, 0x0b, // 0xex
0x4a, unkn, unkn, 0xc3, 0x4f, 0xf1, unkn, unkn, 0xfc, unkn, 0xef, 0xff, unkn, unkn, unkn, 0x51 // 0xfx
};
static const uint8_t data_sub_table_0b[0x100] =
{// 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
unkn, 0x39, unkn, unkn, unkn, 0x69, 0x27, unkn, 0xf0, unkn, unkn, unkn, unkn, unkn, unkn, 0x57, // 0x0x
0x9a, 0x10, unkn, 0x04, 0x08, 0xd6, unkn, unkn, 0x03, 0x6b, 0x1f, 0x37, unkn, 0x30, 0xe9, unkn, // 0x1x
0xc4, unkn, 0x25, unkn, 0x7d, unkn, 0xe5, unkn, 0x1e, unkn, 0x54, 0xd0, unkn, 0x49, 0x80, unkn, // 0x2x
0x78, unkn, 0x3f, 0x9f, 0xf7, 0x11, 0x67, 0xa2, unkn, 0x4a, 0x33, unkn, unkn, 0xef, unkn, 0xd1, // 0x3x
0xd7, unkn, 0xfc, unkn, 0x3d, 0xfe, unkn, 0x14, 0x05, 0x0f, 0x3e, 0xc7, 0x45, 0xca, 0x59, 0x35, // 0x4x
unkn, unkn, 0x13, 0x41, unkn, 0xcb, 0x09, 0x4d, unkn, 0xbb, 0x51, 0x66, unkn, unkn, unkn, unkn, // 0x5x
unkn, unkn, unkn, unkn, unkn, 0x07, 0x8e, 0x2a, 0xdf, 0xb0, 0x19, 0x18, 0x2f, unkn, 0x1d, 0xc0, // 0x6x
unkn, unkn, 0x52, unkn, 0x00, 0xf8, unkn, unkn, 0x20, unkn, 0xad, 0x1c, 0x68, unkn, 0x34, unkn, // 0x7x
unkn, 0x1a, 0x0a, 0x62, 0x55, 0x32, unkn, unkn, 0xf4, unkn, unkn, unkn, unkn, 0xa3, 0x44, 0x85, // 0x8x
unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, 0x0e, 0x3c, unkn, unkn, // 0x9x
unkn, unkn, 0x7f, 0x16, 0x48, unkn, unkn, 0x0c, unkn, 0x64, unkn, 0x50, unkn, 0x36, unkn, unkn, // 0xax
unkn, 0x06, 0x83, 0xa4, 0x53, unkn, unkn, unkn, unkn, unkn, unkn, 0x47, unkn, unkn, unkn, 0x46, // 0xbx
0x90, 0x60, unkn, 0xf6, unkn, 0xf5, 0xff, 0x31, unkn, 0x17, 0x43, 0xe6, unkn, 0x40, 0x02, unkn, // 0xcx
0x56, 0x4b, 0xda, 0x15, unkn, 0x4f, unkn, unkn, unkn, unkn, 0x63, 0x0b, 0xa5, unkn, unkn, 0xbf, // 0xdx
unkn, 0x01, 0x12, unkn, unkn, unkn, unkn, unkn, unkn, 0x0d, unkn, unkn, unkn, 0x1b, 0x4c, unkn, // 0xex
unkn, unkn, 0x2d, unkn, 0x26, unkn, 0x84, 0x4e, 0x28, unkn, unkn, unkn, 0x2c, 0x2e, unkn, 0xe0 // 0xfx
};
static const uint8_t data_sub_table_0c[0x100] =
{// 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
0x5e, unkn, 0xcb, 0x2a, 0x3f, 0x55, 0x51, 0xc5, 0x0b, unkn, 0x79, unkn, unkn, unkn, unkn, unkn, // 0x0x
unkn, 0x29, unkn, 0x62, unkn, unkn, unkn, 0x1e, unkn, unkn, unkn, 0x52, unkn, 0xff, 0xe6, 0xe2, // 0x1x
unkn, 0x09, 0x7c, 0x18, unkn, 0x63, unkn, 0xdf, 0x60, unkn, 0x16, unkn, unkn, 0x2e, 0x3b, 0x3e, // 0x2x
0x20, unkn, 0xca, unkn, 0x1c, unkn, unkn, 0xdd, unkn, 0x2c, unkn, unkn, unkn, 0xc0, 0xda, unkn, // 0x3x
0x40, 0x35, 0x1d, unkn, 0x43, 0xc2, unkn, unkn, 0x3d, unkn, 0x33, 0x88, 0x4d, unkn, 0xc3, 0x54, // 0x4x
unkn, 0x48, unkn, 0x27, unkn, unkn, 0x38, unkn, unkn, 0x0d, unkn, 0x61, 0x17, 0x10, 0x45, unkn, // 0x5x
0x0f, unkn, unkn, 0x57, 0x05, 0xaa, unkn, unkn, 0x75, unkn, unkn, 0x90, 0x1a, unkn, 0x24, unkn, // 0x6x
unkn, 0x12, unkn, 0xfe, 0x21, unkn, 0x01, unkn, unkn, 0xe0, unkn, 0x4f, 0x32, unkn, unkn, unkn, // 0x7x
unkn, 0x23, 0x3c, 0x00, unkn, unkn, unkn, unkn, unkn, unkn, 0xd0, 0x0a, 0x50, 0xf9, 0x59, 0xb6, // 0x8x
0x28, 0xa3, unkn, 0x30, unkn, 0x44, unkn, unkn, 0x58, unkn, 0x11, 0xbb, 0x03, unkn, unkn, 0x13, // 0x9x
0xf6, 0x06, 0xbf, 0x41, unkn, 0x74, 0x9a, 0xce, 0x98, 0xf1, unkn, unkn, 0x04, unkn, unkn, 0x80, // 0xax
0x14, 0xb4, unkn, unkn, 0x08, 0xf0, 0x25, unkn, unkn, unkn, unkn, 0xea, 0x46, 0xe9, 0x31, 0x67, // 0xbx
0x6c, unkn, 0xc7, 0x07, unkn, unkn, 0x0c, unkn, 0x2b, unkn, unkn, 0xcf, 0x4b, unkn, 0xc4, 0x47, // 0xcx
0x9f, unkn, unkn, 0x53, unkn, unkn, 0x65, unkn, 0xa0, 0x15, unkn, unkn, unkn, 0xf4, 0x2d, 0xf8, // 0xdx
0x02, unkn, 0x36, 0x85, 0x1b, unkn, unkn, 0x37, unkn, unkn, unkn, unkn, 0x5d, 0x66, 0xef, 0xed, // 0xex
0x0e, unkn, 0x4a, unkn, 0xc6, 0x49, 0x4c, unkn, unkn, unkn, unkn, 0x4e, unkn, unkn, unkn, unkn // 0xfx
};
static const uint8_t data_sub_table_0d[0x100] =
{// 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
unkn, unkn, 0x12, 0x5e, unkn, 0x50, 0xae, unkn, 0x52, unkn, unkn, 0x20, 0x35, 0xf6, 0xd0, 0x11, // 0x0x
0x7f, unkn, 0xe0, 0xe4, unkn, unkn, unkn, 0x48, unkn, 0xd1, 0xb0, 0xd7, unkn, 0xdd, 0x70, 0x6d, // 0x1x
0x61, unkn, unkn, 0x53, unkn, unkn, unkn, 0x01, unkn, 0x2d, unkn, unkn, unkn, 0x4b, unkn, unkn, // 0x2x
unkn, unkn, 0x18, 0xff, 0x2a, 0xfe, unkn, 0x4c, 0x3c, unkn, 0x10, unkn, 0xc2, 0x1c, unkn, 0x60, // 0x3x
0x69, 0x02, unkn, 0x39, 0x0e, 0x73, 0x0a, 0x31, unkn, 0xf8, 0x55, unkn, 0xa2, unkn, unkn, unkn, // 0x4x
unkn, unkn, unkn, unkn, 0xf1, 0x14, unkn, unkn, unkn, unkn, unkn, 0x04, unkn, 0xad, 0x44, 0x90, // 0x5x
0x6b, unkn, 0x8a, 0x22, 0x0b, 0xe8, 0xf3, unkn, 0x0c, 0xc0, 0x28, 0xf7, 0x1b, unkn, 0x30, unkn, // 0x6x
unkn, unkn, 0x00, unkn, unkn, unkn, 0x8b, unkn, 0x32, unkn, unkn, 0x15, 0x05, 0x46, unkn, 0x13, // 0x7x
unkn, 0x45, 0x34, 0x06, 0x63, 0x2c, unkn, unkn, unkn, 0xcb, unkn, 0x0d, unkn, 0x08, unkn, unkn, // 0x8x
unkn, 0x17, 0xcd, 0x64, unkn, 0xed, 0xf4, 0xcc, unkn, unkn, unkn, 0x4d, unkn, 0x7e, unkn, 0xc4, // 0x9x
0x09, 0x3e, unkn, 0x65, 0x3b, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, 0xce, unkn, // 0xax
unkn, 0x7c, unkn, 0x3f, 0x4f, unkn, unkn, unkn, unkn, unkn, 0x80, unkn, 0xe6, 0x42, unkn, unkn, // 0xbx
0xda, unkn, unkn, 0x1f, unkn, 0x2b, unkn, unkn, 0xe9, 0x23, 0x62, 0x19, unkn, unkn, 0x86, unkn, // 0xcx
0xf5, 0xf0, 0x41, 0x43, unkn, 0x40, unkn, 0x25, 0xf9, 0x4a, unkn, 0x4e, 0x2e, 0x03, unkn, unkn, // 0xdx
unkn, 0x88, 0x0f, 0xee, 0x16, 0x1e, 0xa0, 0xe2, unkn, 0x59, unkn, 0xa9, unkn, unkn, unkn, 0x6a, // 0xex
unkn, 0x47, 0x49, 0x76, 0x07, unkn, unkn, unkn, 0x54, unkn, 0xb4, unkn, 0x96, unkn, unkn, 0x38 // 0xfx
};
static const uint8_t data_sub_table_0e[0x100] =
{// 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
0xff, unkn, unkn, 0xf0, 0x30, 0xed, 0x0b, 0x63, unkn, unkn, 0x3f, 0x1e, unkn, unkn, 0x41, 0xa6, // 0x0x
unkn, 0x47, 0x2a, 0xd0, 0x4c, unkn, unkn, unkn, 0x51, unkn, unkn, 0xb0, 0xcf, unkn, unkn, 0x90, // 0x1x
0x1f, 0x39, unkn, unkn, 0xbf, unkn, 0x0d, 0x07, 0x52, 0xaa, 0x15, unkn, unkn, 0x49, 0x14, 0xf4, // 0x2x
unkn, 0x43, 0xe0, unkn, unkn, 0x85, unkn, 0x4e, 0x33, 0x60, unkn, 0xf7, 0x62, unkn, unkn, unkn, // 0x3x
unkn, unkn, unkn, unkn, 0x2c, unkn, 0x68, unkn, 0xe6, 0x4f, 0xe9, unkn, 0xc4, 0x53, unkn, 0x18, // 0x4x
unkn, unkn, 0x57, 0x78, 0xef, 0x03, unkn, 0xc6, 0x19, 0x1d, unkn, 0x44, 0xc9, 0x96, unkn, unkn, // 0x5x
unkn, unkn, unkn, 0x61, 0x0c, 0x3c, 0x45, unkn, 0x08, unkn, unkn, 0xcd, unkn, 0xfc, 0x1c, unkn, // 0x6x
unkn, unkn, unkn, unkn, 0xf6, unkn, 0x79, unkn, unkn, 0x5d, 0xc7, 0xd1, 0x29, 0xc0, 0x32, 0x46, // 0x7x
unkn, unkn, 0x7f, 0x9c, 0xd2, unkn, unkn, unkn, unkn, 0x0f, unkn, 0x4b, 0x00, 0xf9, 0x95, unkn, // 0x8x
0xf1, unkn, 0x26, unkn, unkn, 0x2e, 0x28, unkn, 0xe4, unkn, unkn, 0x9d, 0x5b, unkn, unkn, 0x1a, // 0x9x
0x2d, 0x7c, unkn, 0x88, unkn, unkn, 0xdf, 0x05, unkn, 0x0a, unkn, unkn, unkn, 0xad, 0xd7, unkn, // 0xax
unkn, unkn, 0x06, unkn, 0x59, 0x54, unkn, 0x02, 0x12, unkn, unkn, unkn, 0x20, 0x09, unkn, unkn, // 0xbx
0x40, unkn, 0x55, unkn, unkn, 0x23, unkn, 0x38, 0x17, unkn, 0x16, unkn, 0x65, unkn, 0xeb, 0x24, // 0xcx
unkn, unkn, 0x2b, unkn, unkn, unkn, 0x76, unkn, unkn, 0xbb, unkn, 0x13, unkn, 0xc5, 0xa0, 0x21, // 0xdx
0x0e, unkn, 0xda, unkn, unkn, 0x6a, unkn, 0xd5, unkn, 0x04, unkn, 0x66, 0xf5, 0x50, unkn, 0xf8, // 0xex
0xc3, unkn, 0xc2, unkn, unkn, 0x11, 0x48, 0x01, 0x2f, unkn, 0x3b, unkn, unkn, 0x10, 0xcb, 0xf2 // 0xfx
};
static const uint8_t data_sub_table_0f[0x100] =
{// 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
0x04, unkn, unkn, unkn, unkn, unkn, unkn, unkn, 0xb4, unkn, 0x50, unkn, 0x63, unkn, unkn, 0x20, // 0x0x
unkn, unkn, 0x85, 0x19, 0x46, 0x00, unkn, 0x58, unkn, 0xcb, unkn, 0x41, 0xc0, 0x30, unkn, 0x48, // 0x1x
unkn, 0x07, 0xf0, 0x65, unkn, 0xbf, 0x91, 0x45, 0x62, 0x35, 0x40, unkn, 0x56, unkn, unkn, unkn, // 0x2x
0x69, 0x4c, 0x0d, 0xe9, unkn, unkn, unkn, 0xee, 0x5e, unkn, 0xf4, 0x49, 0xa3, 0x08, unkn, 0x0b, // 0x3x
0x18, 0x43, unkn, unkn, 0x24, 0x0f, 0x5b, unkn, 0x86, unkn, unkn, 0x73, unkn, unkn, unkn, 0x0a, // 0x4x
0x17, unkn, 0x4b, 0x52, 0xd5, 0xba, unkn, unkn, 0x53, unkn, unkn, unkn, 0xad, 0xe8, 0x3f, unkn, // 0x5x
0xb0, unkn, 0xae, 0x1a, 0xc4, unkn, 0x11, 0x37, 0x67, unkn, 0x44, unkn, 0xb6, 0x4a, 0x2d, unkn, // 0x6x
0x59, 0xd0, unkn, unkn, unkn, unkn, unkn, unkn, unkn, unkn, 0x61, 0x32, unkn, 0x6b, 0x3e, 0x26, // 0x7x
unkn, unkn, unkn, 0xce, unkn, 0x7c, 0x0e, 0xb3, unkn, unkn, unkn, unkn, 0x16, unkn, 0x80, 0xbb, // 0x8x
unkn, unkn, 0x2b, unkn, 0xc6, unkn, unkn, 0x54, 0x90, unkn, 0x09, 0x01, unkn, unkn, unkn, 0x05, // 0x9x
0x1c, 0x1f, 0x55, unkn, unkn, 0xf8, 0x3b, 0xfe, 0xe0, unkn, 0x12, unkn, unkn, 0xe4, unkn, 0x34, // 0xax
unkn, unkn, 0x10, unkn, unkn, unkn, unkn, 0xf5, 0x06, 0x57, 0x4f, 0x03, 0xd1, unkn, unkn, 0x3a, // 0xbx
0x38, 0x6f, 0xa2, 0xe5, unkn, 0xed, 0x14, unkn, unkn, 0x4d, 0x0c, 0x7e, unkn, 0x2e, unkn, 0x6a, // 0xcx
unkn, unkn, 0xa0, 0x22, 0x33, unkn, unkn, unkn, 0x15, 0x4e, unkn, 0xfb, 0x8e, unkn, unkn, unkn, // 0xdx
unkn, 0xcf, unkn, 0x2c, 0x60, unkn, 0x1b, 0xe6, 0x02, unkn, 0x1d, unkn, unkn, 0x1e, unkn, unkn, // 0xex
unkn, unkn, 0x47, unkn, unkn, 0xf9, 0x8a, 0x76, 0x6c, unkn, 0xfc, unkn, 0x64, 0x25, unkn, 0xff // 0xfx
};
for (int i = 0; i < 0x2000; i++)
{
uint8_t x = rom[i];
switch(i & 0x0f)
{
case 0x00: rom[i] = data_sub_table_00[x]; break;
case 0x01: rom[i] = data_sub_table_01[x]; break;
case 0x02: rom[i] = data_sub_table_02[x]; break;
case 0x03: rom[i] = data_sub_table_03[x]; break;
case 0x04: rom[i] = data_sub_table_04[x]; break;
case 0x05: rom[i] = data_sub_table_05[x]; break;
case 0x06: rom[i] = data_sub_table_06[x]; break;
case 0x07: rom[i] = data_sub_table_07[x]; break;
case 0x08: rom[i] = data_sub_table_08[x]; break;
case 0x09: rom[i] = data_sub_table_09[x]; break;
case 0x0a: rom[i] = data_sub_table_0a[x]; break;
case 0x0b: rom[i] = data_sub_table_0b[x]; break;
case 0x0c: rom[i] = data_sub_table_0c[x]; break;
case 0x0d: rom[i] = data_sub_table_0d[x]; break;
case 0x0e: rom[i] = data_sub_table_0e[x]; break;
case 0x0f: rom[i] = data_sub_table_0f[x]; break;
}
}
}
void norautp_state::init_deb()
@ -3777,8 +4459,8 @@ GAMEL( 198?, norautra, 0, norautp, norautrh, norautp_state, empty_init, R
GAME( 1988, norautu, 0, norautxp, norautp, norautp_state, empty_init, ROT0, "Noraut Ltd.", "Noraut Poker (NTX10A)", MACHINE_NOT_WORKING )
GAME( 2002, noraut3a, 0, norautxp, norautp, norautp_state, empty_init, ROT0, "Noraut Ltd.", "Noraut Joker Poker (V3.010a)", MACHINE_NOT_WORKING )
GAME( 2003, noraut3b, 0, norautxp, norautp, norautp_state, empty_init, ROT0, "Noraut Ltd.", "Noraut Joker Poker (V3.011a)", MACHINE_NOT_WORKING )
GAMEL( 198?, norautua, 0, norautp, norautp, norautp_state, init_enc, ROT0, "Noraut Ltd.", "Noraut unknown set 1 (console)", MACHINE_NOT_WORKING, layout_noraut12 )
GAMEL( 198?, norautub, 0, norautp, norautp, norautp_state, init_enc, ROT0, "Noraut Ltd.", "Noraut unknown set 2 (console)", MACHINE_NOT_WORKING, layout_noraut12 )
GAMEL( 198?, norautua, 0, norautu, norautp, norautp_state, init_enc, ROT0, "Noraut Ltd.", "Noraut Joker Poker (console, set 1)", MACHINE_NOT_WORKING, layout_noraut12 )
GAMEL( 198?, norautub, 0, norautu, norautp, norautp_state, init_enc, ROT0, "Noraut Ltd.", "Noraut Joker Poker (console, set 2)", MACHINE_NOT_WORKING, layout_noraut12 )
GAMEL( 198?, mainline, 0, norautp, mainline, norautp_state, empty_init, ROT0, "Mainline London", "Mainline Double Joker Poker", 0, layout_noraut12 )
GAMEL( 199?, df_djpkr, 0, norautp, mainline, norautp_state, empty_init, ROT0, "DellFern Ltd.", "Double Joker Poker (45%-75% payout)", 0, layout_noraut12 )
GAMEL( 2005, ndxron10, 0, norautp, ndxron10, norautp_state, empty_init, ROT0, "<unknown>", "Royal on Ten (Noraut Deluxe hack)", 0, layout_noraut12 )

View File

@ -27,6 +27,7 @@ public:
m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"),
m_palette(*this, "palette"),
m_decrypted_opcodes(*this, "decrypted_opcodes"),
m_lamps(*this, "lamp%u", 0U)
{ }
@ -34,6 +35,7 @@ public:
void kimble(machine_config &config);
void kimbldhl(machine_config &config);
void norautp(machine_config &config);
void norautu(machine_config &config);
void norautx4(machine_config &config);
void norautpl(machine_config &config);
void newhilop(machine_config &config);
@ -66,6 +68,7 @@ private:
uint32_t screen_update_norautp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void cgidjp_map(address_map &map);
void cgidjp_opcodes_map(address_map &map);
void decrypted_opcodes_map(address_map &map);
void dphl_map(address_map &map);
void dphla_map(address_map &map);
void dphltest_map(address_map &map);
@ -89,6 +92,7 @@ private:
required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
optional_shared_ptr<uint8_t> m_decrypted_opcodes;
output_finder<12> m_lamps;
};