📄 turbo.c
字号:
VIDEO_TYPE_RASTER,
0,
turbo_vh_start,
generic_vh_stop,
turbo_vh_screenrefresh,
/* sound hardware */
0,0,0,0,
{
{
SOUND_SAMPLES,
&samples_interface
}
}
};
/***************************************************************************
Game driver(s)
***************************************************************************/
ROM_START( turbo_rom )
ROM_REGION(0x10000) /* 64k for code */
ROM_LOAD( "epr1513.bin", 0x0000, 0x2000, 0x0326adfc )
ROM_LOAD( "epr1514.bin", 0x2000, 0x2000, 0x25af63b0 )
ROM_LOAD( "epr1515.bin", 0x4000, 0x2000, 0x059c1c36 )
ROM_REGION(0x1000) /* temporary space for graphics (disposed after conversion) */
ROM_LOAD( "epr1244.rom", 0x0000, 0x0800, 0x17f67424 )
ROM_LOAD( "epr1245.rom", 0x0800, 0x0800, 0x2ba0b46b )
ROM_REGION(0x1000) /* PROMs */
ROM_LOAD( "pr1121.bin", 0x0000, 0x0200, 0x7692f497 ) /* Color PROM */
ROM_LOAD( "pr-1118.bin", 0x0200, 0x0100, 0x07324cfd ) /* 256x4 Character Color PROM */
ROM_LOAD( "pr1114.bin", 0x0300, 0x0020, 0x78aded46 ) /* Color 1 (road, etc.) */
ROM_LOAD( "pr1117.bin", 0x0320, 0x0020, 0xf06d9907 ) /* Color 2 (road, etc.) */
ROM_LOAD( "sndprom.bin", 0x0340, 0x0020, 0xb369a6ae )
ROM_LOAD( "pr1122.bin", 0x0400, 0x0400, 0x0afed679 ) /* Pattern 1 */
ROM_LOAD( "pr1123.bin", 0x0800, 0x0400, 0x02d2cb52 ) /* Pattern 2 */
ROM_LOAD( "pr-1119.bin", 0x0c00, 0x0200, 0x628d3f1d ) /* timing - not used */
ROM_LOAD( "pr-1120.bin", 0x0e00, 0x0200, 0x591b6a68 ) /* timing - not used */
ROM_REGION(0x20000) /* the game will need access to this part */
ROM_LOAD( "epr1246.rom", 0x00000, 0x2000, 0x555bfe9a )
ROM_RELOAD( 0x02000, 0x2000 )
ROM_LOAD( "epr1247.rom", 0x04000, 0x2000, 0xc8c5e4d5 )
ROM_RELOAD( 0x06000, 0x2000 )
ROM_LOAD( "epr1248.rom", 0x08000, 0x2000, 0x82fe5b94 )
ROM_RELOAD( 0x0a000, 0x2000 )
ROM_LOAD( "epr1249.rom", 0x0c000, 0x2000, 0xe258e009 )
ROM_LOAD( "epr1250.rom", 0x0e000, 0x2000, 0xaee6e05e )
ROM_LOAD( "epr1251.rom", 0x10000, 0x2000, 0x292573de )
ROM_LOAD( "epr1252.rom", 0x12000, 0x2000, 0xaee6e05e )
ROM_LOAD( "epr1253.rom", 0x14000, 0x2000, 0x92783626 )
ROM_LOAD( "epr1254.rom", 0x16000, 0x2000, 0xaee6e05e )
ROM_LOAD( "epr1255.rom", 0x18000, 0x2000, 0x485dcef9 )
ROM_LOAD( "epr1256.rom", 0x1a000, 0x2000, 0xaee6e05e )
ROM_LOAD( "epr1257.rom", 0x1c000, 0x2000, 0x4ca984ce )
ROM_LOAD( "epr1258.rom", 0x1e000, 0x2000, 0xaee6e05e )
ROM_REGION(0x4840) /* the game will need access to this part - road */
ROM_LOAD( "epr1125.rom", 0x0000, 0x0800, 0x65b5d44b )
ROM_LOAD( "epr1126.rom", 0x0800, 0x0800, 0x685ace1b )
ROM_LOAD( "epr1127.rom", 0x1000, 0x0800, 0x9233c9ca )
ROM_LOAD( "epr1238.rom", 0x1800, 0x0800, 0xd94fd83f )
ROM_LOAD( "epr1239.rom", 0x2000, 0x0800, 0x4c41124f )
ROM_LOAD( "epr1240.rom", 0x2800, 0x0800, 0x371d6282 )
ROM_LOAD( "epr1241.rom", 0x3000, 0x0800, 0x1109358a )
ROM_LOAD( "epr1242.rom", 0x3800, 0x0800, 0x04866769 )
ROM_LOAD( "epr1243.rom", 0x4000, 0x0800, 0x29854c48 )
ROM_LOAD( "pr1115.bin", 0x4800, 0x0020, 0x5394092c )
ROM_LOAD( "pr1116.bin", 0x4820, 0x0020, 0x3956767d )
ROM_END
ROM_START( turboa_rom )
ROM_REGION(0x10000) /* 64k for code */
ROM_LOAD( "epr1262.rom", 0x0000, 0x2000, 0x1951b83a )
ROM_LOAD( "epr1263.rom", 0x2000, 0x2000, 0x45e01608 )
ROM_LOAD( "epr1264.rom", 0x4000, 0x2000, 0x1802f6c7 )
ROM_REGION(0x1000) /* temporary space for graphics (disposed after conversion) */
ROM_LOAD( "epr1244.rom", 0x0000, 0x0800, 0x17f67424 )
ROM_LOAD( "epr1245.rom", 0x0800, 0x0800, 0x2ba0b46b )
ROM_REGION(0x1000) /* PROMs */
ROM_LOAD( "pr1121.bin", 0x0000, 0x0200, 0x7692f497 ) /* Color PROM */
ROM_LOAD( "pr-1118.bin", 0x0200, 0x0100, 0x07324cfd ) /* 256x4 Character Color PROM */
ROM_LOAD( "pr1114.bin", 0x0300, 0x0020, 0x78aded46 ) /* Color 1 (road, etc.) */
ROM_LOAD( "pr1117.bin", 0x0320, 0x0020, 0xf06d9907 ) /* Color 2 (road, etc.) */
ROM_LOAD( "sndprom.bin", 0x0340, 0x0020, 0xb369a6ae )
ROM_LOAD( "pr1122.bin", 0x0400, 0x0400, 0x0afed679 ) /* Pattern 1 */
ROM_LOAD( "pr1123.bin", 0x0800, 0x0400, 0x02d2cb52 ) /* Pattern 2 */
ROM_LOAD( "pr-1119.bin", 0x0c00, 0x0200, 0x628d3f1d ) /* timing - not used */
ROM_LOAD( "pr-1120.bin", 0x0e00, 0x0200, 0x591b6a68 ) /* timing - not used */
ROM_REGION(0x20000) /* the game will need access to this part */
ROM_LOAD( "epr1246.rom", 0x00000, 0x2000, 0x555bfe9a )
ROM_RELOAD( 0x02000, 0x2000 )
ROM_LOAD( "epr1247.rom", 0x04000, 0x2000, 0xc8c5e4d5 )
ROM_RELOAD( 0x06000, 0x2000 )
ROM_LOAD( "epr1248.rom", 0x08000, 0x2000, 0x82fe5b94 )
ROM_RELOAD( 0x0a000, 0x2000 )
ROM_LOAD( "epr1249.rom", 0x0c000, 0x2000, 0xe258e009 )
ROM_LOAD( "epr1250.rom", 0x0e000, 0x2000, 0xaee6e05e )
ROM_LOAD( "epr1251.rom", 0x10000, 0x2000, 0x292573de )
ROM_LOAD( "epr1252.rom", 0x12000, 0x2000, 0xaee6e05e )
ROM_LOAD( "epr1253.rom", 0x14000, 0x2000, 0x92783626 )
ROM_LOAD( "epr1254.rom", 0x16000, 0x2000, 0xaee6e05e )
ROM_LOAD( "epr1255.rom", 0x18000, 0x2000, 0x485dcef9 )
ROM_LOAD( "epr1256.rom", 0x1a000, 0x2000, 0xaee6e05e )
ROM_LOAD( "epr1257.rom", 0x1c000, 0x2000, 0x4ca984ce )
ROM_LOAD( "epr1258.rom", 0x1e000, 0x2000, 0xaee6e05e )
ROM_REGION(0x4840) /* the game will need access to this part - road */
ROM_LOAD( "epr1125.rom", 0x0000, 0x0800, 0x65b5d44b )
ROM_LOAD( "epr1126.rom", 0x0800, 0x0800, 0x685ace1b )
ROM_LOAD( "epr1127.rom", 0x1000, 0x0800, 0x9233c9ca )
ROM_LOAD( "epr1238.rom", 0x1800, 0x0800, 0xd94fd83f )
ROM_LOAD( "epr1239.rom", 0x2000, 0x0800, 0x4c41124f )
ROM_LOAD( "epr1240.rom", 0x2800, 0x0800, 0x371d6282 )
ROM_LOAD( "epr1241.rom", 0x3000, 0x0800, 0x1109358a )
ROM_LOAD( "epr1242.rom", 0x3800, 0x0800, 0x04866769 )
ROM_LOAD( "epr1243.rom", 0x4000, 0x0800, 0x29854c48 )
ROM_LOAD( "pr1115.bin", 0x4800, 0x0020, 0x5394092c )
ROM_LOAD( "pr1116.bin", 0x4820, 0x0020, 0x3956767d )
ROM_END
ROM_START( turbob_rom )
ROM_REGION(0x10000) /* 64k for code */
ROM_LOAD( "epr-1363.cpu", 0x0000, 0x2000, 0x5c110fb6 )
ROM_LOAD( "epr-1364.cpu", 0x2000, 0x2000, 0x6a341693 )
ROM_LOAD( "epr-1365.cpu", 0x4000, 0x2000, 0x3b6b0dc8 )
ROM_REGION(0x1000) /* temporary space for graphics (disposed after conversion) */
ROM_LOAD( "epr1244.rom", 0x0000, 0x0800, 0x17f67424 )
ROM_LOAD( "epr1245.rom", 0x0800, 0x0800, 0x2ba0b46b )
ROM_REGION(0x1000) /* PROMs */
ROM_LOAD( "pr1121.bin", 0x0000, 0x0200, 0x7692f497 ) /* Color PROM */
ROM_LOAD( "pr-1118.bin", 0x0200, 0x0100, 0x07324cfd ) /* 256x4 Character Color PROM */
ROM_LOAD( "pr1114.bin", 0x0300, 0x0020, 0x78aded46 ) /* Color 1 (road, etc.) */
ROM_LOAD( "pr1117.bin", 0x0320, 0x0020, 0xf06d9907 ) /* Color 2 (road, etc.) */
ROM_LOAD( "sndprom.bin", 0x0340, 0x0020, 0xb369a6ae )
ROM_LOAD( "pr1122.bin", 0x0400, 0x0400, 0x0afed679 ) /* Pattern 1 */
ROM_LOAD( "pr1123.bin", 0x0800, 0x0400, 0x02d2cb52 ) /* Pattern 2 */
ROM_LOAD( "pr-1119.bin", 0x0c00, 0x0200, 0x628d3f1d ) /* timing - not used */
ROM_LOAD( "pr-1120.bin", 0x0e00, 0x0200, 0x591b6a68 ) /* timing - not used */
ROM_REGION(0x20000) /* the game will need access to this part */
ROM_LOAD( "epr1246.rom", 0x00000, 0x2000, 0x555bfe9a )
ROM_RELOAD( 0x02000, 0x2000 )
ROM_LOAD( "mpr1290.rom", 0x04000, 0x2000, 0x95182020 ) /* is this good? */
ROM_RELOAD( 0x06000, 0x2000 )
ROM_LOAD( "epr1248.rom", 0x08000, 0x2000, 0x82fe5b94 )
ROM_RELOAD( 0x0a000, 0x2000 )
ROM_LOAD( "mpr1291.rom", 0x0c000, 0x2000, 0x0e857f82 ) /* is this good? */
ROM_LOAD( "epr1250.rom", 0x0e000, 0x2000, 0xaee6e05e )
ROM_LOAD( "epr1251.rom", 0x10000, 0x2000, 0x292573de )
ROM_LOAD( "epr1252.rom", 0x12000, 0x2000, 0xaee6e05e )
ROM_LOAD( "epr1253.rom", 0x14000, 0x2000, 0x92783626 )
ROM_LOAD( "epr1254.rom", 0x16000, 0x2000, 0xaee6e05e )
ROM_LOAD( "epr1255.rom", 0x18000, 0x2000, 0x485dcef9 )
ROM_LOAD( "epr1256.rom", 0x1a000, 0x2000, 0xaee6e05e )
ROM_LOAD( "epr1257.rom", 0x1c000, 0x2000, 0x4ca984ce )
ROM_LOAD( "epr1258.rom", 0x1e000, 0x2000, 0xaee6e05e )
ROM_REGION(0x4840) /* the game will need access to this part - road */
ROM_LOAD( "epr1125.rom", 0x0000, 0x0800, 0x65b5d44b )
ROM_LOAD( "epr1126.rom", 0x0800, 0x0800, 0x685ace1b )
ROM_LOAD( "epr1127.rom", 0x1000, 0x0800, 0x9233c9ca )
ROM_LOAD( "epr1238.rom", 0x1800, 0x0800, 0xd94fd83f )
ROM_LOAD( "epr1239.rom", 0x2000, 0x0800, 0x4c41124f )
ROM_LOAD( "epr1240.rom", 0x2800, 0x0800, 0x371d6282 )
ROM_LOAD( "epr1241.rom", 0x3000, 0x0800, 0x1109358a )
ROM_LOAD( "epr1242.rom", 0x3800, 0x0800, 0x04866769 )
ROM_LOAD( "epr1243.rom", 0x4000, 0x0800, 0x29854c48 )
ROM_LOAD( "pr1115.bin", 0x4800, 0x0020, 0x5394092c )
ROM_LOAD( "pr1116.bin", 0x4820, 0x0020, 0x3956767d )
ROM_END
static void turbo_decode(void)
{
/*
* The table is arranged this way (second half is mirror image of first)
*
* 0 1 2 3 4 5 6 7 8 9 A B C D E F
*
* 0 00 00 00 00 01 01 01 01 02 02 02 02 03 03 03 03
* 1 04 04 04 04 05 05 05 05 06 06 06 06 07 07 07 07
* 2 08 08 08 08 09 09 09 09 0A 0A 0A 0A 0B 0B 0B 0B
* 3 0C 0C 0C 0C 0D 0D 0D 0D 0E 0E 0E 0E 0F 0F 0F 0F
* 4 10 10 10 10 11 11 11 11 12 12 12 12 13 13 13 13
* 5 14 14 14 14 15 15 15 15 16 16 16 16 17 17 17 17
* 6 18 18 18 18 19 19 19 19 1A 1A 1A 1A 1B 1B 1B 1B
* 7 1C 1C 1C 1C 1D 1D 1D 1D 1E 1E 1E 1E 1F 1F 1F 1F
* 8 1F 1F 1F 1F 1E 1E 1E 1E 1D 1D 1D 1D 1C 1C 1C 1C
* 9 1B 1B 1B 1B 1A 1A 1A 1A 19 19 19 19 18 18 18 18
* A 17 17 17 17 16 16 16 16 15 15 15 15 14 14 14 14
* B 13 13 13 13 12 12 12 12 11 11 11 11 10 10 10 10
* C 0F 0F 0F 0F 0E 0E 0E 0E 0D 0D 0D 0D 0C 0C 0C 0C
* D 0B 0B 0B 0B 0A 0A 0A 0A 09 09 09 09 08 08 08 08
* E 07 07 07 07 06 06 06 06 05 05 05 05 04 04 04 04
* F 03 03 03 03 02 02 02 02 01 01 01 01 00 00 00 00
*
*/
int offs,i,j;
unsigned char *RAM;
unsigned char src;
static unsigned char xortable[4][32]=
{
/* Table 0 */
/* 0x0000-0x3ff */
/* 0x0800-0xbff */
/* 0x4000-0x43ff */
/* 0x4800-0x4bff */
{ 0x00,0x44,0x0c,0x48,0x00,0x44,0x0c,0x48,
0xa0,0xe4,0xac,0xe8,0xa0,0xe4,0xac,0xe8,
0x60,0x24,0x6c,0x28,0x60,0x24,0x6c,0x28,
0xc0,0x84,0xcc,0x88,0xc0,0x84,0xcc,0x88 },
/* Table 1 */
/* 0x0400-0x07ff */
/* 0x0c00-0x0fff */
/* 0x1400-0x17ff */
/* 0x1c00-0x1fff */
/* 0x2400-0x27ff */
/* 0x2c00-0x2fff */
/* 0x3400-0x37ff */
/* 0x3c00-0x3fff */
/* 0x4400-0x47ff */
/* 0x4c00-0x4fff */
/* 0x5400-0x57ff */
/* 0x5c00-0x5fff */
{ 0x00,0x44,0x18,0x5c,0x14,0x50,0x0c,0x48,
0x28,0x6c,0x30,0x74,0x3c,0x78,0x24,0x60,
0x60,0x24,0x78,0x3c,0x74,0x30,0x6c,0x28,
0x48,0x0c,0x50,0x14,0x5c,0x18,0x44,0x00 },
/* Table 2 */
/* 0x1000-0x13ff */
/* 0x1800-0x1bff */
/* 0x5000-0x53ff */
/* 0x5800-0x5bff */
{ 0x00,0x00,0x28,0x28,0x90,0x90,0xb8,0xb8,
0x28,0x28,0x00,0x00,0xb8,0xb8,0x90,0x90,
0x00,0x00,0x28,0x28,0x90,0x90,0xb8,0xb8,
0x28,0x28,0x00,0x00,0xb8,0xb8,0x90,0x90 },
/* Table 3 */
/* 0x2000-0x23ff */
/* 0x2800-0x2bff */
/* 0x3000-0x33ff */
/* 0x3800-0x3bff */
{ 0x00,0x14,0x88,0x9c,0x30,0x24,0xb8,0xac,
0x24,0x30,0xac,0xb8,0x14,0x00,0x9c,0x88,
0x48,0x5c,0xc0,0xd4,0x78,0x6c,0xf0,0xe4,
0x6c,0x78,0xe4,0xf0,0x5c,0x48,0xd4,0xc0 }
};
int findtable[]=
{
0,1,0,1, /* 0x0000-0x0fff */
2,1,2,1, /* 0x1000-0x1fff */
3,1,3,1, /* 0x2000-0x2fff */
3,1,3,1, /* 0x3000-0x3fff */
0,1,0,1, /* 0x4000-0x4fff */
2,1,2,1 /* 0x5000-0x5fff */
};
RAM = Machine->memory_region[0];
for (offs = 0x0000;offs < 0x6000; offs++)
{
src=RAM[offs];
i=findtable[offs>>10];
j=src>>2;
if (src&0x80) j = 0x3f - j;
RAM[offs] = src ^ xortable[i][j];
}
}
struct GameDriver turbo_driver =
{
__FILE__,
0,
"turbo",
"Turbo",
"1981",
"Sega",
"Alex Pasadyn\nHowie Cohen\nFrank Palazzolo",
GAME_NOT_WORKING,
&turbo_machine_driver,
0,
turbo_rom,
0, 0, /* rom decode and opcode decode functions */
turbo_sample_names,
0, /* sound_prom */
turbo_input_ports,
PROM_MEMORY_REGION(2), 0, 0,
ORIENTATION_ROTATE_270,
0,0
};
struct GameDriver turboa_driver =
{
__FILE__,
&turbo_driver,
"turboa",
"Turbo (encrypted set 1)",
"1981",
"Sega",
"Alex Pasadyn\nHowie Cohen\nFrank Palazzolo",
GAME_NOT_WORKING,
&turbo_machine_driver,
0,
turboa_rom,
turbo_decode, 0, /* rom decode and opcode decode functions */
turbo_sample_names,
0, /* sound_prom */
turbo_input_ports,
PROM_MEMORY_REGION(2), 0, 0,
ORIENTATION_ROTATE_270,
0,0
};
struct GameDriver turbob_driver =
{
__FILE__,
&turbo_driver,
"turbob",
"Turbo (encrypted set 2)",
"1981",
"Sega",
"Alex Pasadyn\nHowie Cohen\nFrank Palazzolo",
GAME_NOT_WORKING,
&turbo_machine_driver,
0,
turbob_rom,
turbo_decode, 0, /* rom decode and opcode decode functions */
turbo_sample_names,
0, /* sound_prom */
turbo_input_ports,
PROM_MEMORY_REGION(2), 0, 0,
ORIENTATION_ROTATE_270,
0,0
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -