Previous 199869 Revisions Next

r17937 Sunday 16th September, 2012 at 17:57:00 UTC by hap
Game promoted to working
-------------------------
Magicball Fighting (Korea) [Guru, David Haywood]
[src/mame/drivers]tumbleb.c
[src/mame/includes]tumbleb.h

trunk/src/mame/includes/tumbleb.h
r17936r17937
33{
44public:
55   tumbleb_state(const machine_config &mconfig, device_type type, const char *tag)
6      : driver_device(mconfig, type, tag) ,
6      : driver_device(mconfig, type, tag),
77      m_mainram(*this, "mainram"),
88      m_spriteram(*this, "spriteram"),
99      m_pf1_data(*this, "pf1_data"),
1010      m_pf2_data(*this, "pf2_data"),
11      m_control(*this, "control"){ }
11      m_control(*this, "control")
12   { }
1213
1314   /* memory pointers */
1415   optional_shared_ptr<UINT16> m_mainram;
r17936r17937
7273   DECLARE_DRIVER_INIT(tumbleb2);
7374   DECLARE_DRIVER_INIT(chokchok);
7475   DECLARE_DRIVER_INIT(fncywld);
75   DECLARE_DRIVER_INIT(magicbal);
7676   TILEMAP_MAPPER_MEMBER(tumblep_scan);
7777   TILE_GET_INFO_MEMBER(get_bg1_tile_info);
7878   TILE_GET_INFO_MEMBER(get_bg2_tile_info);
r17936r17937
9393   DECLARE_VIDEO_START(sdfight);
9494};
9595
96
9697/*----------- defined in video/tumbleb.c -----------*/
9798
98
99
100
101
102
103
104
105
10699SCREEN_UPDATE_IND16( tumblepb );
107100SCREEN_UPDATE_IND16( jumpkids );
108101SCREEN_UPDATE_IND16( fncywld );
109102SCREEN_UPDATE_IND16( semicom );
110103SCREEN_UPDATE_IND16( semicom_altoffsets );
111104SCREEN_UPDATE_IND16( bcstory );
112SCREEN_UPDATE_IND16(semibase );
105SCREEN_UPDATE_IND16( semibase );
113106SCREEN_UPDATE_IND16( suprtrio );
114107SCREEN_UPDATE_IND16( pangpang );
115108SCREEN_UPDATE_IND16( sdfight );
trunk/src/mame/drivers/tumbleb.c
r17936r17937
13611361   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
13621362INPUT_PORTS_END
13631363
1364
1365static INPUT_PORTS_START( magicbal )
1366   PORT_START("PLAYERS")
1367   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
1368   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
1369   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
1370   PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
1371   PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
1372   PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
1373   PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
1374   PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START1 )
1375   PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
1376   PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
1377   PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
1378   PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
1379   PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
1380   PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
1381   PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
1382   PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_START2 )
1383
1384   PORT_START("SYSTEM")
1385   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
1386   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
1387   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
1388   PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen")       // to be confirmed
1389   PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
1390   PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
1391   PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
1392   PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
1393
1394   PORT_START("DSW")
1395   PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Unknown ) )
1396   PORT_DIPSETTING(      0x0001, DEF_STR( Off ) )
1397   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1398   PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
1399   PORT_DIPSETTING(      0x0002, DEF_STR( Off ) )
1400   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1401   PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )
1402   PORT_DIPSETTING(      0x0004, DEF_STR( Off ) )
1403   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1404   PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
1405   PORT_DIPSETTING(      0x0008, DEF_STR( Off ) )
1406   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1407   PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )
1408   PORT_DIPSETTING(      0x0010, DEF_STR( Off ) )
1409   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1410   PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )
1411   PORT_DIPSETTING(      0x0020, DEF_STR( Off ) )
1412   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1413   PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )
1414   PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
1415   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1416   PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) )
1417   PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
1418   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1419
1420   PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) )
1421   PORT_DIPSETTING(      0x0100, DEF_STR( Off ) )
1422   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1423   PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
1424   PORT_DIPSETTING(      0x0200, DEF_STR( Off ) )
1425   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1426   PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
1427   PORT_DIPSETTING(      0x0400, DEF_STR( Off ) )
1428   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1429   PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
1430   PORT_DIPSETTING(      0x0800, DEF_STR( Off ) )
1431   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1432   PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
1433   PORT_DIPSETTING(      0x1000, DEF_STR( Off ) )
1434   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1435   PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
1436   PORT_DIPSETTING(      0x2000, DEF_STR( Off ) )
1437   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1438   PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
1439   PORT_DIPSETTING(      0x4000, DEF_STR( Off ) )
1440   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1441   PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
1442   PORT_DIPSETTING(      0x8000, DEF_STR( Off ) )
1443   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1444INPUT_PORTS_END
1445
13641446static INPUT_PORTS_START( wlstar )
13651447   PORT_START("PLAYERS")
13661448   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
r17936r17937
21542236   MCFG_SOUND_ROUTE(1, "rspeaker", 0.10)
21552237MACHINE_CONFIG_END
21562238
2157static INTERRUPT_GEN( magicbal_interrupt )
2158{
2159   address_space *space = device->machine().device<legacy_cpu_device>("maincpu")->space();
2160   static int i=0x0000;
2161   i^=0xffff;
21622239
2163   space->write_word( 0x12189a, i,0xffff );
2164   space->write_word( 0x12189c, i,0xffff );
2165   space->write_word( 0x12189e, i,0xffff );
2166}
21672240
21682241
2169static MACHINE_CONFIG_DERIVED( magicbal, metlsavr )
2170   MCFG_CPU_MODIFY("maincpu")
2171   MCFG_CPU_VBLANK_INT("screen", magicbal_interrupt)
2172MACHINE_CONFIG_END
2173
2174
2175
21762242static MACHINE_CONFIG_START( suprtrio, tumbleb_state )
21772243
21782244   /* basic machine hardware */
r17936r17937
28832949
28842950   ROM_REGION16_BE( 0x200, "user1", ROMREGION_ERASE00 ) /* Data from Shared RAM */
28852951   /* this is not a real rom but instead the data extracted from shared ram, the MCU puts it there */
2886//   ROM_LOAD16_WORD( "protdata.bin", 0x00000, 0x200, CRC(17aa17a9) SHA1(5b83159c62473f79e7fced0d86acfaf697ad5537) )
2952   ROM_LOAD16_WORD( "protdata.bin", 0x00000, 0x200, CRC(fb67d20d) SHA1(63f2862a7ded075d501e21919f211d156bef4fb4) )
28872953
28882954   ROM_REGION( 0x040000, "oki", 0 ) /* Samples */
28892955   ROM_LOAD( "uc1", 0x00000, 0x40000, CRC(6e4cec27) SHA1(9dd07684502300589e957d1bcde0239880eaada2) )
r17936r17937
32113277
32123278DRIVER_INIT_MEMBER(tumbleb_state,htchctch)
32133279{
3214
3215//  UINT16 *HCROM = (UINT16*)memregion("maincpu")->base();
32163280   UINT16 *PROTDATA = (UINT16*)memregion("user1")->base();
32173281   int i, len = memregion("user1")->bytes();
32183282   /* simulate RAM initialization done by the protection MCU */
3219   /* verified on real hardware */
3220//  static const UINT16 htchctch_mcu68k[] =
3221//  {
3222//      /* moved to protdata.bin file .. */
3223//  };
32243283
3225
3226//  for (i = 0; i < sizeof(htchctch_mcu68k) / sizeof(htchctch_mcu68k[0]); i++)
3227//      m_mainram[0x000/2 + i] = htchctch_mcu68k[i];
3228
32293284   for (i = 0; i < len / 2; i++)
32303285      m_mainram[0x000/2 + i] = PROTDATA[i];
32313286
3232
3233
32343287   tumblepb_gfx1_rearrange(machine());
32353288
3236/* trojan.. */
3237#if 0
3238   /* patch the irq 6 vector */
3239   HCROM[0x00078/2] = 0x0001;
3240   HCROM[0x0007a/2] = 0xe000;
3241
3242   /* our new interrupt code */
3243
3244   /* put registers on stack */
3245   HCROM[0x1e000/2] = 0x48e7;
3246   HCROM[0x1e002/2] = 0xfffe;
3247
3248   /* put the address we want to copy FROM in A0 */
3249   HCROM[0x1e004/2] = 0x41f9;
3250   HCROM[0x1e006/2] = 0x0012;
3251   HCROM[0x1e008/2] = 0x0000;
3252
3253   /* put the address we want to copy TO in A1 */
3254   HCROM[0x1e00a/2] = 0x43f9;
3255   HCROM[0x1e00c/2] = 0x0012;
3256   HCROM[0x1e00e/2] = 0x2000;
3257
3258   /* put the number of words we want to copy into D0 */
3259   HCROM[0x1e010/2] = 0x203c;
3260   HCROM[0x1e012/2] = 0x0000;
3261   HCROM[0x1e014/2] = 0x0100;
3262
3263   /* copy a word */
3264   HCROM[0x1e016/2] = 0x32d8;
3265
3266   /* decrease counter d0 */
3267   HCROM[0x1e018/2] = 0x5380;
3268
3269   /* compare d0 to 0 */
3270   HCROM[0x1e01a/2] = 0x0c80;
3271   HCROM[0x1e01c/2] = 0x0000;
3272   HCROM[0x1e01e/2] = 0x0000;
3273
3274   /* if its not 0 then branch back */
3275   HCROM[0x1e020/2] = 0x66f4;
3276
3277
3278
3279
3280   /* jump to drawing subroutine */
3281   HCROM[0x1e022/2] = 0x4eb9;
3282   HCROM[0x1e024/2] = 0x0001;
3283   HCROM[0x1e026/2] = 0xe100;
3284
3285   /* get back registers from stack*/
3286   HCROM[0x1e028/2] = 0x4cdf;
3287   HCROM[0x1e02a/2] = 0x7fff;
3288
3289   /* jump to where the interrupt vector was copied to */
3290   HCROM[0x1e02c/2] = 0x4ef9;
3291   HCROM[0x1e02e/2] = 0x0012;
3292   HCROM[0x1e030/2] = 0x2000;
3293   /* we're back in the game code */
3294
3295
3296   /* these subroutines are called from the new interrupt code above, i use them to draw */
3297
3298   /* DRAWING SUBROUTINE */
3299
3300   /* put the address we want to write to in A0 */
3301   HCROM[0x1e100/2] = 0x41f9;
3302   HCROM[0x1e102/2] = 0x0032;
3303   HCROM[0x1e104/2] = 0x0104;
3304
3305   /* put the character we want to draw into D0 */
3306   /* this bit isn't needed .. we end up using d4 then copying it over */
3307   HCROM[0x1e106/2] = 0x203c;
3308   HCROM[0x1e108/2] = 0x0000;
3309   HCROM[0x1e10a/2] = 0x0007;
3310
3311   /* put the address we to read to in A2 */
3312   HCROM[0x1e10c/2] = 0x45f9;
3313   HCROM[0x1e10e/2] = 0x0012;
3314//  HCROM[0x1e110/2] = 0x2000;
3315   HCROM[0x1e110/2] = 0x2000+0x60+0x60+0x60+0x60+0x60;
3316
3317   /* put the number of rows into D3 */
3318   HCROM[0x1e112/2] = 0x263c;
3319   HCROM[0x1e114/2] = 0x0000;
3320   HCROM[0x1e116/2] = 0x000c;
3321
3322   /* put the number of bytes per row into D2 */
3323   HCROM[0x1e118/2] = 0x243c;
3324   HCROM[0x1e11a/2] = 0x0000;
3325   HCROM[0x1e11c/2] = 0x0008;
3326
3327
3328   // move content of a2 to d4 (byte)
3329   HCROM[0x1e11e/2] = 0x1812;
3330
3331   HCROM[0x1e120/2] = 0xe84c; // shift d4 right by 4
3332
3333   HCROM[0x1e122/2] = 0x0244; // mask with 0x000f
3334   HCROM[0x1e124/2] = 0x000f; //
3335
3336   HCROM[0x1e126/2] = 0x3004; // d4 -> d0
3337
3338   /* jump to character draw to draw first bit */
3339   HCROM[0x1e128/2] = 0x4eb9;
3340   HCROM[0x1e12a/2] = 0x0001;
3341   HCROM[0x1e12c/2] = 0xe200;
3342
3343   /* add 2 to draw address a0 */
3344   HCROM[0x1e12e/2] = 0xd1fc;
3345   HCROM[0x1e130/2] = 0x0000;
3346   HCROM[0x1e132/2] = 0x0002;
3347
3348
3349   // move content of a2 to d4 (byte)
3350   HCROM[0x1e134/2] = 0x1812;
3351
3352   HCROM[0x1e136/2] = 0x0244; // mask with 0x000f
3353   HCROM[0x1e138/2] = 0x000f; //
3354
3355   HCROM[0x1e13a/2] = 0x3004; // d4 -> d0
3356
3357   /* jump to character draw to draw second bit */
3358   HCROM[0x1e13c/2] = 0x4eb9;
3359   HCROM[0x1e13e/2] = 0x0001;
3360   HCROM[0x1e140/2] = 0xe200;
3361
3362   /* add 2 to draw address a0 */
3363   HCROM[0x1e142/2] = 0xd1fc;
3364   HCROM[0x1e144/2] = 0x0000;
3365   HCROM[0x1e146/2] = 0x0002;
3366
3367   /* add 1 to read address a2 */
3368   HCROM[0x1e148/2] = 0xd5fc;
3369   HCROM[0x1e14a/2] = 0x0000;
3370   HCROM[0x1e14c/2] = 0x0001;
3371
3372// brr
3373   /* decrease counter d2 */
3374   HCROM[0x1e14e/2] = 0x5382;
3375
3376   /* compare d2 to 0 */
3377   HCROM[0x1e150/2] = 0x0c82;
3378   HCROM[0x1e152/2] = 0x0000;
3379   HCROM[0x1e154/2] = 0x0000;
3380
3381   /* if its not 0 then branch back */
3382   HCROM[0x1e156/2] = 0x66c6;
3383
3384   /* add 0xe0 to draw address a0 (0x100-0x20) */
3385   HCROM[0x1e158/2] = 0xd1fc;
3386   HCROM[0x1e15a/2] = 0x0000;
3387   HCROM[0x1e15c/2] = 0x00e0;
3388
3389   /* decrease counter d2 */
3390   HCROM[0x1e15e/2] = 0x5383;
3391
3392   /* compare d2 to 0 */
3393   HCROM[0x1e160/2] = 0x0c83;
3394   HCROM[0x1e162/2] = 0x0000;
3395   HCROM[0x1e164/2] = 0x0000;
3396
3397   /* if its not 0 then branch back */
3398   HCROM[0x1e166/2] = 0x66b0;
3399
3400   HCROM[0x1e168/2] = 0x4e75; // rts
3401
3402   /* DRAW CHARACTER SUBROUTINE, note, this won't restore a1,d1, don't other places! */
3403
3404   /* move address into A0->A1 for use by this subroutine */
3405   HCROM[0x1e200/2] = 0x2248;
3406
3407   /* move address into D0->D1 for top half of character */
3408   HCROM[0x1e202/2] = 0x2200;
3409
3410   /* add 0x30 to d1 to get the REAL tile code */
3411   HCROM[0x1e204/2] = 0x0681;
3412   HCROM[0x1e206/2] = 0x0000;
3413   HCROM[0x1e208/2] = 0x0030;
3414
3415   /* or with 0xf000 to add the tile attribute */
3416   HCROM[0x1e20a/2] = 0x0081;
3417   HCROM[0x1e20c/2] = 0x0000;
3418   HCROM[0x1e20e/2] = 0xf000;
3419
3420   /* write d1 -> a1 for TOP half */
3421   HCROM[0x1e210/2] = 0x32c1; // not ideal .. we don't need to increase a1
3422
3423   /* move address into A0->A1 for use by this subroutine */
3424   HCROM[0x1e212/2] = 0x2248;
3425
3426   /* add 0x80 to the address so we have the bottom location */
3427   HCROM[0x1e214/2] = 0xd2fc;
3428   HCROM[0x1e216/2] = 0x0080;
3429
3430   /* move address into D0->D1 for bottom  half of character */
3431   HCROM[0x1e218/2] = 0x2200;
3432
3433   /* add 0x54 to d1 to get the REAL tile code for bottom half */
3434   HCROM[0x1e21a/2] = 0x0681;
3435   HCROM[0x1e21c/2] = 0x0000;
3436   HCROM[0x1e21e/2] = 0x0054;
3437
3438   /* or with 0xf000 to add the tile attribute */
3439   HCROM[0x1e220/2] = 0x0081;
3440   HCROM[0x1e222/2] = 0x0000;
3441   HCROM[0x1e224/2] = 0xf000;
3442
3443   /* write d1 -> a1 for BOTTOM half */
3444   HCROM[0x1e226/2] = 0x32c1; // not ideal .. we don't need to increase a1
3445
3446
3447   HCROM[0x1e228/2] = 0x4e75;
3448
3449   machine().device("maincpu")->memory().space(AS_PROGRAM)->nop_write(0x140000, 0x1407ff); // kill palette writes as the interrupt code we don't have controls them
3450
3451
3452   {
3453      FILE *fp;
3454
3455      fp=fopen("hcatch", "w+b");
3456      if (fp)
3457      {
3458         fwrite(HCROM, 0x40000, 1, fp);
3459         fclose(fp);
3460      }
3461   }
3462#endif
3463
34643289}
34653290
34663291
r17936r17937
35373362   tumblepb_gfx1_rearrange(machine());
35383363}
35393364
3540DRIVER_INIT_MEMBER(tumbleb_state,magicbal)
3541{
3542   DRIVER_INIT_CALL(htchctch);
35433365
3544   // wipe out the palette handler for now
3545   machine().device("maincpu")->memory().space(AS_PROGRAM)->install_ram(0x140000, 0x140fff);
35463366
3547   /* slightly different banking */
3548   machine().device("maincpu")->memory().space(AS_PROGRAM)->install_write_handler(0x100002, 0x100003, write16_delegate(FUNC(tumbleb_state::chokchok_tilebank_w),this));
3549}
3550
3551
35523367/******************************************************************************/
35533368
35543369/* Misc 'bootleg' hardware - close to base Tumble Pop */
r17936r17937
35643379
35653380/* First Amusement / Mijin / SemiCom hardware (MCU protected) */
35663381GAME( 1994, metlsavr, 0,       metlsavr,    metlsavr, tumbleb_state, chokchok, ROT0, "First Amusement", "Metal Saver", GAME_SUPPORTS_SAVE )
3567GAME( 1994, magicbal, 0,       magicbal,   metlsavr, tumbleb_state, magicbal, ROT0, "SemiCom", "Magicball Fighting (Korea)", GAME_NOT_WORKING) // also still has the Metal Saver (c)1994 First Amusement tiles in the GFX
3568GAME( 1995, chokchok, 0,       cookbib,     chokchok, tumbleb_state, chokchok, ROT0, "SemiCom", "Choky! Choky!", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE  ) // corruption during attract mode (tmap disable?)
3382GAME( 1994, magicbal, 0,       metlsavr,    magicbal, tumbleb_state, chokchok, ROT0, "SemiCom", "Magicball Fighting (Korea)", GAME_SUPPORTS_SAVE) // also still has the Metal Saver (c)1994 First Amusement tiles in the GFX
3383GAME( 1995, chokchok, 0,       cookbib,     chokchok, tumbleb_state, chokchok, ROT0, "SemiCom", "Choky! Choky!", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE  )
35693384GAME( 1995, wlstar,   0,       cookbib_mcu, wlstar, tumbleb_state,   wlstar,   ROT0, "Mijin",   "Wonder League Star - Sok-Magicball Fighting (Korea)", GAME_SUPPORTS_SAVE ) // translates to 'Wonder League Star - Return of Magicball Fighting'
35703385GAME( 1995, htchctch, 0,       htchctch,    htchctch, tumbleb_state, htchctch, ROT0, "SemiCom", "Hatch Catch" , GAME_SUPPORTS_SAVE ) // not 100% sure about gfx offsets
35713386GAME( 1995, cookbib,  0,       cookbib,     cookbib, tumbleb_state,  htchctch, ROT0, "SemiCom", "Cookie & Bibi" , GAME_SUPPORTS_SAVE ) // not 100% sure about gfx offsets

Previous 199869 Revisions Next


© 1997-2024 The MAME Team