Previous 199869 Revisions Next

r40657 Wednesday 9th September, 2015 at 14:21:30 UTC by David Haywood
this 'pac90' bootleg has been showing up on boards pulled from actual arcade cabs in Spain as of late.

we know the origins of the set (was made by Mike Coates etc.) but it's pretty old now, and as it's showing up on real hardware that's been used in arcades I think we may as well support it.
[src/mame]arcade.lst
[src/mame/drivers]wc90.c
[src/mame/video]tecmo_spr.c tecmo_spr.h

trunk/src/mame/arcade.lst
r249168r249169
62886288wc90b1          // bootleg
62896289wc90b2          // bootleg
62906290wc90ba          // bootleg
6291pac90         // bootleg
62916292spbactn         // 9002 - (c) 1991 Tecmo
62926293spbactnj        // 9002 - (c) 1991 Tecmo
62936294spbactnp        // prototype
trunk/src/mame/drivers/wc90.c
r249168r249169
5151Press one of the start buttons to exit.
5252
5353
54*****************************
55*                           *
56*  Pacman on WC90 Hardware  *
57*                           *
58*****************************
59
60There is known to be a Pacman hack running on this hardware.  It was done by Mike C. and isn't meant
61for inclusion in MAME.  However the roms with checksums are listed below to prevent it being added
62as a newly "found" game:
63
64Set is known as pac90 (rom names may differ, but the CRC32/SHA1 values are listed):
65
66rom1.ic87      CRC32 8af34306   SHA1 1a98adca74f46da36e3648d37bfcb56a328a031e
67rom2.ic67      CRC32 bc9bfdf2   SHA1 869e4012e5c577e501143cbfd75cce8cef919c86
68rom3.ic54      CRC32 1c4d17fd   SHA1 5abebf867de452cc3e85331e91b9110c26a8b050
69char.ic85      CRC32 70941a50   SHA1 283583743c21774d0097dc935ae7bc7009b5b633
70char.ic85      CRC32 0b906dae   SHA1 0d14d6a7bbe0b8772143afb4c6c94c62313e4b9c <-- An alternate version...
71sprite1.ic50   CRC32 190852ea   SHA1 fad7eb3aa53d03917173dd5a040655cfd329db32
72sprite2.ic60   CRC32 33effbea   SHA1 dbf6b735f3c8bacb695caf5d15ac8b7961bffc74
73voice.ic82     CRC32 abc61f3d   SHA1 c6f123d16a26c4d77c635617dd97bb4b906c463a
74
75
7654*/
7755
7856#include "emu.h"
r249168r249169
235213
236214
237215
216static 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 )
292INPUT_PORTS_END
293
294
295
238296static const gfx_layout charlayout =
239297{
240298   8,8,
r249168r249169
332390   MCFG_VIDEO_START_OVERRIDE(wc90_state, wc90t )
333391MACHINE_CONFIG_END
334392
393static MACHINE_CONFIG_DERIVED( pac90, wc90 )
394   MCFG_DEVICE_MODIFY("spritegen")
395   MCFG_TECMO_SPRITE_YOFFSET(16) // sprites need shifting, why?
396MACHINE_CONFIG_END
397
398
335399ROM_START( wc90 )
336400   ROM_REGION( 0x20000, "maincpu", 0 )
337401   ROM_LOAD( "ic87_01.bin",  0x00000, 0x08000, CRC(4a1affbc) SHA1(bc531e97ca31c66fdac194e2d79d5c6ba1300556) )  /* c000-ffff is not used */
r249168r249169
365429   ROM_LOAD( "ic82_06.bin",  0x00000, 0x20000, CRC(2fd692ed) SHA1(0273dc39181504320bec0187d074b2f86c821508) )
366430ROM_END
367431
432
368433ROM_START( wc90a )
369434   ROM_REGION( 0x20000, "maincpu", 0 )
370435   ROM_LOAD( "wc90-1.bin",   0x00000, 0x08000, CRC(d1804e1a) SHA1(eec7374f4d23c89843f38fffff436635adb43b63) )  /* c000-ffff is not used */
r249168r249169
464529   ROM_LOAD( "ic82_06.bin",  0x00000, 0x20000, CRC(2fd692ed) SHA1(0273dc39181504320bec0187d074b2f86c821508) )
465530ROM_END
466531
532ROM_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) )
560ROM_END
561
562
467563GAME( 1989, wc90,  0,    wc90, wc90, driver_device, 0, ROT0, "Tecmo", "Tecmo World Cup '90 (World)", MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
468564GAME( 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 )
469565GAME( 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 )
470566GAME( 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
568GAME( 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.
trunk/src/mame/video/tecmo_spr.c
r249168r249169
2020tecmo_spr_device::tecmo_spr_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
2121   : device_t(mconfig, TECMO_SPRITE, "Tecmo Chained Sprites", tag, owner, clock, "tecmo_spr", __FILE__),
2222m_gfxregion(0),
23m_bootleg(0)
23m_bootleg(0),
24m_yoffset(0)
2425{
2526}
2627
r249168r249169
4647   dev.m_bootleg = bootleg;
4748}
4849
50void tecmo_spr_device::set_yoffset(device_t &device, int yoffset)
51{
52   tecmo_spr_device &dev = downcast<tecmo_spr_device &>(device);
53   dev.m_yoffset = yoffset;
54}
4955
56
5057static const UINT8 layout[8][8] =
5158{
5259   { 0, 1, 4, 5, 16, 17, 20, 21 },
r249168r249169
323330            code = ( spriteram[offs+2] ) + ( spriteram[offs+3] << 8 );
324331
325332            int xpos = spriteram[offs + 8] + ( (spriteram[offs + 9] & 3 ) << 8 );
326            int ypos = spriteram[offs + 6] + ( (spriteram[offs + 7] & 1 ) << 8 );
333            int ypos = spriteram[offs + 6] + ( (spriteram[offs + 7] & 1 ) << 8 ) + m_yoffset;
327334
328335            if (xpos >= 0x0300) xpos -= 0x0400;
329336
trunk/src/mame/video/tecmo_spr.h
r249168r249169
1010   tecmo_spr_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
1111   static void set_gfx_region(device_t &device, int gfxregion);
1212   static void set_bootleg(device_t &device, int bootleg);
13   static void set_yoffset(device_t &device, int bootleg);
1314
1415   // gaiden.c / spbactn.c / tecmo16.c sprites
1516   void gaiden_draw_sprites(screen_device &screen, gfxdecode_device *gfxdecode, const rectangle &cliprect, UINT16* spriteram, int sprite_sizey, int spr_offset_y, int flip_screen, bitmap_ind16 &sprite_bitmap);
r249168r249169
2930
3031   UINT8 m_gfxregion;
3132   int m_bootleg; // for Gals Pinball / Hot Pinball
33   int m_yoffset;
3234
33
3435private:
3536};
3637
r249168r249169
4243
4344#define MCFG_TECMO_SPRITE_BOOTLEG(_bootleg) \
4445   tecmo_spr_device::set_bootleg(*device, _bootleg);
46
47#define MCFG_TECMO_SPRITE_YOFFSET(_yoffset) \
48   tecmo_spr_device::set_yoffset(*device, _yoffset);


Previous 199869 Revisions Next


© 1997-2024 The MAME Team