code de-duplication (nw)

This commit is contained in:
David Haywood 2016-03-24 15:39:45 +00:00
parent ab889a6798
commit 48ce595164

View File

@ -5376,37 +5376,11 @@ DRIVER_INIT_MEMBER(system1_state,sega315_5132)
sega_decode(m_maincpu_region->base(), m_decrypted_opcodes, 0x8000, convtable);
}
// todo, collapse with above (this is sega315_5132 with an extra layer, probably bootleg)
DRIVER_INIT_MEMBER(system1_state,myherok)
{
static const UINT8 convtable[32][4] =
{
/* opcode data address */
/* A B C D A B C D */
{ 0x20,0x00,0xa0,0x80 }, { 0x80,0xa0,0x88,0xa8 }, /* ...0...0...0...0 */
{ 0x20,0x00,0xa0,0x80 }, { 0x80,0xa0,0x88,0xa8 }, /* ...0...0...0...1 */
{ 0xa8,0xa0,0x88,0x80 }, { 0xa8,0xa0,0x88,0x80 }, /* ...0...0...1...0 */
{ 0x08,0x88,0x00,0x80 }, { 0x80,0xa0,0x88,0xa8 }, /* ...0...0...1...1 */
{ 0x20,0x00,0xa0,0x80 }, { 0x28,0xa8,0x08,0x88 }, /* ...0...1...0...0 */
{ 0x20,0x00,0xa0,0x80 }, { 0x08,0x88,0x00,0x80 }, /* ...0...1...0...1 */
{ 0x28,0xa8,0x08,0x88 }, { 0xa8,0xa0,0x88,0x80 }, /* ...0...1...1...0 */
{ 0x08,0x88,0x00,0x80 }, { 0xa8,0xa0,0x88,0x80 }, /* ...0...1...1...1 */
{ 0x28,0xa8,0x08,0x88 }, { 0x20,0x00,0xa0,0x80 }, /* ...1...0...0...0 */
{ 0x80,0xa0,0x88,0xa8 }, { 0x20,0x00,0xa0,0x80 }, /* ...1...0...0...1 */
{ 0x80,0xa0,0x88,0xa8 }, { 0x80,0xa0,0x88,0xa8 }, /* ...1...0...1...0 */
{ 0xa8,0xa0,0x88,0x80 }, { 0x80,0xa0,0x88,0xa8 }, /* ...1...0...1...1 */
{ 0x88,0x80,0x08,0x00 }, { 0x88,0x80,0x08,0x00 }, /* ...1...1...0...0 */
{ 0x88,0x80,0x08,0x00 }, { 0x08,0x88,0x00,0x80 }, /* ...1...1...0...1 */
{ 0x88,0x80,0x08,0x00 }, { 0xa8,0xa0,0x88,0x80 }, /* ...1...1...1...0 */
{ 0x88,0x80,0x08,0x00 }, { 0xa8,0xa0,0x88,0x80 } /* ...1...1...1...1 */
};
int A;
UINT8 *rom;
DRIVER_INIT_CALL(bank00);
/* additionally to the usual protection, all the program ROMs have data lines */
/* D0 and D1 swapped. */
rom = m_maincpu_region->base();
@ -5443,7 +5417,7 @@ DRIVER_INIT_MEMBER(system1_state,myherok)
}
}
sega_decode(m_maincpu_region->base(), m_decrypted_opcodes, 0x8000, convtable);
DRIVER_INIT_CALL(sega315_5132);
}
DRIVER_INIT_MEMBER(system1_state,sega315_5162)
@ -5536,62 +5510,10 @@ DRIVER_INIT_MEMBER(system1_state,sega315_5177)
sega_decode_2(m_maincpu_region->base(), m_decrypted_opcodes, xor_table, swap_table);
}
// todo, refactor into above
DRIVER_INIT_MEMBER(system1_state,sega315_5177_s2)
{
// 315-5177
static const UINT8 xor_table[128] =
{
0x04,0x54,0x51,0x15,0x40,0x44,0x01,0x51,0x55,0x10,0x44,0x41,
0x05,0x55,0x50,0x14,0x41,0x45,0x00,0x50,0x54,0x11,0x45,0x40,
0x04,0x54,0x51,0x15,0x40,0x44,0x01,0x51,0x55,0x10,0x44,0x41,
0x05,0x55,0x50,0x14,0x41,0x45,0x00,0x50,0x54,0x11,0x45,0x40,
0x04,0x54,0x51,0x15,0x40,0x44,0x01,0x51,0x55,0x10,0x44,0x41,
0x05,0x55,0x50,0x14,
0x04,0x54,0x51,0x15,0x40,0x44,0x01,0x51,0x55,0x10,0x44,0x41,
0x05,0x55,0x50,0x14,0x41,0x45,0x00,0x50,0x54,0x11,0x45,0x40,
0x04,0x54,0x51,0x15,0x40,0x44,0x01,0x51,0x55,0x10,0x44,0x41,
0x05,0x55,0x50,0x14,0x41,0x45,0x00,0x50,0x54,0x11,0x45,0x40,
0x04,0x54,0x51,0x15,0x40,0x44,0x01,0x51,0x55,0x10,0x44,0x41,
0x05,0x55,0x50,0x14,
};
static const int swap_table[128] =
{
0,0,0,0,
1,1,1,1,1,
2,2,2,2,2,
3,3,3,3,
4,4,4,4,4,
5,5,5,5,5,
6,6,6,6,6,
7,7,7,7,7,
8,8,8,8,
9,9,9,9,9,
10,10,10,10,10,
11,11,11,11,11,
12,12,12,12,12,
13,13,
8,8,8,8,
9,9,9,9,9,
10,10,10,10,10,
11,11,11,11,
12,12,12,12,12,
13,13,13,13,13,
14,14,14,14,14,
15,15,15,15,15,
16,16,16,16,
17,17,17,17,17,
18,18,18,18,18,
19,19,19,19,19,
20,20,20,20,20,
21,21,
};
DRIVER_INIT_CALL(sega315_5177);
DRIVER_INIT_CALL(bank0c);
sega_decode_2(m_maincpu_region->base(), m_decrypted_opcodes, xor_table, swap_table);
}