misc/norautp.cpp: improved norautua to the same level of norautub

This commit is contained in:
Ivan Vangelista 2023-08-06 08:04:28 +02:00
parent a383d36849
commit 11a31d53ff

View File

@ -3730,11 +3730,11 @@ ROM_END
/*
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
The following tables are for the norautua and norautub sets. The encryption seems based on substitution tables
chosen by bits 0, 1, 2 and 3 of the address and by the M1 line.
However, it is improbable 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.
They mostly work, however to be 100% confident the algorithm needs to be figured out or ar least more sets are needed.
*/
void norautp_state::init_enc()
@ -3826,7 +3826,7 @@ void norautp_state::init_enc()
{// 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, 0xaf, 0x31, unkn, unkn, unkn, 0x71, unkn, unkn, unkn, 0x3d, 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
@ -3932,7 +3932,7 @@ void norautp_state::init_enc()
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, 0xf1, unkn, unkn, unkn, unkn, 0x47, unkn, 0xd6, unkn, unkn, 0x0e, 0x78, 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
@ -3953,7 +3953,7 @@ void norautp_state::init_enc()
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
unkn, unkn, unkn, unkn, 0xe1, unkn, 0x81, 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
@ -3977,7 +3977,7 @@ void norautp_state::init_enc()
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
0x0e, 0xe7, 0x3c, unkn, unkn, 0x7a, unkn, unkn, unkn, unkn, 0x31, unkn, unkn, 0x07, 0xc8, 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
};
@ -4008,7 +4008,7 @@ void norautp_state::init_enc()
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
0xf1, 0x02, 0x7c, unkn, unkn, unkn, unkn, unkn, unkn, 0xea, 0x34, unkn, unkn, unkn, 0x3d, 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
@ -4197,7 +4197,7 @@ void norautp_state::init_enc()
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, 0x34, unkn, unkn, unkn, unkn, unkn, 0x49, 0x56, 0xbe, 0x10, 0x4d, 0x7f, 0x19, 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
@ -4262,12 +4262,12 @@ void norautp_state::init_enc()
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
unkn, 0x97, 0x14, 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
unkn, 0x13, 0xef, 0x3c, unkn, 0x8e, unkn, 0xc3, unkn, unkn, unkn, 0x7e, unkn, 0x2e, unkn, unkn // 0xfx
};
static const uint8_t data_sub_table_09[0x100] =
@ -4293,7 +4293,7 @@ void norautp_state::init_enc()
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
0x70, 0xfe, 0x19, 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
@ -4305,7 +4305,7 @@ void norautp_state::init_enc()
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, 0x94, 0x49, unkn, unkn, unkn, unkn, 0x17, 0x33, unkn, unkn, unkn, unkn, 0xdf, 0xf4, 0xfa, // 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
};