Previous 199869 Revisions Next

r36469 Thursday 19th March, 2015 at 02:47:09 UTC by Peter Ferrie
Merge branch 'master' of https://github.com/mamedev/mame
[src/emu/cpu/hmcs40]hmcs40.c hmcs40d.c hmcs40op.inc
[src/lib/formats]ti99_dsk.c
[src/mame]mame.lst
[src/mame/drivers]cps1.c psikyo.c supdrapo.c suprgolf.c suprloco.c suprridr.c
[src/mame/includes]suprloco.h suprridr.h
[src/mame/video]cps1.c suprloco.c suprridr.c
[src/mess/drivers]a7800.c ti99_4x.c

trunk/src/emu/cpu/hmcs40/hmcs40.c
r244980r244981
459459{
460460   m_icount--;
461461   push_stack();
462   m_ie = 0;
462463   
463464   // line 0/1 for external interrupt, let's use 2 for t/c interrupt
464465   int line = (m_iri) ? m_eint_line : 2;
r244980r244981
466467   // vector $3f, on page 0(timer/counter), or page 1(external)
467468   // external interrupt has priority over t/c interrupt
468469   m_pc = 0x3f | (m_iri ? 0x40 : 0);
469   m_iri = m_irt = 0;
470   m_ie = 0;
470   if (m_iri)
471      m_iri = 0;
472   else
473      m_irt = 0;
471474
472475   standard_irq_callback(line);
473476}
r244980r244981
554557     
555558      // LPU is handled 1 cycle later
556559      if ((m_prev_op & 0x3e0) == 0x340)
560      {
561         if ((m_op & 0x1c0) != 0x1c0)
562            logerror("%s LPU without BR/CAL at $%04X\n", tag(), m_prev_pc);
563
557564         m_pc = ((m_page << 6) | (m_pc & 0x3f)) & m_pcmask;
565      }
558566
559567      // check/handle interrupt, but not in the middle of a long jump
560568      if (m_ie && (m_iri || m_irt) && (m_op & 0x3e0) != 0x340)
r244980r244981
567575      // fetch next opcode
568576      debugger_instruction_hook(this, m_pc);
569577      m_op = m_program->read_word(m_pc << 1) & 0x3ff;
570      m_i = BITSWAP8(m_op,7,6,5,4,0,1,2,3) & 0xf; // reversed bit-order for immediate param
578      m_i = BITSWAP8(m_op,7,6,5,4,0,1,2,3) & 0xf; // reversed bit-order for immediate param (except for XAMR?)
571579      increment_pc();
572580
573/*
574
575op_ayy();  -
576op_syy();  -
577op_am();   - 34 234 4c
578op_sm()???:- 234
579op_daa();  - 46
580op_das();  - 45
581op_nega(); -
582op_anem(); - 324 124
583op_bnem(); - 267 024
584op_alem(); - 324 124
585op_blem(); - 267 024
586op_lay();  - 118
587
588*/
589
590581      // handle opcode
591582      switch (m_op)
592583      {
584         // unknown: lay, ayy, syy, am, anem, alem, bnem, blem, nega
585         
593586         case 0x118:
594587            op_lay(); // probably lay
595588            break;
596         case 0x267:
597            op_blem(); break; // bnem or blem
589         case 0x034:
590            op_am(); // probably am
591            break;
592
593
598594         case 0x124:
599            op_alem(); // alem or anem
595            op_illegal();
596            //op_alem(); // alem or anem
597            //op_ayy();
600598            break;
601599         case 0x324:
602            op_anem(); break; // "
600            op_illegal();
601            //op_anem(); // "
602            break;
603
603604         case 0x024:
604            //op_nega();
605            //op_am();
606605            op_illegal();
606            //op_nega();
607607            break;
608
609
610
608611         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
617            break;
618         case 0x04c:
619612            op_illegal();
620            //m_c ^= 1;
621            //op_lat();
613            //op_nega();
622614            break;
623615
624616
625617
626618
619
620
621
627622         /* 0x000 */
628623         
629624         case 0x000: case 0x001: case 0x002: case 0x003:
r244980r244981
638633         case 0x020: case 0x021: case 0x022: case 0x023:
639634            op_lbm(); break;
640635         case 0x030:
641            op_amc(); break;
636/* ok */      op_amc(); break;
642637         case 0x03c:
643638            op_lta(); break;
644639         
645640         case 0x040:
646641/* ok */      op_lxa(); break;
647         case 0x04b:
648            op_rec(); break;
642         case 0x045:
643/* ok */      op_das(); break;
644         case 0x046:
645/* ok */      op_daa(); break;
646         case 0x04c:
647/* ok */      op_rec(); break;
649648         case 0x04f:
650            op_sec(); break;
649/* ok */      op_sec(); break;
651650         case 0x050:
652651            op_lya(); break;
653652         case 0x054:
r244980r244981
752751         case 0x225:
753752/* ok */      op_rotl(); break;
754753         case 0x230:
755            op_smc(); break;
754/* ok */      op_smc(); break;
756755         case 0x23c:
757756            op_lat(); break;
758757         
r244980r244981
766765            op_dy(); break;
767766         case 0x260:
768767/* ok */      op_lab(); break;
769         case 0x264:
768         case 0x267:
770769            op_db(); break;
771770         case 0x270: case 0x271: case 0x272: case 0x273: case 0x274: case 0x275: case 0x276: case 0x277:
772771         case 0x278: case 0x279: case 0x27a: case 0x27b: case 0x27c: case 0x27d: case 0x27e: case 0x27f:
trunk/src/emu/cpu/hmcs40/hmcs40d.c
r244980r244981
9696   mLBM,   mLBM,   mLBM,   mLBM,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,
9797   mAMC,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mLTA,   mILL,   mILL,   mILL,
9898   /* 0x040 */
99   mLXA,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mREC,   mILL,   mILL,   mILL,   mSEC,
99   mLXA,   mILL,   mILL,   mILL,   mILL,   mDAS,   mDAA,   mILL,   mILL,   mILL,   mILL,   mILL,   mREC,   mILL,   mILL,   mSEC,
100100   mLYA,   mILL,   mILL,   mILL,   mIY,    mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,
101101   mLBA,   mILL,   mILL,   mILL,   mIB,    mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,
102102   mLAI,   mLAI,   mLAI,   mLAI,   mLAI,   mLAI,   mLAI,   mLAI,   mLAI,   mLAI,   mLAI,   mLAI,   mLAI,   mLAI,   mLAI,   mLAI,
r244980r244981
142142   /* 0x240 */
143143   mLASPX, mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mTC,
144144   mLASPY, mILL,   mILL,   mILL,   mDY,    mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,
145   mLAB,   mILL,   mILL,   mILL,   mDB,    mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,
145   mLAB,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mDB,    mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,   mILL,
146146   mALEI,  mALEI,  mALEI,  mALEI,  mALEI,  mALEI,  mALEI,  mALEI,  mALEI,  mALEI,  mALEI,  mALEI,  mALEI,  mALEI,  mALEI,  mALEI,
147147   /* 0x280 */
148148   mYNEI,  mYNEI,  mYNEI,  mYNEI,  mYNEI,  mYNEI,  mYNEI,  mYNEI,  mYNEI,  mYNEI,  mYNEI,  mYNEI,  mYNEI,  mYNEI,  mYNEI,  mYNEI,
trunk/src/emu/cpu/hmcs40/hmcs40op.inc
r244980r244981
662662   if (o & 0x100)
663663   {
664664      // B3 B2 B1 B0 A0 A1 A2 A3
665      m_a = BITSWAP8((UINT8)o,7,6,5,4,0,1,2,3) & 0xf;
665      m_a = BITSWAP8(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((UINT8)o,0,1,2,3,4,5,6,7);
671      o = BITSWAP8(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
r244980r244981
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/cps1.c
r244980r244981
93529352   ROM_LOAD( "ioc1.ic1",     0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
93539353ROM_END
93549354
9355/* B-Board 91634B-2  - all roms have 91634B on the labels */
9356ROM_START( cworld2jb )
9357   ROM_REGION( CODE_SIZE, "maincpu", 0 )      /* 68000 code */
9358   ROM_LOAD16_WORD_SWAP( "q5 - 23_91634b.8f", 0x00000, 0x80000, CRC(709f577f) SHA1(3e0615d01f22eb1bf75cbd26dc80ca5a6d08120e) )
9359   ROM_LOAD16_WORD_SWAP( "q5 - 22_91634b.7f", 0x80000, 0x80000, CRC(93248458) SHA1(9dcdc6838f52efc9a0a6333fd0d734946db12dbd) )
9360
9361   ROM_REGION( 0x200000, "gfx", 0 )
9362   ROMX_LOAD( "q5 - 01_91634b.3a", 0x000000, 0x80000, CRC(09d0e7ce) SHA1(ea502b975986222acce82ce8396348af72e1df72) , ROM_GROUPWORD | ROM_SKIP(6) )
9363   ROMX_LOAD( "q5 - 02_91634b.4a", 0x000002, 0x80000, CRC(22e4ce9a) SHA1(9e49aec8e1d6d15a68da63e69765b82fd53a9562) , ROM_GROUPWORD | ROM_SKIP(6) )
9364   ROMX_LOAD( "q5 - 03_91634b.5a", 0x000004, 0x80000, CRC(f7b3aed6) SHA1(bdfb4d5988307b07ad878ac9129954d14da8769b) , ROM_GROUPWORD | ROM_SKIP(6) )
9365   ROMX_LOAD( "q5 - 04_91634b.6a", 0x000006, 0x80000, CRC(520c6c88) SHA1(19ba8ca3d75aae71cdf471e6307e86a5df8a2851) , ROM_GROUPWORD | ROM_SKIP(6) )
9366
9367   ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
9368   ROM_LOAD( "q5 - 09_91634b.12a", 0x00000, 0x08000, CRC(e14dc524) SHA1(0020a9002572002458fbfe45e8a959cb90de3f03) )
9369   ROM_CONTINUE(           0x10000, 0x08000 )
9370
9371   ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
9372   ROM_LOAD( "q5 - 18_91634b.11c", 0x00000, 0x20000, CRC(d10c1b68) SHA1(2423241f3340d8ab1b6bf9514ca8c3bba1273873) )
9373   ROM_LOAD( "q5 - 19_91634b.12c", 0x20000, 0x20000, CRC(7d17e496) SHA1(a274b94ec4f042dddc239ecb9ac2e1e2375f5eb2) )
9374
9375   ROM_REGION( 0x0200, "aboardplds", 0 )
9376   ROM_LOAD( "buf1",         0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
9377   ROM_LOAD( "ioa1",         0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
9378   ROM_LOAD( "prg1",         0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
9379   ROM_LOAD( "rom1",         0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
9380   ROM_LOAD( "sou1",         0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
9381
9382   ROM_REGION( 0x0200, "bboardplds", 0 )
9383   ROM_LOAD( "q563b.1a",     0x0000, 0x0117, NO_DUMP )
9384   ROM_LOAD( "iob1.12d",     0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
9385   ROM_LOAD( "bprg1.11d",    0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
9386
9387   ROM_REGION( 0x0200, "cboardplds", 0 ) // checkme
9388   ROM_LOAD( "ioc1.ic7",     0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) )
9389   ROM_LOAD( "c632.ic1",     0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
9390ROM_END
9391
93559392/* B-Board 89624B-3 */
93569393ROM_START( varth )
93579394   ROM_REGION( CODE_SIZE, "maincpu", 0 )      /* 68000 code */
r244980r244981
1171811755GAME( 1992, sf2dongb,    sf2ce,    cps1_12MHz, sf2,      cps_state,   sf2dongb, ROT0,   "bootleg", "Street Fighter II': Champion Edition (Dongfang Bubai protection, bootleg)", GAME_SUPPORTS_SAVE ) // 920313 - based on World version
1171911756GAME( 1992, cworld2j,    0,        cps1_12MHz, cworld2j, cps_state,   cps1,     ROT0,   "Capcom", "Adventure Quiz Capcom World 2 (Japan 920611)", GAME_SUPPORTS_SAVE )
1172011757GAME( 1992, cworld2ja,   cworld2j, cps1_12MHz, cworld2j, cps_state,   cps1,     ROT0,   "Capcom", "Adventure Quiz Capcom World 2 (Japan 920611, B-Board 90629B-3, no battery)", GAME_SUPPORTS_SAVE )
11758GAME( 1992, cworld2jb,   cworld2j, cps1_12MHz, cworld2j, cps_state,   cps1,     ROT0,   "Capcom", "Adventure Quiz Capcom World 2 (Japan 920611, B-Board 91634B-2)", GAME_SUPPORTS_SAVE )
1172111759GAME( 1992, varth,       0,        cps1_12MHz, varth,    cps_state,   cps1,     ROT270, "Capcom", "Varth: Operation Thunderstorm (World 920714)", GAME_SUPPORTS_SAVE )  // "ETC"    // 12MHz verified
1172211760GAME( 1992, varthr1,     varth,    cps1_12MHz, varth,    cps_state,   cps1,     ROT270, "Capcom", "Varth: Operation Thunderstorm (World 920612)", GAME_SUPPORTS_SAVE )  // "ETC"
1172311761GAME( 1992, varthu,      varth,    cps1_12MHz, varth,    cps_state,   cps1,     ROT270, "Capcom (Romstar license)", "Varth: Operation Thunderstorm (USA 920612)", GAME_SUPPORTS_SAVE )
trunk/src/mame/drivers/psikyo.c
r244980r244981
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
14091443/***************************************************************************
14101444
14111445                            Strikers 1945 (Japan, unprotected)
r244980r244981
19561990
19571991***************************************************************************/
19581992
1959/* Working Games */
19601993GAME( 1993, samuraia, 0,        sngkace,  samuraia, psikyo_state, sngkace,  ROT270, "Psikyo", "Samurai Aces (World)", GAME_SUPPORTS_SAVE ) // Banpresto?
19611994GAME( 1993, sngkace,  samuraia, sngkace,  sngkace, psikyo_state,  sngkace,  ROT270, "Psikyo", "Sengoku Ace (Japan)", GAME_SUPPORTS_SAVE ) // Banpresto?
1995
19621996GAME( 1994, gunbird,  0,        gunbird,  gunbird, psikyo_state,  gunbird,  ROT270, "Psikyo", "Gunbird (World)", GAME_SUPPORTS_SAVE )
19631997GAME( 1994, gunbirdk, gunbird,  gunbird,  gunbirdj, psikyo_state, gunbird,  ROT270, "Psikyo", "Gunbird (Korea)", GAME_SUPPORTS_SAVE )
19641998GAME( 1994, gunbirdj, gunbird,  gunbird,  gunbirdj, psikyo_state, gunbird,  ROT270, "Psikyo", "Gunbird (Japan)", GAME_SUPPORTS_SAVE )
1999
19652000GAME( 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
19662003GAME( 1995, s1945,    0,        s1945,    s1945, psikyo_state,    s1945,    ROT270, "Psikyo", "Strikers 1945 (World)", GAME_SUPPORTS_SAVE )
19672004GAME( 1995, s1945a,   s1945,    s1945,    s1945a, psikyo_state,   s1945a,   ROT270, "Psikyo", "Strikers 1945 (Japan / World)", GAME_SUPPORTS_SAVE ) // Region dip - 0x0f=Japan, anything else=World
19682005GAME( 1995, s1945j,   s1945,    s1945,    s1945j, psikyo_state,   s1945j,   ROT270, "Psikyo", "Strikers 1945 (Japan)", GAME_SUPPORTS_SAVE )
19692006GAME( 1995, s1945jn,  s1945,    gunbird,  s1945j, psikyo_state,   s1945jn,  ROT270, "Psikyo", "Strikers 1945 (Japan, unprotected)", GAME_SUPPORTS_SAVE )
19702007GAME( 1995, s1945k,   s1945,    s1945,    s1945j, psikyo_state,   s1945,    ROT270, "Psikyo", "Strikers 1945 (Korea)", GAME_SUPPORTS_SAVE )
19712008GAME( 1995, s1945bl,  s1945,    s1945bl,  s1945bl, psikyo_state,  s1945bl,  ROT270, "bootleg","Strikers 1945 (Hong Kong, bootleg)", GAME_SUPPORTS_SAVE )
2009
19722010GAME( 1996, tengai,   0,        s1945,    tengai, psikyo_state,   tengai,   ROT0,   "Psikyo", "Tengai (World)", GAME_SUPPORTS_SAVE )
19732011GAME( 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/drivers/supdrapo.c
r244980r244981
2727
2828  - Reworked inputs to match the standard poker inputs names/layout.
2929  - Hooked the payout switch.
30  - Hooked a watchdog circuitery, that seems intended to reset
30  - Hooked a watchdog circuitry, that seems intended to reset
3131     the game and/or an external device.
3232  - Added machine start & reset.
3333  - All clocks pre defined.
34  - Added ay8910 interfase as a preliminary attempt to analyze the unknown
34  - Added ay8910 interface as a preliminary attempt to analyze the unknown
3535     port writes when these ports are set as input.
3636  - Figured out the following DIP switches:
3737     Auto Bet (No, Yes).
r244980r244981
7272public:
7373   supdrapo_state(const machine_config &mconfig, device_type type, const char *tag)
7474      : driver_device(mconfig, type, tag),
75      m_maincpu(*this, "maincpu"),
76      m_gfxdecode(*this, "gfxdecode"),
77      m_palette(*this, "palette"),
7578      m_col_line(*this, "col_line"),
7679      m_videoram(*this, "videoram"),
77      m_char_bank(*this, "char_bank"),
78      m_maincpu(*this, "maincpu"),
79      m_gfxdecode(*this, "gfxdecode"),
80      m_palette(*this, "palette") { }
80      m_char_bank(*this, "char_bank") { }
8181
82   required_device<cpu_device> m_maincpu;
83   required_device<gfxdecode_device> m_gfxdecode;
84   required_device<palette_device> m_palette;
85   
8286   required_shared_ptr<UINT8> m_col_line;
8387   required_shared_ptr<UINT8> m_videoram;
8488   required_shared_ptr<UINT8> m_char_bank;
89   
8590   UINT8 m_wdog;
86   DECLARE_READ8_MEMBER(sdpoker_rng_r);
91   
92   DECLARE_READ8_MEMBER(rng_r);
8793   DECLARE_WRITE8_MEMBER(wdog8000_w);
8894   DECLARE_WRITE8_MEMBER(debug8004_w);
8995   DECLARE_WRITE8_MEMBER(debug7c00_w);
r244980r244981
9197   DECLARE_WRITE8_MEMBER(payout_w);
9298   DECLARE_WRITE8_MEMBER(ay8910_outputa_w);
9399   DECLARE_WRITE8_MEMBER(ay8910_outputb_w);
100   
94101   virtual void machine_start();
95102   virtual void machine_reset();
96103   virtual void video_start();
97104   DECLARE_PALETTE_INIT(supdrapo);
98   UINT32 screen_update_supdrapo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
99   required_device<cpu_device> m_maincpu;
100   required_device<gfxdecode_device> m_gfxdecode;
101   required_device<palette_device> m_palette;
105   
106   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
102107};
103108
104109
r244980r244981
111116}
112117
113118
114UINT32 supdrapo_state::screen_update_supdrapo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
119UINT32 supdrapo_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
115120{
116121   int x, y;
117122   int count;
r244980r244981
171176                            R/W Handlers
172177**********************************************************************/
173178
174READ8_MEMBER(supdrapo_state::sdpoker_rng_r)
179READ8_MEMBER(supdrapo_state::rng_r)
175180{
176181   return machine().rand();
177182}
r244980r244981
251256
252257void supdrapo_state::machine_start()
253258{
259   save_item(NAME(m_wdog));
254260}
255261
256262
r244980r244981
282288   AM_RANGE(0x8005, 0x8005) AM_READ_PORT("SW1")
283289   AM_RANGE(0x8006, 0x8006) AM_READ_PORT("SW2")
284290   AM_RANGE(0x9000, 0x90ff) AM_RAM AM_SHARE("nvram")
285   AM_RANGE(0x9400, 0x9400) AM_READ(sdpoker_rng_r)
291   AM_RANGE(0x9400, 0x9400) AM_READ(rng_r)
286292   AM_RANGE(0x9800, 0x9801) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
287293ADDRESS_MAP_END
288294
r244980r244981
453459   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
454460   MCFG_SCREEN_SIZE(256, 256)
455461   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
456   MCFG_SCREEN_UPDATE_DRIVER(supdrapo_state, screen_update_supdrapo)
462   MCFG_SCREEN_UPDATE_DRIVER(supdrapo_state, screen_update)
457463   MCFG_SCREEN_PALETTE("palette")
458464
459465   MCFG_GFXDECODE_ADD("gfxdecode", "palette", supdrapo)
r244980r244981
600606**********************************************************************/
601607
602608/*    YEAR  NAME       PARENT    MACHINE   INPUT     INIT  ROT     COMPANY                               FULLNAME                   FLAGS... */
603GAME( 1983, supdrapo,  0,        supdrapo, supdrapo, driver_device, 0,    ROT90, "Valadon Automation (Stern Electronics license)", "Super Draw Poker (set 1)", 0 )
604GAME( 1983, supdrapoa, supdrapo, supdrapo, supdrapo, driver_device, 0,    ROT90, "Valadon Automation / Jeutel", "Super Draw Poker (set 2)", 0 )
605GAME( 1983, supdrapob, supdrapo, supdrapo, supdrapo, driver_device, 0,    ROT90, "bootleg", "Super Draw Poker (bootleg)", 0 )
609GAME( 1983, supdrapo,  0,        supdrapo, supdrapo, driver_device, 0,    ROT90, "Valadon Automation (Stern Electronics license)", "Super Draw Poker (set 1)", GAME_SUPPORTS_SAVE )
610GAME( 1983, supdrapoa, supdrapo, supdrapo, supdrapo, driver_device, 0,    ROT90, "Valadon Automation / Jeutel", "Super Draw Poker (set 2)", GAME_SUPPORTS_SAVE )
611GAME( 1983, supdrapob, supdrapo, supdrapo, supdrapo, driver_device, 0,    ROT90, "bootleg", "Super Draw Poker (bootleg)", GAME_SUPPORTS_SAVE )
trunk/src/mame/drivers/suprgolf.c
r244980r244981
3333public:
3434   suprgolf_state(const machine_config &mconfig, device_type type, const char *tag)
3535      : driver_device(mconfig, type, tag),
36      m_videoram(*this, "videoram"),
3736      m_maincpu(*this, "maincpu"),
3837      m_msm(*this, "msm"),
3938      m_gfxdecode(*this, "gfxdecode"),
40      m_palette(*this, "palette") { }
39      m_palette(*this, "palette"),
40      m_videoram(*this, "videoram") { }
4141
42   required_device<cpu_device> m_maincpu;
43   required_device<msm5205_device> m_msm;
44   required_device<gfxdecode_device> m_gfxdecode;
45   required_device<palette_device> m_palette;
46
47   required_shared_ptr<UINT8> m_videoram;
48
4249   tilemap_t *m_tilemap;
43   required_shared_ptr<UINT8> m_videoram;
4450   UINT8 *m_paletteram;
4551   UINT8 *m_bg_vram;
4652   UINT16 *m_bg_fb;
r244980r244981
5460   UINT8 m_palette_switch;
5561   UINT8 m_bg_vreg_test;
5662   UINT8 m_toggle;
57   DECLARE_READ8_MEMBER(suprgolf_videoram_r);
58   DECLARE_WRITE8_MEMBER(suprgolf_videoram_w);
59   DECLARE_READ8_MEMBER(suprgolf_bg_vram_r);
60   DECLARE_WRITE8_MEMBER(suprgolf_bg_vram_w);
61   DECLARE_WRITE8_MEMBER(suprgolf_pen_w);
63   
64   DECLARE_READ8_MEMBER(videoram_r);
65   DECLARE_WRITE8_MEMBER(videoram_w);
66   DECLARE_READ8_MEMBER(bg_vram_r);
67   DECLARE_WRITE8_MEMBER(bg_vram_w);
68   DECLARE_WRITE8_MEMBER(pen_w);
6269   DECLARE_WRITE8_MEMBER(adpcm_data_w);
6370   DECLARE_WRITE8_MEMBER(rom2_bank_select_w);
64   DECLARE_READ8_MEMBER(suprgolf_vregs_r);
65   DECLARE_WRITE8_MEMBER(suprgolf_vregs_w);
71   DECLARE_READ8_MEMBER(vregs_r);
72   DECLARE_WRITE8_MEMBER(vregs_w);
6673   DECLARE_READ8_MEMBER(rom_bank_select_r);
6774   DECLARE_WRITE8_MEMBER(rom_bank_select_w);
6875   DECLARE_READ8_MEMBER(pedal_extra_bits_r);
6976   DECLARE_READ8_MEMBER(p1_r);
7077   DECLARE_READ8_MEMBER(p2_r);
71   DECLARE_WRITE8_MEMBER(suprgolf_writeA);
72   DECLARE_WRITE8_MEMBER(suprgolf_writeB);
78   DECLARE_WRITE8_MEMBER(writeA);
79   DECLARE_WRITE8_MEMBER(writeB);
80   DECLARE_WRITE_LINE_MEMBER(adpcm_int);
81   
82   TILE_GET_INFO_MEMBER(get_tile_info);
83
7384   DECLARE_DRIVER_INIT(suprgolf);
74   TILE_GET_INFO_MEMBER(get_tile_info);
7585    virtual void machine_start();
7686   virtual void machine_reset();
7787   virtual void video_start();
78   UINT32 screen_update_suprgolf(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
79   DECLARE_WRITE_LINE_MEMBER(irqhandler);
80   DECLARE_WRITE_LINE_MEMBER(adpcm_int);
81   required_device<cpu_device> m_maincpu;
82   required_device<msm5205_device> m_msm;
83   required_device<gfxdecode_device> m_gfxdecode;
84   required_device<palette_device> m_palette;
88   
89   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
8590};
8691
8792TILE_GET_INFO_MEMBER(suprgolf_state::get_tile_info)
r244980r244981
104109   m_fg_fb = auto_alloc_array(machine(), UINT16, 0x2000*0x20);
105110
106111   m_tilemap->set_transparent_pen(15);
112   
113   save_item(NAME(m_bg_bank));
114   save_item(NAME(m_vreg_bank));
115   save_item(NAME(m_vreg_pen));
116   save_item(NAME(m_palette_switch));
117   save_item(NAME(m_bg_vreg_test));
118   save_pointer(NAME(m_paletteram), 0x1000);
119   save_pointer(NAME(m_bg_vram), 0x2000*0x20);
120   save_pointer(NAME(m_bg_fb), 0x2000*0x20);
121   save_pointer(NAME(m_fg_fb), 0x2000*0x20);
107122}
108123
109UINT32 suprgolf_state::screen_update_suprgolf(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
124UINT32 suprgolf_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
110125{
111126   int x,y,count,color;
112127   bitmap.fill(m_palette->black_pen(), cliprect);
r244980r244981
150165   return 0;
151166}
152167
153READ8_MEMBER(suprgolf_state::suprgolf_videoram_r)
168READ8_MEMBER(suprgolf_state::videoram_r)
154169{
155170   if (m_palette_switch)
156171      return m_paletteram[offset];
r244980r244981
158173      return m_videoram[offset];
159174}
160175
161WRITE8_MEMBER(suprgolf_state::suprgolf_videoram_w)
176WRITE8_MEMBER(suprgolf_state::videoram_w)
162177{
163178   if(m_palette_switch)
164179   {
r244980r244981
180195   }
181196}
182197
183READ8_MEMBER(suprgolf_state::suprgolf_vregs_r)
198READ8_MEMBER(suprgolf_state::vregs_r)
184199{
185200   return m_vreg_bank;
186201}
187202
188WRITE8_MEMBER(suprgolf_state::suprgolf_vregs_w)
203WRITE8_MEMBER(suprgolf_state::vregs_w)
189204{
190205   //printf("%02x\n",data);
191206
r244980r244981
200215   //  printf("Video regs with data %02x activated\n",data);
201216}
202217
203READ8_MEMBER(suprgolf_state::suprgolf_bg_vram_r)
218READ8_MEMBER(suprgolf_state::bg_vram_r)
204219{
205220   return m_bg_vram[offset+m_bg_bank*0x2000];
206221}
207222
208WRITE8_MEMBER(suprgolf_state::suprgolf_bg_vram_w)
223WRITE8_MEMBER(suprgolf_state::bg_vram_w)
209224{
210225   UINT8 hi_nibble,lo_nibble;
211226   UINT8 hi_dirty_dot,lo_dirty_dot; // helpers
r244980r244981
254269{
255270    membank("bank1")->configure_entries(0, 16, memregion("user2")->base(), 0x4000);
256271    membank("bank2")->configure_entries(0, 64, memregion("user1")->base(), 0x4000);
272   
273   save_item(NAME(m_rom_bank));
274   save_item(NAME(m_msm5205next));
275   save_item(NAME(m_msm_nmi_mask));
276   save_item(NAME(m_toggle));
257277}
258278
259WRITE8_MEMBER(suprgolf_state::suprgolf_pen_w)
279WRITE8_MEMBER(suprgolf_state::pen_w)
260280{
261281   m_vreg_pen = data;
262282}
r244980r244981
317337   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
318338   AM_RANGE(0x4000, 0x4000) AM_WRITE(rom2_bank_select_w )
319339   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank2")
320   AM_RANGE(0xc000, 0xdfff) AM_READWRITE(suprgolf_bg_vram_r, suprgolf_bg_vram_w ) // banked background vram
321   AM_RANGE(0xe000, 0xefff) AM_READWRITE(suprgolf_videoram_r, suprgolf_videoram_w ) AM_SHARE("videoram") //foreground vram + paletteram
322   AM_RANGE(0xf000, 0xf000) AM_WRITE(suprgolf_pen_w )
340   AM_RANGE(0xc000, 0xdfff) AM_READWRITE(bg_vram_r, bg_vram_w ) // banked background vram
341   AM_RANGE(0xe000, 0xefff) AM_READWRITE(videoram_r, videoram_w ) AM_SHARE("videoram") //foreground vram + paletteram
342   AM_RANGE(0xf000, 0xf000) AM_WRITE(pen_w )
323343   AM_RANGE(0xf800, 0xffff) AM_RAM
324344ADDRESS_MAP_END
325345
r244980r244981
416436   PORT_DIPUNUSED_DIPLOC( 0x80, 0x00, "SW2:8" )
417437INPUT_PORTS_END
418438
419WRITE8_MEMBER(suprgolf_state::suprgolf_writeA)
439WRITE8_MEMBER(suprgolf_state::writeA)
420440{
421441   osd_printf_debug("ymwA\n");
422442}
423443
424WRITE8_MEMBER(suprgolf_state::suprgolf_writeB)
444WRITE8_MEMBER(suprgolf_state::writeB)
425445{
426446   osd_printf_debug("ymwA\n");
427447}
428448
429WRITE_LINE_MEMBER(suprgolf_state::irqhandler)
430{
431   //m_maincpu->set_input_line(INPUT_LINE_NMI, state ? ASSERT_LINE : CLEAR_LINE);
432}
433
434449WRITE_LINE_MEMBER(suprgolf_state::adpcm_int)
435450{
436451   m_msm->reset_w(0);
r244980r244981
485500   MCFG_I8255_IN_PORTA_CB(IOPORT("SYSTEM"))
486501   MCFG_I8255_IN_PORTB_CB(READ8(suprgolf_state, rom_bank_select_r))
487502   MCFG_I8255_OUT_PORTB_CB(WRITE8(suprgolf_state, rom_bank_select_w))
488   MCFG_I8255_IN_PORTC_CB(READ8(suprgolf_state, suprgolf_vregs_r))
489   MCFG_I8255_OUT_PORTC_CB(WRITE8(suprgolf_state, suprgolf_vregs_w))
503   MCFG_I8255_IN_PORTC_CB(READ8(suprgolf_state, vregs_r))
504   MCFG_I8255_OUT_PORTC_CB(WRITE8(suprgolf_state, vregs_w))
490505
491506   /* video hardware */
492507   MCFG_SCREEN_ADD("screen", RASTER)
r244980r244981
494509   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
495510   MCFG_SCREEN_SIZE(256, 256)
496511   MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 191)
497   MCFG_SCREEN_UPDATE_DRIVER(suprgolf_state, screen_update_suprgolf)
512   MCFG_SCREEN_UPDATE_DRIVER(suprgolf_state, screen_update)
498513   MCFG_SCREEN_PALETTE("palette")
499514
500515   MCFG_GFXDECODE_ADD("gfxdecode", "palette", suprgolf)
r244980r244981
504519   MCFG_SPEAKER_STANDARD_MONO("mono")
505520
506521   MCFG_SOUND_ADD("ymsnd", YM2203, MASTER_CLOCK/4) /* guess */
507   MCFG_YM2203_IRQ_HANDLER(WRITELINE(suprgolf_state, irqhandler))
522   //MCFG_YM2203_IRQ_HANDLER(INPUTLINE("maincpu", INPUT_LINE_NMI))
508523   MCFG_AY8910_PORT_A_READ_CB(IOPORT("DSW0"))
509524   MCFG_AY8910_PORT_B_READ_CB(IOPORT("DSW1"))
510   MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(suprgolf_state, suprgolf_writeA))
511   MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(suprgolf_state, suprgolf_writeB))
525   MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(suprgolf_state, writeA))
526   MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(suprgolf_state, writeB))
512527   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
513528
514529   MCFG_SOUND_ADD("msm", MSM5205, XTAL_384kHz) /* guess */
r244980r244981
621636   ROM[0x6d72+(0x4000*3)-0x4000] = 0x20; //patch ROM check
622637}
623638
624GAME( 1989, suprgolf,  0,         suprgolf,  suprgolf, suprgolf_state,  suprgolf, ROT0, "Nasco", "Super Crowns Golf (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_NO_COCKTAIL )
625GAME( 1989, albatross, suprgolf,  suprgolf,  suprgolf, driver_device,  0,        ROT0, "Nasco", "Albatross (US Prototype?)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS | GAME_NO_COCKTAIL )
639GAME( 1989, suprgolf,  0,         suprgolf,  suprgolf, suprgolf_state,  suprgolf, ROT0, "Nasco", "Super Crowns Golf (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
640GAME( 1989, albatross, suprgolf,  suprgolf,  suprgolf, driver_device,  0,        ROT0, "Nasco", "Albatross (US Prototype?)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS | GAME_NO_COCKTAIL| GAME_SUPPORTS_SAVE )
trunk/src/mame/drivers/suprloco.c
r244980r244981
55driver by Zsolt Vasvari
66
77TODO:
8- Bit 5 in suprloco_control_w is pulsed when loco turns "super". This is supposed
8- Bit 5 in control_w is pulsed when loco turns "super". This is supposed
99  to make red parts of sprites blink to purple, it's not clear how this is
1010  implemented in hardware, there's a hack to support it.
1111
r244980r244981
2525#include "sound/sn76496.h"
2626#include "includes/suprloco.h"
2727
28WRITE8_MEMBER(suprloco_state::suprloco_soundport_w)
28WRITE8_MEMBER(suprloco_state::soundport_w)
2929{
3030   soundlatch_byte_w(space, 0, data);
3131   m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
r244980r244981
4242   AM_RANGE(0xd800, 0xd800) AM_READ_PORT("P2")
4343   AM_RANGE(0xe000, 0xe000) AM_READ_PORT("DSW1")
4444   AM_RANGE(0xe001, 0xe001) AM_READ_PORT("DSW2")
45   AM_RANGE(0xe800, 0xe800) AM_WRITE(suprloco_soundport_w)
46   AM_RANGE(0xe801, 0xe801) AM_READWRITE(suprloco_control_r, suprloco_control_w)
47   AM_RANGE(0xf000, 0xf6ff) AM_RAM_WRITE(suprloco_videoram_w) AM_SHARE("videoram")
45   AM_RANGE(0xe800, 0xe800) AM_WRITE(soundport_w)
46   AM_RANGE(0xe801, 0xe801) AM_READWRITE(control_r, control_w)
47   AM_RANGE(0xf000, 0xf6ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
4848   AM_RANGE(0xf700, 0xf7df) AM_RAM /* unused */
49   AM_RANGE(0xf7e0, 0xf7ff) AM_RAM_WRITE(suprloco_scrollram_w) AM_SHARE("scrollram")
49   AM_RANGE(0xf7e0, 0xf7ff) AM_RAM_WRITE(scrollram_w) AM_SHARE("scrollram")
5050   AM_RANGE(0xf800, 0xffff) AM_RAM
5151ADDRESS_MAP_END
5252
r244980r244981
175175   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(5000))
176176   MCFG_SCREEN_SIZE(32*8, 32*8)
177177   MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 0*8, 28*8-1)
178   MCFG_SCREEN_UPDATE_DRIVER(suprloco_state, screen_update_suprloco)
178   MCFG_SCREEN_UPDATE_DRIVER(suprloco_state, screen_update)
179179   MCFG_SCREEN_PALETTE("palette")
180180
181181   MCFG_GFXDECODE_ADD("gfxdecode", "palette", suprloco)
r244980r244981
297297
298298
299299
300GAME( 1982, suprloco,         0, suprloco, suprloco, suprloco_state, suprloco, ROT0, "Sega", "Super Locomotive (Rev.A)", 0 )
301GAME( 1982, suprlocoo, suprloco, suprloco, suprloco, suprloco_state, suprloco, ROT0, "Sega", "Super Locomotive", 0 )
300GAME( 1982, suprloco,         0, suprloco, suprloco, suprloco_state, suprloco, ROT0, "Sega", "Super Locomotive (Rev.A)", GAME_SUPPORTS_SAVE )
301GAME( 1982, suprlocoo, suprloco, suprloco, suprloco, suprloco_state, suprloco, ROT0, "Sega", "Super Locomotive", GAME_SUPPORTS_SAVE )
trunk/src/mame/drivers/suprridr.c
r244980r244981
8989#include "sound/ay8910.h"
9090
9191
92void suprridr_state::machine_start()
93{
94   save_item(NAME(m_nmi_enable));
95   save_item(NAME(m_sound_data));
96}
97
9298/*************************************
9399 *
94100 *  Interrupt generation
r244980r244981
164170static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, suprridr_state )
165171   AM_RANGE(0x0000, 0x7fff) AM_ROM
166172   AM_RANGE(0x8000, 0x87ff) AM_RAM
167   AM_RANGE(0x8800, 0x8bff) AM_RAM_WRITE(suprridr_bgram_w) AM_SHARE("bgram")
168   AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(suprridr_fgram_w) AM_SHARE("fgram")
173   AM_RANGE(0x8800, 0x8bff) AM_RAM_WRITE(bgram_w) AM_SHARE("bgram")
174   AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(fgram_w) AM_SHARE("fgram")
169175   AM_RANGE(0x9800, 0x983f) AM_RAM
170176   AM_RANGE(0x9840, 0x987f) AM_RAM AM_SHARE("spriteram")
171177   AM_RANGE(0x9880, 0x9bff) AM_RAM
r244980r244981
173179   AM_RANGE(0xa800, 0xa800) AM_READ_PORT("SYSTEM")
174180   AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW") AM_WRITE(nmi_enable_w)
175181   AM_RANGE(0xb002, 0xb003) AM_WRITE(coin_lock_w)
176   AM_RANGE(0xb006, 0xb006) AM_WRITE(suprridr_flipx_w)
177   AM_RANGE(0xb007, 0xb007) AM_WRITE(suprridr_flipy_w)
182   AM_RANGE(0xb006, 0xb006) AM_WRITE(flipx_w)
183   AM_RANGE(0xb007, 0xb007) AM_WRITE(flipy_w)
178184   AM_RANGE(0xb800, 0xb800) AM_WRITE(sound_data_w)
179   AM_RANGE(0xc801, 0xc801) AM_WRITE(suprridr_fgdisable_w)
180   AM_RANGE(0xc802, 0xc802) AM_WRITE(suprridr_fgscrolly_w)
181   AM_RANGE(0xc804, 0xc804) AM_WRITE(suprridr_bgscrolly_w)
185   AM_RANGE(0xc801, 0xc801) AM_WRITE(fgdisable_w)
186   AM_RANGE(0xc802, 0xc802) AM_WRITE(fgscrolly_w)
187   AM_RANGE(0xc804, 0xc804) AM_WRITE(bgscrolly_w)
182188   AM_RANGE(0xc000, 0xefff) AM_ROM
183189ADDRESS_MAP_END
184190
r244980r244981
223229#define SUPRRIDR_P1_CONTROL_PORT_TAG    ("CONTP1")
224230#define SUPRRIDR_P2_CONTROL_PORT_TAG    ("CONTP2")
225231
226CUSTOM_INPUT_MEMBER(suprridr_state::suprridr_control_r)
232CUSTOM_INPUT_MEMBER(suprridr_state::control_r)
227233{
228234   UINT32 ret;
229235
230236   /* screen flip multiplexes controls */
231   if (suprridr_is_screen_flipped())
237   if (is_screen_flipped())
232238      ret = ioport(SUPRRIDR_P2_CONTROL_PORT_TAG)->read();
233239   else
234240      ret = ioport(SUPRRIDR_P1_CONTROL_PORT_TAG)->read();
r244980r244981
239245
240246static INPUT_PORTS_START( suprridr )
241247   PORT_START("INPUTS")
242   PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, suprridr_state,suprridr_control_r, NULL)
248   PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, suprridr_state, control_r, NULL)
243249
244250   PORT_START("SYSTEM")
245251   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
r244980r244981
353359   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
354360   MCFG_SCREEN_SIZE(32*8, 32*8)
355361   MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
356   MCFG_SCREEN_UPDATE_DRIVER(suprridr_state, screen_update_suprridr)
362   MCFG_SCREEN_UPDATE_DRIVER(suprridr_state, screen_update)
357363   MCFG_SCREEN_PALETTE("palette")
358364
359365   MCFG_GFXDECODE_ADD("gfxdecode", "palette", suprridr)
r244980r244981
423429 *
424430 *************************************/
425431
426GAME( 1983, suprridr, 0, suprridr, suprridr, driver_device, 0, ROT90, "Taito Corporation (Venture Line license)", "Super Rider", GAME_IMPERFECT_SOUND )
432GAME( 1983, suprridr, 0, suprridr, suprridr, driver_device, 0, ROT90, "Taito Corporation (Venture Line license)", "Super Rider", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
trunk/src/mame/includes/suprloco.h
r244980r244981
33public:
44   suprloco_state(const machine_config &mconfig, device_type type, const char *tag)
55      : driver_device(mconfig, type, tag),
6      m_maincpu(*this, "maincpu"),
7      m_audiocpu(*this, "audiocpu"),
8      m_gfxdecode(*this, "gfxdecode"),
69      m_spriteram(*this, "spriteram"),
710      m_videoram(*this, "videoram"),
8      m_scrollram(*this, "scrollram"),
9      m_maincpu(*this, "maincpu"),
10      m_audiocpu(*this, "audiocpu"),
11      m_gfxdecode(*this, "gfxdecode") { }
11      m_scrollram(*this, "scrollram") { }
12     
13   required_device<cpu_device> m_maincpu;
14   required_device<cpu_device> m_audiocpu;
15   required_device<gfxdecode_device> m_gfxdecode;
1216
1317   required_shared_ptr<UINT8> m_spriteram;
1418   required_shared_ptr<UINT8> m_videoram;
1519   required_shared_ptr<UINT8> m_scrollram;
20   
1621   tilemap_t *m_bg_tilemap;
1722   int m_control;
1823
19   DECLARE_WRITE8_MEMBER(suprloco_soundport_w);
20   DECLARE_WRITE8_MEMBER(suprloco_videoram_w);
21   DECLARE_WRITE8_MEMBER(suprloco_scrollram_w);
22   DECLARE_WRITE8_MEMBER(suprloco_control_w);
23   DECLARE_READ8_MEMBER(suprloco_control_r);
24   DECLARE_DRIVER_INIT(suprloco);
24   DECLARE_WRITE8_MEMBER(soundport_w);
25   DECLARE_WRITE8_MEMBER(videoram_w);
26   DECLARE_WRITE8_MEMBER(scrollram_w);
27   DECLARE_WRITE8_MEMBER(control_w);
28   DECLARE_READ8_MEMBER(control_r);
29   
2530   TILE_GET_INFO_MEMBER(get_tile_info);
31   
2632   virtual void video_start();
2733   DECLARE_PALETTE_INIT(suprloco);
28   UINT32 screen_update_suprloco(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
34   DECLARE_DRIVER_INIT(suprloco);
35   
36   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
2937   inline void draw_pixel(bitmap_ind16 &bitmap,const rectangle &cliprect,int x,int y,int color,int flip);
3038   void draw_sprite(bitmap_ind16 &bitmap,const rectangle &cliprect,int spr_number);
3139   void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
32   required_device<cpu_device> m_maincpu;
33   required_device<cpu_device> m_audiocpu;
34   required_device<gfxdecode_device> m_gfxdecode;
3540};
trunk/src/mame/includes/suprridr.h
r244980r244981
1111public:
1212   suprridr_state(const machine_config &mconfig, device_type type, const char *tag)
1313      : driver_device(mconfig, type, tag),
14      m_fgram(*this, "fgram"),
15      m_bgram(*this, "bgram"),
16      m_spriteram(*this, "spriteram"),
1714      m_maincpu(*this, "maincpu"),
1815      m_audiocpu(*this, "audiocpu"),
1916      m_gfxdecode(*this, "gfxdecode"),
20      m_palette(*this, "palette")  { }
17      m_palette(*this, "palette"),
18      m_fgram(*this, "fgram"),
19      m_bgram(*this, "bgram"),
20      m_spriteram(*this, "spriteram") { }
2121
22   required_device<cpu_device> m_maincpu;
23   required_device<cpu_device> m_audiocpu;
24   required_device<gfxdecode_device> m_gfxdecode;
25   required_device<palette_device> m_palette;
26
27   required_shared_ptr<UINT8> m_fgram;
28   required_shared_ptr<UINT8> m_bgram;
29   required_shared_ptr<UINT8> m_spriteram;
30
2231   UINT8 m_nmi_enable;
2332   UINT8 m_sound_data;
24   required_shared_ptr<UINT8> m_fgram;
25   required_shared_ptr<UINT8> m_bgram;
2633   tilemap_t *m_fg_tilemap;
2734   tilemap_t *m_bg_tilemap;
2835   tilemap_t *m_bg_tilemap_noscroll;
2936   UINT8 m_flipx;
3037   UINT8 m_flipy;
31   required_shared_ptr<UINT8> m_spriteram;
38   
3239   DECLARE_WRITE8_MEMBER(nmi_enable_w);
3340   DECLARE_WRITE8_MEMBER(sound_data_w);
3441   DECLARE_WRITE8_MEMBER(sound_irq_ack_w);
3542   DECLARE_WRITE8_MEMBER(coin_lock_w);
36   DECLARE_WRITE8_MEMBER(suprridr_flipx_w);
37   DECLARE_WRITE8_MEMBER(suprridr_flipy_w);
38   DECLARE_WRITE8_MEMBER(suprridr_fgdisable_w);
39   DECLARE_WRITE8_MEMBER(suprridr_fgscrolly_w);
40   DECLARE_WRITE8_MEMBER(suprridr_bgscrolly_w);
41   DECLARE_WRITE8_MEMBER(suprridr_bgram_w);
42   DECLARE_WRITE8_MEMBER(suprridr_fgram_w);
43   DECLARE_CUSTOM_INPUT_MEMBER(suprridr_control_r);
43   DECLARE_WRITE8_MEMBER(flipx_w);
44   DECLARE_WRITE8_MEMBER(flipy_w);
45   DECLARE_WRITE8_MEMBER(fgdisable_w);
46   DECLARE_WRITE8_MEMBER(fgscrolly_w);
47   DECLARE_WRITE8_MEMBER(bgscrolly_w);
48   DECLARE_WRITE8_MEMBER(bgram_w);
49   DECLARE_WRITE8_MEMBER(fgram_w);
4450   DECLARE_READ8_MEMBER(sound_data_r);
51   
52   DECLARE_CUSTOM_INPUT_MEMBER(control_r);
53   
4554   TILE_GET_INFO_MEMBER(get_tile_info);
4655   TILE_GET_INFO_MEMBER(get_tile_info2);
56   
57   INTERRUPT_GEN_MEMBER(main_nmi_gen);
58   TIMER_CALLBACK_MEMBER(delayed_sound_w);
59   
60   virtual void machine_start();
4761   virtual void video_start();
4862   DECLARE_PALETTE_INIT(suprridr);
49   UINT32 screen_update_suprridr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
50   INTERRUPT_GEN_MEMBER(main_nmi_gen);
51   TIMER_CALLBACK_MEMBER(delayed_sound_w);
52   int suprridr_is_screen_flipped();
53   required_device<cpu_device> m_maincpu;
54   required_device<cpu_device> m_audiocpu;
55   required_device<gfxdecode_device> m_gfxdecode;
56   required_device<palette_device> m_palette;
63   
64   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
65   int is_screen_flipped();
5766};
trunk/src/mame/mame.lst
r244980r244981
32373237sf2b            // bootleg
32383238cworld2j        // 11/06/1992 (c) 1992 (Japan)
32393239cworld2ja       // 11/06/1992 (c) 1992 (Japan)
3240cworld2jb       // 11/06/1992 (c) 1992 (Japan)
32403241varth           // 14/07/1992 (c) 1992 (World)
32413242varthr1         // 12/06/1992 (c) 1992 (World)
32423243varthu          // 12/06/1992 (c) 1992 (USA)
r244980r244981
87738774gunbirdk        // (c) 1994
87748775gunbirdj        // (c) 1994
87758776btlkroad        // (c) 1994
8777btlkroadk      // (c) 1994
87768778s1945           // (c) 1995
87778779s1945a          // (c) 1995
87788780s1945j          // (c) 1995
trunk/src/mame/video/cps1.c
r244980r244981
15321532   {"varthj",      CPS_B_21_BT5, mapper_VA22B },   /* CPSB test has been patched out (72=0001) register is also written to, possibly leftover from development */
15331533   {"cworld2j",    CPS_B_21_BT6, mapper_Q522B,  0x36, 0, 0x34 },   /* (ports 36, 34 probably leftover input code from another game) */
15341534   {"cworld2ja",   CPS_B_21_DEF, mapper_Q522B }, // patched set, no battery, could be desuicided
1535   {"cworld2jb",   CPS_B_21_BT6, mapper_Q522B,  0x36, 0, 0x34 }, // actually Q563B
15351536   {"wof",         CPS_B_21_QS1, mapper_TK263B },
15361537   {"wofr1",       CPS_B_21_DEF, mapper_TK263B },  // patched set coming from a desuicided board?
15371538   {"wofa",        CPS_B_21_DEF, mapper_TK263B },  // patched set coming from a desuicided board?
trunk/src/mame/video/suprloco.c
r244980r244981
11/***************************************************************************
22
3  video.c
3  suprloco.c
44
55  Functions to emulate the video hardware of the machine.
66
r244980r244981
9898   m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(suprloco_state::get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32);
9999
100100   m_bg_tilemap->set_scroll_rows(32);
101   
102   save_item(NAME(m_control));
101103}
102104
103105
r244980r244981
108110
109111***************************************************************************/
110112
111WRITE8_MEMBER(suprloco_state::suprloco_videoram_w)
113WRITE8_MEMBER(suprloco_state::videoram_w)
112114{
113115   m_videoram[offset] = data;
114116   m_bg_tilemap->mark_tile_dirty(offset/2);
115117}
116118
117WRITE8_MEMBER(suprloco_state::suprloco_scrollram_w)
119WRITE8_MEMBER(suprloco_state::scrollram_w)
118120{
119121   int adj = flip_screen() ? -8 : 8;
120122
r244980r244981
122124   m_bg_tilemap->set_scrollx(offset, data - adj);
123125}
124126
125WRITE8_MEMBER(suprloco_state::suprloco_control_w)
127WRITE8_MEMBER(suprloco_state::control_w)
126128{
127129   /* There is probably a palette select in here */
128130
r244980r244981
148150}
149151
150152
151READ8_MEMBER(suprloco_state::suprloco_control_r)
153READ8_MEMBER(suprloco_state::control_r)
152154{
153155   return m_control;
154156}
r244980r244981
256258   }
257259}
258260
259UINT32 suprloco_state::screen_update_suprloco(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
261UINT32 suprloco_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
260262{
261263   m_bg_tilemap->draw(screen, bitmap, cliprect, 0,0);
262264   draw_sprites(bitmap,cliprect);
trunk/src/mame/video/suprridr.c
r244980r244981
4444   m_bg_tilemap_noscroll = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(suprridr_state::get_tile_info),this),  TILEMAP_SCAN_ROWS,       8,8, 32,32);
4545
4646   m_fg_tilemap->set_transparent_pen(0);
47   
48   save_item(NAME(m_flipx));
49   save_item(NAME(m_flipy));
4750}
4851
4952
r244980r244981
9194 *
9295 *************************************/
9396
94WRITE8_MEMBER(suprridr_state::suprridr_flipx_w)
97WRITE8_MEMBER(suprridr_state::flipx_w)
9598{
9699   m_flipx = data & 1;
97100   machine().tilemap().set_flip_all((m_flipx ? TILEMAP_FLIPX : 0) | (m_flipy ? TILEMAP_FLIPY : 0));
98101}
99102
100103
101WRITE8_MEMBER(suprridr_state::suprridr_flipy_w)
104WRITE8_MEMBER(suprridr_state::flipy_w)
102105{
103106   m_flipy = data & 1;
104107   machine().tilemap().set_flip_all((m_flipx ? TILEMAP_FLIPX : 0) | (m_flipy ? TILEMAP_FLIPY : 0));
105108}
106109
107110
108WRITE8_MEMBER(suprridr_state::suprridr_fgdisable_w)
111WRITE8_MEMBER(suprridr_state::fgdisable_w)
109112{
110113   m_fg_tilemap->enable(~data & 1);
111114}
112115
113116
114WRITE8_MEMBER(suprridr_state::suprridr_fgscrolly_w)
117WRITE8_MEMBER(suprridr_state::fgscrolly_w)
115118{
116119   m_fg_tilemap->set_scrolly(0, data);
117120}
118121
119122
120WRITE8_MEMBER(suprridr_state::suprridr_bgscrolly_w)
123WRITE8_MEMBER(suprridr_state::bgscrolly_w)
121124{
122125   m_bg_tilemap->set_scrolly(0, data);
123126}
124127
125128
126int suprridr_state::suprridr_is_screen_flipped()
129int suprridr_state::is_screen_flipped()
127130{
128131   return m_flipx;  /* or is it flipy? */
129132}
r244980r244981
136139 *
137140 *************************************/
138141
139WRITE8_MEMBER(suprridr_state::suprridr_bgram_w)
142WRITE8_MEMBER(suprridr_state::bgram_w)
140143{
141144   m_bgram[offset] = data;
142145   m_bg_tilemap->mark_tile_dirty(offset);
r244980r244981
144147}
145148
146149
147WRITE8_MEMBER(suprridr_state::suprridr_fgram_w)
150WRITE8_MEMBER(suprridr_state::fgram_w)
148151{
149152   m_fgram[offset] = data;
150153   m_fg_tilemap->mark_tile_dirty(offset);
r244980r244981
158161 *
159162 *************************************/
160163
161UINT32 suprridr_state::screen_update_suprridr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
164UINT32 suprridr_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
162165{
163   UINT8 *spriteram = m_spriteram;
164166   rectangle subclip;
165   int i;
166167   const rectangle &visarea = screen.visible_area();
167168
168169   /* render left 4 columns with no scroll */
r244980r244981
188189   m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
189190
190191   /* draw the sprites */
191   for (i = 0; i < 48; i++)
192   for (int i = 0; i < 48; i++)
192193   {
193      int code = (spriteram[i*4+1] & 0x3f) | ((spriteram[i*4+2] >> 1) & 0x40);
194      int color = spriteram[i*4+2] & 0x7f;
195      int fx = spriteram[i*4+1] & 0x40;
196      int fy = spriteram[i*4+1] & 0x80;
197      int x = spriteram[i*4+3];
198      int y = 240 - spriteram[i*4+0];
194      int code = (m_spriteram[i*4+1] & 0x3f) | ((m_spriteram[i*4+2] >> 1) & 0x40);
195      int color = m_spriteram[i*4+2] & 0x7f;
196      int fx = m_spriteram[i*4+1] & 0x40;
197      int fy = m_spriteram[i*4+1] & 0x80;
198      int x = m_spriteram[i*4+3];
199      int y = 240 - m_spriteram[i*4+0];
199200
200201      if (m_flipx)
201202      {
trunk/src/mess/drivers/a7800.c
r244980r244981
117117   m_maria(*this, "maria"),
118118   m_io_joysticks(*this, "joysticks"),
119119   m_io_buttons(*this, "buttons"),
120   m_io_vblank(*this, "vblank"),
121120   m_io_console_buttons(*this, "console_buttons"),
122121   m_cart(*this, "cartslot"),
123   m_screen(*this, "screen") { }
122   m_screen(*this, "screen"),
123   m_bios(*this, "maincpu") { }
124124
125125   int m_lines;
126126   int m_ispal;
r244980r244981
132132   int m_p2_one_button;
133133   int m_bios_enabled;
134134
135   UINT8 *m_bios;
136
137135   DECLARE_READ8_MEMBER(bios_or_cart_r);
138136   DECLARE_WRITE8_MEMBER(ram0_w);
139137   DECLARE_READ8_MEMBER(tia_r);
r244980r244981
158156   required_device<atari_maria_device> m_maria;
159157   required_ioport m_io_joysticks;
160158   required_ioport m_io_buttons;
161   required_ioport m_io_vblank;
162159   required_ioport m_io_console_buttons;
163160   required_device<a78_cart_slot_device> m_cart;
164161   required_device<screen_device> m_screen;
162   required_region_ptr<UINT8> m_bios;
165163};
166164
167165
r244980r244981
282280static ADDRESS_MAP_START( a7800_mem, AS_PROGRAM, 8, a7800_state )
283281   AM_RANGE(0x0000, 0x001f) AM_MIRROR(0x300) AM_READWRITE(tia_r, tia_w)
284282   AM_RANGE(0x0020, 0x003f) AM_MIRROR(0x300) AM_DEVREADWRITE("maria", atari_maria_device, read, write)
285   AM_RANGE(0x0040, 0x00ff) AM_RAMBANK("ram0")     // RAM (6116 block 0)
286   AM_RANGE(0x0140, 0x01ff) AM_RAMBANK("ram1")     // RAM (6116 block 1)
283   AM_RANGE(0x0040, 0x00ff) AM_RAMBANK("zpmirror") // mirror of 0x2040-0x20ff, for zero page
284   AM_RANGE(0x0140, 0x01ff) AM_RAMBANK("spmirror") // mirror of 0x2140-0x21ff, for stack page
287285   AM_RANGE(0x0280, 0x02ff) AM_DEVREADWRITE("riot", riot6532_device, read, write)
288   AM_RANGE(0x0480, 0x04ff) AM_MIRROR(0x100) AM_RAMBANK("riot_ram")
289   AM_RANGE(0x1800, 0x27ff) AM_RAMBANK("main_ram")
290
291   AM_RANGE(0x2040, 0x20ff) AM_RAMBANK("ram0")     // mirror (6116 block 0)
292   AM_RANGE(0x2140, 0x21ff) AM_RAMBANK("ram1")     // mirror (6116 block 1)
293
294   AM_RANGE(0x2800, 0x2fff) AM_RAMBANK("mirror")   // these should mirror "main_ram" (according to docs)
295   AM_RANGE(0x3000, 0x37ff) AM_RAMBANK("mirror")   // but system have issues in such case...
296   AM_RANGE(0x3800, 0x3fff) AM_RAMBANK("mirror")
286   AM_RANGE(0x0480, 0x04ff) AM_RAM AM_SHARE("riot_ram") AM_MIRROR(0x100)
287   AM_RANGE(0x1800, 0x1fff) AM_RAM AM_SHARE("6116_1")
288   AM_RANGE(0x2000, 0x27ff) AM_RAM AM_SHARE("6116_2") AM_MIRROR(0x0800)
289                             // According to the official Software Guide, the RAM at 0x2000 is
290                             // repeatedly mirrored up to 0x3fff, but this is evidently incorrect
291                             // because the High Score Cartridge maps ROM at 0x3000-0x3fff
292                             // Hardware tests show that only the mirror at 0x2800-0x2fff actually
293                             // exists, and only on some hardware (MARIA? motherboard?) revisions
297294   AM_RANGE(0x4000, 0xffff) AM_DEVWRITE("cartslot", a78_cart_slot_device, write_40xx)
298295   AM_RANGE(0x4000, 0xbfff) AM_DEVREAD("cartslot", a78_cart_slot_device, read_40xx)
299296   AM_RANGE(0xc000, 0xffff) AM_READ(bios_or_cart_r)    // here also the BIOS can be accessed
r244980r244981
322319   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_BUTTON1)       PORT_PLAYER(1)
323320   PORT_BIT(0xF0, IP_ACTIVE_LOW, IPT_UNUSED)
324321
325   PORT_START("vblank")
326   PORT_BIT(0x7F, IP_ACTIVE_LOW, IPT_UNUSED)
327   PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_CUSTOM) PORT_VBLANK("screen")
328
329322   PORT_START("console_buttons")
330323   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_OTHER)  PORT_NAME("Reset")         PORT_CODE(KEYCODE_R)
331324   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_OTHER)  PORT_NAME("Select")        PORT_CODE(KEYCODE_S)
r244980r244981
13061299
13071300void a7800_state::machine_start()
13081301{
1309   m_bios = machine().root_device().memregion("maincpu")->base() + 0xc000;
13101302   save_item(NAME(m_p1_one_button));
13111303   save_item(NAME(m_p2_one_button));
13121304   save_item(NAME(m_bios_enabled));
r244980r244981
13141306   save_item(NAME(m_ctrl_reg));
13151307   save_item(NAME(m_maria_flag));
13161308
1309   // set up RAM mirrors
1310   UINT8 *ram = reinterpret_cast<UINT8 *>(memshare("6116_2")->ptr());
1311   membank("zpmirror")->set_base(ram + 0x0040);
1312   membank("spmirror")->set_base(ram + 0x0140);
1313
13171314   // install additional handlers, if needed
13181315   if (m_cart->exists())
13191316   {
r244980r244981
14201417***************************************************************************/
14211418
14221419ROM_START( a7800 )
1423   ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF)
1420   ROM_REGION(0x4000, "maincpu", ROMREGION_ERASEFF)
14241421   ROM_SYSTEM_BIOS( 0, "a7800", "Atari 7800" )
1425   ROMX_LOAD("7800.u7", 0xf000, 0x1000, CRC(5d13730c) SHA1(d9d134bb6b36907c615a594cc7688f7bfcef5b43), ROM_BIOS(1))
1422   ROMX_LOAD("7800.u7", 0x3000, 0x1000, CRC(5d13730c) SHA1(d9d134bb6b36907c615a594cc7688f7bfcef5b43), ROM_BIOS(1))
14261423   ROM_SYSTEM_BIOS( 1, "a7800pr", "Atari 7800 (prototype with Asteroids)" )
1427   ROMX_LOAD("c300558-001a.u7", 0xc000, 0x4000, CRC(a0e10edf) SHA1(14584b1eafe9721804782d4b1ac3a4a7313e455f), ROM_BIOS(2))
1424   ROMX_LOAD("c300558-001a.u7", 0x0000, 0x4000, CRC(a0e10edf) SHA1(14584b1eafe9721804782d4b1ac3a4a7313e455f), ROM_BIOS(2))
14281425ROM_END
14291426
14301427ROM_START( a7800p )
1431   ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF)
1432   ROM_LOAD("7800pal.rom", 0xc000, 0x4000, CRC(d5b61170) SHA1(5a140136a16d1d83e4ff32a19409ca376a8df874))
1428   ROM_REGION(0x4000, "maincpu", ROMREGION_ERASEFF)
1429   ROM_LOAD("7800pal.rom", 0x0000, 0x4000, CRC(d5b61170) SHA1(5a140136a16d1d83e4ff32a19409ca376a8df874))
14331430ROM_END
14341431
14351432
trunk/src/mess/drivers/ti99_4x.c
r244980r244981
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
r244980r244981
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      {
r244980r244981
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