Previous 199869 Revisions Next

r19751 Sunday 23rd December, 2012 at 13:00:01 UTC by David Haywood
new NOT WORKING GAME
Manhattan [Charles MacDonald, The Dumping Union]

(it loads, but I have no idea how you're meant to play it and the attract demo does nothing but cycle the title logo?)
[src/mame]mame.lst
[src/mame/drivers]decocass.c
[src/mame/includes]decocass.h
[src/mame/machine]decocass.c

trunk/src/mame/machine/decocass.c
r19750r19751
401401   return data;
402402}
403403
404
404405/***************************************************************************
405406 *
406407 *  TYPE1 DONGLE (DE-0061)
408 *  - Manhattan
409 *
410 * Input bits that are passed uninverted = $54 (3 true bits)
411 * Input bits that are passed inverted   = $00 (0 inverted bits)
412 * Remaining bits for addressing PROM    = $AB (5 bits)
413 *
414 ***************************************************************************/
415
416READ8_MEMBER(decocass_state::decocass_type1_latch_xab_pass_x54_r)
417{
418   UINT8 data;
419
420   if (1 == (offset & 1))
421   {
422      if (0 == (offset & E5XX_MASK))
423         data = upi41_master_r(m_mcu, 1);
424      else
425         data = 0xff;
426
427      data = (BIT(data, 0) << 0) | (BIT(data, 1) << 1) | 0x7c;
428      LOG(4,("%10s 6502-PC: %04x decocass_type1_latch_27_pass_3_inv_2_r(%02x): $%02x <- (%s %s)\n",
429         space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data,
430         (data & 1) ? "OBF" : "-",
431         (data & 2) ? "IBF" : "-"));
432   }
433   else
434   {
435      offs_t promaddr;
436      UINT8 save;
437      UINT8 *prom = space.machine().root_device().memregion("dongle")->base();
438
439      if (m_firsttime)
440      {
441         LOG(3,("prom data:\n"));
442         for (promaddr = 0; promaddr < 32; promaddr++)
443         {
444            if (promaddr % 8 == 0)
445               LOG(3,("  %02x:", promaddr));
446            LOG(3,(" %02x%s", prom[promaddr], (promaddr % 8) == 7 ? "\n" : ""));
447         }
448         m_firsttime = 0;
449         m_latch1 = 0;    /* reset latch (??) */
450      }
451
452      if (0 == (offset & E5XX_MASK))
453         data = upi41_master_r(m_mcu, 0);
454      else
455         data = 0xff;
456
457      save = data;   /* save the unmodifed data for the latch */
458
459      /* AB 10101011 */
460      promaddr =
461         (((data >> MAP0(m_type1_inmap)) & 1) << 0) |
462         (((data >> MAP1(m_type1_inmap)) & 1) << 1) |
463         (((data >> MAP3(m_type1_inmap)) & 1) << 2) |
464         (((data >> MAP5(m_type1_inmap)) & 1) << 3) |
465         (((data >> MAP7(m_type1_inmap)) & 1) << 4);
466      /* no latch, pass bit 0x54 */
467      data =
468         (((prom[promaddr] >> 0) & 1)            << MAP0(m_type1_outmap)) |
469         (((prom[promaddr] >> 1) & 1)            << MAP1(m_type1_outmap)) |
470         (((data >> MAP2(m_type1_inmap)) & 1)         << MAP2(m_type1_outmap)) |
471         (((prom[promaddr] >> 2) & 1)            << MAP3(m_type1_outmap)) |
472         (((data >> MAP4(m_type1_inmap)) & 1)         << MAP4(m_type1_outmap))  |
473         (((prom[promaddr] >> 3) & 1)            << MAP5(m_type1_outmap)) |
474         (((data >> MAP6(m_type1_inmap)) & 1)         << MAP6(m_type1_outmap)) |
475         (((prom[promaddr] >> 4) & 1)            << MAP7(m_type1_outmap));
476
477      LOG(3,("%10s 6502-PC: %04x decocass_type1_latch_27_pass_3_inv_2_r(%02x): $%02x\n",
478         space.machine().time().as_string(6), space.device().safe_pcbase(), offset, data));
479
480      m_latch1 = save;      /* latch the data for the next A0 == 0 read */
481   }
482   return data;
483}
484
485
486/***************************************************************************
487 *
488 *  TYPE1 DONGLE (DE-0061)
407489 *  - Highway Chase
408490 *
409491 * Latch bits 2 and 7, pass bit 3, invert bit 2 to the output.
r19750r19751
14111493   m_type1_outmap = MAKE_MAP(0,1,2,3,5,4,6,7);
14121494}
14131495
1496MACHINE_RESET_MEMBER(decocass_state,cmanhat)
1497{
1498   decocass_state::machine_reset();
1499   LOG(0,("dongle type #1 (DE-0061)\n"));
1500   m_dongle_r = read8_delegate(FUNC(decocass_state::decocass_type1_latch_xab_pass_x54_r),this);
1501//   m_type1_inmap = MAKE_MAP(0,1,2,3,5,4,6,7);
1502//   m_type1_outmap = MAKE_MAP(0,1,2,3,5,4,6,7);
1503}
1504
14141505MACHINE_RESET_MEMBER(decocass_state,clocknch)
14151506{
14161507   decocass_state::machine_reset();
trunk/src/mame/includes/decocass.h
r19750r19751
157157   DECLARE_MACHINE_RESET(type4);
158158   DECLARE_MACHINE_RESET(cbdash);
159159   DECLARE_MACHINE_RESET(cflyball);
160   DECLARE_MACHINE_RESET(cmanhat);
160161   UINT32 screen_update_decocass(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
161162   DECLARE_WRITE8_MEMBER(decocass_coin_counter_w);
162163   DECLARE_WRITE8_MEMBER(decocass_sound_command_w);
r19750r19751
230231   DECLARE_READ8_MEMBER(decocass_type1_latch_27_pass_3_inv_2_r);
231232   DECLARE_READ8_MEMBER(decocass_type1_latch_26_pass_5_inv_2_r);
232233   DECLARE_READ8_MEMBER(decocass_type1_latch_16_pass_3_inv_1_r);
234   DECLARE_READ8_MEMBER(decocass_type1_latch_xab_pass_x54_r);
233235   DECLARE_READ8_MEMBER(decocass_type2_r);
234236   DECLARE_WRITE8_MEMBER(decocass_type2_w);
235237   DECLARE_READ8_MEMBER(decocass_type3_r);
trunk/src/mame/drivers/decocass.c
r19750r19751
808808   MCFG_MACHINE_RESET_OVERRIDE(decocass_state,cdsteljn)
809809MACHINE_CONFIG_END
810810
811static MACHINE_CONFIG_DERIVED( cmanhat, decocass )
812
813   /* basic machine hardware */
814   MCFG_MACHINE_RESET_OVERRIDE(decocass_state,cmanhat)
815MACHINE_CONFIG_END
816
811817static MACHINE_CONFIG_DERIVED( cfishing, decocass )
812818
813819   /* basic machine hardware */
r19750r19751
10891095   ROM_LOAD( "chwy.cas",   0x0000, 0x8000, CRC(68a48064) SHA1(7e389737972fd0c54f398d296159c561f5ec3a93) )
10901096ROM_END
10911097
1098/* 03 Manhatten */
1099ROM_START( cmanhat )
1100   DECOCASS_BIOS_A_ROMS
1101
1102   ROM_REGION( 0x00020, "dongle", 0 )     /* dongle data */
1103   ROM_LOAD( "manhattan.pro",   0x0000, 0x0020, CRC(1bc9fccb) SHA1(ffc59c7660d5c87a8deca294f80260b6bc7c3027) ) // == a-0061.dgl
1104
1105   ROM_REGION( 0x10000, "cassette", 0 )     /* (max) 64k for cassette image */
1106   ROM_LOAD( "manhattan.cas", 0x000000, 0x006000, CRC(92dae2b1) SHA1(cc048ac6601553675078230290beb3d59775bfe0) )
1107ROM_END
1108
10921109/* 04 Terranean */
10931110ROM_START( cterrani )
10941111   DECOCASS_BIOS_B_ROMS
r19750r19751
16931710/* -- */ GAME( 1981, ctsttape,  decocass, ctsttape, decocass, decocass_state, decocass, ROT270, "Data East Corporation", "Test Tape (DECO Cassette)", 0 )
16941711/* 01 */ GAME( 1980, chwy,      decocass, chwy,     decocass, decocass_state, decocass, ROT270, "Data East Corporation", "Highway Chase (DECO Cassette)", 0 )
16951712/* 02 */ // 1980.12 Sengoku Ninjatai
1696/* 03 */ // 1981.01 Manhattan
1713/* 03 */ GAME( 1981, cmanhat,   decocass, cmanhat,  decocass, decocass_state, decocass, ROT270, "Data East Corporation", "Manhattan (DECO Cassette)", GAME_NOT_WORKING )
16971714/* 04 */ GAME( 1981, cterrani,  decocass, cterrani, cterrani, decocass_state, decocass, ROT270, "Data East Corporation", "Terranean (DECO Cassette)", 0 )
16981715/* 05 */ // 1981.?? Missile Sprinter
16991716/* 06 */ // 1980.12 Nebula
trunk/src/mame/mame.lst
r19750r19751
53525352ctsttape      // ?
53535353chwy         // 01 1980.12 Highway Chase
53545354            // 02 1980.12 Sengoku Ninjatai
5355            // 03 1981.01 Manhattan
5355cmanhat         // 03 1981.01 Manhattan
53565356cterrani      // 04 1981.02 Terranean
53575357            // 05 1981.?? Missile Sprinter
53585358            // 06 1980.12 Nebula

Previous 199869 Revisions Next


© 1997-2024 The MAME Team