trunk/src/mame/drivers/wc90.c
| r249168 | r249169 | |
| 51 | 51 | Press one of the start buttons to exit. |
| 52 | 52 | |
| 53 | 53 | |
| 54 | | ***************************** |
| 55 | | * * |
| 56 | | * Pacman on WC90 Hardware * |
| 57 | | * * |
| 58 | | ***************************** |
| 59 | | |
| 60 | | There is known to be a Pacman hack running on this hardware. It was done by Mike C. and isn't meant |
| 61 | | for inclusion in MAME. However the roms with checksums are listed below to prevent it being added |
| 62 | | as a newly "found" game: |
| 63 | | |
| 64 | | Set is known as pac90 (rom names may differ, but the CRC32/SHA1 values are listed): |
| 65 | | |
| 66 | | rom1.ic87 CRC32 8af34306 SHA1 1a98adca74f46da36e3648d37bfcb56a328a031e |
| 67 | | rom2.ic67 CRC32 bc9bfdf2 SHA1 869e4012e5c577e501143cbfd75cce8cef919c86 |
| 68 | | rom3.ic54 CRC32 1c4d17fd SHA1 5abebf867de452cc3e85331e91b9110c26a8b050 |
| 69 | | char.ic85 CRC32 70941a50 SHA1 283583743c21774d0097dc935ae7bc7009b5b633 |
| 70 | | char.ic85 CRC32 0b906dae SHA1 0d14d6a7bbe0b8772143afb4c6c94c62313e4b9c <-- An alternate version... |
| 71 | | sprite1.ic50 CRC32 190852ea SHA1 fad7eb3aa53d03917173dd5a040655cfd329db32 |
| 72 | | sprite2.ic60 CRC32 33effbea SHA1 dbf6b735f3c8bacb695caf5d15ac8b7961bffc74 |
| 73 | | voice.ic82 CRC32 abc61f3d SHA1 c6f123d16a26c4d77c635617dd97bb4b906c463a |
| 74 | | |
| 75 | | |
| 76 | 54 | */ |
| 77 | 55 | |
| 78 | 56 | #include "emu.h" |
| r249168 | r249169 | |
| 235 | 213 | |
| 236 | 214 | |
| 237 | 215 | |
| 216 | static INPUT_PORTS_START( pac90 ) |
| 217 | PORT_START("P1") |
| 218 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY |
| 219 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY |
| 220 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY |
| 221 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY |
| 222 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) |
| 223 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) |
| 224 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 225 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 226 | |
| 227 | PORT_START("P2") |
| 228 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) |
| 229 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) |
| 230 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) |
| 231 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) |
| 232 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) |
| 233 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) |
| 234 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 235 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 236 | |
| 237 | PORT_START("DSW1") |
| 238 | PORT_DIPNAME( 0x03, 0x01, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:8,7") |
| 239 | PORT_DIPSETTING( 0x03, DEF_STR( 2C_1C ) ) |
| 240 | PORT_DIPSETTING( 0x01, DEF_STR( 1C_1C ) ) |
| 241 | PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) |
| 242 | PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) ) |
| 243 | PORT_DIPNAME( 0x0c, 0x08, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:6,5") |
| 244 | PORT_DIPSETTING( 0x00, "1" ) |
| 245 | PORT_DIPSETTING( 0x04, "2" ) |
| 246 | PORT_DIPSETTING( 0x08, "3" ) |
| 247 | PORT_DIPSETTING( 0x0c, "5" ) |
| 248 | PORT_DIPNAME( 0x30, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:4,3") |
| 249 | PORT_DIPSETTING( 0x00, "10000" ) |
| 250 | PORT_DIPSETTING( 0x10, "15000" ) |
| 251 | PORT_DIPSETTING( 0x20, "20000" ) |
| 252 | PORT_DIPSETTING( 0x30, DEF_STR( None ) ) |
| 253 | PORT_DIPNAME( 0x40, 0x40, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:2") |
| 254 | PORT_DIPSETTING( 0x40, DEF_STR( Normal ) ) |
| 255 | PORT_DIPSETTING( 0x00, DEF_STR( Hard ) ) |
| 256 | PORT_DIPNAME( 0x80, 0x80, "Ghost Names" ) PORT_DIPLOCATION("SW1:1") |
| 257 | PORT_DIPSETTING( 0x80, DEF_STR( Normal ) ) |
| 258 | PORT_DIPSETTING( 0x00, DEF_STR( Alternate ) ) |
| 259 | |
| 260 | PORT_START("DSW2") |
| 261 | PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW2:8") |
| 262 | PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) |
| 263 | PORT_DIPSETTING( 0x01, DEF_STR( On ) ) |
| 264 | PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW2:7") |
| 265 | PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) |
| 266 | PORT_DIPSETTING( 0x02, DEF_STR( On ) ) |
| 267 | PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW2:6") |
| 268 | PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) |
| 269 | PORT_DIPSETTING( 0x04, DEF_STR( On ) ) |
| 270 | PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW2:5") |
| 271 | PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) |
| 272 | PORT_DIPSETTING( 0x08, DEF_STR( On ) ) |
| 273 | PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW2:4") |
| 274 | PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) |
| 275 | PORT_DIPSETTING( 0x10, DEF_STR( On ) ) |
| 276 | PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW2:3") |
| 277 | PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) |
| 278 | PORT_DIPSETTING( 0x20, DEF_STR( On ) ) |
| 279 | PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW2:2") |
| 280 | PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) |
| 281 | PORT_DIPSETTING( 0x40, DEF_STR( On ) ) |
| 282 | PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW2:1") |
| 283 | PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) |
| 284 | PORT_DIPSETTING( 0x80, DEF_STR( On ) ) |
| 285 | |
| 286 | |
| 287 | PORT_START("SYSTEM") |
| 288 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) |
| 289 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) |
| 290 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 ) |
| 291 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 ) |
| 292 | INPUT_PORTS_END |
| 293 | |
| 294 | |
| 295 | |
| 238 | 296 | static const gfx_layout charlayout = |
| 239 | 297 | { |
| 240 | 298 | 8,8, |
| r249168 | r249169 | |
| 332 | 390 | MCFG_VIDEO_START_OVERRIDE(wc90_state, wc90t ) |
| 333 | 391 | MACHINE_CONFIG_END |
| 334 | 392 | |
| 393 | static MACHINE_CONFIG_DERIVED( pac90, wc90 ) |
| 394 | MCFG_DEVICE_MODIFY("spritegen") |
| 395 | MCFG_TECMO_SPRITE_YOFFSET(16) // sprites need shifting, why? |
| 396 | MACHINE_CONFIG_END |
| 397 | |
| 398 | |
| 335 | 399 | ROM_START( wc90 ) |
| 336 | 400 | ROM_REGION( 0x20000, "maincpu", 0 ) |
| 337 | 401 | ROM_LOAD( "ic87_01.bin", 0x00000, 0x08000, CRC(4a1affbc) SHA1(bc531e97ca31c66fdac194e2d79d5c6ba1300556) ) /* c000-ffff is not used */ |
| r249168 | r249169 | |
| 365 | 429 | ROM_LOAD( "ic82_06.bin", 0x00000, 0x20000, CRC(2fd692ed) SHA1(0273dc39181504320bec0187d074b2f86c821508) ) |
| 366 | 430 | ROM_END |
| 367 | 431 | |
| 432 | |
| 368 | 433 | ROM_START( wc90a ) |
| 369 | 434 | ROM_REGION( 0x20000, "maincpu", 0 ) |
| 370 | 435 | ROM_LOAD( "wc90-1.bin", 0x00000, 0x08000, CRC(d1804e1a) SHA1(eec7374f4d23c89843f38fffff436635adb43b63) ) /* c000-ffff is not used */ |
| r249168 | r249169 | |
| 464 | 529 | ROM_LOAD( "ic82_06.bin", 0x00000, 0x20000, CRC(2fd692ed) SHA1(0273dc39181504320bec0187d074b2f86c821508) ) |
| 465 | 530 | ROM_END |
| 466 | 531 | |
| 532 | ROM_START( pac90 ) |
| 533 | ROM_REGION( 0x20000, "maincpu", 0 ) |
| 534 | ROM_LOAD( "rom1.ic87", 0x00000, 0x08000, CRC(8af34306) SHA1(1a98adca74f46da36e3648d37bfcb56a328a031e) ) |
| 535 | |
| 536 | ROM_REGION( 0x20000, "sub", ROMREGION_ERASE00 ) /* Second CPU */ |
| 537 | ROM_LOAD( "rom2.ic67", 0x00000, 0x10000, CRC(bc9bfdf2) SHA1(869e4012e5c577e501143cbfd75cce8cef919c86) ) |
| 538 | |
| 539 | ROM_REGION( 0x10000, "audiocpu", 0 ) |
| 540 | ROM_LOAD( "rom3.ic54", 0x00000, 0x10000, CRC(1c4d17fd) SHA1(5abebf867de452cc3e85331e91b9110c26a8b050) ) |
| 541 | |
| 542 | ROM_REGION( 0x010000, "gfx1", 0 ) |
| 543 | ROM_LOAD( "char.ic85", 0x00000, 0x10000, CRC(70941a50) SHA1(283583743c21774d0097dc935ae7bc7009b5b633) ) |
| 544 | // char.ic85 CRC32 0b906dae SHA1 0d14d6a7bbe0b8772143afb4c6c94c62313e4b9c <-- An alternate version... |
| 545 | |
| 546 | ROM_REGION( 0x040000, "gfx2", ROMREGION_ERASE00 ) |
| 547 | //ROM_LOAD( "ic86_08v.bin", 0x00000, 0x20000, CRC(8fa1a1ff) SHA1(ce624617ac8c8b54e41294cf5dca7a09c91f53ba) ) /* tiles #1 */ |
| 548 | //ROM_LOAD( "ic90_09v.bin", 0x20000, 0x20000, CRC(99f8841c) SHA1(1969b4d78ca00924a7550826e1c4f4fa0588ef02) ) /* tiles #2 */ |
| 549 | |
| 550 | ROM_REGION( 0x040000, "gfx3", ROMREGION_ERASE00 ) |
| 551 | //ROM_LOAD( "ic87_10v.bin", 0x00000, 0x20000, CRC(8232093d) SHA1(59bf9c9a858b47326cf0c64b1ee6ac727a15a20b) ) /* tiles #3 */ |
| 552 | //ROM_LOAD( "ic91_11v.bin", 0x20000, 0x20000, CRC(188d3789) SHA1(35654a99a20735bae09b32f74255f8132dee9af2) ) /* tiles #4 */ |
| 553 | |
| 554 | ROM_REGION( 0x080000, "gfx4", ROMREGION_ERASE00 ) |
| 555 | ROM_LOAD( "sprite1.ic50", 0x00000, 0x10000, CRC(190852ea) SHA1(fad7eb3aa53d03917173dd5a040655cfd329db32) ) /* sprites */ |
| 556 | ROM_LOAD( "sprite2.ic60", 0x40000, 0x10000, CRC(33effbea) SHA1(dbf6b735f3c8bacb695caf5d15ac8b7961bffc74) ) /* sprites */ |
| 557 | |
| 558 | ROM_REGION( 0x20000, "ymsnd", ROMREGION_ERASE00 ) /* 64k for ADPCM samples */ |
| 559 | ROM_LOAD( "voice.ic82", 0x00000, 0x10000, CRC(abc61f3d) SHA1(c6f123d16a26c4d77c635617dd97bb4b906c463a) ) |
| 560 | ROM_END |
| 561 | |
| 562 | |
| 467 | 563 | GAME( 1989, wc90, 0, wc90, wc90, driver_device, 0, ROT0, "Tecmo", "Tecmo World Cup '90 (World)", MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) |
| 468 | 564 | GAME( 1989, wc90a, wc90, wc90, wc90, driver_device, 0, ROT0, "Tecmo", "Tecmo World Cup '90 (Euro set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) |
| 469 | 565 | GAME( 1989, wc90b, wc90, wc90, wc90, driver_device, 0, ROT0, "Tecmo", "Tecmo World Cup '90 (Euro set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) |
| 470 | 566 | GAME( 1989, wc90t, wc90, wc90t,wc90, driver_device, 0, ROT0, "Tecmo", "Tecmo World Cup '90 (trackball set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) |
| 567 | |
| 568 | GAME( 199?, pac90, puckman, pac90,pac90,driver_device, 0, ROT90, "bootleg (Macro)", "Pac-Man (bootleg on World Cup '90 hardware)", MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // made by Mike Coates etc. |