Previous 199869 Revisions Next

r36461 Tuesday 17th March, 2015 at 20:09:39 UTC by Michael Zapf
(MESS) ti99: Added a sanity check for disk format detection and a non-locking Alphalock
[src/emu/cpu/hmcs40]hmcs40.c hmcs40op.inc
[src/lib/formats]ti99_dsk.c
[src/mame]mame.lst
[src/mame/drivers]psikyo.c
[src/mess/drivers]ti99_4x.c

trunk/src/emu/cpu/hmcs40/hmcs40.c
r244972r244973
570570      m_i = BITSWAP8(m_op,7,6,5,4,0,1,2,3) & 0xf; // reversed bit-order for immediate param
571571      increment_pc();
572572
573      // handle opcode
574      switch (m_op)
575      {
576573/*
577574
578575op_ayy();  -
r244972r244973
588585op_blem(); - 267 024
589586op_lay();  - 118
590587
591
592588*/
593589
590      // handle opcode
591      switch (m_op)
592      {
594593         case 0x118:
595594            op_lay(); // probably lay
596595            break;
597         
598         case 0x046:
599            op_daa();
600            break;
601         case 0x045:
602            op_das();
603            break;
604
605
606596         case 0x267:
607            op_blem(); // bnem or blem
608            break;
609
597            op_blem(); break; // bnem or blem
610598         case 0x124:
611599            op_alem(); // alem or anem
612600            break;
613601         case 0x324:
614            op_anem(); // "
615            break;
616
602            op_anem(); break; // "
617603         case 0x024:
618604            //op_nega();
619605            //op_am();
620606            op_illegal();
621607            break;
622
623         case 0x04b:
624            op_illegal();
625            //op_rec();
608         case 0x234:
609            // sm?
610#if 0
611            m_a = ram_r() - m_a;
612            m_s = ~m_a >> 4 & 1;
613            m_a &= 0xf;
614#else
615            op_am();
616#endif
626617            break;
627618         case 0x04c:
628            op_rec();
619            op_illegal();
620            //m_c ^= 1;
621            //op_lat();
629622            break;
630623
631         case 0x030:
632            op_amc();
633            break;
634         case 0x034:
635            //op_illegal();
636            op_amc(); // mirror?
637            break;
638624
639         case 0x230:
640            op_smc();
641            break;
642         case 0x234:
643            //op_illegal();
644            op_smc(); // mirror?
645            break;
646625
647626
648
649
650
651
652
653627         /* 0x000 */
654628         
655629         case 0x000: case 0x001: case 0x002: case 0x003:
r244972r244973
663637/* ok */      op_lmiiy(); break;
664638         case 0x020: case 0x021: case 0x022: case 0x023:
665639            op_lbm(); break;
640         case 0x030:
641            op_amc(); break;
666642         case 0x03c:
667643            op_lta(); break;
668644         
669645         case 0x040:
670646/* ok */      op_lxa(); break;
647         case 0x04b:
648            op_rec(); break;
671649         case 0x04f:
672650            op_sec(); break;
673651         case 0x050:
r244972r244973
773751/* ok */      op_rotr(); break;
774752         case 0x225:
775753/* ok */      op_rotl(); break;
754         case 0x230:
755            op_smc(); break;
776756         case 0x23c:
777757            op_lat(); break;
778758         
trunk/src/emu/cpu/hmcs40/hmcs40op.inc
r244972r244973
662662   if (o & 0x100)
663663   {
664664      // B3 B2 B1 B0 A0 A1 A2 A3
665      m_a = BITSWAP8(o,7,6,5,4,0,1,2,3) & 0xf;
665      m_a = BITSWAP8((UINT8)o,7,6,5,4,0,1,2,3) & 0xf;
666666      m_b = o >> 4 & 0xf;
667667   }
668668   if (o & 0x200)
669669   {
670670      // R20 R21 R22 R23 R30 R31 R32 R33
671      o = BITSWAP8(o,0,1,2,3,4,5,6,7);
671      o = BITSWAP8((UINT8)o,0,1,2,3,4,5,6,7);
672672      write_r(2, o & 0xf);
673673      write_r(3, o >> 4 & 0xf);
674674   }
trunk/src/lib/formats/ti99_dsk.c
r244972r244973
835835      have_vib = true;
836836   }
837837
838   // Do we have a broken VIB? The Pascal disks are known to have such incomplete VIBs
839   if (heads == 0 || sector_count == 0) have_vib = false;
840
838841   // We're also checking the size of the image
839842   int cell_size1 = 0;
840843   int sector_count1 = 0;
trunk/src/mame/drivers/psikyo.c
r244972r244973
14061406
14071407ROM_END
14081408
1409
1410ROM_START( btlkroadk )
1411
1412   ROM_REGION( 0x100000, "maincpu", 0 )        /* Main CPU Code */
1413   ROM_LOAD32_WORD_SWAP( "4(dot).u46", 0x000000, 0x040000, CRC(e724d429) SHA1(8b5f80366fd22d6f7e7d8a9623de4fe231303267) ) // 1&0
1414   ROM_LOAD32_WORD_SWAP( "5(dot).u39", 0x000002, 0x040000, CRC(c0d65765) SHA1(a6a26e6b9693a2ef245e9aaa4c9daa888aebb360)) // 3&2
1415
1416   ROM_REGION( 0x020000, "audiocpu", 0 )       /* Sound CPU Code */
1417   ROM_LOAD( "3(k).u71", 0x00000, 0x20000, CRC(e0f0c597) SHA1(cc337633f1f579baf0f8ba1dd65c5d51122a7e97) )
1418
1419   ROM_REGION( 0x700000, "gfx1", 0 )   /* Sprites */
1420   ROM_LOAD( "u14.bin",  0x000000, 0x200000, CRC(282d89c3) SHA1(3b4b17f4a37efa2f7e232488aaba7c77d10c84d2) )
1421   ROM_LOAD( "u24.bin",  0x200000, 0x200000, CRC(bbe9d3d1) SHA1(9da0b0b993e8271a8119e9c2f602e52325983f79) )
1422   ROM_LOAD( "u15.bin",  0x400000, 0x200000, CRC(d4d1b07c) SHA1(232109db8f6e137fbc8826f38a96057067cb19dc) )
1423//  ROM_LOAD( "u25.bin",  0x600000, 0x100000  NOT PRESENT
1424
1425   ROM_REGION( 0x200000, "gfx2", 0 )   /* Layers 0 + 1 */
1426   ROM_LOAD( "u33.bin",  0x000000, 0x200000, CRC(4c8577f1) SHA1(d27043514632954a06667ac63f4a4e4a31870511) )
1427
1428   ROM_REGION( 0x100000, "ymsnd", 0 )  /* ADPCM Samples */
1429   ROM_LOAD( "u56.bin",  0x000000, 0x100000, CRC(51d73682) SHA1(562038d08e9a4389ffa39f3a659b2a29b94dc156) )
1430
1431   ROM_REGION( 0x080000, "ymsnd.deltat", 0 )   /* DELTA-T Samples */
1432   ROM_LOAD( "u64.bin",  0x000000, 0x080000, CRC(0f33049f) SHA1(ca4fd5f3906685ace1af40b75f5678231d7324e8) )
1433
1434   ROM_REGION( 0x040000, "spritelut", 0 )  /* Sprites LUT */
1435   ROM_LOAD( "u3.bin",  0x000000, 0x040000, CRC(30d541ed) SHA1(6f7fb5f5ecbce7c086185392de164ebb6887e780) )
1436
1437   ROM_REGION( 0x0400, "plds", 0 )
1438   ROM_LOAD( "tibpal16l8.u69", 0x0000, 0x0104, NO_DUMP ) /* PAL is read protected */
1439   ROM_LOAD( "tibpal16l8.u19", 0x0200, 0x0104, NO_DUMP ) /* PAL is read protected */
1440
1441ROM_END
1442
14431409/***************************************************************************
14441410
14451411                            Strikers 1945 (Japan, unprotected)
r244972r244973
19901956
19911957***************************************************************************/
19921958
1959/* Working Games */
19931960GAME( 1993, samuraia, 0,        sngkace,  samuraia, psikyo_state, sngkace,  ROT270, "Psikyo", "Samurai Aces (World)", GAME_SUPPORTS_SAVE ) // Banpresto?
19941961GAME( 1993, sngkace,  samuraia, sngkace,  sngkace, psikyo_state,  sngkace,  ROT270, "Psikyo", "Sengoku Ace (Japan)", GAME_SUPPORTS_SAVE ) // Banpresto?
1995
19961962GAME( 1994, gunbird,  0,        gunbird,  gunbird, psikyo_state,  gunbird,  ROT270, "Psikyo", "Gunbird (World)", GAME_SUPPORTS_SAVE )
19971963GAME( 1994, gunbirdk, gunbird,  gunbird,  gunbirdj, psikyo_state, gunbird,  ROT270, "Psikyo", "Gunbird (Korea)", GAME_SUPPORTS_SAVE )
19981964GAME( 1994, gunbirdj, gunbird,  gunbird,  gunbirdj, psikyo_state, gunbird,  ROT270, "Psikyo", "Gunbird (Japan)", GAME_SUPPORTS_SAVE )
1999
20001965GAME( 1994, btlkroad, 0,        gunbird,  btlkroad, psikyo_state, gunbird,  ROT0,   "Psikyo", "Battle K-Road", GAME_SUPPORTS_SAVE )
2001GAME( 1994, btlkroadk, btlkroad,gunbird,  btlkroad, psikyo_state, gunbird,  ROT0,   "Psikyo", "Battle K-Road (Korean PCB)", GAME_SUPPORTS_SAVE ) // game code is still multi-region, but sound rom appears to be Korea specific at least
2002
20031966GAME( 1995, s1945,    0,        s1945,    s1945, psikyo_state,    s1945,    ROT270, "Psikyo", "Strikers 1945 (World)", GAME_SUPPORTS_SAVE )
20041967GAME( 1995, s1945a,   s1945,    s1945,    s1945a, psikyo_state,   s1945a,   ROT270, "Psikyo", "Strikers 1945 (Japan / World)", GAME_SUPPORTS_SAVE ) // Region dip - 0x0f=Japan, anything else=World
20051968GAME( 1995, s1945j,   s1945,    s1945,    s1945j, psikyo_state,   s1945j,   ROT270, "Psikyo", "Strikers 1945 (Japan)", GAME_SUPPORTS_SAVE )
20061969GAME( 1995, s1945jn,  s1945,    gunbird,  s1945j, psikyo_state,   s1945jn,  ROT270, "Psikyo", "Strikers 1945 (Japan, unprotected)", GAME_SUPPORTS_SAVE )
20071970GAME( 1995, s1945k,   s1945,    s1945,    s1945j, psikyo_state,   s1945,    ROT270, "Psikyo", "Strikers 1945 (Korea)", GAME_SUPPORTS_SAVE )
20081971GAME( 1995, s1945bl,  s1945,    s1945bl,  s1945bl, psikyo_state,  s1945bl,  ROT270, "bootleg","Strikers 1945 (Hong Kong, bootleg)", GAME_SUPPORTS_SAVE )
2009
20101972GAME( 1996, tengai,   0,        s1945,    tengai, psikyo_state,   tengai,   ROT0,   "Psikyo", "Tengai (World)", GAME_SUPPORTS_SAVE )
20111973GAME( 1996, tengaij,  tengai,   s1945,    tengaij, psikyo_state,  tengai,   ROT0,   "Psikyo", "Sengoku Blade: Sengoku Ace Episode II / Tengai", GAME_SUPPORTS_SAVE ) // Region dip - 0x0f=Japan, anything else=World
trunk/src/mame/mame.lst
r244972r244973
87738773gunbirdk        // (c) 1994
87748774gunbirdj        // (c) 1994
87758775btlkroad        // (c) 1994
8776btlkroadk      // (c) 1994
87778776s1945           // (c) 1995
87788777s1945a          // (c) 1995
87798778s1945j          // (c) 1995
trunk/src/mess/drivers/ti99_4x.c
r244972r244973
351351   PORT_START("ALPHA") /* one more port for Alpha line */
352352      PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Alpha Lock") PORT_CODE(KEYCODE_CAPSLOCK) PORT_TOGGLE
353353
354   /* another version of Alpha Lock which is non-toggling; this is useful when we want to attach
355       a real TI keyboard for input. For home computers, the Alpha Lock / Shift Lock was a physically
356       locking key. */
357   PORT_START("ALPHA1")
358      PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Alpha Lock non-toggle") PORT_CODE(KEYCODE_RWIN)
359
354360INPUT_PORTS_END
355361
356362
r244972r244973
462468         // the line enough to make the TMS9901 sense the low level.
463469         // A reported, feasible fix was to cut the line and insert a diode
464470         // below the Alphalock key.
465         if ((ioport("ALPHABUG")!=0) && (m_model!=MODEL_4)) answer |= ioport("ALPHA")->read();
471         if ((ioport("ALPHABUG")!=0) && (m_model!=MODEL_4)) answer |= (ioport("ALPHA")->read() | ioport("ALPHA1")->read());
466472      }
467473      else
468474      {
r244972r244973
470476      }
471477      if (m_check_alphalock)  // never true for TI-99/4
472478      {
473         answer &= ~(ioport("ALPHA")->read());
479         answer &= ~(ioport("ALPHA")->read() | ioport("ALPHA1")->read());
474480      }
475481      answer = (answer << 3);
476482      if (m_int1 == CLEAR_LINE) answer |= 0x02;


Previous 199869 Revisions Next


© 1997-2024 The MAME Team