Previous 199869 Revisions Next

r36631 Wednesday 25th March, 2015 at 10:12:10 UTC by Miodrag Milanović
Merge pull request #151 from Happy-yappH/master

(MESS)Adding support for the N64DD [Happy]
[hash]nes.xml pasogo.xml
[src]version.c
[src/build]flags_clang.mak
[src/emu]mame.c render.c video.c video.h
[src/emu/bus/a2bus]ezcgi.c
[src/emu/bus/scsi]omti5100.c
[src/emu/cpu/hmcs40]hmcs40.c hmcs40.h hmcs40d.c hmcs40op.inc
[src/emu/cpu/i386]i386ops.h pentops.inc
[src/emu/cpu/nec]v53.c v53.h
[src/emu/cpu/pic16c5x]pic16c5x.c pic16c5x.h
[src/emu/cpu/z80]kl5c80a12.c kl5c80a12.h
[src/emu/machine]am9517a.c am9517a.h i8251.c i8257.c machine.mak mcf5206e.c tmp68301.c upd71071.c vrc4373.c vrc4373.h
[src/emu/sound]es1373.h flt_rc.c okim9810.c okim9810.h
[src/emu/video]tms34061.c voodoo_pci.c
[src/lib/formats]d88_dsk.c flex_dsk.c fmtowns_dsk.c nfd_dsk.c
[src/mame]mame.lst
[src/mame/audio]hng64.c
[src/mame/drivers]argus.c astrcorp.c cabal.c capbowl.c cocoloco.c dynax.c fgoal.c flyball.c goldstar.c hng64.c hotblock.c iteagle.c jankenmn.c jchan.c junofrst.c m72.c madalien.c mgolf.c neogeo.c neogeo_noslot.c paradise.c peplus.c playmark.c psychic5.c pturn.c re900.c rltennis.c sandscrp.c scobra.c seta.c seta2.c shougi.c sidearms.c simple_st0016.c sothello.c speglsht.c srmp2.c srmp5.c srmp6.c srumbler.c sstrangr.c ssv.c sub.c suna16.c suna8.c supdrapo.c supertnk.c superwng.c suprgolf.c suprslam.c tankbust.c taotaido.c tbowl.c tgtpanic.c thunderx.c toaplan2.c tryout.c tsamurai.c ttchamp.c tugboat.c twins.c usgames.c vamphalf.c vigilant.c wc90b.c xain.c xtheball.c
[src/mame/includes]argus.h bbusters.h cabal.h capbowl.h fgoal.h hng64.h ironhors.h mosaic.h paradise.h pooyan.h psychic5.h realbrk.h rltennis.h seta2.h shuuz.h sidearms.h simple_st0016.h speedbal.h srmp2.h srumbler.h ssozumo.h ssrj.h ssv.h subs.h suna16.h suprloco.h suprridr.h tankbatt.h tankbust.h taotaido.h tbowl.h thunderx.h timelimt.h tryout.h tsamurai.h usgames.h vigilant.h vulgus.h wc90b.h
[src/mame/machine]hng64_net.c iteagle_fpga.c iteagle_fpga.h
[src/mame/video]bbusters.c deadang.c decmxc06.c dynax.c hng64.c hng64_3d.c hng64_sprite.c jalblend.c jalblend.h pc080sn.c psychic5.c realbrk.c rltennis.c seta001.c seta2.c sidearms.c srumbler.c ssv.c suna16.c suprloco.c suprridr.c tankbust.c tbowl.c thedeep.c timelimt.c tryout.c tsamurai.c vulgus.c xain.c
[src/mess]mess.lst mess.mak
[src/mess/audio]gamate.c
[src/mess/drivers]a7800.c apple2.c apple2e.c gamate.c hh_hmcs40.c hh_pic16.c hh_tms1k.c hh_ucom4.c imds2.c mbdtower.c snes.c ticalc1x.c tispeak.c
[src/mess/includes]hh_tms1k.h imds2.h
[src/mess/layout]mbdtower.lay
[src/osd/modules]osdwindow.h
[src/osd/modules/opengl]osd_opengl.h
[src/osd/modules/render]draw13.c drawogl.c
[src/osd/sdl]sdl.mak video.h window.c
[src/osd/windows]video.h windows.mak

trunk/hash/nes.xml
r245142r245143
5739157391      <publisher>Union Bond</publisher>
5739257392      <info name="serial" value="G-0005"/>
5739357393      <part name="cart" interface="nes_cart">
57394         <feature name="slot" value="nanjing" />   <!--  header actually says 164... -->
57394         <feature name="slot" value="nanjing" /> <!--  header actually says 164... -->
5739557395         <feature name="pcb" value="UNL-NANJING" />
5739657396         <dataarea name="prg" size="524288">
5739757397            <rom name="ying tao xiao wan zi (g-005) (ch).prg" size="524288" crc="8209ba79" sha1="fa56608d8dcf5a144dd1fc81282cd86fd51060fe" offset="00000" status="baddump" />
r245142r245143
7542075420      <year>19??</year>
7542175421      <publisher>&lt;unknown&gt;</publisher>
7542275422      <part name="cart" interface="nes_cart">
75423         <feature name="slot" value="fk23ca" />   <!-- UNIF header pointed to FK23C, but the menu does not appear with that mapper... investigate! -->
75423         <feature name="slot" value="fk23ca" />  <!-- UNIF header pointed to FK23C, but the menu does not appear with that mapper... investigate! -->
7542475424         <feature name="pcb" value="BMC-FK23C" />
7542575425         <dataarea name="prg" size="8388608">
7542675426            <rom name="120-in-1 (unl)[u].prg" size="8388608" crc="678de5aa" sha1="01da22ddf1897b47d6b03ecb4ff0c093f9b39dfc" offset="00000" status="baddump" />
trunk/hash/pasogo.xml
r245142r245143
99  歴代棋聖戦名曲集 (Rekidai Kisei Sen Meikyokushuu)
1010  棋界覇王伝・古典編 (Kikai Haoh Den - Koten-hen)
1111  棋界覇王伝・現代編 (Kikai Haoh Den - Gendai-hen)
12 
12
1313  The undumped cart numbers are KS-1005, KS-1006, KS-1007 and KS-1008
1414  For the remaining undumped games, the game to cart number match is unknown.
1515  -->
trunk/src/build/flags_clang.mak
r245142r245143
22   -Wno-cast-align \
33   -Wno-tautological-compare
44
5# caused by dynamic_array being generally awful
6CCOMFLAGS += -Wno-dynamic-class-memaccess
7
58# caused by obj/sdl64d/emu/cpu/tms57002/tms57002.inc
69CCOMFLAGS += -Wno-self-assign-field
710
trunk/src/emu/bus/a2bus/ezcgi.c
r245142r245143
4343#define MSX2_VISIBLE_YBORDER_PIXELS 14 * 2
4444
4545MACHINE_CONFIG_FRAGMENT( ezcgi9938 )
46   MCFG_V9938_ADD(TMS_TAG, SCREEN_TAG, 0x30000)   // 192K of VRAM
46   MCFG_V9938_ADD(TMS_TAG, SCREEN_TAG, 0x30000)    // 192K of VRAM
4747   MCFG_V99X8_INTERRUPT_CALLBACK(WRITELINE(a2bus_ezcgi_9938_device, tms_irq_w))
4848
4949   MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
r245142r245143
5757MACHINE_CONFIG_END
5858
5959MACHINE_CONFIG_FRAGMENT( ezcgi9958 )
60   MCFG_V9958_ADD(TMS_TAG, SCREEN_TAG, 0x30000)   // 192K of VRAM
60   MCFG_V9958_ADD(TMS_TAG, SCREEN_TAG, 0x30000)    // 192K of VRAM
6161   MCFG_V99X8_INTERRUPT_CALLBACK(WRITELINE(a2bus_ezcgi_9958_device, tms_irq_w))
6262
6363   MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
r245142r245143
311311      lower_slot_irq();
312312   }
313313}
314
trunk/src/emu/bus/scsi/omti5100.c
r245142r245143
2020
2121omti5100_device::omti5100_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
2222   : scsihd_device(mconfig, OMTI5100, "OMTI 5100", tag, owner, clock, "omti5100", __FILE__),
23     m_image0(*this, "image0"),
24     m_image1(*this, "image1")
23      m_image0(*this, "image0"),
24      m_image1(*this, "image1")
2525{
2626}
2727
trunk/src/emu/cpu/hmcs40/hmcs40.c
r245142r245143
187187
188188   m_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(hmcs40_cpu_device::simple_timer_cb), this));
189189   reset_prescaler();
190   
190
191191   m_read_r0.resolve_safe(0);
192192   m_read_r1.resolve_safe(0);
193193   m_read_r2.resolve_safe(0);
r245142r245143
196196   m_read_r5.resolve_safe(0);
197197   m_read_r6.resolve_safe(0);
198198   m_read_r7.resolve_safe(0);
199   
199
200200   m_write_r0.resolve_safe();
201201   m_write_r1.resolve_safe();
202202   m_write_r2.resolve_safe();
r245142r245143
290290{
291291   m_pc = m_pcmask;
292292   m_prev_op = m_op = 0;
293   
293
294294   // clear i/o
295295   m_d = m_polarity;
296296   for (int i = 0; i < 16; i++)
297297      hmcs40_cpu_device::write_d(i, 0);
298   
298
299299   for (int i = 0; i < 8; i++)
300300      hmcs40_cpu_device::write_r(i, 0);
301   
301
302302   // clear interrupts
303303   m_cf = 0;
304304   m_ie = 0;
r245142r245143
316316{
317317   index &= 7;
318318   UINT8 inp = 0;
319   
319
320320   switch (index)
321321   {
322322      case 0: inp = m_read_r0(index, 0xff); break;
r245142r245143
328328      case 6: inp = m_read_r6(index, 0xff); break;
329329      case 7: inp = m_read_r7(index, 0xff); break;
330330   }
331   
331
332332   return ((inp ^ m_polarity) | m_r[index]) & 0xf;
333333}
334334
r245142r245143
337337   index &= 7;
338338   data = (data ^ m_polarity) & 0xf;
339339   m_r[index] = data;
340   
340
341341   switch (index)
342342   {
343343      case 0: m_write_r0(index, data, 0xff); break;
r245142r245143
354354int hmcs40_cpu_device::read_d(int index)
355355{
356356   index &= 15;
357   
357
358358   return ((m_read_d(index, 0xffff) ^ m_polarity) | m_d) >> index & 1;
359359}
360360
r245142r245143
362362{
363363   index &= 15;
364364   state = (((state) ? 1 : 0) ^ m_polarity) & 1;
365   
365
366366   m_d = (m_d & ~(1 << index)) | state << index;
367367   m_write_d(index, m_d, 0xffff);
368368}
r245142r245143
374374UINT8 hmcs43_cpu_device::read_r(int index)
375375{
376376   index &= 7;
377   
377
378378   if (index >= 2)
379379      logerror("%s read from %s port R%d at $%04X\n", tag(), (index >= 4) ? "unknown" : "output", index, m_prev_pc);
380380
r245142r245143
394394int hmcs43_cpu_device::read_d(int index)
395395{
396396   index &= 15;
397   
397
398398   if (index >= 4)
399399      logerror("%s read from output pin D%d at $%04X\n", tag(), index, m_prev_pc);
400400
r245142r245143
408408UINT8 hmcs44_cpu_device::read_r(int index)
409409{
410410   index &= 7;
411   
411
412412   if (index >= 6)
413413      logerror("%s read from unknown port R%d at $%04X\n", tag(), index, m_prev_pc);
414   
414
415415   return hmcs40_cpu_device::read_r(index);
416416}
417417
r245142r245143
432432UINT8 hmcs45_cpu_device::read_r(int index)
433433{
434434   index &= 7;
435   
435
436436   if (index >= 6)
437437      logerror("%s read from %s port R%d at $%04X\n", tag(), (index == 7) ? "unknown" : "output", index, m_prev_pc);
438   
438
439439   return hmcs40_cpu_device::read_r(index);
440440}
441441
r245142r245143
460460   m_icount--;
461461   push_stack();
462462   m_ie = 0;
463   
463
464464   // line 0/1 for external interrupt, let's use 2 for t/c interrupt
465465   int line = (m_iri) ? m_eint_line : 2;
466   
466
467467   // vector $3f, on page 0(timer/counter), or page 1(external)
468468   // external interrupt has priority over t/c interrupt
469469   m_pc = 0x3f | (m_iri ? 0x40 : 0);
r245142r245143
480480   if (line != 0 && line != 1)
481481      return;
482482   state = (state) ? 1 : 0;
483   
483
484484   // external interrupt request on rising edge
485485   if (state && !m_int[line])
486486   {
r245142r245143
490490         m_iri = 1;
491491         m_if[line] = 1;
492492      }
493     
493
494494      // clock tc if it is in counter mode
495495      if (m_cf && line == 1)
496496         increment_tc();
497497   }
498   
498
499499   m_int[line] = state;
500500}
501501
r245142r245143
511511   // timer prescaler overflow
512512   if (!m_cf)
513513      increment_tc();
514   
514
515515   reset_prescaler();
516516}
517517
r245142r245143
519519{
520520   // increment timer/counter
521521   m_tc = (m_tc + 1) & 0xf;
522   
522
523523   // timer interrupt request on overflow
524524   if (m_tc == 0 && !m_tf)
525525   {
r245142r245143
554554   while (m_icount > 0)
555555   {
556556      m_icount--;
557     
557
558558      // LPU is handled 1 cycle later
559559      if ((m_prev_op & 0x3e0) == 0x340)
560560      {
r245142r245143
571571      // remember previous state
572572      m_prev_op = m_op;
573573      m_prev_pc = m_pc;
574     
574
575575      // fetch next opcode
576576      debugger_instruction_hook(this, m_pc);
577577      m_op = m_program->read_word(m_pc << 1) & 0x3ff;
r245142r245143
582582      switch (m_op)
583583      {
584584         /* 0x000 */
585         
585
586586         case 0x000: case 0x001: case 0x002: case 0x003:
587587            op_xsp(); break;
588588         case 0x004: case 0x005: case 0x006: case 0x007:
r245142r245143
602602            op_am(); break;
603603         case 0x03c:
604604            op_lta(); break;
605         
605
606606         case 0x040:
607607            op_lxa(); break;
608608         case 0x045:
r245142r245143
626626         case 0x070: case 0x071: case 0x072: case 0x073: case 0x074: case 0x075: case 0x076: case 0x077:
627627         case 0x078: case 0x079: case 0x07a: case 0x07b: case 0x07c: case 0x07d: case 0x07e: case 0x07f:
628628            op_lai(); break;
629         
629
630630         case 0x080: case 0x081: case 0x082: case 0x083: case 0x084: case 0x085: case 0x086: case 0x087:
631631         case 0x088: case 0x089: case 0x08a: case 0x08b: case 0x08c: case 0x08d: case 0x08e: case 0x08f:
632632            op_ai(); break;
r245142r245143
655655         case 0x0f0: case 0x0f1: case 0x0f2: case 0x0f3: case 0x0f4: case 0x0f5: case 0x0f6: case 0x0f7:
656656         case 0x0f8: case 0x0f9: case 0x0fa: case 0x0fb: case 0x0fc: case 0x0fd: case 0x0fe: case 0x0ff:
657657            op_xamr(); break;
658         
659         
658
659
660660         /* 0x100 */
661         
661
662662         case 0x110: case 0x111:
663663            op_lmaiy(); break;
664664         case 0x114: case 0x115:
r245142r245143
682682         case 0x170: case 0x171: case 0x172: case 0x173: case 0x174: case 0x175: case 0x176: case 0x177:
683683         case 0x178: case 0x179: case 0x17a: case 0x17b: case 0x17c: case 0x17d: case 0x17e: case 0x17f:
684684            op_lti(); break;
685         
685
686686         case 0x1a0:
687687            op_tif1(); break;
688688         case 0x1a1:
r245142r245143
706706
707707
708708         /* 0x200 */
709         
709
710710         case 0x200: case 0x201: case 0x202: case 0x203:
711711            op_tm(); break;
712712         case 0x204: case 0x205: case 0x206: case 0x207:
r245142r245143
728728            op_alem(); break;
729729         case 0x23c:
730730            op_lat(); break;
731         
731
732732         case 0x240:
733733            op_laspx(); break;
734734         case 0x244:
r245142r245143
804804         case 0x3f0: case 0x3f1: case 0x3f2: case 0x3f3: case 0x3f4: case 0x3f5: case 0x3f6: case 0x3f7:
805805         case 0x3f8: case 0x3f9: case 0x3fa: case 0x3fb: case 0x3fc: case 0x3fd: case 0x3fe: case 0x3ff:
806806            op_cal(); break;
807         
808         
807
808
809809         default:
810810            op_illegal(); break;
811811      } /* big switch */
trunk/src/emu/cpu/hmcs40/hmcs40.h
r245142r245143
182182   int m_eint_line;    // which input_line caused an interrupt
183183   emu_timer *m_timer;
184184   int m_icount;
185   
185
186186   UINT16 m_pc;        // Program Counter
187187   UINT16 m_prev_pc;
188188   UINT8 m_page;       // LPU prepared page
r245142r245143
213213
214214   // misc internal helpers
215215   void increment_pc();
216   
216
217217   UINT8 ram_r();
218218   void ram_w(UINT8 data);
219219   void pop_stack();
trunk/src/emu/cpu/hmcs40/hmcs40d.c
r245142r245143
33/*
44
55  Hitachi HMCS40 MCU family disassembler
6 
6
77  NOTE: start offset(basepc) is $3F, not 0
88
99*/
r245142r245143
9292{
9393/*  0      1      2      3      4      5      6      7      8      9      A      B      C      D      E      F  */
9494   /* 0x000 */
95   mNOP,  mXSP,  mXSP,  mXSP,  mSEM,  mSEM,  mSEM,  mSEM,  mLAM,  mLAM,  mLAM,  mLAM,  m,     m,     m,     m, 
95   mNOP,  mXSP,  mXSP,  mXSP,  mSEM,  mSEM,  mSEM,  mSEM,  mLAM,  mLAM,  mLAM,  mLAM,  m,     m,     m,     m,
9696   mLMIIY,mLMIIY,mLMIIY,mLMIIY,mLMIIY,mLMIIY,mLMIIY,mLMIIY,mLMIIY,mLMIIY,mLMIIY,mLMIIY,mLMIIY,mLMIIY,mLMIIY,mLMIIY,
97   mLBM,  mLBM,  mLBM,  mLBM,  mBLEM, m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m, 
98   mAMC,  m,     m,     m,     mAM,   m,     m,     m,     m,     m,     m,     m,     mLTA,  m,     m,     m, 
97   mLBM,  mLBM,  mLBM,  mLBM,  mBLEM, m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,
98   mAMC,  m,     m,     m,     mAM,   m,     m,     m,     m,     m,     m,     m,     mLTA,  m,     m,     m,
9999   /* 0x040 */
100100   mLXA,  m,     m,     m,     m,     mDAS,  mDAA,  m,     m,     m,     m,     m,     mREC,  m,     m,     mSEC,
101   mLYA,  m,     m,     m,     mIY,   m,     m,     m,     mAYY,  m,     m,     m,     m,     m,     m,     m, 
102   mLBA,  m,     m,     m,     mIB,   m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m, 
101   mLYA,  m,     m,     m,     mIY,   m,     m,     m,     mAYY,  m,     m,     m,     m,     m,     m,     m,
102   mLBA,  m,     m,     m,     mIB,   m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,
103103   mLAI,  mLAI,  mLAI,  mLAI,  mLAI,  mLAI,  mLAI,  mLAI,  mLAI,  mLAI,  mLAI,  mLAI,  mLAI,  mLAI,  mLAI,  mLAI,
104104   /* 0x080 */
105105   mAI,   mAI,   mAI,   mAI,   mAI,   mAI,   mAI,   mAI,   mAI,   mAI,   mAI,   mAI,   mAI,   mAI,   mAI,   mAI,
106   mSED,  m,     m,     m,     mTD,   m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m, 
107   mSEIF1,mSECF, mSEIF0,m,     mSEIE, mSETF, m,     m,     m,     m,     m,     m,     m,     m,     m,     m, 
108   m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m, 
106   mSED,  m,     m,     m,     mTD,   m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,
107   mSEIF1,mSECF, mSEIF0,m,     mSEIE, mSETF, m,     m,     m,     m,     m,     m,     m,     m,     m,     m,
108   m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,
109109   /* 0x0c0 */
110   mLAR,  mLAR,  mLAR,  mLAR,  mLAR,  mLAR,  mLAR,  mLAR,  m,     m,     m,     m,     m,     m,     m,     m, 
110   mLAR,  mLAR,  mLAR,  mLAR,  mLAR,  mLAR,  mLAR,  mLAR,  m,     m,     m,     m,     m,     m,     m,     m,
111111   mSEDD, mSEDD, mSEDD, mSEDD, mSEDD, mSEDD, mSEDD, mSEDD, mSEDD, mSEDD, mSEDD, mSEDD, mSEDD, mSEDD, mSEDD, mSEDD,
112   mLBR,  mLBR,  mLBR,  mLBR,  mLBR,  mLBR,  mLBR,  mLBR,  m,     m,     m,     m,     m,     m,     m,     m, 
112   mLBR,  mLBR,  mLBR,  mLBR,  mLBR,  mLBR,  mLBR,  mLBR,  m,     m,     m,     m,     m,     m,     m,     m,
113113   mXAMR, mXAMR, mXAMR, mXAMR, mXAMR, mXAMR, mXAMR, mXAMR, mXAMR, mXAMR, mXAMR, mXAMR, mXAMR, mXAMR, mXAMR, mXAMR,
114114
115115/*  0      1      2      3      4      5      6      7      8      9      A      B      C      D      E      F  */
116116   /* 0x100 */
117   m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m, 
118   mLMAIY,mLMAIY,m,     m,     mLMADY,mLMADY,m,     m,     mLAY,  m,     m,     m,     m,     m,     m,     m, 
119   mOR,   m,     m,     m,     mANEM, m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m, 
120   m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m, 
117   m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,
118   mLMAIY,mLMAIY,m,     m,     mLMADY,mLMADY,m,     m,     mLAY,  m,     m,     m,     m,     m,     m,     m,
119   mOR,   m,     m,     m,     mANEM, m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,
120   m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,
121121   /* 0x140 */
122122   mLXI,  mLXI,  mLXI,  mLXI,  mLXI,  mLXI,  mLXI,  mLXI,  mLXI,  mLXI,  mLXI,  mLXI,  mLXI,  mLXI,  mLXI,  mLXI,
123123   mLYI,  mLYI,  mLYI,  mLYI,  mLYI,  mLYI,  mLYI,  mLYI,  mLYI,  mLYI,  mLYI,  mLYI,  mLYI,  mLYI,  mLYI,  mLYI,
124124   mLBI,  mLBI,  mLBI,  mLBI,  mLBI,  mLBI,  mLBI,  mLBI,  mLBI,  mLBI,  mLBI,  mLBI,  mLBI,  mLBI,  mLBI,  mLBI,
125125   mLTI,  mLTI,  mLTI,  mLTI,  mLTI,  mLTI,  mLTI,  mLTI,  mLTI,  mLTI,  mLTI,  mLTI,  mLTI,  mLTI,  mLTI,  mLTI,
126126   /* 0x180 */
127   m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m, 
128   m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m, 
129   mTIF1, mTI1,  mTIF0, mTI0,  m,     mTTF,  m,     m,     m,     m,     m,     m,     m,     m,     m,     m, 
130   m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m, 
127   m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,
128   m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,
129   mTIF1, mTI1,  mTIF0, mTI0,  m,     mTTF,  m,     m,     m,     m,     m,     m,     m,     m,     m,     m,
130   m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,
131131   /* 0x1c0 */
132132   mBR,   mBR,   mBR,   mBR,   mBR,   mBR,   mBR,   mBR,   mBR,   mBR,   mBR,   mBR,   mBR,   mBR,   mBR,   mBR,
133133   mBR,   mBR,   mBR,   mBR,   mBR,   mBR,   mBR,   mBR,   mBR,   mBR,   mBR,   mBR,   mBR,   mBR,   mBR,   mBR,
r245142r245143
136136
137137/*  0      1      2      3      4      5      6      7      8      9      A      B      C      D      E      F  */
138138   /* 0x200 */
139   mTM,   mTM,   mTM,   mTM,   mREM,  mREM,  mREM,  mREM,  mXMA,  mXMA,  mXMA,  mXMA,  m,     m,     m,     m, 
139   mTM,   mTM,   mTM,   mTM,   mREM,  mREM,  mREM,  mREM,  mXMA,  mXMA,  mXMA,  mXMA,  m,     m,     m,     m,
140140   mMNEI, mMNEI, mMNEI, mMNEI, mMNEI, mMNEI, mMNEI, mMNEI, mMNEI, mMNEI, mMNEI, mMNEI, mMNEI, mMNEI, mMNEI, mMNEI,
141   mXMB,  mXMB,  mXMB,  mXMB,  mROTR, mROTL, m,     m,     m,     m,     m,     m,     m,     m,     m,     m, 
142   mSMC,  m,     m,     m,     mALEM, m,     m,     m,     m,     m,     m,     m,     mLAT,  m,     m,     m, 
141   mXMB,  mXMB,  mXMB,  mXMB,  mROTR, mROTL, m,     m,     m,     m,     m,     m,     m,     m,     m,     m,
142   mSMC,  m,     m,     m,     mALEM, m,     m,     m,     m,     m,     m,     m,     mLAT,  m,     m,     m,
143143   /* 0x240 */
144144   mLASPX,m,     m,     m,     mNEGA, m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     mTC,
145   mLASPY,m,     m,     m,     mDY,   m,     m,     m,     mSYY,  m,     m,     m,     m,     m,     m,     m, 
146   mLAB,  m,     m,     m,     m,     m,     m,     mDB,   m,     m,     m,     m,     m,     m,     m,     m, 
145   mLASPY,m,     m,     m,     mDY,   m,     m,     m,     mSYY,  m,     m,     m,     m,     m,     m,     m,
146   mLAB,  m,     m,     m,     m,     m,     m,     mDB,   m,     m,     m,     m,     m,     m,     m,     m,
147147   mALEI, mALEI, mALEI, mALEI, mALEI, mALEI, mALEI, mALEI, mALEI, mALEI, mALEI, mALEI, mALEI, mALEI, mALEI, mALEI,
148148   /* 0x280 */
149149   mYNEI, mYNEI, mYNEI, mYNEI, mYNEI, mYNEI, mYNEI, mYNEI, mYNEI, mYNEI, mYNEI, mYNEI, mYNEI, mYNEI, mYNEI, mYNEI,
150   mRED,  m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m, 
151   mREIF1,mRECF, mREIF0,m,     mREIE, mRETF, m,     m,     m,     m,     m,     m,     m,     m,     m,     m, 
152   m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m, 
150   mRED,  m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,
151   mREIF1,mRECF, mREIF0,m,     mREIE, mRETF, m,     m,     m,     m,     m,     m,     m,     m,     m,     m,
152   m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,
153153   /* 0x2c0 */
154   mLRA,  mLRA,  mLRA,  mLRA,  mLRA,  mLRA,  mLRA,  mLRA,  m,     m,     m,     m,     m,     m,     m,     m, 
154   mLRA,  mLRA,  mLRA,  mLRA,  mLRA,  mLRA,  mLRA,  mLRA,  m,     m,     m,     m,     m,     m,     m,     m,
155155   mREDD, mREDD, mREDD, mREDD, mREDD, mREDD, mREDD, mREDD, mREDD, mREDD, mREDD, mREDD, mREDD, mREDD, mREDD, mREDD,
156   mLRB,  mLRB,  mLRB,  mLRB,  mLRB,  mLRB,  mLRB,  mLRB,  m,     m,     m,     m,     m,     m,     m,     m, 
157   m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m, 
156   mLRB,  mLRB,  mLRB,  mLRB,  mLRB,  mLRB,  mLRB,  mLRB,  m,     m,     m,     m,     m,     m,     m,     m,
157   m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,
158158
159159/*  0      1      2      3      4      5      6      7      8      9      A      B      C      D      E      F  */
160160   /* 0x300 */
161   m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m, 
162   m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m, 
163   mCOMB, m,     m,     m,     mBNEM, m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m, 
164   m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m, 
161   m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,
162   m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,
163   mCOMB, m,     m,     m,     mBNEM, m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,
164   m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,
165165   /* 0x340 */
166166   mLPU,  mLPU,  mLPU,  mLPU,  mLPU,  mLPU,  mLPU,  mLPU,  mLPU,  mLPU,  mLPU,  mLPU,  mLPU,  mLPU,  mLPU,  mLPU,
167167   mLPU,  mLPU,  mLPU,  mLPU,  mLPU,  mLPU,  mLPU,  mLPU,  mLPU,  mLPU,  mLPU,  mLPU,  mLPU,  mLPU,  mLPU,  mLPU,
168168   mTBR,  mTBR,  mTBR,  mTBR,  mTBR,  mTBR,  mTBR,  mTBR,  mP,    mP,    mP,    mP,    mP,    mP,    mP,    mP,
169   m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m, 
169   m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,
170170   /* 0x380 */
171   m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m, 
172   m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m, 
173   m,     m,     m,     m,     mRTNI, m,     m,     mRTN,  m,     m,     m,     m,     m,     m,     m,     m, 
174   m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m, 
171   m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,
172   m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,
173   m,     m,     m,     m,     mRTNI, m,     m,     mRTN,  m,     m,     m,     m,     m,     m,     m,     m,
174   m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,     m,
175175   /* 0x3c0 */
176176   mCAL,  mCAL,  mCAL,  mCAL,  mCAL,  mCAL,  mCAL,  mCAL,  mCAL,  mCAL,  mCAL,  mCAL,  mCAL,  mCAL,  mCAL,  mCAL,
177177   mCAL,  mCAL,  mCAL,  mCAL,  mCAL,  mCAL,  mCAL,  mCAL,  mCAL,  mCAL,  mCAL,  mCAL,  mCAL,  mCAL,  mCAL,  mCAL,
r245142r245143
188188   char *dst = buffer;
189189   UINT8 instr = hmcs40_mnemonic[op];
190190   INT8 bits = s_bits[instr];
191   
191
192192   // special case for (XY) opcode
193193   if (bits == 99)
194194   {
r245142r245143
202202   else
203203   {
204204      dst += sprintf(dst, "%-6s ", s_mnemonics[instr]);
205   
205
206206      // opcode parameter
207207      if (bits != 0)
208208      {
209209         UINT8 param = op;
210         
210
211211         // reverse bits
212212         if (bits < 0)
213213         {
r245142r245143
215215            param >>= (8 + bits);
216216            bits = -bits;
217217         }
218         
218
219219         param &= ((1 << bits) - 1);
220         
220
221221         if (bits > 5)
222222            dst += sprintf(dst, "$%02X", param);
223223         else
224224            dst += sprintf(dst, "%d", param);
225225      }
226226   }
227   
227
228228   int pos = s_next_pc[pc & 0x3f] & DASMFLAG_LENGTHMASK;
229229   return pos | s_flags[instr] | DASMFLAG_SUPPORTED;
230230}
trunk/src/emu/cpu/hmcs40/hmcs40op.inc
r245142r245143
7373void hmcs40_cpu_device::op_xamr()
7474{
7575   // XAMR m: Exchange A and MR(m)
76   
76
7777   // determine MR(Memory Register) location
7878   UINT8 address = m_op & 0xf;
79   
79
8080   // HMCS42: MR0 on file 0, MR4-MR15 on file 4 (there is no file 1-3)
8181   // HMCS43: MR0-MR3 on file 0-3, MR4-MR15 on file 4
8282   if (m_family == FAMILY_HMCS42 || m_family == FAMILY_HMCS43)
8383      address |= (address < 4) ? (address << 4) : 0x40;
84   
84
8585   // HMCS44/45/46/47: all on last file
8686   else
8787      address |= 0xf0;
88   
88
8989   address &= m_datamask;
9090   UINT8 old_a = m_a;
9191   m_a = m_data->read_byte(address) & 0xf;
r245142r245143
657657   m_icount--;
658658   UINT16 address = m_a | m_b << 4 | m_c << 8 | (m_op & 7) << 9 | (m_pc & ~0x3f);
659659   UINT16 o = m_program->read_word((address & m_prgmask) << 1);
660   
660
661661   // destination is determined by the 2 highest bits
662662   if (o & 0x100)
663663   {
trunk/src/emu/cpu/i386/i386ops.h
r245142r245143
333333   { 0x3B,     OP_2BYTE|OP_CYRIX,          &i386_device::i386_cyrix_special,          &i386_device::i386_cyrix_special,      false},
334334   { 0x3C,     OP_2BYTE|OP_CYRIX,          &i386_device::i386_cyrix_special,          &i386_device::i386_cyrix_special,      false},
335335   { 0x3D,     OP_2BYTE|OP_CYRIX,          &i386_device::i386_cyrix_special,          &i386_device::i386_cyrix_special,      false},
336   { 0x40,      OP_2BYTE|OP_PENTIUM,      &i386_device::pentium_cmovo_r16_rm16,      &i386_device::pentium_cmovo_r32_rm32,  false},
336   { 0x40,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovo_r16_rm16,      &i386_device::pentium_cmovo_r32_rm32,  false},
337337   { 0x41,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovno_r16_rm16,     &i386_device::pentium_cmovno_r32_rm32, false},
338338   { 0x42,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovb_r16_rm16,      &i386_device::pentium_cmovb_r32_rm32,  false},
339339   { 0x43,     OP_2BYTE|OP_PENTIUM,        &i386_device::pentium_cmovae_r16_rm16,     &i386_device::pentium_cmovae_r32_rm32, false},
trunk/src/emu/cpu/i386/pentops.inc
r245142r245143
10651065void i386_device::i386_cyrix_special()     // Opcode 0x0f 3a-3d
10661066{
10671067/*
10680f 3a      BB0_RESET (set BB0 pointer = base)
10690f 3b      BB1_RESET (set BB1 pointer = base)
10700f 3c      CPU_WRITE (write special CPU memory-mapped register, [ebx] = eax)
10710f 3d      CPU_READ (read special CPU memory-mapped register, eax, = [ebx])
10680f 3a       BB0_RESET (set BB0 pointer = base)
10690f 3b       BB1_RESET (set BB1 pointer = base)
10700f 3c       CPU_WRITE (write special CPU memory-mapped register, [ebx] = eax)
10710f 3d       CPU_READ (read special CPU memory-mapped register, eax, = [ebx])
10721072*/
10731073
10741074   CYCLES(1);
trunk/src/emu/cpu/nec/v53.c
r245142r245143
237237
238238      if (m_SCTL & 0x02) // uPD71037 mode
239239      {
240         if (IOAG) // 8-bit
240         if (IOAG) // 8-bit
241241         {
242
243242         }
244243         else
245244         {
r245142r245143
256255      UINT16 base = (m_OPHA << 8) | m_IULA;
257256      base &= 0xfffe;
258257
259      if (IOAG) // 8-bit
258      if (IOAG) // 8-bit
260259      {
261
262260      }
263261      else
264262      {
r245142r245143
272270      //printf("installing TCU to %04x\n", base);
273271      base &= 0xfffe;
274272
275      if (IOAG) // 8-bit
273      if (IOAG) // 8-bit
276274      {
277
278275      }
279276      else
280277      {
r245142r245143
290287      UINT16 base = (m_OPHA << 8) | m_SULA;
291288      base &= 0xfffe;
292289
293      if (IOAG) // 8-bit
290      if (IOAG) // 8-bit
294291      {
295
296292      }
297293      else
298294      {
r245142r245143
333329WRITE8_MEMBER(v53_base_device::tmu_tmd_w)  { m_v53tcu->write(space, 3, data); }
334330
335331
336READ8_MEMBER(v53_base_device::tmu_tst0_r) {   return m_v53tcu->read(space, 0); }
337READ8_MEMBER(v53_base_device::tmu_tst1_r) {   return m_v53tcu->read(space, 1); }
338READ8_MEMBER(v53_base_device::tmu_tst2_r) {   return m_v53tcu->read(space, 2); }
332READ8_MEMBER(v53_base_device::tmu_tst0_r) { return m_v53tcu->read(space, 0); }
333READ8_MEMBER(v53_base_device::tmu_tst1_r) { return m_v53tcu->read(space, 1); }
334READ8_MEMBER(v53_base_device::tmu_tst2_r) { return m_v53tcu->read(space, 2); }
339335
340336
341337
r245142r245143
343339
344340/*** DMA ***/
345341
346// could be wrong / nonexistent
342// could be wrong / nonexistent
347343WRITE_LINE_MEMBER(v53_base_device::dreq0_w)
348344{
349345   if (!(m_SCTL & 0x02))
r245142r245143
409405static ADDRESS_MAP_START( v53_internal_port_map, AS_IO, 16, v53_base_device )
410406   AM_RANGE(0xffe0, 0xffe1) AM_WRITE8( BSEL_w,  0x00ff) // 0xffe0 // uPD71037 DMA mode bank selection register
411407   AM_RANGE(0xffe0, 0xffe1) AM_WRITE8( BADR_w,  0xff00) // 0xffe1 // uPD71037 DMA mode bank register peripheral mapping (also uses OPHA)
412//   AM_RANGE(0xffe2, 0xffe3) // (reserved     ,  0x00ff) // 0xffe2
413//   AM_RANGE(0xffe2, 0xffe3) // (reserved     ,  0xff00) // 0xffe3
414//   AM_RANGE(0xffe4, 0xffe5) // (reserved     ,  0x00ff) // 0xffe4
415//   AM_RANGE(0xffe4, 0xffe5) // (reserved     ,  0xff00) // 0xffe5
416//   AM_RANGE(0xffe6, 0xffe7) // (reserved     ,  0x00ff) // 0xffe6
417//   AM_RANGE(0xffe6, 0xffe7) // (reserved     ,  0xff00) // 0xffe7
418//   AM_RANGE(0xffe8, 0xffe9) // (reserved     ,  0x00ff) // 0xffe8
408//  AM_RANGE(0xffe2, 0xffe3) // (reserved     ,  0x00ff) // 0xffe2
409//  AM_RANGE(0xffe2, 0xffe3) // (reserved     ,  0xff00) // 0xffe3
410//  AM_RANGE(0xffe4, 0xffe5) // (reserved     ,  0x00ff) // 0xffe4
411//  AM_RANGE(0xffe4, 0xffe5) // (reserved     ,  0xff00) // 0xffe5
412//  AM_RANGE(0xffe6, 0xffe7) // (reserved     ,  0x00ff) // 0xffe6
413//  AM_RANGE(0xffe6, 0xffe7) // (reserved     ,  0xff00) // 0xffe7
414//  AM_RANGE(0xffe8, 0xffe9) // (reserved     ,  0x00ff) // 0xffe8
419415   AM_RANGE(0xffe8, 0xffe9) AM_WRITE8( BRC_w ,  0xff00) // 0xffe9 // baud rate counter (used for serial peripheral)
420416   AM_RANGE(0xffea, 0xffeb) AM_WRITE8( WMB0_w,  0x00ff) // 0xffea // waitstate control
421417   AM_RANGE(0xffea, 0xffeb) AM_WRITE8( WCY1_w,  0xff00) // 0xffeb // waitstate control
422418   AM_RANGE(0xffec, 0xffed) AM_WRITE8( WCY0_w,  0x00ff) // 0xffec // waitstate control
423419   AM_RANGE(0xffec, 0xffed) AM_WRITE8( WAC_w,   0xff00) // 0xffed // waitstate control
424//   AM_RANGE(0xffee, 0xffef) // (reserved     ,  0x00ff) // 0xffee
425//   AM_RANGE(0xffee, 0xffef) // (reserved     ,  0xff00) // 0xffef
420//  AM_RANGE(0xffee, 0xffef) // (reserved     ,  0x00ff) // 0xffee
421//  AM_RANGE(0xffee, 0xffef) // (reserved     ,  0xff00) // 0xffef
426422   AM_RANGE(0xfff0, 0xfff1) AM_WRITE8( TCKS_w,  0x00ff) // 0xfff0 // timer clocks
427423   AM_RANGE(0xfff0, 0xfff1) AM_WRITE8( SBCR_w,  0xff00) // 0xfff1 // internal clock divider, halt behavior etc.
428424   AM_RANGE(0xfff2, 0xfff3) AM_WRITE8( REFC_w,  0x00ff) // 0xfff2 // ram refresh control
r245142r245143
430426   AM_RANGE(0xfff4, 0xfff5) AM_WRITE8( WCY2_w,  0x00ff) // 0xfff4 // waitstate control
431427   AM_RANGE(0xfff4, 0xfff5) AM_WRITE8( WCY3_w,  0xff00) // 0xfff5 // waitstate control
432428   AM_RANGE(0xfff6, 0xfff7) AM_WRITE8( WCY4_w,  0x00ff) // 0xfff6 // waitstate control
433//   AM_RANGE(0xfff6, 0xfff7) // (reserved     ,  0xff00) // 0xfff7
429//  AM_RANGE(0xfff6, 0xfff7) // (reserved     ,  0xff00) // 0xfff7
434430   AM_RANGE(0xfff8, 0xfff9) AM_WRITE8( SULA_w,  0x00ff) // 0xfff8 // peripheral mapping
435431   AM_RANGE(0xfff8, 0xfff9) AM_WRITE8( TULA_w,  0xff00) // 0xfff9 // peripheral mapping
436432   AM_RANGE(0xfffa, 0xfffb) AM_WRITE8( IULA_w,  0x00ff) // 0xfffa // peripheral mapping
r245142r245143
438434   AM_RANGE(0xfffc, 0xfffd) AM_WRITE8( OPHA_w,  0x00ff) // 0xfffc // peripheral mapping (upper bits, common)
439435   AM_RANGE(0xfffc, 0xfffd) AM_WRITE8( OPSEL_w, 0xff00) // 0xfffd // peripheral enabling
440436   AM_RANGE(0xfffe, 0xffff) AM_WRITE8( SCTL_w,  0x00ff) // 0xfffe // peripheral configuration (& byte / word mapping)
441//   AM_RANGE(0xfffe, 0xffff) // (reserved     ,  0xff00) // 0xffff
437//  AM_RANGE(0xfffe, 0xffff) // (reserved     ,  0xff00) // 0xffff
442438ADDRESS_MAP_END
443439
444440
r245142r245143
486482   MCFG_PIT8253_OUT0_HANDLER(WRITELINE( v53_base_device, tcu_out0_trampoline_cb ))
487483   MCFG_PIT8253_OUT1_HANDLER(WRITELINE( v53_base_device, tcu_out1_trampoline_cb ))
488484   MCFG_PIT8253_OUT2_HANDLER(WRITELINE( v53_base_device, tcu_out2_trampoline_cb ))
489   
490485
486
491487   MCFG_DEVICE_ADD("upd71071dma", V53_DMAU, 4000000)
492488   MCFG_AM9517A_OUT_HREQ_CB(WRITELINE(v53_base_device, hreq_trampoline_cb))
493489   MCFG_AM9517A_OUT_EOP_CB(WRITELINE(v53_base_device, eop_trampoline_cb))
r245142r245143
506502   MCFG_AM9517A_OUT_DACK_2_CB(WRITELINE(v53_base_device, dma_dack2_trampoline_w))
507503   MCFG_AM9517A_OUT_DACK_3_CB(WRITELINE(v53_base_device, dma_dack3_trampoline_w))
508504
509   
505
510506   MCFG_PIC8259_ADD( "upd71059pic", WRITELINE(v53_base_device, internal_irq_w), VCC, READ8(v53_base_device,get_pic_ack))
511507
512508
513509
514   MCFG_DEVICE_ADD("v53scu", V53_SCU, 0)
510   MCFG_DEVICE_ADD("v53scu", V53_SCU, 0)
515511   MCFG_I8251_TXD_HANDLER(WRITELINE(v53_base_device, scu_txd_trampoline_cb))
516512   MCFG_I8251_DTR_HANDLER(WRITELINE(v53_base_device, scu_dtr_trampoline_cb))
517513   MCFG_I8251_RTS_HANDLER(WRITELINE(v53_base_device, scu_rts_trampoline_cb))
r245142r245143
578574   : v53_base_device(mconfig, V53A, "V53A", tag, owner, clock, "v53a", BYTE_XOR_LE(0), 6, 1, V33_TYPE)
579575{
580576}
581
trunk/src/emu/cpu/nec/v53.h
r245142r245143
131131
132132   UINT8 m_SCTL;
133133   UINT8 m_OPSEL;
134   
134
135135   UINT8 m_SULA;
136136   UINT8 m_TULA;
137137   UINT8 m_IULA;
r245142r245143
151151   template<class _Object> static devcb_base &set_syndet_handler(device_t &device, _Object object) { return downcast<v53_base_device &>(device).m_syndet_handler.set_callback(object); }
152152   DECLARE_WRITE_LINE_MEMBER(scu_txd_trampoline_cb) { m_txd_handler(state); }
153153   DECLARE_WRITE_LINE_MEMBER(scu_dtr_trampoline_cb) { m_dtr_handler(state); }
154   DECLARE_WRITE_LINE_MEMBER(scu_rts_trampoline_cb) {   m_rts_handler(state); }
154   DECLARE_WRITE_LINE_MEMBER(scu_rts_trampoline_cb) {  m_rts_handler(state); }
155155   DECLARE_WRITE_LINE_MEMBER(scu_rxrdy_trampoline_cb) { m_rxrdy_handler(state); } /* should we mask this here based on m_simk? it can mask the interrupt */
156156   DECLARE_WRITE_LINE_MEMBER(scu_txrdy_trampoline_cb) { m_txrdy_handler(state); } /* should we mask this here based on m_simk? it can mask the interrupt */
157   DECLARE_WRITE_LINE_MEMBER(scu_txempty_trampoline_cb) {   m_txempty_handler(state); }
157   DECLARE_WRITE_LINE_MEMBER(scu_txempty_trampoline_cb) {  m_txempty_handler(state); }
158158   DECLARE_WRITE_LINE_MEMBER(scu_syndet_trampoline_cb) { m_syndet_handler(state); }
159159
160160   // TCU
r245142r245143
165165   DECLARE_READ8_MEMBER(tmu_tst2_r);
166166   DECLARE_WRITE8_MEMBER(tmu_tct2_w);
167167   DECLARE_WRITE8_MEMBER(tmu_tmd_w);
168//   static void set_clk0(device_t &device, double clk0) { downcast<v53_base_device &>(device).m_clk0 = clk0; }
169//   static void set_clk1(device_t &device, double clk1) { downcast<v53_base_device &>(device).m_clk1 = clk1; }
170//   static void set_clk2(device_t &device, double clk2) { downcast<v53_base_device &>(device).m_clk2 = clk2; }
168//  static void set_clk0(device_t &device, double clk0) { downcast<v53_base_device &>(device).m_clk0 = clk0; }
169//  static void set_clk1(device_t &device, double clk1) { downcast<v53_base_device &>(device).m_clk1 = clk1; }
170//  static void set_clk2(device_t &device, double clk2) { downcast<v53_base_device &>(device).m_clk2 = clk2; }
171171   template<class _Object> static devcb_base &set_out0_handler(device_t &device, _Object object) { return downcast<v53_base_device &>(device).m_out0_handler.set_callback(object); }
172172   template<class _Object> static devcb_base &set_out1_handler(device_t &device, _Object object) { return downcast<v53_base_device &>(device).m_out1_handler.set_callback(object); }
173173   template<class _Object> static devcb_base &set_out2_handler(device_t &device, _Object object) { return downcast<v53_base_device &>(device).m_out2_handler.set_callback(object); }
r245142r245143
195195   DECLARE_WRITE_LINE_MEMBER(hreq_trampoline_cb) { m_out_hreq_cb(state); }
196196   DECLARE_WRITE_LINE_MEMBER(eop_trampoline_cb) { m_out_eop_cb(state); }
197197   DECLARE_READ8_MEMBER(dma_memr_trampoline_r) { return m_in_memr_cb(space, offset); }
198   DECLARE_WRITE8_MEMBER(dma_memw_trampoline_w) {   m_out_memw_cb(space, offset, data); }
198   DECLARE_WRITE8_MEMBER(dma_memw_trampoline_w) {  m_out_memw_cb(space, offset, data); }
199199   DECLARE_READ8_MEMBER(dma_io_0_trampoline_r) { return m_in_ior_0_cb(space, offset); }
200200   DECLARE_READ8_MEMBER(dma_io_1_trampoline_r) { return m_in_ior_1_cb(space, offset); }
201201   DECLARE_READ8_MEMBER(dma_io_2_trampoline_r) { return m_in_ior_2_cb(space, offset); }
r245142r245143
204204   DECLARE_WRITE8_MEMBER(dma_io_1_trampoline_w) { m_out_iow_1_cb(space, offset, data); }
205205   DECLARE_WRITE8_MEMBER(dma_io_2_trampoline_w) { m_out_iow_2_cb(space, offset, data); }
206206   DECLARE_WRITE8_MEMBER(dma_io_3_trampoline_w) { m_out_iow_3_cb(space, offset, data); }
207   DECLARE_WRITE_LINE_MEMBER(dma_dack0_trampoline_w) {   m_out_dack_0_cb(state); }
208   DECLARE_WRITE_LINE_MEMBER(dma_dack1_trampoline_w) {   m_out_dack_1_cb(state); }
209   DECLARE_WRITE_LINE_MEMBER(dma_dack2_trampoline_w) {   m_out_dack_2_cb(state); }
210   DECLARE_WRITE_LINE_MEMBER(dma_dack3_trampoline_w) {   m_out_dack_3_cb(state); }
207   DECLARE_WRITE_LINE_MEMBER(dma_dack0_trampoline_w) { m_out_dack_0_cb(state); }
208   DECLARE_WRITE_LINE_MEMBER(dma_dack1_trampoline_w) { m_out_dack_1_cb(state); }
209   DECLARE_WRITE_LINE_MEMBER(dma_dack2_trampoline_w) { m_out_dack_2_cb(state); }
210   DECLARE_WRITE_LINE_MEMBER(dma_dack3_trampoline_w) { m_out_dack_3_cb(state); }
211211
212212
213213   DECLARE_WRITE_LINE_MEMBER(dreq0_w);
r245142r245143
221221   void install_peripheral_io();
222222
223223   const address_space_config m_io_space_config;
224   
224
225225   const address_space_config *memory_space_config(address_spacenum spacenum) const
226226   {
227227      switch (spacenum)
r245142r245143
260260   devcb_write_line m_syndet_handler;
261261
262262   // TCU
263//   double m_clk0;
264//   double m_clk1;
265//   double m_clk2;
263//  double m_clk0;
264//  double m_clk1;
265//  double m_clk2;
266266   devcb_write_line m_out0_handler;
267267   devcb_write_line m_out1_handler;
268268   devcb_write_line m_out2_handler;
r245142r245143
285285   devcb_write_line   m_out_dack_1_cb;
286286   devcb_write_line   m_out_dack_2_cb;
287287   devcb_write_line   m_out_dack_3_cb;
288   
289288
290289
290
291291};
292292
293293
trunk/src/emu/cpu/pic16c5x/pic16c5x.c
r245142r245143
799799   m_program = &space(AS_PROGRAM);
800800   m_direct = &m_program->direct();
801801   m_data = &space(AS_DATA);
802   
802
803803   m_read_a.resolve_safe(0);
804804   m_read_b.resolve_safe(0);
805805   m_read_c.resolve_safe(0);
trunk/src/emu/cpu/pic16c5x/pic16c5x.h
r245142r245143
8181    *  the value if known (available in HEX dumps of the ROM).
8282    */
8383   void pic16c5x_set_config(UINT16 data);
84   
84
8585   // or with a macro
8686   static void set_config_static(device_t &device, UINT16 data) { downcast<pic16c5x_device &>(device).m_temp_config = data; }
8787
r245142r245143
155155   address_space *m_program;
156156   direct_read_data *m_direct;
157157   address_space *m_data;
158   
158
159159   // i/o handlers
160160   devcb_read8 m_read_a;
161161   devcb_read8 m_read_b;
trunk/src/emu/cpu/z80/kl5c80a12.c
r245142r245143
11/***************************************************************************
22
3   Kawasaki LSI
4   KL5C80A12 CPU (KL5C80A12CFP on hng64.c)
3    Kawasaki LSI
4    KL5C80A12 CPU (KL5C80A12CFP on hng64.c)
55
6   Binary compatible with Z80, significantly faster opcode timings, operating at up to 10Mhz
7   Timers / Counters, Parrallel / Serial ports/ MMU, Interrupt Controller
6    Binary compatible with Z80, significantly faster opcode timings, operating at up to 10Mhz
7    Timers / Counters, Parrallel / Serial ports/ MMU, Interrupt Controller
88
9   (is this different enough to need it's own core?)
10   (todo: everything, some code currently lives in machine/hng64_net.c but not much)
9    (is this different enough to need it's own core?)
10    (todo: everything, some code currently lives in machine/hng64_net.c but not much)
1111
1212***************************************************************************/
1313
trunk/src/emu/cpu/z80/kl5c80a12.h
r245142r245143
11/***************************************************************************
22
3   Kawasaki LSI
4   KL5C80A12 CPU (KL5C80A12CFP on hng64.c)
3    Kawasaki LSI
4    KL5C80A12 CPU (KL5C80A12CFP on hng64.c)
55
6   Binary compatible with Z80, significantly faster opcode timings, operating at up to 10Mhz
7   Timers / Counters, Parrallel / Serial ports/ MMU, Interrupt Controller
6    Binary compatible with Z80, significantly faster opcode timings, operating at up to 10Mhz
7    Timers / Counters, Parrallel / Serial ports/ MMU, Interrupt Controller
88
9   (is this different enough to need it's own core?)
10   (todo: everything, some code currently lives in machine/hng64_net.c but not much)
9    (is this different enough to need it's own core?)
10    (todo: everything, some code currently lives in machine/hng64_net.c but not much)
1111
1212***************************************************************************/
1313
trunk/src/emu/machine/am9517a.c
r245142r245143
33/***************************************************************************
44
55    AMD AM9517A
6   Intel 8237A
7   NEC uPD71037
6    Intel 8237A
7    NEC uPD71037
88
9   NEC uPD71071 (extended version of above)
9    NEC uPD71071 (extended version of above)
1010
11   a variant is used in the V53 CPU which offers subsets of both the
12   uPD71071 and uPD71037 functionality depending on a mode bit.
13   
14   Multimode DMA Controller emulation
11    a variant is used in the V53 CPU which offers subsets of both the
12    uPD71071 and uPD71037 functionality depending on a mode bit.
1513
14    Multimode DMA Controller emulation
15
1616    Copyright the MESS Team.
1717    Visit http://mamedev.org for licensing and usage restrictions.
1818
r245142r245143
2828
2929/*
3030
31   When the V53 operates in uPD71071 compatible mode there are the following
32   differences from a real uPD71071
31    When the V53 operates in uPD71071 compatible mode there are the following
32    differences from a real uPD71071
3333
34                              V53     Real uPD71071
35   Software Reqs              No      Yes
36   Memory-to-Memory DMA       No      Yes
37   DMARQ active level         High    programmable
38   DMAAK active level         Low     programmable
39   Bus Cycle                  4       4 or 3
34                               V53     Real uPD71071
35    Software Reqs              No      Yes
36    Memory-to-Memory DMA       No      Yes
37    DMARQ active level         High    programmable
38    DMAAK active level         Low     programmable
39    Bus Cycle                  4       4 or 3
4040
41   we don't currently handle the differences
41    we don't currently handle the differences
4242
4343*/
4444
r245142r245143
11581158         ret = m_command & 0xff;
11591159         break;
11601160      case 0x09:  // Device control (high) // UPD71071 only?
1161         ret = m_command_high & 0xff;
1161         ret = m_command_high & 0xff;
11621162         break;
11631163      case 0x0b:  // Status
11641164         ret = m_status;
r245142r245143
11871187WRITE8_MEMBER(upd71071_v53_device::write)
11881188{
11891189   int channel = m_selected_channel;
1190   
1190
11911191   switch (offset)
11921192   {
11931193      case 0x00:  // Initialise
11941194         // TODO: reset (bit 0)
11951195         //m_buswidth = data & 0x02;
11961196         //if (data & 0x01)
1197         //   soft_reset();
1197         //  soft_reset();
11981198         logerror("DMA: Initialise [%02x]\n", data);
11991199         break;
12001200      case 0x01:  // Channel
r245142r245143
12791279   }
12801280   trigger(1);
12811281
1282}
No newline at end of file
1282}
trunk/src/emu/machine/am9517a.h
r245142r245143
172172   virtual void device_start();
173173   virtual void device_reset();
174174
175   int   m_selected_channel;
175   int m_selected_channel;
176176   int m_base;
177177   UINT8 m_command_high;
178178
trunk/src/emu/machine/i8251.c
r245142r245143
33    i8251.c
44
55    Intel 8251 Universal Synchronous/Asynchronous Receiver Transmitter code
6   NEC uPD71051 is a clone
6    NEC uPD71051 is a clone
77
8   The V53/V53A use a customized version with only the Asynchronous mode
9   and a split command / mode register
8    The V53/V53A use a customized version with only the Asynchronous mode
9    and a split command / mode register
1010
1111
1212
r245142r245143
428428
429429
430430   /*  bit 7:
431          0 = normal operation
432          1 = hunt mode
433      bit 6:
434          0 = normal operation
435          1 = internal reset
436      bit 5:
437          0 = /RTS set to 1
438          1 = /RTS set to 0
439      bit 4:
440          0 = normal operation
441          1 = reset error flag
442      bit 3:
443          0 = normal operation
444          1 = send break character
445      bit 2:
446          0 = receive disable
447          1 = receive enable
448      bit 1:
449          0 = /DTR set to 1
450          1 = /DTR set to 0
451      bit 0:
452          0 = transmit disable
453          1 = transmit enable
431           0 = normal operation
432           1 = hunt mode
433       bit 6:
434           0 = normal operation
435           1 = internal reset
436       bit 5:
437           0 = /RTS set to 1
438           1 = /RTS set to 0
439       bit 4:
440           0 = normal operation
441           1 = reset error flag
442       bit 3:
443           0 = normal operation
444           1 = send break character
445       bit 2:
446           0 = receive disable
447           1 = receive enable
448       bit 1:
449           0 = /DTR set to 1
450           1 = /DTR set to 0
451       bit 0:
452           0 = transmit disable
453           1 = transmit enable
454454   */
455455
456456   m_rts_handler(!BIT(data, 5));
r245142r245143
484484   {
485485      /*  Asynchronous
486486
487         bit 7,6: stop bit length
488         0 = inhibit
489         1 = 1 bit
490         2 = 1.5 bits
491         3 = 2 bits
492         bit 5: parity type
493         0 = parity odd
494         1 = parity even
495         bit 4: parity test enable
496         0 = disable
497         1 = enable
498         bit 3,2: character length
499         0 = 5 bits
500         1 = 6 bits
501         2 = 7 bits
502         3 = 8 bits
503         bit 1,0: baud rate factor
504         0 = defines command byte for synchronous or asynchronous
505         1 = x1
506         2 = x16
507         3 = x64
508         */
487          bit 7,6: stop bit length
488          0 = inhibit
489          1 = 1 bit
490          2 = 1.5 bits
491          3 = 2 bits
492          bit 5: parity type
493          0 = parity odd
494          1 = parity even
495          bit 4: parity test enable
496          0 = disable
497          1 = enable
498          bit 3,2: character length
499          0 = 5 bits
500          1 = 6 bits
501          2 = 7 bits
502          3 = 8 bits
503          bit 1,0: baud rate factor
504          0 = defines command byte for synchronous or asynchronous
505          1 = x1
506          2 = x16
507          3 = x64
508          */
509509
510510      LOG(("I8251: Asynchronous operation\n"));
511511
r245142r245143
597597   else
598598   {
599599      /*  bit 7: Number of sync characters
600            0 = 1 character
601            1 = 2 character
602            bit 6: Synchronous mode
603            0 = Internal synchronisation
604            1 = External synchronisation
605            bit 5: parity type
606            0 = parity odd
607            1 = parity even
608            bit 4: parity test enable
609            0 = disable
610            1 = enable
611            bit 3,2: character length
612            0 = 5 bits
613            1 = 6 bits
614            2 = 7 bits
615            3 = 8 bits
616            bit 1,0 = 0
617            */
600              0 = 1 character
601              1 = 2 character
602              bit 6: Synchronous mode
603              0 = Internal synchronisation
604              1 = External synchronisation
605              bit 5: parity type
606              0 = parity odd
607              1 = parity even
608              bit 4: parity test enable
609              0 = disable
610              1 = enable
611              bit 3,2: character length
612              0 = 5 bits
613              1 = 6 bits
614              2 = 7 bits
615              3 = 8 bits
616              bit 1,0 = 0
617              */
618618      LOG(("I8251: Synchronous operation\n"));
619619
620620      /* setup for sync byte(s) */
trunk/src/emu/machine/i8257.c
r245142r245143
7979   }
8080   else
8181   {
82            m_request &= ~(1 << channel);
82         m_request &= ~(1 << channel);
8383   }
8484   trigger(1);
8585}
trunk/src/emu/machine/machine.mak
r245142r245143
13691369
13701370#-------------------------------------------------
13711371#
1372#@src/emu/machine/64h156.h,MACHINES += RP5C15
1372#@src/emu/machine/64h156.h,MACHINES += R64H156
13731373#-------------------------------------------------
13741374
13751375ifneq ($(filter R64H156,$(MACHINES)),)
trunk/src/emu/machine/mcf5206e.c
r245142r245143
860860   init_regs(true);
861861
862862   m_timer1 = machine().scheduler().timer_alloc( timer_expired_delegate( FUNC( mcf5206e_peripheral_device::timer1_callback ), this) );
863   
863
864864   save_item(NAME(m_ICR));
865865   save_item(NAME(m_CSAR));
866866   save_item(NAME(m_CSMR));
trunk/src/emu/machine/tmp68301.c
r245142r245143
123123
124124   m_in_parallel_cb.resolve_safe(0);
125125   m_out_parallel_cb.resolve_safe();
126   
126
127127   save_item(NAME(m_regs));
128128   save_item(NAME(m_IE));
129129   save_item(NAME(m_irq_vector));
trunk/src/emu/machine/upd71071.c
r245142r245143
11
22/*
33
4   am9517a.c is a more complete implementation of this, the uPD71071 appears to be a clone of it
4    am9517a.c is a more complete implementation of this, the uPD71071 appears to be a clone of it
55
66    NEC uPD71071 DMA Controller
77    Used on the Fujitsu FM-Towns
r245142r245143
3131            Self-explanatory, I hope. :)
3232            NOTE: Datasheet clearly shows this as 24-bit, with register 7 unused.
3333            But the FM-Towns definitely uses reg 7 as bits 24-31.
34         The documentation on the V53A manual doesn't show these bits either, maybe it's
35         an external connection on the FMT? might be worth checking overflow behavior etc.
34            The documentation on the V53A manual doesn't show these bits either, maybe it's
35            an external connection on the FMT? might be worth checking overflow behavior etc.
3636
3737    0x08:
3838    0x09:   Device Control register (16-bit)
r245142r245143
7777    0x0f:   Mask register
7878            bit 0-3: DMARQ mask
7979            bits 1 and 0 only in MTM transfers
80         
81   Note, the uPD71071 compatible mode of the V53 CPU differs from a real uPD71071 in the following ways
8280
81    Note, the uPD71071 compatible mode of the V53 CPU differs from a real uPD71071 in the following ways
8382
8483
84
8585*/
8686
8787#include "emu.h"
trunk/src/emu/machine/vrc4373.c
r245142r245143
1313
1414// cpu i/f map
1515DEVICE_ADDRESS_MAP_START(cpu_map, 32, vrc4373_device)
16   AM_RANGE(0x00000000, 0x0000007b) AM_READWRITE(    vrc4373_device::cpu_if_r,          vrc4373_device::cpu_if_w)
16   AM_RANGE(0x00000000, 0x0000007b) AM_READWRITE(    cpu_if_r,          cpu_if_w)
1717ADDRESS_MAP_END
1818
1919// Target Window 1 map
2020DEVICE_ADDRESS_MAP_START(target1_map, 32, vrc4373_device)
21   AM_RANGE(0x00000000, 0xFFFFFFFF) AM_READWRITE(    vrc4373_device::target1_r,          vrc4373_device::target1_w)
21   AM_RANGE(0x00000000, 0xFFFFFFFF) AM_READWRITE(    target1_r,          target1_w)
2222ADDRESS_MAP_END
2323
2424// Target Window 2 map
2525DEVICE_ADDRESS_MAP_START(target2_map, 32, vrc4373_device)
26   AM_RANGE(0x00000000, 0xFFFFFFFF) AM_READWRITE(    vrc4373_device::target2_r,          vrc4373_device::target2_w)
26   AM_RANGE(0x00000000, 0xFFFFFFFF) AM_READWRITE(    target2_r,          target2_w)
2727ADDRESS_MAP_END
2828
2929vrc4373_device::vrc4373_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
r245142r245143
111111      if (LOG_NILE)
112112         logerror("%s: map_extra Master Window 2 start=%08X end=%08X size=%08X laddr=%08X\n", tag(), winStart, winEnd, winSize,  m_pci2_laddr);
113113   }
114   // PCI IO Window
114   // PCI IO Window
115115   if (m_cpu_regs[NREG_PCIMIOW]&0x1000) {
116116      winStart = m_cpu_regs[NREG_PCIMIOW]&0xff000000;
117117      winEnd = winStart | (~(0x80000000 | (((m_cpu_regs[NREG_PCIMIOW]>>13)&0x7f)<<24)));
r245142r245143
122122         logerror("%s: map_extra IO Window start=%08X end=%08X size=%08X laddr=%08X\n", tag(), winStart, winEnd, winSize,  m_pci_io_laddr);
123123   }
124124   // PCI Target Window 1
125   if (m_cpu_regs[NREG_PCITW1]&0x1000) {     
125   if (m_cpu_regs[NREG_PCITW1]&0x1000) {
126126      winStart = m_cpu_regs[NREG_PCITW1]&0xffe00000;
127127      winEnd = winStart | (~(0xf0000000 | (((m_cpu_regs[NREG_PCITW1]>>13)&0x7f)<<21)));
128128      winSize = winEnd - winStart + 1;
r245142r245143
242242      logerror("%06X:nile target2 write to offset %02X = %08X & %08X\n", space.device().safe_pc(), offset*4, data, mem_mask);
243243}
244244
245// CPU I/F
245// CPU I/F
246246READ32_MEMBER (vrc4373_device::cpu_if_r)
247247{
248248   UINT32 result = m_cpu_regs[offset];
r245142r245143
290290      case NREG_PCICAR:
291291         // Bits in reserved area are used for device selection of type 0 config transactions
292292         // Assuming 23:11 get mapped into device number for configuration
293         if ((data&0x3) == 0x0) {
293         if ((data&0x3) == 0x0) {
294294            // Type 0 transaction
295295            modData = 0;
296296            // Select the device based on one hot bit
r245142r245143
341341   }
342342
343343}
344
trunk/src/emu/machine/vrc4373.h
r245142r245143
1010   downcast<vrc4373_device *>(device)->set_cpu_tag(_cpu_tag);
1111
1212#define VRC4373_PAGESHIFT 12
13   
13
1414/* NILE 3 registers 0x000-0x0ff */
15#define NREG_BMCR            (0x000/4)
16#define NREG_SIMM1            (0x004/4)
17#define NREG_SIMM2            (0x008/4)
18#define NREG_SIMM3            (0x00C/4)
19#define NREG_SIMM4            (0x010/4)
15#define NREG_BMCR           (0x000/4)
16#define NREG_SIMM1            (0x004/4)
17#define NREG_SIMM2            (0x008/4)
18#define NREG_SIMM3            (0x00C/4)
19#define NREG_SIMM4            (0x010/4)
2020#define NREG_PCIMW1         (0x014/4)
2121#define NREG_PCIMW2         (0x018/4)
2222#define NREG_PCITW1         (0x01C/4)
r245142r245143
5757   void set_cpu_tag(const char *tag);
5858
5959   virtual DECLARE_ADDRESS_MAP(config_map, 32);
60   
60
6161   DECLARE_READ32_MEMBER(  pcictrl_r);
6262   DECLARE_WRITE32_MEMBER( pcictrl_w);
6363   //cpu bus registers
r245142r245143
7676   virtual DECLARE_ADDRESS_MAP(target1_map, 32);
7777   DECLARE_READ32_MEMBER (target1_r);
7878   DECLARE_WRITE32_MEMBER(target1_w);
79   
79
8080   virtual DECLARE_ADDRESS_MAP(target2_map, 32);
8181   DECLARE_READ32_MEMBER (target2_r);
8282   DECLARE_WRITE32_MEMBER(target2_w);
trunk/src/emu/mame.c
r245142r245143
286286
287287      // pop it in the UI
288288      machine_manager::instance()->machine()->ui().popup_time(temp.len() / 40 + 2, "%s", temp.cstr());
289     
289
290290      /*
291291      // also write to error.log
292292      logerror("popmessage: %s\n", temp.cstr());
293     
293
294294#ifdef MAME_DEBUG
295295      // and to command-line in a DEBUG build
296296      osd_printf_info("popmessage: %s\n", temp.cstr());
trunk/src/emu/render.c
r245142r245143
24942494      orient = orientation_add(m_ui_target->orientation(), m_ui_container->orientation());
24952495      // based on the orientation of the target, compute height/width or width/height
24962496      if (!(orient & ORIENTATION_SWAP_XY))
2497            aspect = (float)m_ui_target->height() / (float)m_ui_target->width();
2497            aspect = (float)m_ui_target->height() / (float)m_ui_target->width();
24982498      else
2499            aspect = (float)m_ui_target->width() / (float)m_ui_target->height();
2499            aspect = (float)m_ui_target->width() / (float)m_ui_target->height();
25002500
25012501      // if we have a valid pixel aspect, apply that and return
25022502      if (m_ui_target->pixel_aspect() != 0.0f)
2503            return (aspect / m_ui_target->pixel_aspect());
2503            return (aspect / m_ui_target->pixel_aspect());
25042504   } else {
25052505      // single screen container
25062506
trunk/src/emu/sound/es1373.h
r245142r245143
99   MCFG_PCI_DEVICE_ADD(_tag, ES1373, 0x12741371, 0x04, 0x040100, 0x12741371)
1010
1111/* Ensonic ES1373 registers 0x00-0x3f */
12#define ES_INT_CS_CTRL            (0x00/4)
13#define ES_INT_CS_STATUS          (0x04/4)
14#define ES_UART_DATA              (0x08/4)
15#define ES_UART_STATUS            (0x09/4)
16#define ES_UART_CTRL              (0x09/4)
17#define ES_UART_RSVD              (0x0A/4)
18#define ES_MEM_PAGE              (0x0C/4)
19#define ES_SRC_IF                (0x10/4)
20#define ES_CODEC                  (0x14/4)
21#define ES_LEGACY                 (0x18/4)
22#define ES_CHAN_CTRL             (0x1C/4)
23#define ES_SERIAL_CTRL           (0x20/4)
24#define ES_DAC1_CNT               (0x24/4)
25#define ES_DAC2_CNT               (0x28/4)
26#define ES_ADC_CNT               (0x2C/4)
27#define ES_ADC_CNT               (0x2C/4)
28#define ES_HOST_IF0               (0x30/4)
29#define ES_HOST_IF1               (0x34/4)
30#define ES_HOST_IF2               (0x38/4)
31#define ES_HOST_IF3               (0x3C/4)
12#define ES_INT_CS_CTRL          (0x00/4)
13#define ES_INT_CS_STATUS        (0x04/4)
14#define ES_UART_DATA              (0x08/4)
15#define ES_UART_STATUS            (0x09/4)
16#define ES_UART_CTRL              (0x09/4)
17#define ES_UART_RSVD              (0x0A/4)
18#define ES_MEM_PAGE               (0x0C/4)
19#define ES_SRC_IF               (0x10/4)
20#define ES_CODEC                  (0x14/4)
21#define ES_LEGACY                 (0x18/4)
22#define ES_CHAN_CTRL              (0x1C/4)
23#define ES_SERIAL_CTRL          (0x20/4)
24#define ES_DAC1_CNT             (0x24/4)
25#define ES_DAC2_CNT             (0x28/4)
26#define ES_ADC_CNT              (0x2C/4)
27#define ES_ADC_CNT              (0x2C/4)
28#define ES_HOST_IF0             (0x30/4)
29#define ES_HOST_IF1             (0x34/4)
30#define ES_HOST_IF2             (0x38/4)
31#define ES_HOST_IF3             (0x3C/4)
3232
3333struct frame_reg {
3434   UINT32 pci_addr;
trunk/src/emu/sound/flt_rc.c
r245142r245143
3737{
3838   m_stream = stream_alloc(1, 1, machine().sample_rate());
3939   recalc();
40   
40
4141   save_item(NAME(m_k));
4242   save_item(NAME(m_memory));
4343   save_item(NAME(m_type));
trunk/src/emu/sound/okim9810.c
r245142r245143
115115   save_item(NAME(m_global_volume));
116116   save_item(NAME(m_filter_type));
117117   save_item(NAME(m_output_level));
118   
118
119119   for  (int i = 0; i < OKIM9810_VOICES; i++)
120120   {
121121      okim_voice *voice = get_voice(i);
122     
122
123123      save_item(NAME(voice->m_adpcm.m_signal), i);
124124      save_item(NAME(voice->m_adpcm.m_step), i);
125125      save_item(NAME(voice->m_adpcm2.m_signal), i);
trunk/src/emu/sound/okim9810.h
r245142r245143
135135   };
136136
137137   okim_voice *get_voice(int which);
138   
138
139139   // internal state
140140   const address_space_config  m_space_config;
141141
trunk/src/emu/video.c
r245142r245143
153153   filename = machine.options().avi_write();
154154   if (filename[0] != 0)
155155      begin_recording(filename, MF_AVI);
156   
156
157157#ifdef MAME_DEBUG
158158   m_dummy_recording = machine.options().dummy_write();
159159#endif
trunk/src/emu/video.h
r245142r245143
176176   attotime            m_avi_frame_period;         // period of a single movie frame
177177   attotime            m_avi_next_frame_time;      // time of next frame
178178   UINT32              m_avi_frame;                // current movie frame number
179   
179
180180   // movie recording - dummy
181   bool            m_dummy_recording;         // indicates if snapshot should be created of every frame
181   bool                m_dummy_recording;          // indicates if snapshot should be created of every frame
182182
183183   static const UINT8      s_skiptable[FRAMESKIP_LEVELS][FRAMESKIP_LEVELS];
184184
trunk/src/emu/video/tms34061.c
r245142r245143
6060
6161   /* allocate memory for VRAM */
6262   m_vram = auto_alloc_array_clear(machine(), UINT8, m_vramsize + 256 * 2);
63   
63
6464   /* allocate memory for latch RAM */
6565   m_latchram = auto_alloc_array_clear(machine(), UINT8, m_vramsize + 256 * 2);
6666
r245142r245143
9393
9494   /* start vertical interrupt timer */
9595   m_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(tms34061_device::interrupt), this));
96   
96
9797   save_item(NAME(m_regs));
9898   save_item(NAME(m_xmask));
9999   save_item(NAME(m_yshift));
trunk/src/emu/video/voodoo_pci.c
r245142r245143
5656            return;
5757      if(UINT32(bi.adr) == UINT32(~(bi.size - 1)))
5858         return;
59   
59
6060      UINT64 start;
6161      address_space *space;
6262      if(bi.flags & M_IO) {
trunk/src/lib/formats/d88_dsk.c
r245142r245143
2727 *
2828 */
2929
30 #include <assert.h>
31 
30   #include <assert.h>
31
3232#include "flopimg.h"
3333#include "imageutl.h"
3434
trunk/src/lib/formats/flex_dsk.c
r245142r245143
44 *  Created on: 24/06/2014
55 */
66
7 #include "emu.h" // logerror
7   #include "emu.h" // logerror
88#include "flex_dsk.h"
99
1010flex_format::flex_format()
trunk/src/lib/formats/fmtowns_dsk.c
r245142r245143
66 *  Created on: 23/03/2014
77 */
88
9 #include <assert.h>
10 
9   #include <assert.h>
10
1111#include "formats/fmtowns_dsk.h"
1212
1313fmtowns_format::fmtowns_format() : wd177x_format(formats)
trunk/src/lib/formats/nfd_dsk.c
r245142r245143
7777
7878 *********************************************************************/
7979
80 #include <assert.h>
81 
80   #include <assert.h>
81
8282#include "nfd_dsk.h"
8383
8484nfd_format::nfd_format()
trunk/src/mame/audio/hng64.c
r245142r245143
191191
192192WRITE16_MEMBER(hng64_state::hng64_sound_port_0008_w)
193193{
194//   logerror("hng64_sound_port_0008_w %04x %04x\n", data, mem_mask);
194//  logerror("hng64_sound_port_0008_w %04x %04x\n", data, mem_mask);
195195   // seems to one or more of the DMARQ on the V53, writes here when it expects DMA channel 3 to transfer ~0x20 bytes just after startup
196196
197197
198198   m_audiocpu->dreq3_w(data&1);
199//   m_audiocpu->hack_w(1);
199//  m_audiocpu->hack_w(1);
200200
201201}
202202
r245142r245143
262262{
263263   m_audiodat[m_audiochannel].dat[2] = data;
264264
265//   if ((m_audiochannel & 0xff00) == 0x0a00)
266//      printf("write port 0x0002 chansel %04x data %04x (%04x%04x%04x)\n", m_audiochannel, data, m_audiodat[m_audiochannel].dat[0], m_audiodat[m_audiochannel].dat[1], m_audiodat[m_audiochannel].dat[2]);
265//  if ((m_audiochannel & 0xff00) == 0x0a00)
266//      printf("write port 0x0002 chansel %04x data %04x (%04x%04x%04x)\n", m_audiochannel, data, m_audiodat[m_audiochannel].dat[0], m_audiodat[m_audiochannel].dat[1], m_audiodat[m_audiochannel].dat[2]);
267267}
268268
269269WRITE16_MEMBER(hng64_state::hng64_sound_data_04_w)
270270{
271271   m_audiodat[m_audiochannel].dat[1] = data;
272272
273//   if ((m_audiochannel & 0xff00) == 0x0a00)
274//      printf("write port 0x0004 chansel %04x data %04x (%04x%04x%04x)\n", m_audiochannel, data, m_audiodat[m_audiochannel].dat[0], m_audiodat[m_audiochannel].dat[1], m_audiodat[m_audiochannel].dat[2]);
273//  if ((m_audiochannel & 0xff00) == 0x0a00)
274//      printf("write port 0x0004 chansel %04x data %04x (%04x%04x%04x)\n", m_audiochannel, data, m_audiodat[m_audiochannel].dat[0], m_audiodat[m_audiochannel].dat[1], m_audiodat[m_audiochannel].dat[2]);
275275}
276276WRITE16_MEMBER(hng64_state::hng64_sound_data_06_w)
277277{
278278   m_audiodat[m_audiochannel].dat[0] = data;
279279
280//   if ((m_audiochannel & 0xff00) == 0x0a00)
281//      printf("write port 0x0006 chansel %04x data %04x (%04x%04x%04x)\n", m_audiochannel, data, m_audiodat[m_audiochannel].dat[0], m_audiodat[m_audiochannel].dat[1], m_audiodat[m_audiochannel].dat[2]);
280//  if ((m_audiochannel & 0xff00) == 0x0a00)
281//      printf("write port 0x0006 chansel %04x data %04x (%04x%04x%04x)\n", m_audiochannel, data, m_audiodat[m_audiochannel].dat[0], m_audiodat[m_audiochannel].dat[1], m_audiodat[m_audiochannel].dat[2]);
282282}
283283
284284// but why not just use the V33/V53 XA mode??
r245142r245143
414414WRITE_LINE_MEMBER(hng64_state::tcu_tm1_cb)
415415{
416416   // these are very active, maybe they feed back into the v53 via one of the IRQ pins?  TM2 toggles more rapidly than TM1
417//   logerror("tcu_tm1_cb %02x\n", state);
417//  logerror("tcu_tm1_cb %02x\n", state);
418418   m_audiocpu->set_input_line(5, state? ASSERT_LINE:CLEAR_LINE); // not accurate, just so we have a trigger
419419}
420420
421421WRITE_LINE_MEMBER(hng64_state::tcu_tm2_cb)
422422{
423423   // these are very active, maybe they feed back into the v53 via one of the IRQ pins?  TM2 toggles more rapidly than TM1
424//   logerror("tcu_tm2_cb %02x\n", state);
424//  logerror("tcu_tm2_cb %02x\n", state);
425425
426426   // NOT ACCURATE, just so that all the interrupts get triggered for now.
427427   static int i = 0;
428   m_audiocpu->set_input_line(i, state? ASSERT_LINE:CLEAR_LINE);
428   m_audiocpu->set_input_line(i, state? ASSERT_LINE:CLEAR_LINE);
429429   i++;
430430   if (i == 3) i = 0;
431431}
r245142r245143
445445   MCFG_V53_TCU_OUT2_HANDLER(WRITELINE(hng64_state, tcu_tm2_cb))
446446
447447MACHINE_CONFIG_END
448
449   
trunk/src/mame/drivers/argus.c
r245142r245143
548548
549549   MCFG_GFXDECODE_ADD("gfxdecode", "palette", argus)
550550   MCFG_PALETTE_ADD("palette", 896)
551   
551
552552   MCFG_DEVICE_ADD("blend", JALECO_BLEND, 0)
553553
554554   MCFG_VIDEO_START_OVERRIDE(argus_state,argus)
r245142r245143
594594
595595   MCFG_GFXDECODE_ADD("gfxdecode", "palette", valtric)
596596   MCFG_PALETTE_ADD("palette", 768)
597   
597
598598   MCFG_DEVICE_ADD("blend", JALECO_BLEND, 0)
599599
600600   MCFG_VIDEO_START_OVERRIDE(argus_state,valtric)
r245142r245143
640640
641641   MCFG_GFXDECODE_ADD("gfxdecode", "palette", butasan)
642642   MCFG_PALETTE_ADD("palette", 768)
643   
643
644644   MCFG_DEVICE_ADD("blend", JALECO_BLEND, 0)
645645
646646   MCFG_VIDEO_START_OVERRIDE(argus_state,butasan)
trunk/src/mame/drivers/astrcorp.c
r245142r245143
11591159   for (i = 0x25100/2; i < 0x25200/2; i++)
11601160   {
11611161      x = 0x0000;
1162      if (  (i & 0x0001) )               x |= 0x0200;
1163      if (  (i & 0x0004) && !(i & 0x0001) )   x |= 0x0080;
1164      if (  (i & 0x0040) ||  (i & 0x0001) )   x |= 0x0040;
1165      if (  (i & 0x0010) && !(i & 0x0001) )   x |= 0x0020;
1166      if ( !(i & 0x0020) ||  (i & 0x0001) )   x |= 0x0010;
1167      if (  (i & 0x0002) ||  (i & 0x0001) )   x |= 0x0008;
1168      if (  (i & 0x0008) && !(i & 0x0001) )   x |= 0x0004;
1169      if ( !(i & 0x0040) && !(i & 0x0001) )   x |= 0x0002;
1170      if (  (i & 0x0040) && !(i & 0x0001) )   x |= 0x0001;
1162      if (  (i & 0x0001) )                    x |= 0x0200;
1163      if (  (i & 0x0004) && !(i & 0x0001) )   x |= 0x0080;
1164      if (  (i & 0x0040) ||  (i & 0x0001) )   x |= 0x0040;
1165      if (  (i & 0x0010) && !(i & 0x0001) )   x |= 0x0020;
1166      if ( !(i & 0x0020) ||  (i & 0x0001) )   x |= 0x0010;
1167      if (  (i & 0x0002) ||  (i & 0x0001) )   x |= 0x0008;
1168      if (  (i & 0x0008) && !(i & 0x0001) )   x |= 0x0004;
1169      if ( !(i & 0x0040) && !(i & 0x0001) )   x |= 0x0002;
1170      if (  (i & 0x0040) && !(i & 0x0001) )   x |= 0x0001;
11711171      rom[i] ^= x;
11721172   }
11731173
11741174/*
1175   for (i = 0x25300/2; i < 0x25400/2; i++)
1176   {
1177      x = 0x1300;
1178      rom[i] ^= x;
1179   }
1175    for (i = 0x25300/2; i < 0x25400/2; i++)
1176    {
1177        x = 0x1300;
1178        rom[i] ^= x;
1179    }
11801180*/
11811181
11821182   for (i = 0x25400/2; i < 0x25500/2; i++)
11831183   {
11841184      x = 0x4200;
1185      if (  (i & 0x0001) )               x |= 0x0400;
1186      if (  (i & 0x0020) && !(i & 0x0001) )   x |= 0x0080;
1187      if ( !(i & 0x0010) ||  (i & 0x0001) )   x |= 0x0040;
1188      if (  (i & 0x0040) && !(i & 0x0001) )   x |= 0x0020;
1189      if ( !(i & 0x0004) ||  (i & 0x0001) )   x |= 0x0010;
1190      if ( !(i & 0x0040) && !(i & 0x0001) )   x |= 0x0004;
1191      if (  (i & 0x0008) && !(i & 0x0001) )   x |= 0x0002;
1192      if (  (i & 0x0002) ||  (i & 0x0001) )   x |= 0x0001;
1185      if (  (i & 0x0001) )                    x |= 0x0400;
1186      if (  (i & 0x0020) && !(i & 0x0001) )   x |= 0x0080;
1187      if ( !(i & 0x0010) ||  (i & 0x0001) )   x |= 0x0040;
1188      if (  (i & 0x0040) && !(i & 0x0001) )   x |= 0x0020;
1189      if ( !(i & 0x0004) ||  (i & 0x0001) )   x |= 0x0010;
1190      if ( !(i & 0x0040) && !(i & 0x0001) )   x |= 0x0004;
1191      if (  (i & 0x0008) && !(i & 0x0001) )   x |= 0x0002;
1192      if (  (i & 0x0002) ||  (i & 0x0001) )   x |= 0x0001;
11931193      rom[i] ^= x;
11941194   }
11951195
11961196   for (i = 0x25500/2; i < 0x25600/2; i++)
11971197   {
11981198      x = 0x4200;
1199      if (  (i & 0x0001) )               x |= 0x0400;
1200      if (  (i & 0x0010) && !(i & 0x0001) )   x |= 0x0080;
1201      if (  (i & 0x0040) && !(i & 0x0001) )   x |= 0x0040;
1202      if ( !(i & 0x0002) && !(i & 0x0001) )   x |= 0x0020;
1203      if ( !(i & 0x0040) && !(i & 0x0001) )   x |= 0x0010;
1204      if (  (i & 0x0008) && !(i & 0x0001) )   x |= 0x0008;
1205      if (  (i & 0x0020) && !(i & 0x0001) )   x |= 0x0004;
1206      if (  (i & 0x0004) && !(i & 0x0001) )   x |= 0x0002;
1207      if (  (i & 0x0001) )               x |= 0x0001;
1199      if (  (i & 0x0001) )                    x |= 0x0400;
1200      if (  (i & 0x0010) && !(i & 0x0001) )   x |= 0x0080;
1201      if (  (i & 0x0040) && !(i & 0x0001) )   x |= 0x0040;
1202      if ( !(i & 0x0002) && !(i & 0x0001) )   x |= 0x0020;
1203      if ( !(i & 0x0040) && !(i & 0x0001) )   x |= 0x0010;
1204      if (  (i & 0x0008) && !(i & 0x0001) )   x |= 0x0008;
1205      if (  (i & 0x0020) && !(i & 0x0001) )   x |= 0x0004;
1206      if (  (i & 0x0004) && !(i & 0x0001) )   x |= 0x0002;
1207      if (  (i & 0x0001) )                    x |= 0x0001;
12081208      rom[i] ^= x;
12091209   }
12101210
12111211/*
1212   for (i = 0x25700/2; i < 0x25800/2; i++)
1213   {
1214      x = 0x6800;
1215      if ( !(i & 0x0001) )               x |= 0x8000;
1212    for (i = 0x25700/2; i < 0x25800/2; i++)
1213    {
1214        x = 0x6800;
1215        if ( !(i & 0x0001) )                    x |= 0x8000;
12161216
1217      if ( !(i & 0x0040) || ((i & 0x0001) || !(i & 0x0001)) )               x |= 0x0100;
1217        if ( !(i & 0x0040) || ((i & 0x0001) || !(i & 0x0001)) )                 x |= 0x0100;
12181218
1219      rom[i] ^= x;
1220   }
1219        rom[i] ^= x;
1220    }
12211221*/
12221222
12231223   for (i = 0x25800/2; i < 0x25900/2; i++)
12241224   {
12251225      x = 0x8300;
1226      if (  (i & 0x0040) ||  (i & 0x0001) )   x |= 0x2000;
1227      if (  (i & 0x0002) ||  (i & 0x0001) )   x |= 0x0080;
1228      if ( !(i & 0x0040) && !(i & 0x0001) )   x |= 0x0040;
1229      if (  (i & 0x0020) && !(i & 0x0001) )   x |= 0x0020;
1230      if ( !(i & 0x0004) ||  (i & 0x0001) )   x |= 0x0010;
1231      if ( !(i & 0x0040) && !(i & 0x0001) )   x |= 0x0008;
1232      if (  (i & 0x0010) && !(i & 0x0001) )   x |= 0x0004;
1233      if (  (i & 0x0008) && !(i & 0x0001) )   x |= 0x0002;
1234      if ( !(i & 0x0040) && !(i & 0x0001) )   x |= 0x0001;
1226      if (  (i & 0x0040) ||  (i & 0x0001) )   x |= 0x2000;
1227      if (  (i & 0x0002) ||  (i & 0x0001) )   x |= 0x0080;
1228      if ( !(i & 0x0040) && !(i & 0x0001) )   x |= 0x0040;
1229      if (  (i & 0x0020) && !(i & 0x0001) )   x |= 0x0020;
1230      if ( !(i & 0x0004) ||  (i & 0x0001) )   x |= 0x0010;
1231      if ( !(i & 0x0040) && !(i & 0x0001) )   x |= 0x0008;
1232      if (  (i & 0x0010) && !(i & 0x0001) )   x |= 0x0004;
1233      if (  (i & 0x0008) && !(i & 0x0001) )   x |= 0x0002;
1234      if ( !(i & 0x0040) && !(i & 0x0001) )   x |= 0x0001;
12351235      rom[i] ^= x;
12361236   }
12371237
1238//   for (i = 0x25900/2; i < 0x25a00/2; i++)
1238//  for (i = 0x25900/2; i < 0x25a00/2; i++)
12391239
12401240   for (i = 0x25c00/2; i < 0x25d00/2; i++)
12411241   {
12421242      // changed from 25400
1243//      x = 0x4200;
1243//      x = 0x4200;
12441244      x = 0x4000;
1245//      if (  (i & 0x0001) )               x |= 0x0400;
1246      if (  (i & 0x0020) && !(i & 0x0001) )   x |= 0x0080;
1247      if ( !(i & 0x0010) ||  (i & 0x0001) )   x |= 0x0040;
1248      if (  (i & 0x0040) && !(i & 0x0001) )   x |= 0x0020;
1249      if ( !(i & 0x0004) ||  (i & 0x0001) )   x |= 0x0010;
1250      if ( !(i & 0x0040) && !(i & 0x0001) )   x |= 0x0004;
1251      if (  (i & 0x0008) && !(i & 0x0001) )   x |= 0x0002;
1252      if (  (i & 0x0002) ||  (i & 0x0001) )   x |= 0x0001;
1245//      if (  (i & 0x0001) )                    x |= 0x0400;
1246      if (  (i & 0x0020) && !(i & 0x0001) )   x |= 0x0080;
1247      if ( !(i & 0x0010) ||  (i & 0x0001) )   x |= 0x0040;
1248      if (  (i & 0x0040) && !(i & 0x0001) )   x |= 0x0020;
1249      if ( !(i & 0x0004) ||  (i & 0x0001) )   x |= 0x0010;
1250      if ( !(i & 0x0040) && !(i & 0x0001) )   x |= 0x0004;
1251      if (  (i & 0x0008) && !(i & 0x0001) )   x |= 0x0002;
1252      if (  (i & 0x0002) ||  (i & 0x0001) )   x |= 0x0001;
12531253      rom[i] ^= x;
12541254   }
12551255
12561256/*
1257   for (i = 0x25d00/2; i < 0x25e00/2; i++)
1258   {
1259      x = 0x4000;
1260      if ( !(i & 0x0040) )                           x |= 0x0800;
1257    for (i = 0x25d00/2; i < 0x25e00/2; i++)
1258    {
1259        x = 0x4000;
1260        if ( !(i & 0x0040) )                                    x |= 0x0800;
12611261
1262      if ( !(i & 0x0040) && !(i & 0x0001) )   x |= 0x0100;   // almost!!
1262        if ( !(i & 0x0040) && !(i & 0x0001) )   x |= 0x0100;    // almost!!
12631263
1264      if ( ((i & 0x0040)&&((i & 0x0020)||(i & 0x0010))) || !(i & 0x0001) )   x |= 0x0200;   // almost!!
1265      if ( (!(i & 0x0040) || !(i & 0x0008)) && !(i & 0x0001) )   x |= 0x0008;
1266      if (  (i & 0x0040) || !(i & 0x0020) ||  (i & 0x0001) )   x |= 0x0001;   // almost!!
1267      rom[i] ^= x;
1268   }
1264        if ( ((i & 0x0040)&&((i & 0x0020)||(i & 0x0010))) || !(i & 0x0001) )    x |= 0x0200;    // almost!!
1265        if ( (!(i & 0x0040) || !(i & 0x0008)) && !(i & 0x0001) )    x |= 0x0008;
1266        if (  (i & 0x0040) || !(i & 0x0020) ||  (i & 0x0001) )  x |= 0x0001;    // almost!!
1267        rom[i] ^= x;
1268    }
12691269*/
12701270
12711271/*
1272   for (i = 0x25e00/2; i < 0x25f00/2; i++)
1273   {
1274      x = 0xa600;
1272    for (i = 0x25e00/2; i < 0x25f00/2; i++)
1273    {
1274        x = 0xa600;
12751275
1276      if (  (i & 0x0040) &&  (i & 0x0001) )   x |= 0x4000;
1277      if (  (i & 0x0040) &&  (i & 0x0001) )   x |= 0x0800;
1278      if ( !(i & 0x0001) )               x |= 0x0100;
1276        if (  (i & 0x0040) &&  (i & 0x0001) )   x |= 0x4000;
1277        if (  (i & 0x0040) &&  (i & 0x0001) )   x |= 0x0800;
1278        if ( !(i & 0x0001) )                    x |= 0x0100;
12791279
1280      if ( (  (i & 0x0040) &&  (i & 0x0008) && !(i & 0x0001)) ||
1281           ( !(i & 0x0040) && ((i & 0x0004) ^ (i & 0x0002)) && !(i & 0x0001) ) )   x |= 0x0002;   // almost!!
1280        if ( (  (i & 0x0040) &&  (i & 0x0008) && !(i & 0x0001)) ||
1281             ( !(i & 0x0040) && ((i & 0x0004) ^ (i & 0x0002)) && !(i & 0x0001) ) )  x |= 0x0002;    // almost!!
12821282
1283      if ( !(i & 0x0040) || !(i & 0x0002) ||  (i & 0x0001) )   x |= 0x0001;
1284      rom[i] ^= x;
1285   }
1283        if ( !(i & 0x0040) || !(i & 0x0002) ||  (i & 0x0001) )  x |= 0x0001;
1284        rom[i] ^= x;
1285    }
12861286*/
12871287
12881288   for (i = 0x26f00/2; i < 0x27000/2; i++)
trunk/src/mame/drivers/cabal.c
r245142r245143
475475
476476   MCFG_CPU_ADD("audiocpu", Z80, XTAL_3_579545MHz) /* verified on pcb */
477477   MCFG_CPU_PROGRAM_MAP(sound_map)
478   
478
479479   MCFG_MACHINE_START_OVERRIDE(cabal_state,cabal)
480480
481481   /* video hardware */
trunk/src/mame/drivers/capbowl.c
r245142r245143
293293void capbowl_state::machine_start()
294294{
295295   m_update_timer = timer_alloc(TIMER_UPDATE);
296   
296
297297   save_item(NAME(m_blitter_addr));
298298   save_item(NAME(m_last_trackball_val));
299299}
trunk/src/mame/drivers/cocoloco.c
r245142r245143
192192
193193   required_device<cpu_device> m_maincpu;
194194   required_device<palette_device> m_palette;
195   
195
196196   UINT8 *m_videoram;
197197   UINT8 m_videobank;
198   
198
199199   DECLARE_READ8_MEMBER(vram_r);
200200   DECLARE_WRITE8_MEMBER(vram_w);
201201   DECLARE_WRITE8_MEMBER(vbank_w);
202202   DECLARE_WRITE8_MEMBER(vram_clear_w);
203203   DECLARE_WRITE8_MEMBER(coincounter_w);
204   
204
205205   DECLARE_INPUT_CHANGED_MEMBER(coin_inserted);
206   
206
207207   virtual void video_start();
208208   DECLARE_PALETTE_INIT(cocoloco);
209   
209
210210   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
211211};
212212
trunk/src/mame/drivers/dynax.c
r245142r245143
15641564   ADDRESS_MAP_GLOBAL_MASK(0xff)
15651565   AM_RANGE( 0x01, 0x07 ) AM_WRITE(cdracula_blitter_rev2_w)       // Blitter + Destination Layers
15661566   AM_RANGE( 0x10, 0x10 ) AM_DEVREADWRITE("oki", okim6295_device, read, write)
1567   AM_RANGE( 0x11, 0x11 ) AM_NOP   // unpopulated oki
1567   AM_RANGE( 0x11, 0x11 ) AM_NOP   // unpopulated oki
15681568//  AM_RANGE( 0x12, 0x12 ) AM_WRITENOP   // CRT Controller
15691569//  AM_RANGE( 0x13, 0x13 ) AM_WRITENOP   // CRT Controller
15701570   AM_RANGE( 0x20, 0x20 ) AM_READ_PORT("P1")                 // P1
15711571   AM_RANGE( 0x21, 0x21 ) AM_READ_PORT("P2")                 // P2
15721572   AM_RANGE( 0x22, 0x22 ) AM_READ_PORT("COINS")              // Coins
15731573   AM_RANGE( 0x30, 0x30 ) AM_WRITE(dynax_layer_enable_w)     // Layers Enable
1574//   AM_RANGE( 0x31, 0x31 ) AM_WRITE(dynax_rombank_w)          // BANK ROM Select
1574//  AM_RANGE( 0x31, 0x31 ) AM_WRITE(dynax_rombank_w)          // BANK ROM Select
15751575   AM_RANGE( 0x32, 0x32 ) AM_WRITE(dynax_blit_pen_w)         // Destination Pen
15761576   AM_RANGE( 0x33, 0x33 ) AM_WRITE(dynax_blit_flags_w)       // Flags + Do Blit
15771577   AM_RANGE( 0x34, 0x34 ) AM_WRITE(dynax_blit_palette01_w)   // Layers Palettes (Low Bits)
r245142r245143
20422042   PORT_BIT(  0x40, IP_ACTIVE_LOW, IPT_UNKNOWN  )
20432043   PORT_BIT(  0x80, IP_ACTIVE_LOW, IPT_UNKNOWN  )
20442044
2045   PORT_START("DSW1")   // port $61 -> c217
2045   PORT_START("DSW1")  // port $61 -> c217
20462046   PORT_DIPNAME( 0x03, 0x02, DEF_STR( Difficulty ) )    PORT_DIPLOCATION( "SW1:1,2" )
20472047   PORT_DIPSETTING(    0x03, DEF_STR( Easy )    ) // 44
20482048   PORT_DIPSETTING(    0x02, DEF_STR( Normal )  ) // 47
r245142r245143
20622062   PORT_DIPNAME( 0x40, 0x40, "Unknown 1-7" )            PORT_DIPLOCATION( "SW1:7" )
20632063   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
20642064   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2065   PORT_SERVICE( 0x80, IP_ACTIVE_LOW )                  PORT_DIPLOCATION( "SW1:8" ) 
2065   PORT_SERVICE( 0x80, IP_ACTIVE_LOW )                  PORT_DIPLOCATION( "SW1:8" )
20662066
2067   PORT_START("DSW2")   // port $60 -> c216
2067   PORT_START("DSW2")  // port $60 -> c216
20682068   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) )       PORT_DIPLOCATION( "SW2:1,2" )
20692069   PORT_DIPSETTING(    0x00, DEF_STR( 3C_1C ) )
20702070   PORT_DIPSETTING(    0x01, DEF_STR( 2C_1C ) )
r245142r245143
31903190   PORT_DIPSETTING(    0x00, "12:00" )
31913191   PORT_DIPNAME( 0x08, 0x00, "Nudity" )
31923192   PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
3193   PORT_DIPSETTING(    0x08, DEF_STR( No ) )   // Moles On Gal's Face
3193   PORT_DIPSETTING(    0x08, DEF_STR( No ) )   // Moles On Gal's Face
31943194   PORT_DIPNAME( 0x10, 0x10, "Buy Screen Bonus Points" ) /* Sets your points to 100 every time you arrive at the screen for buying special items. */
31953195   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
31963196   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
r245142r245143
33633363   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
33643364   PORT_DIPNAME( 0x80, 0x00, "Nudity" )
33653365   PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
3366   PORT_DIPSETTING(    0x80, DEF_STR( No ) )   // Moles On Gal's Face
3366   PORT_DIPSETTING(    0x80, DEF_STR( No ) )   // Moles On Gal's Face
33673367
33683368   PORT_START("FAKE")  /* IN10 - Fake DSW */
33693369   PORT_DIPNAME( 0xff, 0xff, "Allow Bets" )
r245142r245143
35003500   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
35013501   PORT_DIPNAME( 0x80, 0x00, "Nudity" )
35023502   PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
3503   PORT_DIPSETTING(    0x80, DEF_STR( No ) )   // Moles On Gal's Face
3503   PORT_DIPSETTING(    0x80, DEF_STR( No ) )   // Moles On Gal's Face
35043504
35053505   PORT_START("FAKE")  /* IN10 - Fake DSW */
35063506   PORT_DIPNAME( 0xff, 0xff, "Allow Bets" )
r245142r245143
43544354   MCFG_MACHINE_START_OVERRIDE(dynax_state,dynax)
43554355   MCFG_MACHINE_RESET_OVERRIDE(dynax_state,dynax)
43564356
4357//   MCFG_NVRAM_ADD_0FILL("nvram")    // no battery
4357//  MCFG_NVRAM_ADD_0FILL("nvram")    // no battery
43584358
43594359   /* video hardware */
43604360   MCFG_SCREEN_ADD("screen", RASTER)
trunk/src/mame/drivers/fgoal.c
r245142r245143
339339void fgoal_state::machine_start()
340340{
341341   m_interrupt_timer = timer_alloc(TIMER_INTERRUPT);
342   
342
343343   save_item(NAME(m_xpos));
344344   save_item(NAME(m_ypos));
345345   save_item(NAME(m_current_color));
trunk/src/mame/drivers/flyball.c
r245142r245143
6161   /* misc */
6262   UINT8    m_potmask;
6363   UINT8    m_potsense;
64   
64
6565   emu_timer *m_pot_clear_timer;
6666   emu_timer *m_quarter_timer;
67   
67
6868   DECLARE_READ8_MEMBER(input_r);
6969   DECLARE_READ8_MEMBER(scanline_r);
7070   DECLARE_READ8_MEMBER(potsense_r);
r245142r245143
7575   DECLARE_WRITE8_MEMBER(pitcher_vert_w);
7676   DECLARE_WRITE8_MEMBER(pitcher_horz_w);
7777   DECLARE_WRITE8_MEMBER(misc_w);
78   
78
7979   TILEMAP_MAPPER_MEMBER(get_memory_offset);
8080   TILE_GET_INFO_MEMBER(get_tile_info);
81   
81
8282   virtual void machine_start();
8383   virtual void machine_reset();
8484   virtual void video_start();
8585   DECLARE_PALETTE_INIT(flyball);
86   
86
8787   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
88   
88
8989   TIMER_CALLBACK_MEMBER(joystick_callback);
9090   TIMER_CALLBACK_MEMBER(quarter_callback);
9191
r245142r245143
428428   for (int i = 0; i < len; i++)
429429      buf[i ^ 0x1ff] = ROM[i];
430430   memcpy(ROM, buf, len);
431   
431
432432   m_pot_clear_timer = timer_alloc(TIMER_POT_CLEAR);
433433   m_quarter_timer = timer_alloc(TIMER_QUARTER);
434434
trunk/src/mame/drivers/goldstar.c
r245142r245143
29932993   PORT_DIPSETTING(    0x08, DEF_STR( 1C_2C ) )
29942994   PORT_DIPSETTING(    0x10, DEF_STR( 1C_4C ) )
29952995   PORT_DIPSETTING(    0x18, DEF_STR( 1C_5C ) )
2996   PORT_DIPSETTING(    0x20, DEF_STR( 1C_6C ) )   // manual says 1c/8c
2997   PORT_DIPSETTING(    0x28, "1 Coin/10 Credits" )
2996   PORT_DIPSETTING(    0x20, DEF_STR( 1C_6C ) )    // manual says 1c/8c
2997   PORT_DIPSETTING(    0x28, "1 Coin/10 Credits" )
29982998   PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )  PORT_DIPLOCATION("DSW4:7")              /* not checked */
29992999   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
30003000   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
r245142r245143
33753375   PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )          PORT_DIPLOCATION("DSW1:8")
33763376   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
33773377   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
3378/*   On a W-4 PCB these are used as: "Special Odds-Prohibition Of Winning...(Odds B)" - see DSW2-7
3379   PORT_DIPNAME( 0x80, 0x00, "Special Odds" )              PORT_DIPLOCATION("DSW1:7,8")
3380   PORT_DIPSETTING(    0x00, "None" )
3381   PORT_DIPSETTING(    0x40, "x300 (x1000)" )
3382   PORT_DIPSETTING(    0x80, "x500 (x5000" )
3383   PORT_DIPSETTING(    0xc0, "x1000 (x10000)
3378/*  On a W-4 PCB these are used as: "Special Odds-Prohibition Of Winning...(Odds B)" - see DSW2-7
3379    PORT_DIPNAME( 0x80, 0x00, "Special Odds" )              PORT_DIPLOCATION("DSW1:7,8")
3380    PORT_DIPSETTING(    0x00, "None" )
3381    PORT_DIPSETTING(    0x40, "x300 (x1000)" )
3382    PORT_DIPSETTING(    0x80, "x500 (x5000" )
3383    PORT_DIPSETTING(    0xc0, "x1000 (x10000)
33843384*/
33853385
33863386   PORT_START("DSW2")
r245142r245143
34063406   PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )      PORT_DIPLOCATION("DSW2:8")
34073407   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
34083408   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
3409/*   On a W-4 PCB these are used as:
3410   PORT_DIPNAME( 0x40, 0x40, "Odds" )                  PORT_DIPLOCATION("DSW2:7")
3411   PORT_DIPSETTING(    0x40, "Type A" )
3412   PORT_DIPSETTING(    0x00, "Type B" )
3413   PORT_DIPNAME( 0x80, 0x80, "Type Of W-Up Game" )     PORT_DIPLOCATION("DSW2:8")
3414   PORT_DIPSETTING(    0x80, "Slots" )
3415   PORT_DIPSETTING(    0x00, "Big/Small Card" )
3409/*  On a W-4 PCB these are used as:
3410    PORT_DIPNAME( 0x40, 0x40, "Odds" )                  PORT_DIPLOCATION("DSW2:7")
3411    PORT_DIPSETTING(    0x40, "Type A" )
3412    PORT_DIPSETTING(    0x00, "Type B" )
3413    PORT_DIPNAME( 0x80, 0x80, "Type Of W-Up Game" )     PORT_DIPLOCATION("DSW2:8")
3414    PORT_DIPSETTING(    0x80, "Slots" )
3415    PORT_DIPSETTING(    0x00, "Big/Small Card" )
34163416*/
34173417
34183418   /* On a W-4 PCB DSW3 & DSW4 are reversed and all dips on DSW4 are set to off! */
r245142r245143
36723672   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) PORT_NAME("Key Out / Attendant")
36733673   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
36743674   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_SERVICE ) PORT_NAME("Settings")
3675   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) PORT_NAME("Stats")   // doesn't work in v352c4
3675   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) PORT_NAME("Stats") // doesn't work in v352c4
36763676
36773677   PORT_START("DSW1")
36783678   PORT_DIPNAME( 0x07, 0x03, "Game Level (Difficulty)" )   PORT_DIPLOCATION("DSW1:1,2,3")  /* OK */
r245142r245143
43354335   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
43364336   PORT_DIPSETTING(    0x10, DEF_STR( On ) )
43374337   PORT_DIPNAME( 0x20, 0x00, "Unused - leave off" )            PORT_DIPLOCATION("DSW5:6")
4338   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )   
4338   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
43394339   PORT_DIPSETTING(    0x20, DEF_STR( On ) )
43404340   PORT_DIPNAME( 0x40, 0x00, "Reset Remaining Score To Zero" ) PORT_DIPLOCATION("DSW5:7")
4341   PORT_DIPSETTING(   0x00, DEF_STR( No ) )
4342   PORT_DIPSETTING(   0x40, DEF_STR( Yes ) )
4341   PORT_DIPSETTING(    0x00, DEF_STR( No ) )
4342   PORT_DIPSETTING(    0x40, DEF_STR( Yes ) )
43434343   PORT_DIPNAME( 0x80, 0x00, "Count Game To Issue Ticket" )    PORT_DIPLOCATION("DSW5:8")
4344   PORT_DIPSETTING(   0x00, DEF_STR( No ) )
4345   PORT_DIPSETTING(   0x80, DEF_STR( Yes ) )
4344   PORT_DIPSETTING(    0x00, DEF_STR( No ) )
4345   PORT_DIPSETTING(    0x80, DEF_STR( Yes ) )
43464346INPUT_PORTS_END
43474347
43484348
r245142r245143
44724472   PORT_DIPNAME( 0x10, 0x10, "Auto Ticket Dispense" )      PORT_DIPLOCATION("DSW4:5")  /* not checked */
44734473   PORT_DIPSETTING(    0x00, DEF_STR( No ) )
44744474   PORT_DIPSETTING(    0x10, DEF_STR( Yes ) )
4475   PORT_DIPNAME( 0xe0, 0xe0, "Ticket Dispense Mode" )      PORT_DIPLOCATION("DSW4:6,7,8")
4475   PORT_DIPNAME( 0xe0, 0xe0, "Ticket Dispense Mode" )      PORT_DIPLOCATION("DSW4:6,7,8")
44764476   PORT_DIPSETTING(    0xe0, "Continuous" )
44774477   PORT_DIPSETTING(    0xc0, "Max 1 Ticket Per Game" )
44784478   PORT_DIPSETTING(    0xa0, "Max 2 Ticket Per Game" )
trunk/src/mame/drivers/hng64.c
r245142r245143
918918
919919WRITE32_MEMBER(hng64_state::hng64_vregs_w)
920920{
921//   printf("hng64_vregs_w %02x, %08x %08x\n", offset * 4, data, mem_mask);
921//  printf("hng64_vregs_w %02x, %08x %08x\n", offset * 4, data, mem_mask);
922922   COMBINE_DATA(&m_videoregs[offset]);
923923}
924924
r245142r245143
15031503   {
15041504      m_videoregs[i] = 0xdeadbeef;
15051505   }
1506     
1506
15071507}
15081508
15091509
r245142r245143
15691569   ROM_REGION( 0x0100000, "user2", 0 ) /* KL5C80 BIOS */ \
15701570   ROM_LOAD ( "from1.bin", 0x000000, 0x080000,  CRC(6b933005) SHA1(e992747f46c48b66e5509fe0adf19c91250b00c7) ) \
15711571   ROM_REGION( 0x0100000, "fpga", 0 ) /* FPGA data  */ \
1572   ROM_LOAD ( "rom1.bin",  0x000000, 0x01ff32,  CRC(4a6832dc) SHA1(ae504f7733c2f40450157cd1d3b85bc83fac8569) ) \
1572   ROM_LOAD ( "rom1.bin",  0x000000, 0x01ff32,  CRC(4a6832dc) SHA1(ae504f7733c2f40450157cd1d3b85bc83fac8569) )
15731573
1574
15751574ROM_START( hng64 )
15761575   /* BIOS */
15771576   HNG64_BIOS
trunk/src/mame/drivers/hotblock.c
r245142r245143
5757   /* devices */
5858   required_device<cpu_device> m_maincpu;
5959   required_device<palette_device> m_palette;
60   
60
6161   /* memory pointers */
6262   required_shared_ptr<UINT8> m_vram;
6363
r245142r245143
6767
6868   /* memory */
6969   UINT8    m_pal[0x10000];
70   
70
7171   DECLARE_READ8_MEMBER(video_read);
7272   DECLARE_READ8_MEMBER(port4_r);
7373   DECLARE_WRITE8_MEMBER(port4_w);
7474   DECLARE_WRITE8_MEMBER(port0_w);
7575   DECLARE_WRITE8_MEMBER(video_write);
76   
76
7777   virtual void video_start();
78   
78
7979   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
8080};
8181
trunk/src/mame/drivers/iteagle.c
r245142r245143
105105public:
106106   iteagle_state(const machine_config &mconfig, device_type type, const char *tag)
107107      : driver_device(mconfig, type, tag),
108         m_maincpu(*this, "maincpu")     
108         m_maincpu(*this, "maincpu")
109109   {}
110   
110
111111   required_device<mips3_device> m_maincpu;
112112
113113   virtual void machine_start();
r245142r245143
129129   MCFG_CPU_ADD("maincpu", VR4310LE, 166666666)
130130   MCFG_MIPS3_ICACHE_SIZE(16384)
131131   MCFG_MIPS3_DCACHE_SIZE(16384)
132   
132
133133   MCFG_PCI_ROOT_ADD(                ":pci")
134134   MCFG_VRC4373_ADD(                 ":pci:00.0", ":maincpu")
135135   MCFG_ITEAGLE_FPGA_ADD(            ":pci:06.0")
r245142r245143
144144   MCFG_SCREEN_SIZE(640, 350)
145145   MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 349)
146146   MCFG_SCREEN_UPDATE_DEVICE(":pci:09.0", voodoo_pci_device, screen_update)
147   
148147
148
149149MACHINE_CONFIG_END
150150
151151
r245142r245143
167167   PORT_DIPNAME( 0x0F00, 0x0000, "GAME" )
168168   PORT_DIPNAME( 0x00F0, 0x0000, "MAJOR" )
169169   PORT_DIPNAME( 0x000F, 0x0000, "MINOR" )
170   
170
171171INPUT_PORTS_END
172172
173173static INPUT_PORTS_START( gtfore05 )
r245142r245143
263263   DISK_REGION( ":pci:06.1:ide:0:hdd:image" )
264264   DISK_IMAGE( "golf_fore_2002_v2.01.04_umv", 0, SHA1(e902b91bd739daee0b95b10e5cf33700dd63a76b) ) /* Labeled Golf Fore! V2.01.04 UMV */
265265   //DISK_REGION( "ide:1:cdrom" ) // program CD-ROM
266   
266
267267ROM_END
268268
269269ROM_START( gtfore02o )
trunk/src/mame/drivers/jankenmn.c
r245142r245143
153153      m_maincpu(*this, "maincpu") { }
154154
155155   required_device<cpu_device> m_maincpu;
156   
156
157157   DECLARE_WRITE8_MEMBER(lamps1_w);
158158   DECLARE_WRITE8_MEMBER(lamps2_w);
159159   DECLARE_WRITE8_MEMBER(lamps3_w);
160   
160
161161   DECLARE_CUSTOM_INPUT_MEMBER(hopper_status_r);
162162};
163163
trunk/src/mame/drivers/jchan.c
r245142r245143
228228
229229   DECLARE_DRIVER_INIT(jchan);
230230   virtual void video_start();
231   
231
232232   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
233   
233
234234   TIMER_DEVICE_CALLBACK_MEMBER(vblank);
235235};
236236
r245142r245143
290290
291291   m_spritegen1->skns_sprite_kludge(0,0);
292292   m_spritegen2->skns_sprite_kludge(0,0);
293   
293
294294   save_item(NAME(m_irq_sub_enable));
295295   save_pointer(NAME(m_sprite_ram32_1), 0x4000/4);
296296   save_pointer(NAME(m_sprite_ram32_2), 0x4000/4);
trunk/src/mame/drivers/junofrst.c
r245142r245143
105105   required_device<filter_rc_device> m_filter_0_0;
106106   required_device<filter_rc_device> m_filter_0_1;
107107   required_device<filter_rc_device> m_filter_0_2;
108   
108
109109   UINT8    m_blitterdata[4];
110110   int      m_i8039_status;
111111   int      m_last_irq;
112   
112
113113   DECLARE_WRITE8_MEMBER(blitter_w);
114114   DECLARE_WRITE8_MEMBER(bankselect_w);
115115   DECLARE_WRITE8_MEMBER(sh_irqtrigger_w);
trunk/src/mame/drivers/m72.c
r245142r245143
17851785   MCFG_CPU_ADD("soundcpu",Z80, SOUND_CLOCK)
17861786   MCFG_CPU_PROGRAM_MAP(sound_ram_map)
17871787   MCFG_CPU_IO_MAP(sound_portmap)
1788   
17891788
1789
17901790   /* video hardware */
17911791   MCFG_GFXDECODE_ADD("gfxdecode", "palette", m72)
17921792   MCFG_PALETTE_ADD("palette", 512)
r245142r245143
18341834   MCFG_CPU_PERIODIC_INT_DRIVER(m72_state, nmi_line_pulse, 128*55) /* clocked by V1? (Vigilante) */
18351835                        /* IRQs are generated by main Z80 and YM2151 */
18361836
1837   
1837
18381838   MCFG_MACHINE_RESET_OVERRIDE(m72_state,xmultipl)
18391839MACHINE_CONFIG_END
18401840
r245142r245143
18521852
18531853
18541854static MACHINE_CONFIG_DERIVED( dkgenm72, m72 ) // dervices from 'm72' because we use 'fake nmi' on the soundcpu
1855   
1855
18561856   MCFG_MACHINE_RESET_OVERRIDE(m72_state,xmultipl)
18571857MACHINE_CONFIG_END
18581858
r245142r245143
18711871   MCFG_CPU_PERIODIC_INT_DRIVER(m72_state, nmi_line_pulse, 128*55) /* clocked by V1? (Vigilante) */
18721872                        /* IRQs are generated by main Z80 and YM2151 */
18731873
1874   
1874
18751875   MCFG_MACHINE_RESET_OVERRIDE(m72_state,xmultipl)
18761876
18771877   MCFG_VIDEO_START_OVERRIDE(m72_state,xmultipl)
r245142r245143
19481948   MCFG_CPU_PERIODIC_INT_DRIVER(m72_state, nmi_line_pulse, 128*55) /* clocked by V1? (Vigilante) */
19491949                        /* IRQs are generated by main Z80 and YM2151 */
19501950
1951   
1951
19521952   MCFG_MACHINE_RESET_OVERRIDE(m72_state,xmultipl)
19531953
19541954   /* video hardware */
r245142r245143
19791979   MCFG_CPU_PERIODIC_INT_DRIVER(m72_state, nmi_line_pulse, 128*55) /* clocked by V1? (Vigilante) */
19801980                        /* IRQs are generated by main Z80 and YM2151 */
19811981
1982   
1982
19831983   MCFG_MACHINE_RESET_OVERRIDE(m72_state,xmultipl)
19841984
19851985   /* video hardware */
r245142r245143
20112011   MCFG_CPU_PERIODIC_INT_DRIVER(m72_state, nmi_line_pulse, 128*55) /* clocked by V1? (Vigilante) */
20122012                        /* IRQs are generated by main Z80 and YM2151 */
20132013
2014   
2014
20152015   MCFG_MACHINE_RESET_OVERRIDE(m72_state,xmultipl)
20162016
20172017   /* video hardware */
trunk/src/mame/drivers/madalien.c
r245142r245143
437437   ROM_LOAD( "mc-1.3k", 0x0000, 0x0400, BAD_DUMP CRC(2710c47e) SHA1(337e4f160c7db143ec3bfae3e08e8789b9e41cc5) ) // taken from chwy, see below, tile 2 is mismatched with the 2 roms from the actual PCB.
438438   ROM_LOAD( "me-1.3l", 0x0400, 0x0400, CRC(7328a425) SHA1(327adc8b0e25d93f1ae98a44c26d0aaaac1b1a9c) )
439439   ROM_LOAD( "md-1.3m", 0x0800, 0x0400, CRC(b5329929) SHA1(86890e1b7cc8cb31fc0dcbc2d3cff02e4cf95619) )
440   
440
441441   /*  for reference, this is the data used by Highway Chase on the cassette system when extracted
442442   ROM_REGION( 0x0400, "user1", 0 )                    // background tile map
443443   ROM_LOAD( "rom1", 0x0000, 0x0400, CRC(9b04c446) SHA1(918013f3c0244ab6a670b9d1b6b642298e2c5ab8) )
trunk/src/mame/drivers/mgolf.c
r245142r245143
4747   DECLARE_READ8_MEMBER(dial_r);
4848   DECLARE_READ8_MEMBER(misc_r);
4949   DECLARE_WRITE8_MEMBER(wram_w);
50   
50
5151   TILE_GET_INFO_MEMBER(get_tile_info);
52   
52
5353   virtual void machine_start();
5454   virtual void machine_reset();
5555   virtual void video_start();
5656   DECLARE_PALETTE_INIT(mgolf);
57   
57
5858   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
59   
59
6060   TIMER_CALLBACK_MEMBER(interrupt_callback);
61   
61
6262   void update_plunger(  );
6363   double calc_plunger_pos();
6464
r245142r245143
343343void mgolf_state::machine_start()
344344{
345345   m_interrupt_timer = timer_alloc(TIMER_INTERRUPT);
346   
346
347347   save_item(NAME(m_prev));
348348   save_item(NAME(m_mask));
349349   save_item(NAME(m_time_pushed));
trunk/src/mame/drivers/neogeo.c
r245142r245143
238238    . NEO-AEG CHA42G-3
239239    . NEO-AEG CHA42G-4
240240    . NEO-AEG CHA256
241    . NEO-AEG CHA256 B
241    . NEO-AEG CHA256 B
242242    . NEO-AEG CHA256[B]
243    . NEO-AEG CHA256BY
243    . NEO-AEG CHA256BY
244244    . NEO-AEG CHA256RY
245245    . NEO-AEG CHA512Y
246246    . NEO-AEG CHAFIO (1999.8.10) - used with NEO-CMC 90G06C7042 or NEO-CMC 90G06C7050
r245142r245143
263263    . NEO-AEG PROG4096 B
264264    . NEO-AEG PROGGS
265265    . NEO-AEG PROGTOP2
266    . NEO-AEG PROGTOP2Y
266    . NEO-AEG PROGTOP2Y
267267    . NEO-AEG PROGEOP (1999.4.2)
268268    . NEO-AEG PROGLBA (1999.7.6)
269269    . NEO-AEG PROGRK
r245142r245143
310310    GIGA PROG Board 1.0
311311    GIGA PROG Board 1.5
312312
313   
314   Unofficial pcb's from NEOBITZ:
315   
316   MVS CHA:
317   CHARBITZ1 2013.12.01
318   
319   MVS PROG:
320   PROGBITZ1 2013.12.01
321   
322   
313
314    Unofficial pcb's from NEOBITZ:
315
316    MVS CHA:
317    CHARBITZ1 2013.12.01
318
319    MVS PROG:
320    PROGBITZ1 2013.12.01
321
322
323323    Neo-Geo game PCB infos by Johnboy
324324
325325
trunk/src/mame/drivers/neogeo_noslot.c
r245142r245143
12371237 ID-0023
12381238 . NGM-023
12391239 NEO-MVS PROG42G / NEO-MVS CHA42G
1240 NEO-MVS PROGTOP / NEO-MVS CHA-256
1240 NEO-MVS PROGTOP / NEO-MVS CHA-256
12411241 Boards used for the Korean release
12421242 . NGH-023
12431243 NEO-AEG PROG42G-1 / NEO-AEG CHA42G-1
r245142r245143
19151915   ROM_REGION( 0x100000, "maincpu", 0 )
19161916   ROM_LOAD16_WORD_SWAP( "044-p1.p1", 0x000000, 0x080000, CRC(ca9f7a6d) SHA1(4d28ef86696f7e832510a66d3e8eb6c93b5b91a1) ) /* TC534200 */
19171917   /* also found sets with ep1 or p1 on eprom. */
1918   
1918
19191919   NEO_SFIX_128K( "044-s1.s1", CRC(89903f39) SHA1(a04a0c244a5d5c7a595fcf649107969635a6a8b6) ) /* TC531000 */
19201920
19211921   NEO_BIOS_AUDIO_128K( "044-m1.m1", CRC(0987e4bb) SHA1(8fae4b7fac09d46d4727928e609ed9d3711dbded) ) /* TC531001 */
r245142r245143
19501950   ROM_LOAD16_WORD_SWAP( "045-p1.p1",   0x000000, 0x100000, CRC(dfe51bf0) SHA1(2243af3770a516ae698b69bcd9daf53632d9128d) ) /* TC538200 */
19511951   ROM_LOAD16_WORD_SWAP( "045-pg2.sp2", 0x100000, 0x100000, CRC(46745b94) SHA1(d9e959fd1f88c9402915c1d0dcdb4a9e3d49cdcb) ) /* TC538200 */
19521952   /* also found set with ep1 / ep2 on eprom and sp2 on maskrom; same rom data as samshoh is used. */
1953   
1953
19541954   NEO_SFIX_128K( "045-s1.s1", CRC(9142a4d3) SHA1(54088e99fcfd75fd0f94852890a56350066a05a3) ) /* TC531000 */
19551955
19561956   NEO_BIOS_AUDIO_128K( "045-m1.m1", CRC(95170640) SHA1(125c502db0693e8d11cef619b090081c14a9a300) ) /* TC531001 */
r245142r245143
22712271   ROM_REGION( 0x100000, "maincpu", 0 )
22722272   ROM_LOAD16_WORD_SWAP( "053-p1.p1", 0x000000, 0x080000, CRC(95b574cb) SHA1(b7b7af6a04c3d902e7f8852897741ecaf0b1062c) ) /* TC534200 */
22732273   ROM_LOAD16_WORD_SWAP( "053-p2.p2", 0x080000, 0x080000, CRC(f198ed45) SHA1(24ccc091e97f63796562bb5b30df51f39bd504ef) ) /* TC534200 */
2274     
2274
22752275   NEO_SFIX_128K( "053-s1.s1", CRC(8c2c2d6b) SHA1(87fa79611c6f8886dcc8766814829c669c65b40f) ) /* TC531000 */
22762276
22772277   NEO_BIOS_AUDIO_128K( "053-m1.m1", CRC(1bd9d04b) SHA1(65cd7b002123ed1a3111e3d942608d0082799ff3) ) /* TC531001 */
r245142r245143
26152615   ROM_REGION( 0x100000, "maincpu", 0 )
26162616   ROM_LOAD16_WORD_SWAP( "061-p1.p1", 0x000000, 0x100000, CRC(5969e0dc) SHA1(78abea880c125ec5a85bef6404478512a34b5513) ) /* mask rom TC538200 */
26172617   /* also found MVS sets with ep1 / ep2 on eprom; correct chip label unknown. */
2618   
2618
26192619   NEO_SFIX_128K( "061-s1.s1", CRC(226d1b68) SHA1(de010f6fda3ddadb181fe37daa6105f22e78b970) ) /* mask rom TC531000 */
26202620
26212621   NEO_BIOS_AUDIO_128K( "061-m1.m1", CRC(156f6951) SHA1(49686f615f109a02b4f23931f1c84fee13872ffd) ) /* mask rom TC531001 */
r245142r245143
26792679   ROM_LOAD16_WORD_SWAP( "063-p1.p1", 0x100000, 0x100000, CRC(22368892) SHA1(0997f8284aa0f57a333be8a0fdea777d0d01afd6) ) /* TC5316200 */
26802680   ROM_CONTINUE( 0x000000, 0x100000 )
26812681   /* also found MVS sets with ep1 / ep2 on eprom and p1 / sp2 on maskrom; correct chip label unknown */
2682   
2682
26832683   NEO_SFIX_128K( "063-s1.s1", CRC(64a5cd66) SHA1(12cdfb27bf9ccd5a8df6ddd4628ef7cf2c6d4964) ) /* TC531000 */
26842684
26852685   NEO_BIOS_AUDIO_128K( "063-m1.m1", CRC(56675098) SHA1(90429fc40d056d480d0e2bbefbc691d9fa260fc4) ) /* TC531001 */
r245142r245143
29652965  BANK 3  NOT USED
29662966 ****************************************/
29672967
2968 ROM_START( b2b )
2968   ROM_START( b2b )
29692969   ROM_REGION( 0x100000, "maincpu", 0 )
29702970   ROM_LOAD16_WORD_SWAP( "071.p1", 0x000000, 0x080000, CRC(7687197d) SHA1(4bb9cb7819807f7a7e1f85f1c4faac4a2f8761e8) )
29712971
r245142r245143
42524252   ROM_LOAD16_WORD_SWAP( "214-p1.p1",  0x000000, 0x100000, CRC(52755d74) SHA1(4232d627f1d2e6ea9fc8cf01571d77d4d5b8a1bb) ) /* TC538200 */
42534253   ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) ) /* TC5316200 */
42544254   /* also found sets with ep1 / ep2 / ep3 / ep4 on eprom and 214-P5 on TC5316200; correct chip labels for eproms is unknown */
4255   
4255
42564256   NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) ) /* TC531000 */
42574257
42584258   NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) ) /* TC531001 */
r245142r245143
50135013   ROM_REGION( 0x500000, "maincpu", 0 )
50145014   ROM_LOAD16_WORD_SWAP( "234-p1.p1",  0x000000, 0x100000, CRC(e123a5a3) SHA1(a3ddabc00feeb54272b145246612ad4632b0e413) ) /* TC538200 */
50155015   ROM_LOAD16_WORD_SWAP( "234-p2.sp2", 0x100000, 0x400000, CRC(0fdc289e) SHA1(1ff31c0b0f4f9ddbedaf4bcf927faaae81892ec7) ) /* TC5332205 */
5016   /* also found sets with p1 / sp2 / ep1 / ep2 / m1 on eprom with sticker */
5016   /* also found sets with p1 / sp2 / ep1 / ep2 / m1 on eprom with sticker */
50175017   /* chip label is 0234-P1, 0234-SP2, 0234-EP1, 0234-EP2 and 0234-M1 */
5018   
5018
50195019   NEO_SFIX_128K( "234-s1.s1", CRC(95561412) SHA1(995de272f572fd08d909d3d0af4251b9957b3640) ) /* TC531000 */
50205020
50215021   NEO_BIOS_AUDIO_128K( "234-m1.m1", CRC(087628ea) SHA1(48dcf739bb16699af4ab8ed632b7dcb25e470e06) ) /* TC531001 */
r245142r245143
61936193   /* The SMA for this release has a green colour marking; the older revision has a white colour marking */
61946194   ROM_LOAD16_WORD_SWAP( "256-pg1.p1", 0x100000, 0x400000, CRC(b07edfd5) SHA1(dcbd9e500bfae98d754e55cdbbbbf9401013f8ee) ) /* TC5332202 */
61956195   ROM_LOAD16_WORD_SWAP( "256-pg2.p2", 0x500000, 0x400000, CRC(6097c26b) SHA1(248ec29d21216f29dc6f5f3f0e1ad1601b3501b6) ) /* TC5332202 */
6196     
6196
61976197   ROM_Y_ZOOM
61986198
61996199   /* The Encrypted Boards do not have an s1 rom, data for it comes from the Cx ROMs */
r245142r245143
62306230   ROM_LOAD16_WORD_SWAP( "256-ph2.sp2", 0x100000, 0x400000, CRC(1f3d8ce8) SHA1(08b05a8abfb86ec09a5e758d6273acf1489961f9) )
62316231   /* also found AES set with p1 / p2 on maskrom on NEO-AEG PROGLBA (NEO-SMA); chip labels is 256-PG1 and 256-PG2 */
62326232   /* The SMA for this release has a pink color marking */
6233   
6233
62346234   ROM_Y_ZOOM
62356235
62366236   /* The Encrypted Boards do not have an s1 rom, data for it comes from the Cx ROMs */
r245142r245143
67486748   ROM_REGION( 0x100000, "maincpu", 0 )
67496749   ROM_LOAD16_WORD_SWAP( "267-p1.p1", 0x000000, 0x100000, CRC(112fe2c0) SHA1(01420e051f0bdbd4f68ce306a3738161b96f8ba8) ) /* mask rom TC538200 */
67506750   /* also found set with p1 and m1 on eprom with sticker; chip labels is PN 2.02 and M1 */
6751   
6751
67526752   ROM_Y_ZOOM
67536753
67546754   /* The Encrypted Boards do not have an s1 rom, data for it comes from the Cx ROMs */
r245142r245143
68206820   ROM_LOAD32_WORD_SWAP( "268-p1c.p1", 0x000000, 0x400000, CRC(3636690a) SHA1(e0da714b4bdc6efffe1250ded02ebddb3ab6d7b3) )
68216821   ROM_LOAD32_WORD_SWAP( "268-p2c.p2", 0x000002, 0x400000, CRC(8dfc47a2) SHA1(27d618cfbd0107a4d2a836797e967b39d2eb4851) )
68226822   /* also found AES set with p1 / p2 on maskrom; chip labels is 268-P1CR2 and 268-P2CR2 */
6823   
6823
68246824   ROM_Y_ZOOM
68256825
68266826   /* The Encrypted Boards do not have an s1 rom, data for it comes from the Cx ROMs */
trunk/src/mame/drivers/paradise.c
r245142r245143
660660void paradise_state::machine_start()
661661{
662662   int bank_n = memregion("maincpu")->bytes() / 0x4000;
663   
663
664664   membank("prgbank")->configure_entries(0, bank_n, memregion("maincpu")->base(), 0x4000);
665665
666666   save_item(NAME(m_palbank));
trunk/src/mame/drivers/peplus.c
r245142r245143
59305930     Programs Available: PP0055, X000055P, PP0723
59315931*/
59325932   ROM_REGION( 0x10000, "maincpu", 0 )
5933   ROM_LOAD( "xp000098.u67",   0x00000, 0x10000, CRC(12257ad8) SHA1(8f613377519850f8f711ccb827685dece018c735) )
5933   ROM_LOAD( "xp000098.u67",   0x00000, 0x10000, CRC(12257ad8) SHA1(8f613377519850f8f711ccb827685dece018c735) ) /*  01/29/98   @ IGT  L98-0643  */
59345934
59355935   ROM_REGION( 0x10000, "user1", 0 )
59365936   ROM_LOAD( "x000055p.u66",   0x00000, 0x10000, CRC(e06819df) SHA1(36590c4588b8036908e63714fbb3e77d23e60eae) ) /* Deuces Wild Poker */
r245142r245143
80208020PayTable   Js+ 2PR  STR  FL  FH  4K  SF  4K  4K  4A  4K   4K   4A  RF (Bonus)
80218021-----------------------------------------------------------------------------
80228022 P870BB     1   1    3    4   7   9  50  25  80 160 160  400  400 400   800
8023  % Range: 95.4-97.4%  Optimum: 99.4%  Hit Frequency: ???%
8023  % Range: 95.4-97.4%  Optimum: 99.4%  Hit Frequency: 43.2%
80248024     Programs Available: X002272P
80258025*/
80268026   ROM_REGION( 0x10000, "maincpu", 0 )
r245142r245143
80478047PayTable   Js+ 2PR  STR  FL  FH  4K  SF  4K  4K  4A  4K   4K   4A  RF (Bonus)
80488048-----------------------------------------------------------------------------
80498049 P873BB     1   1    3    4   5   8  50  25  80 160 160  400  400 400   800
8050  % Range: 92.0-94.0%  Optimum: 96.0%  Hit Frequency: ???%
8050  % Range: 92.0-94.0%  Optimum: 96.0%  Hit Frequency: 44.8%
80518051     Programs Available: X002275P
80528052*/
80538053   ROM_REGION( 0x10000, "maincpu", 0 )
r245142r245143
80748074PayTable   Js+ 2PR  STR  FL  FH  4K  SF  4K  4K  4A  4K   4K   4A  RF (Bonus)
80758075-----------------------------------------------------------------------------
80768076 P874BB     1   1    3    4   5   7  50  25  80 160 160  400  400 400   800
8077  % Range: 91.0-93.0%  Optimum: 95.0%  Hit Frequency: ???%
8077  % Range: 91.0-93.0%  Optimum: 95.0%  Hit Frequency: 44.9%
80788078     Programs Available: X002276P
80798079*/
80808080   ROM_REGION( 0x10000, "maincpu", 0 )
r245142r245143
90759075Double Deuce Poker   P236A     99.60%
90769076*/
90779077   ROM_REGION( 0x10000, "maincpu", 0 )
9078   ROM_LOAD( "xmp00002.u67",   0x00000, 0x10000, CRC(d5624ac8) SHA1(6b778b0e7ddb81123c6038920b3447e05a0556b2) ) /* Linkable Progressive */
9078   ROM_LOAD( "xmp00002.u67",   0x00000, 0x10000, CRC(d5624ac8) SHA1(6b778b0e7ddb81123c6038920b3447e05a0556b2) ) /* 09/07/95   @ IGT  L95-2183  - Linkable Progressive */
90799079
90809080   ROM_REGION( 0x10000, "user1", 0 )
90819081   ROM_LOAD( "xm00004p.u66",   0x00000, 0x10000, CRC(bafd160f) SHA1(7454fbf992d4d0668ef375b76ce2cae3324a5f75) )
r245142r245143
91049104*/
91059105   ROM_REGION( 0x10000, "maincpu", 0 )
91069106   ROM_LOAD( "xmp00004.u67",   0x00000, 0x10000, CRC(83184999) SHA1(b8483917b338be4fd3641b3990eea37072d36885) ) /* Linkable Progressive */
9107   /* Also known to be found with XMP00024 programs */
9107   /* Also known to be found with XMP00024 program */
91089108
91099109   ROM_REGION( 0x10000, "user1", 0 )
91109110   ROM_LOAD( "xm00005p.u66",   0x00000, 0x10000, CRC(c832eac7) SHA1(747d57de602b44ae1276fe1009db1b6de0d2c64c) )
r245142r245143
91629162*/
91639163   ROM_REGION( 0x10000, "maincpu", 0 )
91649164   ROM_LOAD( "xmp00006.u67",   0x00000, 0x10000, CRC(d61f1677) SHA1(2eca1315d6aa310a54de2dfa369e443a07495b76) ) /*  07/25/96   @ IGT L96-2041  - Linkable Progressive */
9165   /* Also known to be found with XMP00002 program */
91659166
91669167   ROM_REGION( 0x10000, "user1", 0 )
9167   ROM_LOAD( "xm00007p.u66",   0x00000, 0x10000, CRC(85a76416) SHA1(1bc3b9c2f687e68a085bfc5cf86d99fbd18cb9c7) )
9168   ROM_LOAD( "xm00007p.u66",   0x00000, 0x10000, CRC(85a76416) SHA1(1bc3b9c2f687e68a085bfc5cf86d99fbd18cb9c7) ) /*  03/09/96   @ IGT  L96-0737  */
91689169
91699170   ROM_REGION( 0x020000, "gfx1", 0 )
9170   ROM_LOAD( "mro-cg2233.u77",  0x00000, 0x8000, CRC(8758866a) SHA1(49146560a7e79593a2ac0378dc3b300b96ef1015) )
9171   ROM_LOAD( "mro-cg2233.u77",  0x00000, 0x8000, CRC(8758866a) SHA1(49146560a7e79593a2ac0378dc3b300b96ef1015) ) /*  03/07/96   @ IGT  L96-0686  */
91719172   ROM_LOAD( "mgo-cg2233.u78",  0x08000, 0x8000, CRC(45ac6cfd) SHA1(25ff276320fe51c56aea0cff099be17e4ce8f404) )
91729173   ROM_LOAD( "mbo-cg2233.u79",  0x10000, 0x8000, CRC(9e9d702f) SHA1(75bb9adb49095b7cb87d2615bcf725e4a4774e25) )
91739174   ROM_LOAD( "mxo-cg2233.u80",  0x18000, 0x8000, CRC(2f05ebcb) SHA1(90d00ee4ce2dcbfbe33e221efe4db45a4e484baa) )
r245142r245143
92219222Double Aces & Faces  ?????     99.30%
92229223*/
92239224   ROM_REGION( 0x10000, "maincpu", 0 )
9224   ROM_LOAD( "xmp00002.u67",   0x00000, 0x10000, CRC(d5624ac8) SHA1(6b778b0e7ddb81123c6038920b3447e05a0556b2) ) /* Linkable Progressive */
9225   ROM_LOAD( "xmp00002.u67",   0x00000, 0x10000, CRC(d5624ac8) SHA1(6b778b0e7ddb81123c6038920b3447e05a0556b2) ) /* 09/07/95   @ IGT  L95-2183  - Linkable Progressive */
92259226
92269227   ROM_REGION( 0x10000, "user1", 0 )
92279228   ROM_LOAD( "xm00009p.u66",   0x00000, 0x10000, CRC(e133d0bb) SHA1(7ed4fa335e230c28e6fc66f0c990bc7ead2b279d) )
r245142r245143
92559256   ROM_REGION( 0x10000, "maincpu", 0 )
92569257   ROM_LOAD( "xmp00025.u67",   0x00000, 0x10000, CRC(5d39ff71) SHA1(0a5f67e61ae0e8a08cc551ab4271ffc97c343ae3) ) /* International multi currency version - Auto Hold always on */
92579258   /* Also compatible with XMP00002, XMP00003, XMP00004, XMP00006 and XMP00024 programs */
9258   
9259
92599260   ROM_REGION( 0x10000, "user1", 0 )
92609261   ROM_LOAD( "xm00013p.u66",   0x00000, 0x10000, CRC(4fde73f9) SHA1(f8eb6fb0585e8df9a7eb2ddc65bb20b120753d7a) )
92619262
r245142r245143
93419342
93429343*/
93439344   ROM_REGION( 0x10000, "maincpu", 0 )
9344   ROM_LOAD( "xmp00017.u67",   0x00000, 0x10000, CRC(129e6eaa) SHA1(1dd2b83a672a618f338b553a6cbd598b6d4ce672) )
9345   ROM_LOAD( "xmp00017.u67",   0x00000, 0x10000, CRC(129e6eaa) SHA1(1dd2b83a672a618f338b553a6cbd598b6d4ce672) ) /*  09/17/97   @ IGT  L97-2154  */
93459346
93469347   ROM_REGION( 0x10000, "user1", 0 )
93479348   ROM_LOAD( "x000055p.u66",   0x00000, 0x10000, CRC(e06819df) SHA1(36590c4588b8036908e63714fbb3e77d23e60eae) ) /* Deuces Wild Poker */
r245142r245143
93759376
93769377*/
93779378   ROM_REGION( 0x10000, "maincpu", 0 )
9378   ROM_LOAD( "xmp00017.u67",   0x00000, 0x10000, CRC(129e6eaa) SHA1(1dd2b83a672a618f338b553a6cbd598b6d4ce672) )
9379   ROM_LOAD( "xmp00017.u67",   0x00000, 0x10000, CRC(129e6eaa) SHA1(1dd2b83a672a618f338b553a6cbd598b6d4ce672) ) /*  09/17/97   @ IGT  L97-2154  */
93799380
93809381   ROM_REGION( 0x10000, "user1", 0 )
93819382   ROM_LOAD( "x000430p.u66",   0x00000, 0x10000, CRC(905571e3) SHA1(fd506516fed22842df8e9dbb3683dcb4c459719b) ) /* Dueces Joker Wild Poker */
r245142r245143
94129413
94139414*/
94149415   ROM_REGION( 0x10000, "maincpu", 0 )
9415   ROM_LOAD( "xmp00017.u67",   0x00000, 0x10000, CRC(129e6eaa) SHA1(1dd2b83a672a618f338b553a6cbd598b6d4ce672) )
9416   ROM_LOAD( "xmp00017.u67",   0x00000, 0x10000, CRC(129e6eaa) SHA1(1dd2b83a672a618f338b553a6cbd598b6d4ce672) ) /*  09/17/97   @ IGT  L97-2154  */
94169417
94179418   ROM_REGION( 0x10000, "user1", 0 )
94189419   ROM_LOAD( "x002272p.u66",   0x00000, 0x10000, CRC(ee4f27b9) SHA1(1ee105430358ea27badd943bb6b18663e4029388) ) /* Black Jack Bonus Poker */
r245142r245143
94309431   ROM_LOAD( "x002307p.u66",   0x00000, 0x10000, CRC(c6d5db70) SHA1(017e1e382fb789e4cd8b410362ad5e82b61f61db) ) /* Triple Double Bonus Poker */
94319432
94329433   ROM_REGION( 0x040000, "gfx1", 0 )
9433   ROM_LOAD( "mro-cg2426.u77",  0x00000, 0x10000, CRC(e7622901) SHA1(f653aaf02de840aef56d3efd7680572356e94da7) )
9434   ROM_LOAD( "mro-cg2426.u77",  0x00000, 0x10000, CRC(e7622901) SHA1(f653aaf02de840aef56d3efd7680572356e94da7) ) /*  05/29/98   @ IGT  L98-1765  */
94349435   ROM_LOAD( "mgo-cg2426.u78",  0x10000, 0x10000, CRC(5c8388a0) SHA1(c883bf7969850d07f37fa0fd58f82cda4cf15654) )
94359436   ROM_LOAD( "mbo-cg2426.u79",  0x20000, 0x10000, CRC(dc6e39aa) SHA1(7a7188757f5be25521a023d1315cfd7c395b6c25) )
94369437   ROM_LOAD( "mxo-cg2426.u80",  0x30000, 0x10000, CRC(a32f42a2) SHA1(87ddc4dda7c198ed62a2a065507efe4d3a016236) )
r245142r245143
94889489   ROM_LOAD( "x002440p.u66",   0x00000, 0x10000, CRC(2ecb28cc) SHA1(a7b902bdfbf8f5ceedc778b8408c39ee279a1a1d) ) /* Deuces Wild Poker */
94899490
94909491   ROM_REGION( 0x040000, "gfx1", 0 )
9491   ROM_LOAD( "mro-cg2426.u77",  0x00000, 0x10000, CRC(e7622901) SHA1(f653aaf02de840aef56d3efd7680572356e94da7) )
9492   ROM_LOAD( "mro-cg2426.u77",  0x00000, 0x10000, CRC(e7622901) SHA1(f653aaf02de840aef56d3efd7680572356e94da7) ) /*  05/29/98   @ IGT  L98-1765  */
94929493   ROM_LOAD( "mgo-cg2426.u78",  0x10000, 0x10000, CRC(5c8388a0) SHA1(c883bf7969850d07f37fa0fd58f82cda4cf15654) )
94939494   ROM_LOAD( "mbo-cg2426.u79",  0x20000, 0x10000, CRC(dc6e39aa) SHA1(7a7188757f5be25521a023d1315cfd7c395b6c25) )
94949495   ROM_LOAD( "mxo-cg2426.u80",  0x30000, 0x10000, CRC(a32f42a2) SHA1(87ddc4dda7c198ed62a2a065507efe4d3a016236) )
trunk/src/mame/drivers/playmark.c
r245142r245143
13751375   MCFG_CPU_VBLANK_INT_DRIVER("screen", playmark_state,  irq6_line_hold)
13761376
13771377   MCFG_CPU_ADD("audiocpu", PIC16C57, XTAL_24MHz/2)    /* verified on pcb */
1378//   MCFG_PIC16C5x_WRITE_A_CB(WRITE8(playmark_state, playmark_oki_banking_w)) // Banking data output but not wired. Port C is wired to the OKI banking instead
1378//  MCFG_PIC16C5x_WRITE_A_CB(WRITE8(playmark_state, playmark_oki_banking_w)) // Banking data output but not wired. Port C is wired to the OKI banking instead
13791379   MCFG_PIC16C5x_READ_B_CB(READ8(playmark_state, playmark_snd_command_r))
13801380   MCFG_PIC16C5x_WRITE_B_CB(WRITE8(playmark_state, playmark_oki_w))
13811381   MCFG_PIC16C5x_READ_C_CB(READ8(playmark_state, playmark_snd_flag_r))
r245142r245143
14161416   MCFG_CPU_VBLANK_INT_DRIVER("screen", playmark_state,  irq6_line_hold) // irq 2 and 6 point to the same location on hotmind
14171417
14181418   MCFG_CPU_ADD("audiocpu", PIC16C57, XTAL_24MHz/2)    /* verified on pcb */
1419//   MCFG_PIC16C5x_WRITE_A_CB(WRITE8(playmark_state, playmark_oki_banking_w)) // Banking data output but not wired. Port C is wired to the OKI banking instead
1419//  MCFG_PIC16C5x_WRITE_A_CB(WRITE8(playmark_state, playmark_oki_banking_w)) // Banking data output but not wired. Port C is wired to the OKI banking instead
14201420   MCFG_PIC16C5x_READ_B_CB(READ8(playmark_state, playmark_snd_command_r))
14211421   MCFG_PIC16C5x_WRITE_B_CB(WRITE8(playmark_state, playmark_oki_w))
14221422   MCFG_PIC16C5x_READ_C_CB(READ8(playmark_state, playmark_snd_flag_r))
r245142r245143
14621462   MCFG_CPU_VBLANK_INT_DRIVER("screen", playmark_state,  irq6_line_hold)
14631463
14641464   MCFG_CPU_ADD("audiocpu", PIC16C57, XTAL_24MHz/2)    /* verified on pcb */
1465//   MCFG_PIC16C5x_WRITE_A_CB(WRITE8(playmark_state, playmark_oki_banking_w)) // Banking data output but not wired. Port C is wired to the OKI banking instead
1465//  MCFG_PIC16C5x_WRITE_A_CB(WRITE8(playmark_state, playmark_oki_banking_w)) // Banking data output but not wired. Port C is wired to the OKI banking instead
14661466   MCFG_PIC16C5x_READ_B_CB(READ8(playmark_state, playmark_snd_command_r))
14671467   MCFG_PIC16C5x_WRITE_B_CB(WRITE8(playmark_state, playmark_oki_w))
14681468   MCFG_PIC16C5x_READ_C_CB(READ8(playmark_state, playmark_snd_flag_r))
trunk/src/mame/drivers/psychic5.c
r245142r245143
318318MACHINE_START_MEMBER(psychic5_state, psychic5)
319319{
320320   membank("mainbank")->configure_entries(0, 4, memregion("maincpu")->base() + 0x10000, 0x4000);
321   
321
322322   save_item(NAME(m_bank_latch));
323323}
324324
325325MACHINE_START_MEMBER(psychic5_state, bombsa)
326326{
327327   membank("mainbank")->configure_entries(0, 8, memregion("maincpu")->base() + 0x10000, 0x4000);
328   
328
329329   save_item(NAME(m_bank_latch));
330330}
331331
r245142r245143
707707   MCFG_CPU_IO_MAP(psychic5_soundport_map)
708708
709709   MCFG_QUANTUM_TIME(attotime::from_hz(600))      /* Allow time for 2nd cpu to interleave */
710   
710
711711   MCFG_MACHINE_START_OVERRIDE(psychic5_state,psychic5)
712712
713713   /* video hardware */
r245142r245143
763763   MCFG_CPU_IO_MAP(bombsa_soundport_map)
764764
765765   MCFG_QUANTUM_TIME(attotime::from_hz(600))
766   
766
767767   MCFG_MACHINE_START_OVERRIDE(psychic5_state,bombsa)
768768
769769   /* video hardware */
trunk/src/mame/drivers/pturn.c
r245142r245143
123123
124124   TILE_GET_INFO_MEMBER(get_tile_info);
125125   TILE_GET_INFO_MEMBER(get_bg_tile_info);
126     
126
127127   DECLARE_DRIVER_INIT(pturn);
128128   virtual void machine_start();
129129   virtual void machine_reset();
130130   virtual void video_start();
131   
131
132132   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
133   
133
134134   INTERRUPT_GEN_MEMBER(sub_intgen);
135135   INTERRUPT_GEN_MEMBER(main_intgen);
136136};
r245142r245143
174174   m_fgmap->set_transparent_pen(0);
175175   m_bgmap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(pturn_state::get_bg_tile_info),this),TILEMAP_SCAN_ROWS,8, 8,32,32*8);
176176   m_bgmap->set_transparent_pen(0);
177   
177
178178   save_item(NAME(m_bgbank));
179179   save_item(NAME(m_fgbank));
180180   save_item(NAME(m_bgpalette));
trunk/src/mame/drivers/re900.c
r245142r245143
101101   UINT8 m_ledant;
102102   UINT8 m_player;
103103   UINT8 m_stat_a;
104   
104
105105   // common
106106   DECLARE_READ8_MEMBER(rom_r);
107107   DECLARE_WRITE8_MEMBER(cpu_port_0_w);
108108   DECLARE_WRITE8_MEMBER(watchdog_reset_w);
109   
109
110110   // re900 specific
111111   DECLARE_READ8_MEMBER(re_psg_portA_r);
112112   DECLARE_READ8_MEMBER(re_psg_portB_r);
113113   DECLARE_WRITE8_MEMBER(re_mux_port_A_w);
114114   DECLARE_WRITE8_MEMBER(re_mux_port_B_w);
115   
115
116116   DECLARE_DRIVER_INIT(re900);
117117};
118118
r245142r245143
432432   m_player = 1;
433433   m_stat_a = 1;
434434   m_psg_pa = m_psg_pb = m_mux_data = m_ledant = 0;
435   
435
436436   save_item(NAME(m_psg_pa));
437437   save_item(NAME(m_psg_pb));
438438   save_item(NAME(m_mux_data));
trunk/src/mame/drivers/rltennis.c
r245142r245143
157157   m_samples_2 = memregion("samples2")->base();
158158   m_gfx =  memregion("gfx1")->base();
159159   m_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(rltennis_state::sample_player),this));
160   
160
161161   save_item(NAME(m_data760000));
162162   save_item(NAME(m_data740000));
163163   save_item(NAME(m_dac_counter));
trunk/src/mame/drivers/sandscrp.c
r245142r245143
102102   UINT8 m_vblank_irq;
103103   UINT8 m_latch1_full;
104104   UINT8 m_latch2_full;
105   
105
106106   DECLARE_READ16_MEMBER(irq_cause_r);
107107   DECLARE_WRITE16_MEMBER(irq_cause_w);
108108   DECLARE_WRITE16_MEMBER(coincounter_w);
r245142r245143
114114   DECLARE_READ8_MEMBER(latchstatus_r);
115115   DECLARE_READ8_MEMBER(soundlatch_r);
116116   DECLARE_WRITE8_MEMBER(soundlatch_w);
117   
117
118118   virtual void machine_start();
119   
119
120120   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
121121   void screen_eof(screen_device &screen, bool state);
122   
122
123123   INTERRUPT_GEN_MEMBER(interrupt);
124124   void update_irq_state();
125125};
r245142r245143
150150void sandscrp_state::machine_start()
151151{
152152   membank("bank1")->configure_entries(0, 8, memregion("audiocpu")->base(), 0x4000);
153   
153
154154   save_item(NAME(m_sprite_irq));
155155   save_item(NAME(m_unknown_irq));
156156   save_item(NAME(m_vblank_irq));
trunk/src/mame/drivers/scobra.c
r245142r245143
12531253
12541254GAME( 1982, mimonkey,  0,        mimonkey,  mimonkey,  scramble_state,  mimonkey,     ROT90,  "Universal Video Games",              "Mighty Monkey", GAME_SUPPORTS_SAVE )
12551255GAME( 1982, mimonsco,  mimonkey, mimonkey,  mimonsco,  scramble_state,  mimonsco,     ROT90,  "bootleg",                            "Mighty Monkey (bootleg on Super Cobra hardware)", GAME_SUPPORTS_SAVE )
1256
trunk/src/mame/drivers/seta.c
r245142r245143
77967796   MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
77977797   MCFG_SETA001_SPRITE_PALETTE("palette")
77987798   MCFG_SETA001_SPRITE_GFXBANK_CB(seta_state, setac_gfxbank_callback)
7799   
7799
78007800   /* video hardware */
78017801   MCFG_SCREEN_ADD("screen", RASTER)
78027802   MCFG_SCREEN_REFRESH_RATE(57.42) /* verified on pcb */
r245142r245143
78577857   MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
78587858   MCFG_SETA001_SPRITE_PALETTE("palette")
78597859   MCFG_SETA001_SPRITE_GFXBANK_CB(seta_state, setac_gfxbank_callback)
7860   
7860
78617861   /* video hardware */
78627862   MCFG_SCREEN_ADD("screen", RASTER)
78637863   MCFG_SCREEN_REFRESH_RATE(60)
r245142r245143
79127912   MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
79137913   MCFG_SETA001_SPRITE_PALETTE("palette")
79147914   MCFG_SETA001_SPRITE_GFXBANK_CB(seta_state, setac_gfxbank_callback)
7915   
7915
79167916   /* video hardware */
79177917   MCFG_SCREEN_ADD("screen", RASTER)
79187918   MCFG_SCREEN_REFRESH_RATE(57.42)  /* verified on pcb */
r245142r245143
79567956   MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
79577957   MCFG_SETA001_SPRITE_PALETTE("palette")
79587958   MCFG_SETA001_SPRITE_GFXBANK_CB(seta_state, setac_gfxbank_callback)
7959   
7959
79607960   /* video hardware */
79617961   MCFG_SCREEN_ADD("screen", RASTER)
79627962   MCFG_SCREEN_REFRESH_RATE(60)
r245142r245143
80408040   MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
80418041   MCFG_SETA001_SPRITE_PALETTE("palette")
80428042   MCFG_SETA001_SPRITE_GFXBANK_CB(seta_state, setac_gfxbank_callback)
8043   
8043
80448044   /* video hardware */
80458045   MCFG_SCREEN_ADD("screen", RASTER)
80468046   MCFG_SCREEN_REFRESH_RATE(60)
r245142r245143
80788078   MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
80798079   MCFG_SETA001_SPRITE_PALETTE("palette")
80808080   MCFG_SETA001_SPRITE_GFXBANK_CB(seta_state, setac_gfxbank_callback)
8081   
8081
80828082   /* video hardware */
80838083   MCFG_SCREEN_ADD("screen", RASTER)
80848084   MCFG_SCREEN_REFRESH_RATE(60)
r245142r245143
81968196   MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
81978197   MCFG_SETA001_SPRITE_PALETTE("palette")
81988198   MCFG_SETA001_SPRITE_GFXBANK_CB(seta_state, setac_gfxbank_callback)
8199   
8199
82008200   /* video hardware */
82018201   MCFG_SCREEN_ADD("screen", RASTER)
82028202   MCFG_SCREEN_REFRESH_RATE(57.42)   /* verified on PCB */
r245142r245143
82358235   MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
82368236   MCFG_SETA001_SPRITE_PALETTE("palette")
82378237   MCFG_SETA001_SPRITE_GFXBANK_CB(seta_state, setac_gfxbank_callback)
8238   
8238
82398239   /* video hardware */
82408240   MCFG_SCREEN_ADD("screen", RASTER)
82418241   MCFG_SCREEN_REFRESH_RATE(57.42)   /* verified on PCB */
r245142r245143
82798279   MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
82808280   MCFG_SETA001_SPRITE_PALETTE("palette")
82818281   MCFG_SETA001_SPRITE_GFXBANK_CB(seta_state, setac_gfxbank_callback)
8282   
8282
82838283   /* video hardware */
82848284   MCFG_SCREEN_ADD("screen", RASTER)
82858285   MCFG_SCREEN_REFRESH_RATE(60)
r245142r245143
83178317   MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
83188318   MCFG_SETA001_SPRITE_PALETTE("palette")
83198319   MCFG_SETA001_SPRITE_GFXBANK_CB(seta_state, setac_gfxbank_callback)
8320   
8320
83218321   /* video hardware */
83228322   MCFG_SCREEN_ADD("screen", RASTER)
83238323   MCFG_SCREEN_REFRESH_RATE(60)
r245142r245143
83688368   MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
83698369   MCFG_SETA001_SPRITE_PALETTE("palette")
83708370   MCFG_SETA001_SPRITE_GFXBANK_CB(seta_state, setac_gfxbank_callback)
8371   
8371
83728372   MCFG_NVRAM_ADD_RANDOM_FILL("nvram")
83738373
83748374   /* video hardware */
r245142r245143
84128412   MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
84138413   MCFG_SETA001_SPRITE_PALETTE("palette")
84148414   MCFG_SETA001_SPRITE_GFXBANK_CB(seta_state, setac_gfxbank_callback)
8415   
8415
84168416   /* video hardware */
84178417   MCFG_SCREEN_ADD("screen", RASTER)
84188418   MCFG_SCREEN_REFRESH_RATE(60)
r245142r245143
84568456   MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
84578457   MCFG_SETA001_SPRITE_PALETTE("palette")
84588458   MCFG_SETA001_SPRITE_GFXBANK_CB(seta_state, setac_gfxbank_callback)
8459   
8459
84608460   /* video hardware */
84618461   MCFG_SCREEN_ADD("screen", RASTER)
84628462   MCFG_SCREEN_REFRESH_RATE(60)
r245142r245143
85228522   MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
85238523   MCFG_SETA001_SPRITE_PALETTE("palette")
85248524   MCFG_SETA001_SPRITE_GFXBANK_CB(seta_state, setac_gfxbank_callback)
8525   
8525
85268526   /* video hardware */
85278527   MCFG_SCREEN_ADD("screen", RASTER)
85288528   MCFG_SCREEN_REFRESH_RATE(60)
r245142r245143
85688568   MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
85698569   MCFG_SETA001_SPRITE_PALETTE("palette")
85708570   MCFG_SETA001_SPRITE_GFXBANK_CB(seta_state, setac_gfxbank_callback)
8571   
8571
85728572   /* video hardware */
85738573   MCFG_SCREEN_ADD("screen", RASTER)
85748574   MCFG_SCREEN_REFRESH_RATE(60)
r245142r245143
86058605   MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
86068606   MCFG_SETA001_SPRITE_PALETTE("palette")
86078607   MCFG_SETA001_SPRITE_GFXBANK_CB(seta_state, setac_gfxbank_callback)
8608   
8608
86098609   /* video hardware */
86108610   MCFG_SCREEN_ADD("screen", RASTER)
86118611   MCFG_SCREEN_REFRESH_RATE(60)
r245142r245143
86518651   MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
86528652   MCFG_SETA001_SPRITE_PALETTE("palette")
86538653   MCFG_SETA001_SPRITE_GFXBANK_CB(seta_state, setac_gfxbank_callback)
8654   
8654
86558655   /* video hardware */
86568656   MCFG_SCREEN_ADD("screen", RASTER)
86578657   MCFG_SCREEN_REFRESH_RATE(60)
r245142r245143
88208820   MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
88218821   MCFG_SETA001_SPRITE_PALETTE("palette")
88228822   MCFG_SETA001_SPRITE_GFXBANK_CB(seta_state, setac_gfxbank_callback)
8823   
8823
88248824   /* video hardware */
88258825   MCFG_SCREEN_ADD("screen", RASTER)
88268826   MCFG_SCREEN_REFRESH_RATE(60)
r245142r245143
88668866   MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
88678867   MCFG_SETA001_SPRITE_PALETTE("palette")
88688868   MCFG_SETA001_SPRITE_GFXBANK_CB(seta_state, setac_gfxbank_callback)
8869   
8869
88708870   /* video hardware */
88718871   MCFG_SCREEN_ADD("screen", RASTER)
88728872   MCFG_SCREEN_REFRESH_RATE(60)
r245142r245143
89158915   MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
89168916   MCFG_SETA001_SPRITE_PALETTE("palette")
89178917   MCFG_SETA001_SPRITE_GFXBANK_CB(seta_state, setac_gfxbank_callback)
8918   
8918
89198919   /* video hardware */
89208920   MCFG_SCREEN_ADD("screen", RASTER)
89218921   MCFG_SCREEN_REFRESH_RATE(56.66) /* between 56 and 57 to match a real PCB's game speed */
r245142r245143
89568956   MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
89578957   MCFG_SETA001_SPRITE_PALETTE("palette")
89588958   MCFG_SETA001_SPRITE_GFXBANK_CB(seta_state, setac_gfxbank_callback)
8959   
8959
89608960   /* video hardware */
89618961   MCFG_SCREEN_ADD("screen", RASTER)
89628962   MCFG_SCREEN_REFRESH_RATE(60)
r245142r245143
89968996   MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
89978997   MCFG_SETA001_SPRITE_PALETTE("palette")
89988998   MCFG_SETA001_SPRITE_GFXBANK_CB(seta_state, setac_gfxbank_callback)
8999   
8999
90009000   /* video hardware */
90019001   MCFG_SCREEN_ADD("screen", RASTER)
90029002   MCFG_SCREEN_REFRESH_RATE(60)
r245142r245143
90779077   MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
90789078   MCFG_SETA001_SPRITE_PALETTE("palette")
90799079   MCFG_SETA001_SPRITE_GFXBANK_CB(seta_state, setac_gfxbank_callback)
9080   
9080
90819081   /* video hardware */
90829082   MCFG_SCREEN_ADD("screen", RASTER)
90839083   MCFG_SCREEN_REFRESH_RATE(60)
r245142r245143
93139313   MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
93149314   MCFG_SETA001_SPRITE_PALETTE("palette")
93159315   MCFG_SETA001_SPRITE_GFXBANK_CB(seta_state, setac_gfxbank_callback)
9316   
9316
93179317   /* video hardware */
93189318   MCFG_SCREEN_ADD("screen", RASTER)
93199319   MCFG_SCREEN_REFRESH_RATE(60)
r245142r245143
93659365   MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
93669366   MCFG_SETA001_SPRITE_PALETTE("palette")
93679367   MCFG_SETA001_SPRITE_GFXBANK_CB(seta_state, setac_gfxbank_callback)
9368   
9368
93699369   /* video hardware */
93709370   MCFG_SCREEN_ADD("screen", RASTER)
93719371   MCFG_SCREEN_REFRESH_RATE(60)
r245142r245143
94119411   MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
94129412   MCFG_SETA001_SPRITE_PALETTE("palette")
94139413   MCFG_SETA001_SPRITE_GFXBANK_CB(seta_state, setac_gfxbank_callback)
9414   
9414
94159415   /* video hardware */
94169416   MCFG_SCREEN_ADD("screen", RASTER)
94179417   MCFG_SCREEN_REFRESH_RATE(60)
r245142r245143
95199519   MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
95209520   MCFG_SETA001_SPRITE_PALETTE("palette")
95219521   MCFG_SETA001_SPRITE_GFXBANK_CB(seta_state, setac_gfxbank_callback)
9522   
9522
95239523   /* video hardware */
95249524   MCFG_SCREEN_ADD("screen", RASTER)
95259525   MCFG_SCREEN_REFRESH_RATE(60)
r245142r245143
95859585   MCFG_SETA001_SPRITE_GFXDECODE("gfxdecode")
95869586   MCFG_SETA001_SPRITE_PALETTE("palette")
95879587   MCFG_SETA001_SPRITE_GFXBANK_CB(seta_state, setac_gfxbank_callback)
9588   
9588
95899589   /* video hardware */
95909590   MCFG_SCREEN_ADD("screen", RASTER)
95919591   MCFG_SCREEN_REFRESH_RATE(60)
trunk/src/mame/drivers/seta2.c
r245142r245143
585585   emu_timer *tm = timer_alloc(0);
586586   tm->adjust(attotime::from_ticks(1, clock()), 0, attotime::from_ticks(1, clock()));
587587   m_tx_cb.resolve_safe();
588   
588
589589   save_item(NAME(m_button_state));
590590   save_item(NAME(m_serial_pos));
591591   save_item(NAME(m_serial));
trunk/src/mame/drivers/shougi.c
r245142r245143
107107   int m_r;
108108   //UINT8 *m_cpu_sharedram;
109109   //UINT8 m_cpu_sharedram_control_val;
110   
110
111111   DECLARE_WRITE8_MEMBER(cpu_sharedram_sub_w);
112112   DECLARE_WRITE8_MEMBER(cpu_sharedram_main_w);
113113   DECLARE_READ8_MEMBER(cpu_sharedram_r);
r245142r245143
118118   DECLARE_WRITE8_MEMBER(nmi_disable_and_clear_line_w);
119119   DECLARE_WRITE8_MEMBER(nmi_enable_w);
120120   DECLARE_READ8_MEMBER(dummy_r);
121   
121
122122   DECLARE_PALETTE_INIT(shougi);
123123   virtual void machine_start();
124   
124
125125   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
126   
126
127127   INTERRUPT_GEN_MEMBER(vblank_nmi);
128128};
129129
trunk/src/mame/drivers/sidearms.c
r245142r245143
4343
4444void sidearms_state::machine_start()
4545{
46    membank("bank1")->configure_entries(0, 16, memregion("maincpu")->base() + 0x8000, 0x4000);
46   membank("bank1")->configure_entries(0, 16, memregion("maincpu")->base() + 0x8000, 0x4000);
4747}
4848
4949WRITE8_MEMBER(sidearms_state::bankswitch_w)
5050{
51    membank("bank1")->set_entry(data & 0x07);
51   membank("bank1")->set_entry(data & 0x07);
5252}
5353
5454
r245142r245143
119119
120120WRITE8_MEMBER(sidearms_state::whizz_bankswitch_w)
121121{
122    int bank = 0;
122   int bank = 0;
123123   switch (data & 0xC0)
124124   {
125125      case 0x00 : bank = 0;   break;
r245142r245143
127127      case 0x80 : bank = 1;   break;
128128      case 0xC0 : bank = 3;   break;
129129   }
130    membank("bank1")->set_entry(bank);
130   membank("bank1")->set_entry(bank);
131131}
132132
133133static ADDRESS_MAP_START( whizz_map, AS_PROGRAM, 8, sidearms_state )
trunk/src/mame/drivers/simple_st0016.c
r245142r245143
3333
3434void st0016_state::machine_start()
3535{
36    membank("bank1")->configure_entries(0, 256, memregion("maincpu")->base(), 0x4000);
36   membank("bank1")->configure_entries(0, 256, memregion("maincpu")->base(), 0x4000);
3737}
3838
3939static ADDRESS_MAP_START( st0016_mem, AS_PROGRAM, 8, st0016_state )
r245142r245143
8181
8282WRITE8_MEMBER(st0016_state::st0016_rom_bank_w)
8383{
84    membank("bank1")->set_entry(data);
85    // st0016_rom_bank = data;
84   membank("bank1")->set_entry(data);
85   // st0016_rom_bank = data;
8686}
8787
8888static ADDRESS_MAP_START( st0016_io, AS_IO, 8, st0016_state )
trunk/src/mame/drivers/sothello.c
r245142r245143
7272   DECLARE_READ8_MEMBER(subcpu_status_r);
7373   DECLARE_WRITE8_MEMBER(msm_cfg_w);
7474
75    virtual void machine_start();
75   virtual void machine_start();
7676   virtual void machine_reset();
7777   TIMER_CALLBACK_MEMBER(subcpu_suspend);
7878   TIMER_CALLBACK_MEMBER(subcpu_resume);
r245142r245143
101101
102102void sothello_state::machine_start()
103103{
104    membank("bank1")->configure_entries(0, 4, memregion("maincpu")->base() + 0x8000, 0x4000);
104   membank("bank1")->configure_entries(0, 4, memregion("maincpu")->base() + 0x8000, 0x4000);
105105}
106106
107107WRITE8_MEMBER(sothello_state::bank_w)
r245142r245143
114114      case 4: bank=2; break;
115115      case 8: bank=3; break;
116116   }
117    membank("bank1")->set_entry(bank);
117   membank("bank1")->set_entry(bank);
118118}
119119
120120TIMER_CALLBACK_MEMBER(sothello_state::subcpu_suspend)
trunk/src/mame/drivers/speglsht.c
r245142r245143
134134   DECLARE_READ32_MEMBER(irq_ack_clear);
135135   DECLARE_DRIVER_INIT(speglsht);
136136   DECLARE_MACHINE_RESET(speglsht);
137    virtual void machine_start();
137   virtual void machine_start();
138138   DECLARE_VIDEO_START(speglsht);
139139   UINT32 screen_update_speglsht(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
140140   required_device<palette_device> m_palette;
r245142r245143
160160
161161void speglsht_state::machine_start()
162162{
163    membank("bank1")->configure_entries(0, 256, memregion("maincpu")->base(), 0x4000);
163   membank("bank1")->configure_entries(0, 256, memregion("maincpu")->base(), 0x4000);
164164}
165165
166166// common rombank? should go in machine/st0016 with larger address space exposed?
167167WRITE8_MEMBER(speglsht_state::st0016_rom_bank_w)
168168{
169    membank("bank1")->set_entry(data);
169   membank("bank1")->set_entry(data);
170170}
171171
172172
trunk/src/mame/drivers/srmp2.c
r245142r245143
8383MACHINE_START_MEMBER(srmp2_state,srmp2)
8484{
8585   machine_start();
86   
86
8787   m_iox.reset = 0x1f;
8888   m_iox.ff_event = -1;
8989   m_iox.ff_1 = 0x00;
r245142r245143
9292   m_iox.protcheck[1] = -1;   m_iox.protlatch[1] = -1;
9393   m_iox.protcheck[2] = -1;   m_iox.protlatch[2] = -1;
9494   m_iox.protcheck[3] = -1;   m_iox.protlatch[3] = -1;
95   
95
9696   save_item(NAME(m_color_bank));
9797}
9898
9999MACHINE_START_MEMBER(srmp2_state,srmp3)
100100{
101101   machine_start();
102   
102
103103   m_iox.reset = 0xc8;
104104   m_iox.ff_event = 0xef;
105105   m_iox.ff_1 = -1;
r245142r245143
107107   m_iox.protcheck[1] = 0x4c; m_iox.protlatch[1] = 0x00;
108108   m_iox.protcheck[2] = 0x1c; m_iox.protlatch[2] = 0x04;
109109   m_iox.protcheck[3] = 0x45; m_iox.protlatch[3] = 0x00;
110   
111    membank("bank1")->configure_entries(0, 16, memregion("maincpu")->base(), 0x2000);
112   
110
111   membank("bank1")->configure_entries(0, 16, memregion("maincpu")->base(), 0x2000);
112
113113   save_item(NAME(m_gfx_bank));
114114}
115115
116116MACHINE_START_MEMBER(srmp2_state,rmgoldyh)
117117{
118118   machine_start();
119   
119
120120   m_iox.reset = 0xc8;
121121   m_iox.ff_event = 0xff;
122122   m_iox.ff_1 = -1;
r245142r245143
125125   m_iox.protcheck[2] = -1;   m_iox.protlatch[2] = -1;
126126   m_iox.protcheck[3] = -1;   m_iox.protlatch[3] = -1;
127127
128    membank("bank1")->configure_entries(0, 32, memregion("maincpu")->base(), 0x2000);
129   
128   membank("bank1")->configure_entries(0, 32, memregion("maincpu")->base(), 0x2000);
129
130130   save_item(NAME(m_gfx_bank));
131131}
132132
133133MACHINE_START_MEMBER(srmp2_state,mjyuugi)
134134{
135135   machine_start();
136   
136
137137   m_iox.reset = 0x1f;
138138   m_iox.ff_event = -1;
139139   m_iox.ff_1 = 0x00;
trunk/src/mame/drivers/srmp5.c
r245142r245143
114114   DECLARE_READ8_MEMBER(cmd1_r);
115115   DECLARE_READ8_MEMBER(cmd2_r);
116116   DECLARE_READ8_MEMBER(cmd_stat8_r);
117    virtual void machine_start();
117   virtual void machine_start();
118118   DECLARE_DRIVER_INIT(srmp5);
119119   UINT32 screen_update_srmp5(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
120120
r245142r245143
240240
241241void srmp5_state::machine_start()
242242{
243    membank("bank1")->configure_entries(0, 256, memregion("maincpu")->base(), 0x4000);
243   membank("bank1")->configure_entries(0, 256, memregion("maincpu")->base(), 0x4000);
244244}
245245
246246WRITE32_MEMBER(srmp5_state::bank_w)
r245142r245143
400400// common rombank? should go in machine/st0016 with larger address space exposed?
401401WRITE8_MEMBER(srmp5_state::st0016_rom_bank_w)
402402{
403    membank("bank1")->set_entry(data);
403   membank("bank1")->set_entry(data);
404404}
405405
406406
trunk/src/mame/drivers/srmp6.c
r245142r245143
107107   DECLARE_WRITE16_MEMBER(paletteram_w);
108108   DECLARE_READ16_MEMBER(srmp6_irq_ack_r);
109109   DECLARE_DRIVER_INIT(INIT);
110    virtual void machine_start();
110   virtual void machine_start();
111111   virtual void video_start();
112112   UINT32 screen_update_srmp6(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
113113   void update_palette();
r245142r245143
309309
310310void srmp6_state::machine_start()
311311{
312    membank("bank1")->configure_entries(0, 16, memregion("nile")->base(), 0x200000);
312   membank("bank1")->configure_entries(0, 16, memregion("nile")->base(), 0x200000);
313313}
314314
315315WRITE16_MEMBER(srmp6_state::srmp6_input_select_w)
r245142r245143
340340   {
341341      case 0x5e/2: // bank switch, used by ROM check
342342      {
343            LOG(("%x\n",data));
344            membank("bank1")->set_entry(data & 0x0f);
343         LOG(("%x\n",data));
344         membank("bank1")->set_entry(data & 0x0f);
345345         break;
346346      }
347347
trunk/src/mame/drivers/srumbler.c
r245142r245143
3232
3333   for (int i = 0x05;i < 0x10;i++)
3434   {
35        /* bit 2 of prom1 selects ROM or RAM - not supported */
35      /* bit 2 of prom1 selects ROM or RAM - not supported */
3636      int bank = ((prom1[i] & 0x03) << 4) | (prom2[i] & 0x0f);
3737
38        char bankname[10];
38      char bankname[10];
3939      sprintf(bankname, "%04x", i*0x1000);
40        membank(bankname)->set_entry(bank);
40      membank(bankname)->set_entry(bank);
4141   }
4242}
4343
4444void srumbler_state::machine_start()
4545{
46    for (int i = 0x05; i < 0x10; i++)
46   for (int i = 0x05; i < 0x10; i++)
4747   {
48        char bankname[10];
48      char bankname[10];
4949      sprintf(bankname, "%04x", i*0x1000);
50        membank(bankname)->configure_entries(0, 64, memregion("user1")->base(), 0x1000);
50      membank(bankname)->configure_entries(0, 64, memregion("user1")->base(), 0x1000);
5151   }
5252
53    /* initialize banked ROM pointers */
53   /* initialize banked ROM pointers */
5454   bankswitch_w(m_maincpu->space(AS_PROGRAM), 0, 0);
5555}
5656
trunk/src/mame/drivers/sstrangr.c
r245142r245143
2424   required_device<cpu_device> m_maincpu;
2525
2626   required_shared_ptr<UINT8> m_ram;
27   
27
2828   UINT8 m_flip_screen;
29   
29
3030   DECLARE_WRITE8_MEMBER(port_w);
31   
31
3232   virtual void video_start();
33   
33
3434   UINT32 screen_update_sstrangr(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
3535   UINT32 screen_update_sstrngr2(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
3636};
trunk/src/mame/drivers/ssv.c
r245142r245143
24912491                        ( (i & 1) ? (8 << 16) : 0 ) ;
24922492   enable_video(1);
24932493   m_interrupt_ultrax = interrupt_ultrax;
2494   
2494
24952495   save_item(NAME(m_requested_int));
24962496   save_item(NAME(m_irq_enable));
24972497}
trunk/src/mame/drivers/sub.c
r245142r245143
139139   required_shared_ptr<UINT8> m_spriteram;
140140   required_shared_ptr<UINT8> m_spriteram2;
141141   required_shared_ptr<UINT8> m_scrolly;
142   
142
143143   UINT8 m_nmi_en;
144   
144
145145   DECLARE_WRITE8_MEMBER(to_sound_w);
146146   DECLARE_WRITE8_MEMBER(nmi_mask_w);
147   
147
148148   virtual void machine_start();
149149   DECLARE_PALETTE_INIT(sub);
150   
150
151151   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
152152   INTERRUPT_GEN_MEMBER(sound_irq);
153153};
trunk/src/mame/drivers/suna16.c
r245142r245143
215215
216216MACHINE_START_MEMBER(suna16_state,bestbest)
217217{
218    save_item(NAME(m_prot));
218   save_item(NAME(m_prot));
219219}
220220
221221
r245142r245143
294294
295295MACHINE_START_MEMBER(suna16_state, bssoccer)
296296{
297    membank("bank1")->configure_entries(0, 8, memregion("pcm1")->base() + 0x1000, 0x10000);
298    membank("bank2")->configure_entries(0, 8, memregion("pcm2")->base() + 0x1000, 0x10000);
297   membank("bank1")->configure_entries(0, 8, memregion("pcm1")->base() + 0x1000, 0x10000);
298   membank("bank2")->configure_entries(0, 8, memregion("pcm2")->base() + 0x1000, 0x10000);
299299}
300300
301301/* Bank Switching */
r245142r245143
304304{
305305   const int bank = data & 7;
306306   if (bank & ~7)  logerror("CPU#2 PC %06X - ROM bank unknown bits: %02X\n", space.device().safe_pc(), data);
307    printf("%d %d\n", 1, bank);
308    membank("bank1")->set_entry(bank);
307   printf("%d %d\n", 1, bank);
308   membank("bank1")->set_entry(bank);
309309}
310310
311311WRITE8_MEMBER(suna16_state::bssoccer_pcm_2_bankswitch_w)
312312{
313313   const int bank = data & 7;
314314   if (bank & ~7)  logerror("CPU#3 PC %06X - ROM bank unknown bits: %02X\n", space.device().safe_pc(), data);
315    printf("%d %d\n", 2, bank);
316    membank("bank2")->set_entry(bank);
315   printf("%d %d\n", 2, bank);
316   membank("bank2")->set_entry(bank);
317317}
318318
319319
r245142r245143
378378{
379379   const int bank = data & 1;
380380   if (bank & ~1)  logerror("CPU#2 PC %06X - ROM bank unknown bits: %02X\n", space.device().safe_pc(), data);
381    membank("bank1")->set_entry(bank);
381   membank("bank1")->set_entry(bank);
382382}
383383
384384/* Memory maps: Yes, *no* RAM */
r245142r245143
398398
399399MACHINE_START_MEMBER(suna16_state,uballoon)
400400{
401    membank("bank1")->configure_entries(0, 2, memregion("pcm1")->base() + 0x400, 0x10000);
402   
401   membank("bank1")->configure_entries(0, 2, memregion("pcm1")->base() + 0x400, 0x10000);
402
403403   save_item(NAME(m_prot));
404404}
405405
r245142r245143
828828
829829   MCFG_QUANTUM_TIME(attotime::from_hz(6000))
830830
831    MCFG_MACHINE_START_OVERRIDE(suna16_state,bssoccer)
831   MCFG_MACHINE_START_OVERRIDE(suna16_state,bssoccer)
832832
833833   /* video hardware */
834834   MCFG_SCREEN_ADD("screen", RASTER)
r245142r245143
887887
888888   MCFG_QUANTUM_TIME(attotime::from_hz(6000))
889889
890    MCFG_MACHINE_START_OVERRIDE(suna16_state,uballoon)
890   MCFG_MACHINE_START_OVERRIDE(suna16_state,uballoon)
891891   MCFG_MACHINE_RESET_OVERRIDE(suna16_state,uballoon)
892892
893893   /* video hardware */
r245142r245143
992992   /* 2nd PCM Z80 missing */
993993
994994   MCFG_QUANTUM_TIME(attotime::from_hz(6000))
995   
995
996996   MCFG_MACHINE_START_OVERRIDE(suna16_state, bestbest)
997997
998998   /* video hardware */
trunk/src/mame/drivers/suna8.c
r245142r245143
735735   AM_RANGE(0xc060, 0xc060) AM_WRITE(brickzn_rombank_w     )   // ROM Bank
736736   AM_RANGE(0xc080, 0xc080) AM_WRITE(brickzn_leds_w        )   // Leds
737737   AM_RANGE(0xc0a0, 0xc0a0) AM_WRITE(brickzn_palbank_w     )   // Palette RAM Bank
738//   AM_RANGE(0xc0c0, 0xc0c0) AM_WRITE(brickzn_prot2_w       )   // Protection 2
738//  AM_RANGE(0xc0c0, 0xc0c0) AM_WRITE(brickzn_prot2_w       )   // Protection 2
739739
740740   AM_RANGE(0xc100, 0xc100) AM_READ_PORT("P1")                 // P1 (Buttons)
741741   AM_RANGE(0xc101, 0xc101) AM_READ_PORT("P2")                 // P2 (Buttons)
r245142r245143
771771   else if (protselect == 0x90)
772772   {
773773      /*
774         0d   brick hit      NO!      25?
775         2c   side wall hit   OK
776         3b   paddle hit      OK
777         44   death         OK?
778         53   death         OK?
779         56   coin in         OK?
780         70   monster hit      NO?      58?
774          0d  brick hit       NO!     25?
775          2c  side wall hit   OK
776          3b  paddle hit      OK
777          44  death           OK?
778          53  death           OK?
779          56  coin in         OK?
780          70  monster hit     NO?     58?
781781      */
782782      UINT8 remap = (m_remap_sound ? BITSWAP8(data, 7,6,3,4,5,2,1,0) : data);
783783
r245142r245143
19751975MACHINE_RESET_MEMBER(suna8_state,brickzn)
19761976{
19771977   m_protection_val = m_prot2 = m_prot2_prev = 0xff;
1978   m_paletteram_enab = 1;   // for brickzn11
1978   m_paletteram_enab = 1;  // for brickzn11
19791979   m_remap_sound = 0;
19801980   membank("bank1")->set_entry(0);
19811981}
r245142r245143
20152015   /* sound hardware */
20162016   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
20172017
2018   MCFG_SOUND_ADD("ymsnd", YM3812, SUNA8_MASTER_CLOCK / 8)      // 3MHz (measured)
2018   MCFG_SOUND_ADD("ymsnd", YM3812, SUNA8_MASTER_CLOCK / 8)     // 3MHz (measured)
20192019   MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
20202020   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
20212021   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
20222022
2023   MCFG_SOUND_ADD("aysnd", AY8910, SUNA8_MASTER_CLOCK / 16)   // 1.5MHz (measured)
2023   MCFG_SOUND_ADD("aysnd", AY8910, SUNA8_MASTER_CLOCK / 16)    // 1.5MHz (measured)
20242024   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.33)
20252025   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.33)
20262026
trunk/src/mame/drivers/supdrapo.c
r245142r245143
8282   required_device<cpu_device> m_maincpu;
8383   required_device<gfxdecode_device> m_gfxdecode;
8484   required_device<palette_device> m_palette;
85   
85
8686   required_shared_ptr<UINT8> m_col_line;
8787   required_shared_ptr<UINT8> m_videoram;
8888   required_shared_ptr<UINT8> m_char_bank;
89   
89
9090   UINT8 m_wdog;
91   
91
9292   DECLARE_READ8_MEMBER(rng_r);
9393   DECLARE_WRITE8_MEMBER(wdog8000_w);
9494   DECLARE_WRITE8_MEMBER(debug8004_w);
r245142r245143
9797   DECLARE_WRITE8_MEMBER(payout_w);
9898   DECLARE_WRITE8_MEMBER(ay8910_outputa_w);
9999   DECLARE_WRITE8_MEMBER(ay8910_outputb_w);
100   
100
101101   virtual void machine_start();
102102   virtual void machine_reset();
103103   virtual void video_start();
104104   DECLARE_PALETTE_INIT(supdrapo);
105   
105
106106   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
107107};
108108
trunk/src/mame/drivers/supertnk.c
r245142r245143
124124   DECLARE_WRITE8_MEMBER(supertnk_bitplane_select_0_w);
125125   DECLARE_WRITE8_MEMBER(supertnk_bitplane_select_1_w);
126126   DECLARE_DRIVER_INIT(supertnk);
127    virtual void machine_start();
127   virtual void machine_start();
128128   virtual void machine_reset();
129129   virtual void video_start();
130130   UINT32 screen_update_supertnk(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
r245142r245143
135135
136136void supertnk_state::machine_start()
137137{
138    membank("bank1")->configure_entries(0, 4, memregion("maincpu")->base() + 0x10000, 0x1000);
138   membank("bank1")->configure_entries(0, 4, memregion("maincpu")->base() + 0x10000, 0x1000);
139139}
140140
141141
r245142r245143
148148WRITE8_MEMBER(supertnk_state::supertnk_bankswitch_0_w)
149149{
150150   m_rom_bank = (m_rom_bank & 0x02) | ((data << 0) & 0x01);
151    membank("bank1")->set_entry(m_rom_bank);
151   membank("bank1")->set_entry(m_rom_bank);
152152}
153153
154154
155155WRITE8_MEMBER(supertnk_state::supertnk_bankswitch_1_w)
156156{
157157   m_rom_bank = (m_rom_bank & 0x01) | ((data << 1) & 0x02);
158    membank("bank1")->set_entry(m_rom_bank);
158   membank("bank1")->set_entry(m_rom_bank);
159159}
160160
161161
trunk/src/mame/drivers/superwng.c
r245142r245143
1010TODO:
1111- unused rom 6.8s (located on the pcb near the gfx rom 7.8p, but contains
1212  data (similar to the one in roms 4.5p and 5.5r)
13 
13
1414  The game currently crashes after the bonus round rather than moving on to
1515  the next level, it writes 01 to 0xa187 which is probably ROM bank, however
1616  banking the ROM in there results in the game crashing anyway, and looking
r245142r245143
101101
102102WRITE8_MEMBER(superwng_state::superwng_unk_a185_w)
103103{
104//   printf("superwng_unk_a185_w %02x\n", data);
104//  printf("superwng_unk_a185_w %02x\n", data);
105105}
106106
107107TILE_GET_INFO_MEMBER(superwng_state::get_bg_tile_info)
r245142r245143
456456   save_item(NAME(m_tile_bank));
457457   save_item(NAME(m_sound_byte));
458458   save_item(NAME(m_nmi_enable));
459    membank("bank1")->configure_entries(0, 2, memregion("maincpu")->base()+0x4000, 0x4000);
459   membank("bank1")->configure_entries(0, 2, memregion("maincpu")->base()+0x4000, 0x4000);
460460}
461461
462462void superwng_state::machine_reset()
trunk/src/mame/drivers/suprgolf.c
r245142r245143
6060   UINT8 m_palette_switch;
6161   UINT8 m_bg_vreg_test;
6262   UINT8 m_toggle;
63   
63
6464   DECLARE_READ8_MEMBER(videoram_r);
6565   DECLARE_WRITE8_MEMBER(videoram_w);
6666   DECLARE_READ8_MEMBER(bg_vram_r);
r245142r245143
7878   DECLARE_WRITE8_MEMBER(writeA);
7979   DECLARE_WRITE8_MEMBER(writeB);
8080   DECLARE_WRITE_LINE_MEMBER(adpcm_int);
81   
81
8282   TILE_GET_INFO_MEMBER(get_tile_info);
8383
8484   DECLARE_DRIVER_INIT(suprgolf);
85    virtual void machine_start();
85   virtual void machine_start();
8686   virtual void machine_reset();
8787   virtual void video_start();
88   
88
8989   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
9090};
9191
r245142r245143
109109   m_fg_fb = auto_alloc_array(machine(), UINT16, 0x2000*0x20);
110110
111111   m_tilemap->set_transparent_pen(15);
112   
112
113113   save_item(NAME(m_bg_bank));
114114   save_item(NAME(m_vreg_bank));
115115   save_item(NAME(m_vreg_pen));
r245142r245143
267267
268268void suprgolf_state::machine_start()
269269{
270    membank("bank1")->configure_entries(0, 16, memregion("user2")->base(), 0x4000);
271    membank("bank2")->configure_entries(0, 64, memregion("user1")->base(), 0x4000);
272   
270   membank("bank1")->configure_entries(0, 16, memregion("user2")->base(), 0x4000);
271   membank("bank2")->configure_entries(0, 64, memregion("user1")->base(), 0x4000);
272
273273   save_item(NAME(m_rom_bank));
274274   save_item(NAME(m_msm5205next));
275275   save_item(NAME(m_msm_nmi_mask));
r245142r245143
293293
294294WRITE8_MEMBER(suprgolf_state::rom_bank_select_w)
295295{
296    m_rom_bank = data;
296   m_rom_bank = data;
297297
298    //popmessage("%08x %02x",((data & 0x3f) * 0x4000),data);
299    //osd_printf_debug("ROM_BANK 0x8000 - %X @%X\n",data,space.device().safe_pcbase());
300    membank("bank2")->set_entry(data & 0x3f);
298   //popmessage("%08x %02x",((data & 0x3f) * 0x4000),data);
299   //osd_printf_debug("ROM_BANK 0x8000 - %X @%X\n",data,space.device().safe_pcbase());
300   membank("bank2")->set_entry(data & 0x3f);
301301
302302   m_msm_nmi_mask = data & 0x40;
303303   flip_screen_set(data & 0x80);
r245142r245143
305305
306306WRITE8_MEMBER(suprgolf_state::rom2_bank_select_w)
307307{
308    //osd_printf_debug("ROM_BANK 0x4000 - %X @%X\n",data,space.device().safe_pcbase());
309    membank("bank1")->set_entry(data & 0x0f);
310   
308   //osd_printf_debug("ROM_BANK 0x4000 - %X @%X\n",data,space.device().safe_pcbase());
309   membank("bank1")->set_entry(data & 0x0f);
310
311311   if(data & 0xf0)
312312      printf("Rom bank select 2 with data %02x activated\n",data);
313313}
trunk/src/mame/drivers/suprslam.c
r245142r245143
115115
116116WRITE8_MEMBER(suprslam_state::suprslam_sh_bankswitch_w)
117117{
118    membank("bank1")->set_entry(data & 0x03);
118   membank("bank1")->set_entry(data & 0x03);
119119}
120120
121121/*** MEMORY MAPS *************************************************************/
r245142r245143
285285   save_item(NAME(m_bg_bank));
286286   save_item(NAME(m_pending_command));
287287
288    membank("bank1")->configure_entries(0, 4, memregion("audiocpu")->base() + 0x10000, 0x8000);
288   membank("bank1")->configure_entries(0, 4, memregion("audiocpu")->base() + 0x10000, 0x8000);
289289}
290290
291291void suprslam_state::machine_reset()
trunk/src/mame/drivers/tankbust.c
r245142r245143
2424
2525void tankbust_state::machine_start()
2626{
27    membank("bank1")->configure_entries(0, 2, memregion("maincpu")->base() + 0x10000, 0x4000);
28    membank("bank2")->configure_entries(0, 2, memregion("maincpu")->base() + 0x18000, 0x2000);
29   
27   membank("bank1")->configure_entries(0, 2, memregion("maincpu")->base() + 0x10000, 0x4000);
28   membank("bank2")->configure_entries(0, 2, memregion("maincpu")->base() + 0x18000, 0x2000);
29
3030   save_item(NAME(m_latch));
3131   save_item(NAME(m_timer1));
3232   save_item(NAME(m_e0xx_data));
r245142r245143
107107
108108   case 7: /* 0xe007 bankswitch */
109109      /* bank 1 at 0x6000-9fff = from 0x10000 when bit0=0 else from 0x14000 */
110        membank("bank1")->set_entry(data & 1);
110      membank("bank1")->set_entry(data & 1);
111111
112112      /* bank 2 at 0xa000-bfff = from 0x18000 when bit0=0 else from 0x1a000 */
113113      membank("bank2")->set_entry(data & 1); /* verified (the game will reset after the "game over" otherwise) */
trunk/src/mame/drivers/taotaido.c
r245142r245143
7676void taotaido_state::machine_start()
7777{
7878   membank("soundbank")->configure_entries(0, 4, memregion("audiocpu")->base(), 0x8000);
79   
79
8080   save_item(NAME(m_pending_command));
8181}
8282
trunk/src/mame/drivers/tbowl.c
r245142r245143
418418{
419419   membank("mainbank")->configure_entries(0, 32, memregion("maincpu")->base() + 0x10000, 0x800);
420420   membank("subbank")->configure_entries(0, 32, memregion("sub")->base() + 0x10000, 0x800);
421   
421
422422   save_item(NAME(m_adpcm_pos));
423423   save_item(NAME(m_adpcm_end));
424424   save_item(NAME(m_adpcm_data));
trunk/src/mame/drivers/tgtpanic.c
r245142r245143
2424
2525   required_device<cpu_device> m_maincpu;
2626   required_device<screen_device> m_screen;
27   
27
2828   required_shared_ptr<UINT8> m_ram;
29   
29
3030   UINT8 m_color;
31   
31
3232   DECLARE_WRITE8_MEMBER(color_w);
33   
33
3434   virtual void machine_start();
35   
35
3636   UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
3737};
3838
trunk/src/mame/drivers/thunderx.c
r245142r245143
317317WRITE8_MEMBER(thunderx_state::scontra_bankswitch_w)
318318{
319319   // bits 0-3 select ROM bank at 6000-7fff
320    m_rombank->set_entry(data & 0x0f);
320   m_rombank->set_entry(data & 0x0f);
321321
322322   // bit 4 selects work RAM or palette RAM at 5800-5fff
323323   m_bank5800->set_bank((data & 0x10) >> 4);
trunk/src/mame/drivers/toaplan2.c
r245142r245143
53705370GAME( 1996, bgareggat2, bgaregga, bgaregga, bgaregga, toaplan2_state,   bgaregga, ROT270, "Raizing / Eighting", "Battle Garegga - Type 2 (Europe / USA / Japan / Asia) (Sat Mar 2 1996)" , GAME_SUPPORTS_SAVE ) // displays Type 2 only when set to Europe
53715371GAME( 1996, bgareggacn, bgaregga, bgaregga, bgareggacn, toaplan2_state, bgaregga, ROT270, "Raizing / Eighting", "Battle Garegga - Type 2 (Denmark / China) (Tue Apr 2 1996)", GAME_SUPPORTS_SAVE ) // displays Type 2 only when set to Denmark
53725372GAME( 1996, bgareggabl, bgaregga, bgareggabl,bgareggacn, toaplan2_state,bgaregga, ROT270, "bootleg", "1945 Part-2 (Chinese hack of Battle Garegga)", GAME_SUPPORTS_SAVE )
5373GAME( 1996, bgareggabla,bgaregga, bgareggabl,bgareggacn, toaplan2_state,bgaregga, ROT270, "bootleg", "Thunder Deity Biography (Chinese hack of Battle Garegga)", GAME_SUPPORTS_SAVE )
5373GAME( 1996, bgareggabla,bgaregga, bgareggabl,bgareggacn, toaplan2_state,bgaregga, ROT270, "bootleg", "Lei Shen Zhuan Thunder Deity Biography (Chinese hack of Battle Garegga)", GAME_SUPPORTS_SAVE )
53745374
53755375// these are all based on Version B, even if only the Japan version states 'version B'
53765376GAME( 1998, batrider,   0,        batrider, batrider, toaplan2_state,  batrider, ROT270, "Raizing / Eighting", "Armed Police Batrider (Europe) (Fri Feb 13 1998)", GAME_SUPPORTS_SAVE )
trunk/src/mame/drivers/tryout.c
r245142r245143
4545
4646void tryout_state::machine_start()
4747{
48    membank("bank1")->configure_entries(0, 2, memregion("maincpu")->base() + 0x10000, 0x2000);
48   membank("bank1")->configure_entries(0, 2, memregion("maincpu")->base() + 0x10000, 0x2000);
4949}
5050
5151WRITE8_MEMBER(tryout_state::bankswitch_w)
5252{
53    membank("bank1")->set_entry(data & 0x01);
53   membank("bank1")->set_entry(data & 0x01);
5454}
5555
5656static ADDRESS_MAP_START( main_cpu, AS_PROGRAM, 8, tryout_state )
trunk/src/mame/drivers/tsamurai.c
r245142r245143
711711
712712   MCFG_CPU_ADD("audio2", Z80, XTAL_24MHz/8)
713713   MCFG_CPU_PROGRAM_MAP(sound2_map)
714   
714
715715   MCFG_MACHINE_START_OVERRIDE(tsamurai_state,tsamurai)
716716
717717   /* video hardware */
r245142r245143
752752   MCFG_CPU_PROGRAM_MAP(sound_vsgongf_map)
753753   MCFG_CPU_IO_MAP(vsgongf_audio_io_map)
754754   MCFG_CPU_PERIODIC_INT_DRIVER(tsamurai_state, vsgongf_sound_interrupt, 3*60)
755   
755
756756   MCFG_MACHINE_START_OVERRIDE(tsamurai_state,vsgongf)
757757
758758   /* video hardware */
r245142r245143
797797   MCFG_CPU_PROGRAM_MAP(sound3_m660_map)
798798   MCFG_CPU_IO_MAP(sound3_m660_io_map)
799799   MCFG_CPU_VBLANK_INT_DRIVER("screen", tsamurai_state,  nmi_line_pulse)
800   
800
801801   MCFG_MACHINE_START_OVERRIDE(tsamurai_state,m660)
802802
803803   /* video hardware */
trunk/src/mame/drivers/ttchamp.c
r245142r245143
5151
5252
5353
54- works in a very similar way to 'Spider' (twins.c)
54- works in a very similar way to 'Spider' (twins.c)
5555  including the blitter (seems to be doubled up hardware tho, twice as many layers?)
5656- need to work out how it selects between upper/lower
5757  program roms as blitter source
r245142r245143
8585
8686   DECLARE_WRITE16_MEMBER(port20_w);
8787   DECLARE_WRITE16_MEMBER(port62_w);
88   
88
8989   DECLARE_READ16_MEMBER(port1e_r);
9090
9191
9292   UINT16 m_port10;
93   UINT8 m_rombank;
9394
9495   DECLARE_DRIVER_INIT(ttchamp);
9596
r245142r245143
99100   DECLARE_WRITE16_MEMBER(ttchamp_mem_w);
100101
101102   UINT16 m_videoram0[0x10000 / 2];
102//   UINT16 m_videoram1[0x10000 / 2];
103//  UINT16 m_videoram1[0x10000 / 2];
103104   UINT16 m_videoram2[0x10000 / 2];
104105
105106
106107
107
108108   UINT16 m_mainram[0x10000 / 2];
109109
110110   int m_spritesinit;
r245142r245143
130130
131131void ttchamp_state::video_start()
132132{
133
134133}
135134
136135UINT32 ttchamp_state::screen_update_ttchamp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
r245142r245143
143142   bitmap.fill(m_palette->black_pen());
144143   UINT8 *videoramfg;
145144   UINT8* videorambg;
146   
145
147146   count=0;
148147   videorambg = (UINT8*)m_videoram0;
149148   videoramfg = (UINT8*)m_videoram2;
r245142r245143
156155         count++;
157156      }
158157   }
159   
158
160159   /*
161160   count=0;
162161   videoram = (UINT8*)m_videoram1;
163162   for (y=0;y<yyy;y++)
164163   {
165      for(x=0;x<xxx;x++)
166      {
167         UINT8 pix = videoram[BYTE_XOR_LE(count)];
168         if (pix) bitmap.pix16(y, x) = pix+0x200;
169         count++;
170      }
164       for(x=0;x<xxx;x++)
165       {
166           UINT8 pix = videoram[BYTE_XOR_LE(count)];
167           if (pix) bitmap.pix16(y, x) = pix+0x200;
168           count++;
169       }
171170   }
172171   */
173   
172
174173   count=0;
175174   for (y=0;y<yyy;y++)
176175   {
r245142r245143
204203         count++;
205204      }
206205   }
207   
206
208207#if 0
209208   for (int i = 0; i < 0x8000; i++)
210209   {
r245142r245143
212211      // I think it actually does more blit operations with
213212      // different bits of m_port10 set to redraw the backgrounds using the video ram data as a source rather than ROM - notice the garbage you see behind 'sprites' right now
214213      // this method also removes the text layer, which we don't want
215   //   m_videoram1[i] = 0x0000;
216   //   m_videoram2[i] = 0x0000;
214   //  m_videoram1[i] = 0x0000;
215   //  m_videoram2[i] = 0x0000;
217216   }
218217#endif
219   
218
220219   return 0;
221220}
222221
r245142r245143
289288
290289   if (m_spritesinit == 1)
291290   {
292   //   printf("%06x: spider_blitter_w %08x %04x %04x (init?) (base?)\n", space.device().safe_pc(), offset * 2, data, mem_mask);
291   //  printf("%06x: spider_blitter_w %08x %04x %04x (init?) (base?)\n", space.device().safe_pc(), offset * 2, data, mem_mask);
293292
294293      m_spritesinit = 2;
295294      m_spritesaddr = offset;
295
296296   }
297297   else if (m_spritesinit == 2)
298298   {
299   //   printf("%06x: spider_blitter_w %08x %04x %04x (init2) (width?)\n", space.device().safe_pc(), offset * 2, data, mem_mask);
299   //  printf("%06x: spider_blitter_w %08x %04x %04x (init2) (width?)\n", space.device().safe_pc(), offset * 2, data, mem_mask);
300300      m_spriteswidth = offset & 0xff;
301      //printf("%08x\n",(offset*2) & 0xfff00);
301302
302      m_spritesinit = 0;
303
303      m_spritesinit = 3;
304304   }
305305   else
306306   {
r245142r245143
314314      }
315315      else if ((offset >= 0x30000 / 2) && (offset < 0x40000 / 2))
316316      {
317         if(m_spritesinit != 3)
318         {
319            printf("blitter bus write but blitter unselected? %08x %04x\n",offset*2,data);
320            return;
321         }
322
323         m_spritesinit = 0;
324
317325         // 0x30000-0x3ffff used, on Spider it's 0x20000-0x2ffff
318326         offset &= 0x7fff;
319327
320328         UINT8 *src = m_rom8;
321329
322         if (m_port10 & 2) // NO, wrong for the portraits
330         if (m_rombank)
323331            src += 0x100000;
324332
325      //   printf("%06x: spider_blitter_w %08x %04x %04x (previous data width %d address %08x)\n", space.device().safe_pc(), offset * 2, data, mem_mask, m_spriteswidth, m_spritesaddr);
333      //  printf("%06x: spider_blitter_w %08x %04x %04x (previous data width %d address %08x)\n", space.device().safe_pc(), offset * 2, data, mem_mask, m_spriteswidth, m_spritesaddr);
326334         offset &= 0x7fff;
327335
328336         for (int i = 0; i < m_spriteswidth; i++)
r245142r245143
337345               UINT8 data;
338346
339347               data = (src[(m_spritesaddr * 2) + 1]);
348               //data |= vram[offset] >> 8;
340349
341               if (data)
350               /* bit 1 actually enables transparent pen */
351               if (data || (m_port10 & 2) == 0)
342352                  vram[offset] = (vram[offset] & 0x00ff) | data << 8;
343353
344
345354               data = src[(m_spritesaddr * 2)];
355               //data |= vram[offset] & 0xff;
346356
347               if (data)
357               if (data || (m_port10 & 2) == 0)
348358                  vram[offset] = (vram[offset] & 0xff00) | data;
349359
350360
r245142r245143
369379   AM_RANGE(0x00000, 0xfffff) AM_READWRITE(ttchamp_mem_r, ttchamp_mem_w)
370380ADDRESS_MAP_END
371381
382/* Re-use same parameters as before (one-shot) */
372383READ16_MEMBER(ttchamp_state::port1e_r)
373384{
385   m_spritesinit = 3;
374386   return 0xff;
375387}
376388
r245142r245143
384396{
385397   UINT8 res;
386398   COMBINE_DATA(&m_port10);
387   
399
388400   res = m_port10 & 0xf0;
389401   /* Assume that both bits clears layers. */
390402   if(res == 0x30)
r245142r245143
399411      printf("Check me, i/o 0x10 used with %02x\n",res);
400412}
401413
414/* selects upper bank for the blitter */
402415WRITE16_MEMBER(ttchamp_state::port20_w)
403416{
404417   printf("%06x: port20_w %04x %04x\n", space.device().safe_pc(), data, mem_mask);
405   // seems to somehow be tied to layer clear
406   // might also depend on layer selected with 0x10 tho? written after it
407   /*for (int i = 0; i < 0x8000; i++)
408   {
409   //   m_videoram0[i] = 0x0000;
410      m_videoram2[i] = 0x0000;
411   }*/
412
418   m_rombank = 1;
413419}
414420
421/* selects lower bank for the blitter */
415422WRITE16_MEMBER(ttchamp_state::port62_w)
416423{
417424   printf("%06x: port62_w %04x %04x\n", space.device().safe_pc(), data, mem_mask);
425   m_rombank = 0;
418426}
419427
420428static ADDRESS_MAP_START( ttchamp_io, AS_IO, 16, ttchamp_state )
421   AM_RANGE(0x0000, 0x0001) AM_WRITENOP // startup only
429   AM_RANGE(0x0000, 0x0001) AM_WRITENOP // startup only, nmi enable?
422430
423431   AM_RANGE(0x0002, 0x0003) AM_READ_PORT("SYSTEM")
424432   AM_RANGE(0x0004, 0x0005) AM_READ_PORT("P1_P2")
r245142r245143
435443
436444   AM_RANGE(0x0020, 0x0021) AM_WRITE(port20_w)
437445
438//   AM_RANGE(0x0034, 0x0035) AM_READ(peno_rand) AM_WRITENOP // eeprom (PIC?) / settings?
446//  AM_RANGE(0x0034, 0x0035) AM_READ(peno_rand) AM_WRITENOP // eeprom (PIC?) / settings?
439447
440448   AM_RANGE(0x0062, 0x0063) AM_WRITE(port62_w)
441449
r245142r245143
568576
569577DRIVER_INIT_MEMBER(ttchamp_state,ttchamp)
570578{
571//   UINT8 *ROM1 = memregion("user1")->base();
572//   membank("bank1")->set_base(&ROM1[0x100000]);
573//   membank("bank2")->set_base(&ROM1[0x180000]);
579//  UINT8 *ROM1 = memregion("user1")->base();
580//  membank("bank1")->set_base(&ROM1[0x100000]);
581//  membank("bank2")->set_base(&ROM1[0x180000]);
574582}
575583
576584GAME( 1995, ttchamp, 0,        ttchamp, ttchamp, ttchamp_state, ttchamp, ROT0,  "Gamart",                               "Table Tennis Champions", GAME_NOT_WORKING ) // this has various advertising boards, including 'Electronic Devices' and 'Deniam'
trunk/src/mame/drivers/tugboat.c
r245142r245143
4949   required_device<gfxdecode_device> m_gfxdecode;
5050   required_device<screen_device> m_screen;
5151   required_device<palette_device> m_palette;
52   
52
5353   required_shared_ptr<UINT8> m_ram;
5454
5555   UINT8 m_hd46505_0_reg[18];
r245142r245143
5858   int m_reg1;
5959   int m_ctrl;
6060   emu_timer *m_interrupt_timer;
61   
61
6262   DECLARE_WRITE8_MEMBER(hd46505_0_w);
6363   DECLARE_WRITE8_MEMBER(hd46505_1_w);
6464   DECLARE_WRITE8_MEMBER(score_w);
6565   DECLARE_READ8_MEMBER(input_r);
6666   DECLARE_WRITE8_MEMBER(ctrl_w);
67   
67
6868   virtual void machine_start();
6969   virtual void video_start();
7070   virtual void machine_reset();
7171   DECLARE_PALETTE_INIT(tugboat);
72   
72
7373   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
7474   void draw_tilemap(bitmap_ind16 &bitmap,const rectangle &cliprect,
7575      int addr,int gfx0,int gfx1,int transparency);
r245142r245143
8282void tugboat_state::machine_start()
8383{
8484   m_interrupt_timer = timer_alloc(TIMER_INTERRUPT);
85   
85
8686   save_item(NAME(m_hd46505_0_reg));
8787   save_item(NAME(m_hd46505_1_reg));
8888   save_item(NAME(m_reg0));
trunk/src/mame/drivers/twins.c
r245142r245143
123123READ16_MEMBER(twins_state::twins_port4_r)
124124{
125125// doesn't work??
126//   printf("%08x: twins_port4_r %04x\n", space.device().safe_pc(), mem_mask);
127//   return m_i2cmem->read_sda();// | 0xfffe;
126//  printf("%08x: twins_port4_r %04x\n", space.device().safe_pc(), mem_mask);
127//  return m_i2cmem->read_sda();// | 0xfffe;
128128
129129   return 0x0001;
130130}
131131
132132WRITE16_MEMBER(twins_state::twins_port4_w)
133133{
134//   printf("%08x: twins_port4_w %04x %04x\n", space.device().safe_pc(), data, mem_mask);
134//  printf("%08x: twins_port4_w %04x %04x\n", space.device().safe_pc(), data, mem_mask);
135135   int i2c_clk = BIT(data, 1);
136136   int i2c_mem = BIT(data, 0);
137137   m_i2cmem->write_scl(i2c_clk);
r245142r245143
165165/* ??? weird ..*/
166166WRITE16_MEMBER(twins_state::porte_paloff0_w)
167167{
168//   printf("porte_paloff0_w %04x\n", data);
168//  printf("porte_paloff0_w %04x\n", data);
169169   m_paloff = 0;
170170}
171171
r245142r245143
205205
206206   if (m_spritesinit == 1)
207207   {
208   //   printf("spider_blitter_w %08x %04x %04x (init?) (base?)\n", offset * 2, data, mem_mask);
208   //  printf("spider_blitter_w %08x %04x %04x (init?) (base?)\n", offset * 2, data, mem_mask);
209209
210210      m_spritesinit = 2;
211211      m_spritesaddr = offset;
212212   }
213213   else if (m_spritesinit == 2)
214214   {
215   //   printf("spider_blitter_w %08x %04x %04x (init2) (width?)\n", offset * 2, data, mem_mask);
215   //  printf("spider_blitter_w %08x %04x %04x (init2) (width?)\n", offset * 2, data, mem_mask);
216216      m_spriteswidth = offset & 0xff;
217217      if (m_spriteswidth == 0)
218218         m_spriteswidth = 80;
r245142r245143
234234      {
235235         UINT8 *src = m_rom8;
236236
237      //   printf("spider_blitter_w %08x %04x %04x (previous data width %d address %08x)\n", offset * 2, data, mem_mask, m_spriteswidth, m_spritesaddr);
237      //  printf("spider_blitter_w %08x %04x %04x (previous data width %d address %08x)\n", offset * 2, data, mem_mask, m_spriteswidth, m_spritesaddr);
238238         offset &= 0x7fff;
239239
240240         for (int i = 0; i < m_spriteswidth; i++)
241241         {
242242            UINT8 data;
243           
243
244244            data = (src[(m_spritesaddr * 2) + 1]);
245   
245
246246            if (data)
247247               vram[offset] = (vram[offset] & 0x00ff) | data << 8;
248248
249249
250250            data = src[(m_spritesaddr*2)];
251         
251
252252            if (data)
253253               vram[offset] = (vram[offset] & 0xff00) | data;
254254
255255
256            m_spritesaddr ++;           
256            m_spritesaddr ++;
257257            offset++;
258258
259259            offset &= 0x7fff;
r245142r245143
386386   MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 200-1)
387387   MCFG_SCREEN_UPDATE_DRIVER(twins_state, screen_update_twins)
388388   MCFG_SCREEN_PALETTE("palette")
389   
389
390390   MCFG_24C02_ADD("i2cmem")
391391
392392   MCFG_PALETTE_ADD("palette", 0x100)
r245142r245143
447447   MCFG_PALETTE_ADD("palette", 256)
448448   MCFG_RAMDAC_ADD("ramdac", ramdac_map, "palette")
449449   MCFG_RAMDAC_SPLIT_READ(0)
450   
450
451451   MCFG_24C02_ADD("i2cmem")
452452
453453   MCFG_VIDEO_START_OVERRIDE(twins_state,twinsa)
r245142r245143
477477   }
478478   else
479479   {
480   //   printf("first palette write %04x\n", data);
480   //  printf("first palette write %04x\n", data);
481481   }
482   
482
483483   m_paloff++;
484484
485485   if (m_paloff == 0x101)
r245142r245143
503503{
504504   // done before the 'sprite' read / writes
505505   // might clear a buffer?
506   
506
507507   // game is only animating sprites at 30fps, maybe there's some double buffering too?
508508
509509   UINT16* vram;
r245142r245143
575575   MCFG_PALETTE_ADD("palette", 0x100)
576576
577577   MCFG_VIDEO_START_OVERRIDE(twins_state,twins)
578   
578
579579   MCFG_24C02_ADD("i2cmem")
580580
581581   /* sound hardware */
trunk/src/mame/drivers/usgames.c
r245142r245143
3232
3333void usgames_state::machine_start()
3434{
35    membank("bank1")->configure_entries(0, 16, memregion("maincpu")->base() + 0x10000, 0x4000);
35   membank("bank1")->configure_entries(0, 16, memregion("maincpu")->base() + 0x10000, 0x4000);
3636}
3737
3838WRITE8_MEMBER(usgames_state::usgames_rombank_w)
3939{
40    membank("bank1")->set_entry(data);
40   membank("bank1")->set_entry(data);
4141}
4242
4343WRITE8_MEMBER(usgames_state::lamps1_w)
trunk/src/mame/drivers/vamphalf.c
r245142r245143
27542754   m_semicom_prot_data[0] = 2;
27552755   m_semicom_prot_data[1] = 1;
27562756
2757//   UINT8 *romx = (UINT8 *)memregion("user1")->base();
2757//  UINT8 *romx = (UINT8 *)memregion("user1")->base();
27582758   // prevent code dying after a trap 33 by patching it out, why?
2759//   romx[BYTE4_XOR_BE(0x8ff0)] = 3;
2760//   romx[BYTE4_XOR_BE(0x8ff1)] = 0;
2759//  romx[BYTE4_XOR_BE(0x8ff0)] = 3;
2760//  romx[BYTE4_XOR_BE(0x8ff1)] = 0;
27612761
27622762   // Configure the QS1000 ROM banking. Care must be taken not to overlap the 256b internal RAM
27632763   machine().device("qs1000:cpu")->memory().space(AS_IO).install_read_bank(0x0100, 0xffff, "data");
trunk/src/mame/drivers/vigilant.c
r245142r245143
2424
2525void vigilant_state::machine_start()
2626{
27    membank("bank1")->configure_entries(0, 8, memregion("maincpu")->base() + 0x10000, 0x4000);
27   membank("bank1")->configure_entries(0, 8, memregion("maincpu")->base() + 0x10000, 0x4000);
2828}
2929
3030WRITE8_MEMBER(vigilant_state::vigilant_bank_select_w)
3131{
32    membank("bank1")->set_entry(data & 0x07);
32   membank("bank1")->set_entry(data & 0x07);
3333}
3434
3535/***************************************************************************
trunk/src/mame/drivers/wc90b.c
r245142r245143
325325   membank("mainbank")->configure_entries(0, 32, memregion("maincpu")->base() + 0x10000, 0x800);
326326   membank("subbank")->configure_entries(0, 32, memregion("sub")->base() + 0x10000, 0x800);
327327   membank("audiobank")->configure_entries(0, 2, memregion("audiocpu")->base() + 0x8000, 0x4000);
328   
328
329329   save_item(NAME(m_msm5205next));
330330   save_item(NAME(m_toggle));
331331}
trunk/src/mame/drivers/xain.c
r245142r245143
555555   membank("bank2")->configure_entries(0, 2, memregion("sub")->base()  + 0x4000, 0xc000);
556556   membank("bank1")->set_entry(0);
557557   membank("bank2")->set_entry(0);
558   
558
559559   save_item(NAME(m_vblank));
560   
560
561561   if (m_mcu)
562562   {
563563      save_item(NAME(m_from_main));
trunk/src/mame/drivers/xtheball.c
r245142r245143
3030
3131   required_device<cpu_device> m_maincpu;
3232   required_device<tlc34076_device> m_tlc34076;
33   
33
3434   required_shared_ptr<UINT16> m_vram_bg;
3535   required_shared_ptr<UINT16> m_vram_fg;
36   
36
3737   required_ioport m_analog_x;
3838   required_ioport m_analog_y;
39   
39
4040   UINT8 m_bitvals[32];
41   
41
4242   DECLARE_WRITE16_MEMBER(bit_controls_w);
4343   DECLARE_READ16_MEMBER(analogx_r);
4444   DECLARE_READ16_MEMBER(analogy_watchdog_r);
45   
45
4646   virtual void machine_start();
47   
47
4848   TMS340X0_TO_SHIFTREG_CB_MEMBER(to_shiftreg);
4949   TMS340X0_FROM_SHIFTREG_CB_MEMBER(from_shiftreg);
5050   TMS340X0_SCANLINE_RGB32_CB_MEMBER(scanline_update);
trunk/src/mame/includes/argus.h
r245142r245143
4242   UINT8 m_bg_status;
4343   UINT8 m_flipscreen;
4444   UINT16 m_palette_intensity;
45   
45
4646   // argus specific
4747   UINT8 *m_dummy_bg0ram;
4848   int m_lowbitscroll;
4949   int m_prvscrollx;
50   
50
5151   // butasan specific
5252   UINT8 *m_butasan_txram;
5353   UINT8 *m_butasan_bg0ram;
r245142r245143
5757   UINT8 m_butasan_page_latch;
5858   UINT8 m_butasan_bg1_status;
5959   UINT8 m_butasan_unknown;
60   
60
6161   // valtric specific
6262   UINT8 m_valtric_mosaic;
6363   bitmap_rgb32 m_mosaicbitmap;
6464   UINT8 m_valtric_unknown;
6565   int m_mosaic;
66   
66
6767   tilemap_t *m_tx_tilemap;
6868   tilemap_t *m_bg0_tilemap;
6969   tilemap_t *m_bg1_tilemap;
70   
70
7171   // common
7272   DECLARE_WRITE8_MEMBER(bankselect_w);
7373   DECLARE_WRITE8_MEMBER(valtric_mosaic_w);
r245142r245143
9494   DECLARE_WRITE8_MEMBER(valtric_bg_status_w);
9595   DECLARE_WRITE8_MEMBER(valtric_paletteram_w);
9696   DECLARE_WRITE8_MEMBER(valtric_unknown_w);
97   
97
9898   TILE_GET_INFO_MEMBER(argus_get_tx_tile_info);
9999   TILE_GET_INFO_MEMBER(argus_get_bg0_tile_info);
100100   TILE_GET_INFO_MEMBER(argus_get_bg1_tile_info);
r245142r245143
103103   TILE_GET_INFO_MEMBER(butasan_get_tx_tile_info);
104104   TILE_GET_INFO_MEMBER(butasan_get_bg0_tile_info);
105105   TILE_GET_INFO_MEMBER(butasan_get_bg1_tile_info);
106   
106
107107   virtual void machine_start();
108108   DECLARE_VIDEO_START(argus);
109109   DECLARE_VIDEO_RESET(argus);
r245142r245143
111111   DECLARE_VIDEO_RESET(valtric);
112112   DECLARE_VIDEO_START(butasan);
113113   DECLARE_VIDEO_RESET(butasan);
114   
114
115115   UINT32 screen_update_argus(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
116116   UINT32 screen_update_valtric(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
117117   UINT32 screen_update_butasan(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
118   
118
119119   TIMER_DEVICE_CALLBACK_MEMBER(scanline);
120120   TIMER_DEVICE_CALLBACK_MEMBER(butasan_scanline);
121   
121
122122   void reset_common();
123123   void change_palette(int color, int lo_offs, int hi_offs);
124124   void change_bg_palette(int color, int lo_offs, int hi_offs);
125125   void bg_setting();
126   
126
127127   // argus specific
128128   void argus_bg0_scroll_handle();
129129   void argus_write_dummy_rams(int dramoffs, int vromoffs);
130130   void argus_draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect, int priority);
131   
131
132132   // butasan specific
133133   void butasan_draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect);
134134   void butasan_log_vram();
135   
135
136136   // valtric specific
137137   void valtric_draw_mosaic(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
138138   void valtric_draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect);
trunk/src/mame/includes/bbusters.h
r245142r245143
2323   required_device<gfxdecode_device> m_gfxdecode;
2424   required_device<buffered_spriteram16_device> m_spriteram;
2525   optional_device<buffered_spriteram16_device> m_spriteram2;
26   
26
2727   optional_shared_ptr<UINT16> m_eprom_data;
2828   required_shared_ptr<UINT16> m_ram;
2929   required_shared_ptr<UINT16> m_videoram;
r245142r245143
5353   DECLARE_WRITE16_MEMBER(video_w);
5454   DECLARE_WRITE16_MEMBER(pf1_w);
5555   DECLARE_WRITE16_MEMBER(pf2_w);
56   
56
5757   TILE_GET_INFO_MEMBER(get_tile_info);
5858   TILE_GET_INFO_MEMBER(get_pf1_tile_info);
5959   TILE_GET_INFO_MEMBER(get_pf2_tile_info);
60   
60
6161   virtual void machine_start();
6262   DECLARE_VIDEO_START(bbuster);
6363   DECLARE_VIDEO_START(mechatt);
64   
64
6565   UINT32 screen_update_bbuster(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
6666   UINT32 screen_update_mechatt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
6767   void screen_eof_bbuster(screen_device &screen, bool state);
trunk/src/mame/includes/cabal.h
r245142r245143
3838   int m_sound_command1;
3939   int m_sound_command2;
4040   int m_last[4];
41   
41
4242   // common
4343   DECLARE_WRITE16_MEMBER(flipscreen_w);
4444   DECLARE_WRITE16_MEMBER(background_videoram_w);
r245142r245143
5757   DECLARE_WRITE8_MEMBER(cabalbl_coin_w);
5858   DECLARE_WRITE8_MEMBER(cabalbl_1_adpcm_w);
5959   DECLARE_WRITE8_MEMBER(cabalbl_2_adpcm_w);
60   
60
6161   DECLARE_DRIVER_INIT(cabal);
6262   DECLARE_DRIVER_INIT(cabalbl2);
6363   DECLARE_MACHINE_START(cabal);
6464   DECLARE_MACHINE_START(cabalbl);
6565   DECLARE_MACHINE_RESET(cabalbl);
6666   virtual void video_start();
67   
67
6868   TILE_GET_INFO_MEMBER(get_back_tile_info);
6969   TILE_GET_INFO_MEMBER(get_text_tile_info);
70   
70
7171   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
7272   void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
73   
73
7474   void seibu_sound_bootleg(const char *cpu,int length);
7575};
trunk/src/mame/includes/capbowl.h
r245142r245143
3737
3838   /* input-related */
3939   UINT8 m_last_trackball_val[2];
40   
40
4141   emu_timer *m_update_timer;
4242
4343   // common
r245142r245143
4747   DECLARE_WRITE8_MEMBER(sndcmd_w);
4848   DECLARE_WRITE8_MEMBER(tms34061_w);
4949   DECLARE_READ8_MEMBER(tms34061_r);
50   
50
5151   // capbowl specific
5252   DECLARE_WRITE8_MEMBER(capbowl_rom_select_w);
53   
53
5454   // bowlrama specific
5555   DECLARE_WRITE8_MEMBER(bowlrama_blitter_w);
5656   DECLARE_READ8_MEMBER(bowlrama_blitter_r);
57   
57
5858   DECLARE_DRIVER_INIT(capbowl);
5959   virtual void machine_start();
6060   virtual void machine_reset();
61   
61
6262   INTERRUPT_GEN_MEMBER(interrupt);
6363   TIMER_CALLBACK_MEMBER(update);
64   
64
6565   UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
6666   inline rgb_t pen_for_pixel( UINT8 *src, UINT8 pix );
6767
trunk/src/mame/includes/fgoal.h
r245142r245143
1515      m_gfxdecode(*this, "gfxdecode"),
1616      m_screen(*this, "screen"),
1717      m_palette(*this, "palette"),
18      m_video_ram(*this, "video_ram")   { }
18      m_video_ram(*this, "video_ram") { }
1919
2020   /* devices */
2121   required_device<cpu_device> m_maincpu;
r245142r245143
5858   DECLARE_WRITE8_MEMBER(xpos_w);
5959
6060   DECLARE_CUSTOM_INPUT_MEMBER(_80_r);
61   
61
6262   TIMER_CALLBACK_MEMBER(interrupt_callback);
6363
6464   virtual void machine_start();
trunk/src/mame/includes/hng64.h
r245142r245143
125125      m_generic_paletteram_32(*this, "paletteram")
126126
127127   { }
128   
128
129129   required_device<mips3_device> m_maincpu;
130130   required_device<v53a_device> m_audiocpu;
131131   required_device<cpu_device> m_comm;
r245142r245143
363363   DECLARE_WRITE_LINE_MEMBER(tcu_tm2_cb);
364364
365365   UINT16 m_audiochannel;
366   
366
367367   struct hng64_48bit_data {
368368      UINT16 dat[3];
369369   };
r245142r245143
395395
396396   DECLARE_WRITE16_MEMBER(hng64_sound_bank_w);
397397};
398
trunk/src/mame/includes/ironhors.h
r245142r245143
4848   DECLARE_WRITE8_MEMBER(flipscreen_w);
4949   DECLARE_WRITE8_MEMBER(filter_w);
5050   DECLARE_READ8_MEMBER(farwest_soundlatch_r);
51   
51
5252   TILE_GET_INFO_MEMBER(get_bg_tile_info);
5353   TILE_GET_INFO_MEMBER(farwest_get_bg_tile_info);
54   
54
5555   virtual void machine_start();
5656   virtual void machine_reset();
5757   virtual void video_start();
5858   DECLARE_PALETTE_INIT(ironhors);
5959   DECLARE_VIDEO_START(farwest);
60   
60
6161   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
6262   UINT32 screen_update_farwest(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
6363   void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
6464   void farwest_draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
65   
65
6666   TIMER_DEVICE_CALLBACK_MEMBER(irq);
6767   TIMER_DEVICE_CALLBACK_MEMBER(farwest_irq);
6868};
trunk/src/mame/includes/mosaic.h
r245142r245143
1717   /* devices */
1818   required_device<cpu_device> m_maincpu;
1919   required_device<gfxdecode_device> m_gfxdecode;
20   
20
2121   /* memory pointers */
2222   required_shared_ptr<UINT8> m_fgvideoram;
2323   required_shared_ptr<UINT8> m_bgvideoram;
r245142r245143
2828
2929   /* misc */
3030   int            m_prot_val;
31   
31
3232   DECLARE_WRITE8_MEMBER(protection_w);
3333   DECLARE_READ8_MEMBER(protection_r);
3434   DECLARE_WRITE8_MEMBER(gfire2_protection_w);
3535   DECLARE_READ8_MEMBER(gfire2_protection_r);
3636   DECLARE_WRITE8_MEMBER(fgvideoram_w);
3737   DECLARE_WRITE8_MEMBER(bgvideoram_w);
38   
38
3939   TILE_GET_INFO_MEMBER(get_fg_tile_info);
4040   TILE_GET_INFO_MEMBER(get_bg_tile_info);
41   
41
4242   virtual void machine_start();
4343   virtual void machine_reset();
4444   virtual void video_start();
45   
45
4646   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
4747};
trunk/src/mame/includes/paradise.h
r245142r245143
5454   DECLARE_WRITE8_MEMBER(vram_2_w);
5555   DECLARE_WRITE8_MEMBER(pixmap_w);
5656   DECLARE_WRITE8_MEMBER(priority_w);
57   
57
5858   // paradise specific
5959   DECLARE_WRITE8_MEMBER(paradise_okibank_w);
60   
60
6161   // torus specific
6262   DECLARE_WRITE8_MEMBER(torus_coin_counter_w);
6363
trunk/src/mame/includes/pooyan.h
r245142r245143
3232   DECLARE_WRITE8_MEMBER(videoram_w);
3333   DECLARE_WRITE8_MEMBER(colorram_w);
3434   DECLARE_WRITE8_MEMBER(flipscreen_w);
35   
35
3636   TILE_GET_INFO_MEMBER(get_bg_tile_info);
37   
37
3838   virtual void machine_start();
3939   virtual void machine_reset();
4040   virtual void video_start();
4141   DECLARE_PALETTE_INIT(pooyan);
42   
42
4343   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
4444   void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
45   
45
4646   INTERRUPT_GEN_MEMBER(interrupt);
4747};
trunk/src/mame/includes/psychic5.h
r245142r245143
2121      m_ps5_palette_ram_tx(*this, "palette_ram_tx")
2222
2323   { }
24   
24
2525   required_device<cpu_device> m_maincpu;
2626   required_device<cpu_device> m_audiocpu;
2727   required_device<gfxdecode_device> m_gfxdecode;
2828   required_device<palette_device> m_palette;
2929   optional_device<address_map_bank_device> m_vrambank;
3030   optional_device<jaleco_blend_device> m_blend;
31   
31
3232   required_shared_ptr<UINT8> m_spriteram;
3333   required_shared_ptr<UINT8> m_fg_videoram;
3434   required_shared_ptr<UINT8> m_bg_videoram;
r245142r245143
7878   DECLARE_VIDEO_START(psychic5);
7979   DECLARE_VIDEO_START(bombsa);
8080   DECLARE_VIDEO_RESET(psychic5);
81   
81
8282   TIMER_DEVICE_CALLBACK_MEMBER(scanline);
8383
8484   UINT32 screen_update_psychic5(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
trunk/src/mame/includes/realbrk.h
r245142r245143
7171   UINT32 screen_update_dai2kaku(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
7272   void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect);
7373   void dai2kaku_draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect, int layer);
74   
74
7575   INTERRUPT_GEN_MEMBER(interrupt);
7676};
trunk/src/mame/includes/rltennis.h
r245142r245143
1818   required_device<cpu_device> m_maincpu;
1919   required_device<dac_device> m_dac_1;
2020   required_device<dac_device> m_dac_2;
21   
21
2222   UINT16 m_blitter[RLT_NUM_BLITTER_REGS];
2323   INT32 m_data760000;
2424   INT32 m_data740000;
r245142r245143
4141   virtual void machine_start();
4242   virtual void machine_reset();
4343   virtual void video_start();
44   
44
4545   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
4646
4747   INTERRUPT_GEN_MEMBER(interrupt);
trunk/src/mame/includes/seta2.h
r245142r245143
2828   required_device<gfxdecode_device> m_gfxdecode;
2929   required_device<screen_device> m_screen;
3030   required_device<palette_device> m_palette;
31   
31
3232   optional_shared_ptr<UINT16> m_nvram;
3333   optional_shared_ptr<UINT16> m_spriteram;
3434   optional_shared_ptr<UINT16> m_vregs;
r245142r245143
3939   int m_yoffset;
4040   int m_keyboard_row;
4141   UINT16 *m_buffered_spriteram;
42   
42
4343   UINT64 m_funcube_coin_start_cycles;
4444   UINT8 m_funcube_hopper_motor;
4545
trunk/src/mame/includes/shuuz.h
r245142r245143
1919   required_device<atari_vad_device> m_vad;
2020
2121   int m_cur[2];
22   
22
2323   virtual void update_interrupts();
24   
24
2525   DECLARE_WRITE16_MEMBER(latch_w);
2626   DECLARE_READ16_MEMBER(leta_r);
2727   DECLARE_READ16_MEMBER(special_port0_r);
28   
28
2929   virtual void machine_start();
30   
30
3131   TILE_GET_INFO_MEMBER(get_playfield_tile_info);
32   
32
3333   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
3434
3535   static const atari_motion_objects_config s_mob_config;
trunk/src/mame/includes/sidearms.h
r245142r245143
5454   DECLARE_WRITE8_MEMBER(gfxctrl_w);
5555   DECLARE_WRITE8_MEMBER(star_scrollx_w);
5656   DECLARE_WRITE8_MEMBER(star_scrolly_w);
57   
57
5858   DECLARE_READ8_MEMBER(turtship_ports_r);
59   
59
6060   DECLARE_WRITE8_MEMBER(whizz_bankswitch_w);
6161
6262   DECLARE_DRIVER_INIT(dyger);
r245142r245143
6464   DECLARE_DRIVER_INIT(whizz);
6565   DECLARE_DRIVER_INIT(turtship);
6666   virtual void machine_start();
67    virtual void video_start();
67   virtual void video_start();
6868
6969   TILE_GET_INFO_MEMBER(get_sidearms_bg_tile_info);
7070   TILE_GET_INFO_MEMBER(get_philko_bg_tile_info);
trunk/src/mame/includes/simple_st0016.h
r245142r245143
1212   { }
1313
1414   int mux_port;
15    // UINT32 m_st0016_rom_bank;
15   // UINT32 m_st0016_rom_bank;
1616
1717   optional_device<st0016_cpu_device> m_maincpu;
1818   DECLARE_READ8_MEMBER(mux_r);
r245142r245143
2727   DECLARE_DRIVER_INIT(mayjinsn);
2828   DECLARE_DRIVER_INIT(mayjisn2);
2929   DECLARE_DRIVER_INIT(renju);
30    virtual void machine_start();
30   virtual void machine_start();
3131   DECLARE_VIDEO_START(st0016);
3232   void st0016_draw_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
3333   UINT32 screen_update_st0016(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
trunk/src/mame/includes/speedbal.h
r245142r245143
3939
4040   TILE_GET_INFO_MEMBER(get_tile_info_bg);
4141   TILE_GET_INFO_MEMBER(get_tile_info_fg);
42   
42
4343   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
4444   void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
4545};
trunk/src/mame/includes/srmp2.h
r245142r245143
2121   required_device<cpu_device> m_maincpu;
2222   required_device<seta001_device> m_seta001;
2323   required_device<msm5205_device> m_msm;
24   
24
2525   int m_color_bank;
2626   int m_gfx_bank;
2727   int m_adpcm_bank;
r245142r245143
4343   DECLARE_WRITE16_MEMBER(mjyuugi_adpcm_bank_w);
4444   DECLARE_READ8_MEMBER(mjyuugi_irq2_ack_r);
4545   DECLARE_READ8_MEMBER(mjyuugi_irq4_ack_r);
46   
46
4747   // rmgoldyh
4848   DECLARE_WRITE8_MEMBER(rmgoldyh_rombank_w);
4949
trunk/src/mame/includes/srumbler.h
r245142r245143
2929   DECLARE_WRITE8_MEMBER(background_w);
3030   DECLARE_WRITE8_MEMBER(_4009_w);
3131   DECLARE_WRITE8_MEMBER(scroll_w);
32   
32
3333   TILE_GET_INFO_MEMBER(get_fg_tile_info);
3434   TILE_GET_INFO_MEMBER(get_bg_tile_info);
35   
35
3636   virtual void machine_start();
3737   virtual void video_start();
38   
38
3939   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
4040   void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
41   
41
4242   TIMER_DEVICE_CALLBACK_MEMBER(interrupt);
4343};
trunk/src/mame/includes/ssozumo.h
r245142r245143
2929   tilemap_t *m_bg_tilemap;
3030   tilemap_t *m_fg_tilemap;
3131   UINT8 m_sound_nmi_mask;
32   
32
3333   DECLARE_WRITE8_MEMBER(sh_command_w);
3434   DECLARE_WRITE8_MEMBER(sound_nmi_mask_w);
3535   DECLARE_WRITE8_MEMBER(videoram_w);
r245142r245143
3939   DECLARE_WRITE8_MEMBER(paletteram_w);
4040   DECLARE_WRITE8_MEMBER(scroll_w);
4141   DECLARE_WRITE8_MEMBER(flipscreen_w);
42   
42
4343   DECLARE_INPUT_CHANGED_MEMBER(coin_inserted);
44   
44
4545   INTERRUPT_GEN_MEMBER(sound_timer_irq);
46   
46
4747   TILE_GET_INFO_MEMBER(get_bg_tile_info);
4848   TILE_GET_INFO_MEMBER(get_fg_tile_info);
49   
49
5050   virtual void machine_start();
5151   virtual void video_start();
5252   DECLARE_PALETTE_INIT(ssozumo);
53   
53
5454   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
5555   void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
5656};
trunk/src/mame/includes/ssrj.h
r245142r245143
2727   tilemap_t *m_tilemap2;
2828   tilemap_t *m_tilemap4;
2929   UINT8 *m_buffer_spriteram;
30   
30
3131   DECLARE_READ8_MEMBER(wheel_r);
3232   DECLARE_WRITE8_MEMBER(vram1_w);
3333   DECLARE_WRITE8_MEMBER(vram2_w);
3434   DECLARE_WRITE8_MEMBER(vram4_w);
35   
35
3636   TILE_GET_INFO_MEMBER(get_tile_info1);
3737   TILE_GET_INFO_MEMBER(get_tile_info2);
3838   TILE_GET_INFO_MEMBER(get_tile_info4);
39   
39
4040   virtual void machine_start();
4141   virtual void machine_reset();
4242   virtual void video_start();
4343   DECLARE_PALETTE_INIT(ssrj);
44   
44
4545   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
4646   void screen_eof(screen_device &screen, bool state);
4747   void draw_objects(bitmap_ind16 &bitmap, const rectangle &cliprect );
trunk/src/mame/includes/ssv.h
r245142r245143
106106   DECLARE_WRITE16_MEMBER(scroll_w);
107107   DECLARE_READ16_MEMBER(gdfs_eeprom_r);
108108   DECLARE_WRITE16_MEMBER(gdfs_eeprom_w);
109   
109
110110   TILE_GET_INFO_MEMBER(get_tile_info_0);
111   
111
112112   DECLARE_DRIVER_INIT(gdfs);
113113   DECLARE_DRIVER_INIT(sxyreac2);
114114   DECLARE_DRIVER_INIT(hypreac2);
r245142r245143
135135   virtual void video_start();
136136   DECLARE_VIDEO_START(gdfs);
137137   DECLARE_VIDEO_START(eaglshot);
138   
138
139139   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
140140   UINT32 screen_update_gdfs(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
141141   UINT32 screen_update_eaglshot(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
142   
142
143143   TIMER_DEVICE_CALLBACK_MEMBER(interrupt);
144144   TIMER_DEVICE_CALLBACK_MEMBER(gdfs_interrupt);
145145   void update_irq_state();
146146   IRQ_CALLBACK_MEMBER(irq_callback);
147   
147
148148   void drawgfx(bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element *gfx,UINT32 code,UINT32 color,int flipx,int flipy,int x0,int y0,int shadow);
149149   void draw_row(bitmap_ind16 &bitmap, const rectangle &cliprect, int sx, int sy, int scroll);
150150   void draw_layer(bitmap_ind16 &bitmap, const rectangle &cliprect, int  nr);
trunk/src/mame/includes/subs.h
r245142r245143
4242   int m_steering_val2;
4343   int m_last_val_1;
4444   int m_last_val_2;
45   
45
4646   DECLARE_WRITE8_MEMBER(steer_reset_w);
4747   DECLARE_READ8_MEMBER(control_r);
4848   DECLARE_READ8_MEMBER(coin_r);
r245142r245143
5656   DECLARE_WRITE8_MEMBER(crash_w);
5757   DECLARE_WRITE8_MEMBER(explode_w);
5858   DECLARE_WRITE8_MEMBER(noise_reset_w);
59   
59
6060   virtual void machine_start();
6161   virtual void machine_reset();
6262   DECLARE_PALETTE_INIT(subs);
63   
63
6464   UINT32 screen_update_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
6565   UINT32 screen_update_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
66   
66
6767   INTERRUPT_GEN_MEMBER(interrupt);
68   
68
6969   int steering_1();
7070   int steering_2();
7171};
trunk/src/mame/includes/suna16.h
r245142r245143
4040   DECLARE_WRITE16_MEMBER(flipscreen_w);
4141   DECLARE_WRITE8_MEMBER(DAC1_w);
4242   DECLARE_WRITE8_MEMBER(DAC2_w);
43   
43
4444   // bestbest specific
4545   DECLARE_WRITE16_MEMBER(bestbest_flipscreen_w);
4646   DECLARE_WRITE16_MEMBER(bestbest_coin_w);
r245142r245143
5454   DECLARE_WRITE8_MEMBER(bssoccer_pcm_2_bankswitch_w);
5555   DECLARE_WRITE8_MEMBER(bssoccer_DAC3_w);
5656   DECLARE_WRITE8_MEMBER(bssoccer_DAC4_w);
57   
57
5858   // uballoon specific
5959   DECLARE_WRITE16_MEMBER(uballoon_leds_w);
6060   DECLARE_WRITE8_MEMBER(uballoon_pcm_1_bankswitch_w);
6161   DECLARE_READ8_MEMBER(uballoon_prot_r);
6262   DECLARE_WRITE8_MEMBER(uballoon_prot_w);
63   
63
6464   TIMER_DEVICE_CALLBACK_MEMBER(bssoccer_interrupt);
65   
65
6666   DECLARE_DRIVER_INIT(uballoon);
6767   virtual void video_start();
6868   DECLARE_MACHINE_START(bestbest);
6969   DECLARE_MACHINE_START(bssoccer);
70    DECLARE_MACHINE_START(uballoon);
70   DECLARE_MACHINE_START(uballoon);
7171   DECLARE_MACHINE_RESET(uballoon);
72   
72
7373   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
7474   UINT32 screen_update_bestbest(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
7575   void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, UINT16 *sprites, int gfx);
trunk/src/mame/includes/suprloco.h
r245142r245143
99      m_spriteram(*this, "spriteram"),
1010      m_videoram(*this, "videoram"),
1111      m_scrollram(*this, "scrollram") { }
12     
12
1313   required_device<cpu_device> m_maincpu;
1414   required_device<cpu_device> m_audiocpu;
1515   required_device<gfxdecode_device> m_gfxdecode;
r245142r245143
1717   required_shared_ptr<UINT8> m_spriteram;
1818   required_shared_ptr<UINT8> m_videoram;
1919   required_shared_ptr<UINT8> m_scrollram;
20   
20
2121   tilemap_t *m_bg_tilemap;
2222   int m_control;
2323
r245142r245143
2626   DECLARE_WRITE8_MEMBER(scrollram_w);
2727   DECLARE_WRITE8_MEMBER(control_w);
2828   DECLARE_READ8_MEMBER(control_r);
29   
29
3030   TILE_GET_INFO_MEMBER(get_tile_info);
31   
31
3232   virtual void video_start();
3333   DECLARE_PALETTE_INIT(suprloco);
3434   DECLARE_DRIVER_INIT(suprloco);
35   
35
3636   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
3737   inline void draw_pixel(bitmap_ind16 &bitmap,const rectangle &cliprect,int x,int y,int color,int flip);
3838   void draw_sprite(bitmap_ind16 &bitmap,const rectangle &cliprect,int spr_number);
trunk/src/mame/includes/suprridr.h
r245142r245143
3535   tilemap_t *m_bg_tilemap_noscroll;
3636   UINT8 m_flipx;
3737   UINT8 m_flipy;
38   
38
3939   DECLARE_WRITE8_MEMBER(nmi_enable_w);
4040   DECLARE_WRITE8_MEMBER(sound_data_w);
4141   DECLARE_WRITE8_MEMBER(sound_irq_ack_w);
r245142r245143
4848   DECLARE_WRITE8_MEMBER(bgram_w);
4949   DECLARE_WRITE8_MEMBER(fgram_w);
5050   DECLARE_READ8_MEMBER(sound_data_r);
51   
51
5252   DECLARE_CUSTOM_INPUT_MEMBER(control_r);
53   
53
5454   TILE_GET_INFO_MEMBER(get_tile_info);
5555   TILE_GET_INFO_MEMBER(get_tile_info2);
56   
56
5757   INTERRUPT_GEN_MEMBER(main_nmi_gen);
5858   TIMER_CALLBACK_MEMBER(delayed_sound_w);
59   
59
6060   virtual void machine_start();
6161   virtual void video_start();
6262   DECLARE_PALETTE_INIT(suprridr);
63   
63
6464   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
6565   int is_screen_flipped();
6666};
trunk/src/mame/includes/tankbatt.h
r245142r245143
1818
1919   required_shared_ptr<UINT8> m_bulletsram;
2020   required_shared_ptr<UINT8> m_videoram;
21   
21
2222   int m_nmi_enable;
2323   int m_sound_enable;
2424   tilemap_t *m_bg_tilemap;
25   
25
2626   DECLARE_WRITE8_MEMBER(led_w);
2727   DECLARE_READ8_MEMBER(in0_r);
2828   DECLARE_READ8_MEMBER(in1_r);
r245142r245143
3636   DECLARE_WRITE8_MEMBER(coincounter_w);
3737   DECLARE_WRITE8_MEMBER(coinlockout_w);
3838   DECLARE_WRITE8_MEMBER(videoram_w);
39   
40   
39
40
4141   INTERRUPT_GEN_MEMBER(interrupt);
4242   DECLARE_INPUT_CHANGED_MEMBER(coin_inserted);
43   
43
4444   TILE_GET_INFO_MEMBER(get_bg_tile_info);
45   
45
4646   virtual void machine_start();
4747   virtual void video_start();
4848   DECLARE_PALETTE_INIT(tankbatt);
49   
49
5050   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
5151   void draw_bullets(bitmap_ind16 &bitmap, const rectangle &cliprect);
5252};
trunk/src/mame/includes/tankbust.h
r245142r245143
3131   UINT8 m_xscroll[2];
3232   UINT8 m_yscroll[2];
3333   UINT8 m_irq_mask;
34   
34
3535   DECLARE_WRITE8_MEMBER(soundlatch_w);
3636   DECLARE_WRITE8_MEMBER(e0xx_w);
3737   DECLARE_READ8_MEMBER(debug_output_area_r);
r245142r245143
4444   DECLARE_WRITE8_MEMBER(yscroll_w);
4545   DECLARE_READ8_MEMBER(soundlatch_r);
4646   DECLARE_READ8_MEMBER(soundtimer_r);
47   
47
4848   TILE_GET_INFO_MEMBER(get_bg_tile_info);
4949   TILE_GET_INFO_MEMBER(get_txt_tile_info);
50   
51    virtual void machine_start();
52    virtual void machine_reset();
50
51   virtual void machine_start();
52   virtual void machine_reset();
5353   virtual void video_start();
5454   DECLARE_PALETTE_INIT(tankbust);
55   
55
5656   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
5757   void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
58   
58
5959   INTERRUPT_GEN_MEMBER(vblank_irq);
6060   TIMER_CALLBACK_MEMBER(soundlatch_callback);
6161   TIMER_CALLBACK_MEMBER(soundirqline_callback);
trunk/src/mame/includes/taotaido.h
r245142r245143
2121   required_shared_ptr<UINT16> m_spriteram2;
2222   required_shared_ptr<UINT16> m_scrollram;
2323   required_shared_ptr<UINT16> m_bgram;
24   
24
2525   int m_pending_command;
2626   UINT16 m_sprite_character_bank_select[8];
2727   UINT16 m_video_bank_select[8];
r245142r245143
3030   UINT16 *m_spriteram_older;
3131   UINT16 *m_spriteram2_old;
3232   UINT16 *m_spriteram2_older;
33   
33
3434   DECLARE_READ16_MEMBER(pending_command_r);
3535   DECLARE_WRITE16_MEMBER(sound_command_w);
3636   DECLARE_WRITE8_MEMBER(pending_command_clear_w);
r245142r245143
3838   DECLARE_WRITE16_MEMBER(sprite_character_bank_select_w);
3939   DECLARE_WRITE16_MEMBER(tileregs_w);
4040   DECLARE_WRITE16_MEMBER(bgvideoram_w);
41   
41
4242   TILE_GET_INFO_MEMBER(bg_tile_info);
4343   TILEMAP_MAPPER_MEMBER(tilemap_scan_rows);
44   
44
4545   virtual void machine_start();
4646   virtual void video_start();
47   
47
4848   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
4949   void screen_eof(screen_device &screen, bool state);
5050   UINT32 tile_callback( UINT32 code );
trunk/src/mame/includes/tbowl.h
r245142r245143
6262   DECLARE_WRITE8_MEMBER(bg2xscroll_hi);
6363   DECLARE_WRITE8_MEMBER(bg2yscroll_lo);
6464   DECLARE_WRITE8_MEMBER(bg2yscroll_hi);
65   
65
6666   TILE_GET_INFO_MEMBER(get_tx_tile_info);
6767   TILE_GET_INFO_MEMBER(get_bg_tile_info);
6868   TILE_GET_INFO_MEMBER(get_bg2_tile_info);
69   
69
7070   virtual void machine_start();
7171   virtual void machine_reset();
7272   virtual void video_start();
73   
73
7474   UINT32 screen_update_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
7575   UINT32 screen_update_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
76   
76
7777   void adpcm_int(msm5205_device *device, int chip);
7878   DECLARE_WRITE_LINE_MEMBER(adpcm_int_1);
7979   DECLARE_WRITE_LINE_MEMBER(adpcm_int_2);
trunk/src/mame/includes/thunderx.h
r245142r245143
6262
6363   virtual void machine_start();
6464   virtual void machine_reset();
65    virtual void video_start();
65   virtual void video_start();
6666
6767   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
6868   INTERRUPT_GEN_MEMBER(vblank_interrupt);
trunk/src/mame/includes/timelimt.h
r245142r245143
3333   DECLARE_WRITE8_MEMBER(scroll_x_lsb_w);
3434   DECLARE_WRITE8_MEMBER(scroll_x_msb_w);
3535   DECLARE_WRITE8_MEMBER(scroll_y_w);
36   
36
3737   TILE_GET_INFO_MEMBER(get_bg_tile_info);
3838   TILE_GET_INFO_MEMBER(get_fg_tile_info);
39   
39
4040   virtual void machine_start();
4141   virtual void machine_reset();
4242   virtual void video_start();
4343   DECLARE_PALETTE_INIT(timelimt);
44   
44
4545   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
4646   void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
47   
47
4848   INTERRUPT_GEN_MEMBER(irq);
4949};
trunk/src/mame/includes/tryout.h
r245142r245143
2727   UINT8 m_vram_bank;
2828   UINT8 *m_vram;
2929   UINT8 *m_vram_gfx;
30   
30
3131   DECLARE_WRITE8_MEMBER(nmi_ack_w);
3232   DECLARE_WRITE8_MEMBER(sound_w);
3333   DECLARE_WRITE8_MEMBER(sound_irq_ack_w);
r245142r245143
4545   TILEMAP_MAPPER_MEMBER(get_fg_memory_offset);
4646   TILEMAP_MAPPER_MEMBER(get_bg_memory_offset);
4747
48    virtual void machine_start();
49    virtual void video_start();
48   virtual void machine_start();
49   virtual void video_start();
5050   DECLARE_PALETTE_INIT(tryout);
5151
5252   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
trunk/src/mame/includes/tsamurai.h
r245142r245143
2828
2929   tilemap_t *m_background;
3030   tilemap_t *m_foreground;
31   
31
3232   //common
3333   int m_flicker;
3434   int m_textbank1;
3535   int m_nmi_enabled;
36   
36
3737   // tsamurai and m660 specific
3838   int m_bgcolor;
3939   int m_sound_command1;
4040   int m_sound_command2;
41   
41
4242   //m660 specific
4343   int m_textbank2;
4444   int m_sound_command3;
45   
45
4646   //vsgongf specific
4747   int m_vsgongf_sound_nmi_enabled;
4848   int m_vsgongf_color;
4949   int m_key_count; //debug only
50   
50
5151   // common
5252   DECLARE_WRITE8_MEMBER(nmi_enable_w);
5353   DECLARE_WRITE8_MEMBER(coincounter_w);
r245142r245143
6868   DECLARE_WRITE8_MEMBER(sound_command2_w);
6969   DECLARE_READ8_MEMBER(sound_command1_r);
7070   DECLARE_READ8_MEMBER(sound_command2_r);
71   
71
7272   // tsamurai specific
7373   DECLARE_READ8_MEMBER(tsamurai_unknown_d803_r);
74   
74
7575   // m660 specific
7676   DECLARE_WRITE8_MEMBER(m660_textbank2_w);
7777   DECLARE_READ8_MEMBER(m660_unknown_d803_r);
7878   DECLARE_WRITE8_MEMBER(m660_sound_command3_w);
7979   DECLARE_READ8_MEMBER(m660_sound_command3_r);
80   
80
8181   // vsgongf specific
8282   DECLARE_WRITE8_MEMBER(vsgongf_color_w);
8383   DECLARE_WRITE8_MEMBER(vsgongf_sound_nmi_enable_w);
8484   DECLARE_READ8_MEMBER(vsgongf_a006_r);
8585   DECLARE_READ8_MEMBER(vsgongf_a100_r);
8686   DECLARE_WRITE8_MEMBER(vsgongf_sound_command_w);
87   
87
8888   TILE_GET_INFO_MEMBER(get_bg_tile_info);
8989   TILE_GET_INFO_MEMBER(get_fg_tile_info);
9090   TILE_GET_INFO_MEMBER(get_vsgongf_tile_info);
91   
91
9292   virtual void machine_start();
9393   DECLARE_MACHINE_START(m660);
9494   DECLARE_MACHINE_START(tsamurai);
r245142r245143
9797   DECLARE_VIDEO_START(m660);
9898   DECLARE_VIDEO_START(tsamurai);
9999   DECLARE_VIDEO_START(vsgongf);
100   
100
101101   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
102102   UINT32 screen_update_vsgongf(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
103103   void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect );
104   
104
105105   INTERRUPT_GEN_MEMBER(interrupt);
106106   INTERRUPT_GEN_MEMBER(vsgongf_sound_interrupt);
107107};
trunk/src/mame/includes/usgames.h
r245142r245143
1717   DECLARE_WRITE8_MEMBER(usgames_videoram_w);
1818   DECLARE_WRITE8_MEMBER(usgames_charram_w);
1919   TILE_GET_INFO_MEMBER(get_usgames_tile_info);
20    virtual void machine_start();
21    virtual void video_start();
20   virtual void machine_start();
21   virtual void video_start();
2222   DECLARE_PALETTE_INIT(usgames);
2323   UINT32 screen_update_usgames(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
2424   required_device<cpu_device> m_maincpu;
trunk/src/mame/includes/vigilant.h
r245142r245143
3838   DECLARE_WRITE8_MEMBER(vigilant_horiz_scroll_w);
3939   DECLARE_WRITE8_MEMBER(vigilant_rear_horiz_scroll_w);
4040   DECLARE_WRITE8_MEMBER(vigilant_rear_color_w);
41    virtual void machine_start();
42    virtual void video_start();
41   virtual void machine_start();
42   virtual void video_start();
4343   virtual void video_reset();
4444   UINT32 screen_update_vigilant(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
4545   UINT32 screen_update_kikcubic(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
trunk/src/mame/includes/vulgus.h
r245142r245143
4848
4949   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
5050   void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect);
51   
51
5252   INTERRUPT_GEN_MEMBER(vblank_irq);
5353};
trunk/src/mame/includes/wc90b.h
r245142r245143
5151   DECLARE_WRITE8_MEMBER(txvideoram_w);
5252   DECLARE_WRITE8_MEMBER(adpcm_control_w);
5353   DECLARE_WRITE_LINE_MEMBER(adpcm_int);
54   
54
5555   TILE_GET_INFO_MEMBER(get_bg_tile_info);
5656   TILE_GET_INFO_MEMBER(get_fg_tile_info);
5757   TILE_GET_INFO_MEMBER(get_tx_tile_info);
58   
58
5959   virtual void machine_start();
6060   virtual void video_start();
61   
61
6262   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
6363   void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int priority );
6464};
trunk/src/mame/machine/hng64_net.c
r245142r245143
141141   MCFG_CPU_ADD("network", KL5C80A12, HNG64_MASTER_CLOCK / 4)        /* KL5C80A12CFP - binary compatible with Z80. */
142142   MCFG_CPU_PROGRAM_MAP(hng_comm_map)
143143   MCFG_CPU_IO_MAP(hng_comm_io_map)
144MACHINE_CONFIG_END
No newline at end of file
144MACHINE_CONFIG_END
trunk/src/mame/machine/iteagle_fpga.c
r245142r245143
3535
3636   add_map(sizeof(m_ctrl_regs), M_IO, FUNC(iteagle_fpga_device::ctrl_map));
3737   // ctrl defaults to base address 0x00000000
38   bank_infos[0].adr = 0x00000000 & (~(bank_infos[0].size - 1));   
38   bank_infos[0].adr = 0x00000000 & (~(bank_infos[0].size - 1));
3939
4040   add_map(sizeof(m_fpga_regs), M_IO, FUNC(iteagle_fpga_device::fpga_map));
4141   // fpga defaults to base address 0x00000300
42   bank_infos[1].adr = 0x00000300 & (~(bank_infos[1].size - 1));   
42   bank_infos[1].adr = 0x00000300 & (~(bank_infos[1].size - 1));
4343
4444   add_map(sizeof(m_rtc_regs), M_MEM, FUNC(iteagle_fpga_device::rtc_map));
4545   // RTC defaults to base address 0x000c0000
46   bank_infos[2].adr = 0x000c0000 & (~(bank_infos[2].size - 1));   
46   bank_infos[2].adr = 0x000c0000 & (~(bank_infos[2].size - 1));
4747}
4848
4949void iteagle_fpga_device::device_reset()
r245142r245143
106106         if (LOG_FPGA && (m_prev_reg != offset && m_prev_reg != (0x08/4)))
107107            logerror("%s:fpga read from offset %04X = %08X & %08X\n", machine().describe_context(), offset*4, result, mem_mask);
108108         break;
109      case 0x04/4:
109      case 0x04/4:
110110         result =  (result & 0xFF0FFFFF) | (machine().root_device().ioport("SW5")->read()<<20); // Resolution
111111         if (LOG_FPGA)
112112            logerror("%s:fpga read from offset %04X = %08X & %08X\n", machine().describe_context(), offset*4, result, mem_mask);
r245142r245143
183183
184184   COMBINE_DATA(&m_rtc_regs[offset]);
185185   switch (offset) {
186      case 0x7F8/4: // M48T02 time         
186      case 0x7F8/4: // M48T02 time
187187         if (data & mem_mask & 0x40) {
188188            // get the current date/time from the core
189189            machine().current_datetime(systime);
r245142r245143
191191            raw[1] = dec_2_bcd(systime.local_time.second);
192192            raw[2] = dec_2_bcd(systime.local_time.minute);
193193            raw[3] = dec_2_bcd(systime.local_time.hour);
194         
194
195195            raw[4] = dec_2_bcd((systime.local_time.weekday != 0) ? systime.local_time.weekday : 7);
196196            raw[5] = dec_2_bcd(systime.local_time.mday);
197197            raw[6] = dec_2_bcd(systime.local_time.month + 1);
r245142r245143
199199            m_rtc_regs[0x7F8/4] = (raw[3]<<24) | (raw[2]<<16) | (raw[1]<<8) | (raw[0] <<0);
200200            //m_rtc_regs[0x7FC/4] = (raw[7]<<24) | (raw[6]<<16) | (raw[5]<<8) | (raw[4] <<0);
201201            m_rtc_regs[0x7FC/4] = (0x95<<24) | (raw[6]<<16) | (raw[5]<<8) | (raw[4] <<0);
202         }   
202         }
203203         if (LOG_RTC)
204204            logerror("%s:RTC write to offset %04X = %08X & %08X\n", machine().describe_context(), offset*4, data, mem_mask);
205         
205
206206         break;
207207      default:
208208         if (LOG_RTC)
r245142r245143
249249   pci_device::device_reset();
250250}
251251
252READ32_MEMBER( iteagle_eeprom_device::eeprom_r )   
252READ32_MEMBER( iteagle_eeprom_device::eeprom_r )
253253{
254254   UINT32 result = 0;
255255
r245142r245143
257257      case 0xC/4: // I2C Handler
258258         if (ACCESSING_BITS_16_23) {
259259            result = m_eeprom->do_read()<<(16+3);
260         }   else {
260         }   else {
261261            if (LOG_EEPROM)
262262               logerror("%s:eeprom read from offset %04X = %08X & %08X\n", machine().describe_context(), offset*4, result, mem_mask);
263263         }
r245142r245143
270270   return result;
271271}
272272
273WRITE32_MEMBER( iteagle_eeprom_device::eeprom_w )   
273WRITE32_MEMBER( iteagle_eeprom_device::eeprom_w )
274274{
275275   switch (offset) {
276276      case 0xC/4: // I2C Handler
r245142r245143
278278            m_eeprom->di_write((data  & 0x040000) >> (16+2));
279279            m_eeprom->cs_write((data  & 0x020000) ? ASSERT_LINE : CLEAR_LINE);
280280            m_eeprom->clk_write((data & 0x010000) ? ASSERT_LINE : CLEAR_LINE);
281         }   else {
281         }   else {
282282            if (LOG_EEPROM)
283283               logerror("%s:eeprom write to offset %04X = %08X & %08X\n", machine().describe_context(), offset*4, data, mem_mask);
284284         }
trunk/src/mame/machine/iteagle_fpga.h
r245142r245143
3131   UINT32 m_fpga_regs[0x20];
3232   UINT32 m_rtc_regs[0x800];
3333   UINT32 m_prev_reg;
34   
34
3535   DECLARE_ADDRESS_MAP(rtc_map, 32);
3636   DECLARE_ADDRESS_MAP(fpga_map, 32);
3737   DECLARE_ADDRESS_MAP(ctrl_map, 32);
trunk/src/mame/mame.lst
r245142r245143
336336frogf           // bootleg
337337quaak           // bootleg
338338froggeram       // bootleg
339froggerv      // bootleg
339froggerv        // bootleg
340340amidars         // GX337 (c) 1982 Konami
341341triplep         // (c) 1982 KKI / made by Sanritsu?
342342triplepa        // (c) 1982 KKI / made by Sanritsu?
r245142r245143
63506350combatsct       // GX611 (c) 1987
63516351combatscj       // GX611 (c) 1987 (Japan)
63526352bootcamp        // GX611 (c) 1987
6353bootcampa      // GX611 (c) 1987
6353bootcampa       // GX611 (c) 1987
63546354combatscb       // bootleg
63556355rockrage        // GX620 (c) 1986 (World?)
63566356rockragea       // GX620 (c) 1986 (Prototype?)
r245142r245143
77137713kof2000n        // 0257 (c) 2000 SNK
77147714            // 0258 SNK vs. Capcom?
77157715bangbead        // 0259 (c) 2000 Visco
7716b2b            // 0071 (c) 2000 Visco (released by NCI in 2010)
7716b2b             // 0071 (c) 2000 Visco (released by NCI in 2010)
77177717nitd            // 0260 (c) 2000 Eleven / Gavaking
77187718nitdbl          // bootleg
77197719sengoku3        // 0261 (c) 2001 Noise Factory / SNK
r245142r245143
79107910tstrikea        // Game Room
79117911ctribe          // TA-0028 (c) 1990 (US)
79127912ctribe1         // TA-0028 (c) 1990 (US)
7913ctribeo         // TA-0028 (c) 1990 (US)
7913ctribeo         // TA-0028 (c) 1990 (US)
79147914ctribej         // TA-0028 (c) 1990 (Japan)
79157915ctribeb         // bootleg
79167916ctribeb2        // bootleg
r245142r245143
84538453raiden2eu       // (c) 1993 Seibu Kaihatsu + Fabtek license
84548454raiden2eua      // (c) 1993 Seibu Kaihatsu + Fabtek license
84558455raiden2nl       // (c) 1993 Seibu Kaihatsu
8456raiden2f      // (c) 1993 Seibu Kaihatsu
8456raiden2f        // (c) 1993 Seibu Kaihatsu
84578457raiden2g        // (c) 1993 Seibu Kaihatsu + Tuning license
84588458raiden2dx       // (c) 1993 Seibu Kaihatsu
84598459
r245142r245143
87778777gunbirdk        // (c) 1994
87788778gunbirdj        // (c) 1994
87798779btlkroad        // (c) 1994
8780btlkroadk      // (c) 1994
8780btlkroadk       // (c) 1994
87818781s1945           // (c) 1995
87828782s1945a          // (c) 1995
87838783s1945j          // (c) 1995
trunk/src/mame/video/bbusters.c
r245142r245143
7676
7777   m_pf1_tilemap->set_transparent_pen(15);
7878   m_fix_tilemap->set_transparent_pen(15);
79   
79
8080   save_item(NAME(m_scale_line_count));
8181}
8282
r245142r245143
8888
8989   m_pf1_tilemap->set_transparent_pen(15);
9090   m_fix_tilemap->set_transparent_pen(15);
91   
91
9292   save_item(NAME(m_scale_line_count));
9393}
9494
trunk/src/mame/video/deadang.c
r245142r245143
7777   m_pf2_layer->set_transparent_pen(15);
7878   m_pf1_layer->set_transparent_pen(15);
7979   m_text_layer->set_transparent_pen(15);
80   
80
8181   save_item(NAME(m_tilebank));
8282   save_item(NAME(m_oldtilebank));
8383}
trunk/src/mame/video/decmxc06.c
r245142r245143
110110      else
111111         mult = -16;
112112
113     
113
114114      // thedeep strongly suggests that this check goes here, otherwise the radar breaks
115115      if (!(spriteram[offs] & 0x8000))
116116      {
117117         offs += 4;
118118         continue;
119119      }
120     
121120
121
122122      for (x = 0; x < w; x++)
123123      {
124124         // maybe, birdie try appears to specify the base code for each part..
r245142r245143
173173         offs += 4;
174174         if (offs >= m_ramsize / 2)
175175            return;
176   
177176
177
178178      }
179179   }
180180}
trunk/src/mame/video/dynax.c
r245142r245143
122122}
123123
124124/*
125mjelctrn:   7 d e -> 1 - 4 8
126mjembase:   b d e -> - 2 4 8
125mjelctrn:   7 d e -> 1 - 4 8
126mjembase:   b d e -> - 2 4 8
127127*/
128128WRITE8_MEMBER(dynax_state::mjembase_blit_dest_w)
129129{
r245142r245143
381381}
382382
383383/*
384   Flags:
384    Flags:
385385
386386    7654 ----   -
387387    ---- 3---   Rotation = SWAPXY + FLIPY
r245142r245143
12231223}
12241224
12251225/*
1226mjembase:   priority: 00 08 10 18 20 28; enable: 1,2,4
1226mjembase:   priority: 00 08 10 18 20 28; enable: 1,2,4
12271227Convert to:
1228mjelctrn:   priority: 00 20 10 40 30 50; enable: 1,2,8
1228mjelctrn:   priority: 00 20 10 40 30 50; enable: 1,2,8
12291229*/
12301230WRITE8_MEMBER(dynax_state::mjembase_priority_w)
12311231{
trunk/src/mame/video/hng64.c
r245142r245143
660660
661661   // xrally's pink tilemaps make me think this is a tilemap enable bit.
662662   // fatfurwa makes me think otherwise.
663//   if (!(tileregs & 0x0040)) return;
663//  if (!(tileregs & 0x0040)) return;
664664
665665   // set the transmask so our manual copy is correct
666666   if (tileregs & 0x0400)
r245142r245143
12511251   m_vertsrom = (UINT16*)memregion("verts")->base();
12521252   m_vertsrom_size = memregion("verts")->bytes();
12531253}
1254
trunk/src/mame/video/hng64_3d.c
r245142r245143
6868/* Note: Samurai Shodown games never calls bit 1, so it can't be framebuffer clear. It also calls bit 3 at start-up, meaning unknown */
6969WRITE32_MEMBER(hng64_state::dl_control_w) // This handles framebuffers
7070{
71//   printf("dl_control_w %08x %08x\n", data, mem_mask);
71//  printf("dl_control_w %08x %08x\n", data, mem_mask);
7272
7373   //if(data & 2) // swap buffers
7474   //{
r245142r245143
540540#if 0
541541         if (((chunkOffset[2] & 0xc000) == 0x4000) && (m_screen->frame_number() & 1))
542542         {
543         //   if (chunkOffset[2] == 0xd870)
543         //  if (chunkOffset[2] == 0xd870)
544544            {
545545               polys[*numPolys].debugColor = 0xffff0000;
546546               printf("%d (%08x) : %04x %04x %04x\n", k, address[k] * 3 * 2, chunkOffset[0], chunkOffset[1], chunkOffset[2]);
r245142r245143
863863
864864void hng64_state::hng64_command3d(const UINT16* packet)
865865{
866
867866   /* A temporary place to put some polygons.  This will optimize away if the compiler's any good. */
868867   int numPolys = 0;
869868   dynamic_array<polygon> polys(1024*5);
870869
871870   //printf("packet type : %04x %04x|%04x %04x|%04x %04x|%04x %04x  | %04x %04x %04x %04x %04x %04x %04x %04x\n", packet[0],packet[1],packet[2],packet[3],packet[4],packet[5],packet[6],packet[7],     packet[8], packet[9], packet[10], packet[11], packet[12], packet[13], packet[14], packet[15]);
872   
871
873872   switch (packet[0])
874873   {
875874   case 0x0000:    // Appears to be a NOP.
r245142r245143
12391238
12401239   UINT8 paletteEntry = 0;
12411240   float t_coord, s_coord;
1242   const UINT8 *gfx = m_texturerom;   
1241   const UINT8 *gfx = m_texturerom;
12431242   const UINT8 *textureOffset = &gfx[prOptions.texIndex * 1024 * 1024];
12441243
12451244   for (; x_start <= x_end; x_start++)
r245142r245143
17021701                              prOptions);
17031702   }
17041703}
1705
trunk/src/mame/video/hng64_sprite.c
r245142r245143
222222      if (!chaini) source +=8;
223223   }
224224}
225
trunk/src/mame/video/jalblend.c
r245142r245143
3535void jaleco_blend_device::device_start()
3636{
3737   m_table = auto_alloc_array_clear(machine(), UINT8, 0xc00);
38   
38
3939   save_pointer(NAME(m_table), 0xc00);
4040}
4141
trunk/src/mame/video/jalblend.h
r245142r245143
33public:
44   jaleco_blend_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
55   ~jaleco_blend_device() {}
6   
6
77   void set(int color, UINT8 val);
88   rgb_t func(rgb_t dest, rgb_t addMe, UINT8 alpha);
99   void drawgfx(palette_device &palette,bitmap_ind16 &dest_bmp,const rectangle &clip,gfx_element *gfx,
r245142r245143
1818   virtual void device_start();
1919   virtual void device_reset();
2020
21private:   
21private:
2222   /* each palette entry contains a fourth 'alpha' value */
2323   UINT8 *m_table;
24   
24
2525   template<class _BitmapClass>
2626   void drawgfx_common(palette_device &palette,_BitmapClass &dest_bmp,const rectangle &clip,gfx_element *gfx,
2727                     UINT32 code,UINT32 color,int flipx,int flipy,int offsx,int offsy,
2828                     int transparent_color);
2929};
3030
31extern const device_type JALECO_BLEND;
No newline at end of file
31extern const device_type JALECO_BLEND;
trunk/src/mame/video/pc080sn.c
r245142r245143
6262{
6363   for (int i = 0; i < 8; i++)
6464      m_ctrl[i] = 0;
65   
65
6666   for (int i = 0; i < 2; i++)
6767   {
6868      m_bg_ram[i] = NULL;
trunk/src/mame/video/psychic5.c
r245142r245143
2424   UINT8 hi = palram[(offset) | 1];
2525
2626   int color = offset >> 1;
27   
27
2828   if (m_blend)
2929      m_blend->set(palbase + color, hi & 0x0f);
30   
30
3131   m_palette->set_pen_color(palbase + color, pal4bit(lo >> 4), pal4bit(lo), pal4bit(hi >> 4));
3232}
3333
r245142r245143
188188VIDEO_START_MEMBER(psychic5_state,psychic5)
189189{
190190   video_start();
191   
191
192192   m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(psychic5_state::get_bg_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 64, 32);
193193   m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(psychic5_state::get_fg_tile_info),this), TILEMAP_SCAN_COLS,  8,  8, 32, 32);
194194   m_fg_tilemap->set_transparent_pen(15);
195   
195
196196   save_item(NAME(m_title_screen));
197197
198198}
r245142r245143
200200VIDEO_START_MEMBER(psychic5_state,bombsa)
201201{
202202   video_start();
203   
203
204204   m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(psychic5_state::get_bg_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 32);
205205   m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(psychic5_state::get_fg_tile_info),this), TILEMAP_SCAN_COLS,  8,  8,  32, 32);
206206   m_fg_tilemap->set_transparent_pen(15);
207   
207
208208   save_item(NAME(m_bombsa_unknown));
209209}
210210
trunk/src/mame/video/realbrk.c
r245142r245143
154154
155155   m_tmpbitmap0 = auto_bitmap_ind16_alloc(machine(),32,32);
156156   m_tmpbitmap1 = auto_bitmap_ind16_alloc(machine(),32,32);
157   
157
158158   save_item(NAME(m_disable_video));
159159}
160160
trunk/src/mame/video/rltennis.c
r245142r245143
224224   m_tmp_bitmap[BITMAP_FG_1] = auto_bitmap_ind16_alloc(machine(), 512, 256);
225225   m_tmp_bitmap[BITMAP_FG_2] = auto_bitmap_ind16_alloc(machine(), 512, 256);
226226   m_tmp_bitmap[BITMAP_FG_DISPLAY] = auto_bitmap_ind16_alloc(machine(), 512, 256);
227   
227
228228   save_item(NAME(m_blitter));
229229}
230230
trunk/src/mame/video/seta001.c
r245142r245143
8484   m_spritelimit = 0x1ff;
8585
8686   m_bgflag = 0x00;
87   
87
8888   m_gfxbank_cb.bind_relative_to(*owner());
8989
9090   save_item(NAME(m_bgflag));
trunk/src/mame/video/seta2.c
r245142r245143
457457VIDEO_START_MEMBER(seta2_state,xoffset)
458458{
459459   video_start();
460   
460
461461   m_xoffset = 0x200;
462462}
463463
464464VIDEO_START_MEMBER(seta2_state,yoffset)
465465{
466466   video_start();
467   
467
468468   m_yoffset = 0x10;
469469}
470470
trunk/src/mame/video/sidearms.c
r245142r245143
159159   m_latch_374 = m_vcount_191 = m_hcount_191 = 0;
160160
161161   m_flipon = m_charon = m_staron = m_objon = m_bgon = 0;
162   
162
163163   save_item(NAME(m_bgon));
164164   save_item(NAME(m_objon));
165165   save_item(NAME(m_staron));
trunk/src/mame/video/srumbler.c
r245142r245143
5252
5353   m_bg_tilemap->set_transmask(0,0xffff,0x0000); /* split type 0 is totally transparent in front half */
5454   m_bg_tilemap->set_transmask(1,0x07ff,0xf800); /* split type 1 has pens 0-10 transparent in front half */
55   
55
5656   save_item(NAME(m_scroll));
5757}
5858
trunk/src/mame/video/ssv.c
r245142r245143
194194void ssv_state::video_start()
195195{
196196   m_gfxdecode->gfx(0)->set_granularity(64); /* 256 colour sprites with palette selectable on 64 colour boundaries */
197   
197
198198   save_item(NAME(m_enable_video));
199199   save_item(NAME(m_shadow_pen_mask));
200200   save_item(NAME(m_shadow_pen_shift));
r245142r245143
208208
209209   m_gfxdecode->gfx(0)->set_source((UINT8 *)m_eaglshot_gfxram);
210210   m_gfxdecode->gfx(1)->set_source((UINT8 *)m_eaglshot_gfxram);
211   
211
212212   save_pointer(NAME(m_eaglshot_gfxram), 16 * 0x40000 / 2);
213213}
214214
trunk/src/mame/video/suna16.c
r245142r245143
9292void suna16_state::video_start()
9393{
9494   m_paletteram = auto_alloc_array(machine(), UINT16, m_palette->entries());
95   
95
9696   save_item(NAME(m_color_bank));
9797}
9898
trunk/src/mame/video/suprloco.c
r245142r245143
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   
101
102102   save_item(NAME(m_control));
103103}
104104
trunk/src/mame/video/suprridr.c
r245142r245143
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   
47
4848   save_item(NAME(m_flipx));
4949   save_item(NAME(m_flipy));
5050}
trunk/src/mame/video/tankbust.c
r245142r245143
8383   m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(tankbust_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS,  8, 8, 64, 32);
8484
8585   m_txt_tilemap->set_transparent_pen(0);
86   
86
8787   save_item(NAME(m_xscroll));
8888   save_item(NAME(m_yscroll));
8989}
trunk/src/mame/video/tbowl.c
r245142r245143
116116   m_tx_tilemap->set_transparent_pen(0);
117117   m_bg_tilemap->set_transparent_pen(0);
118118   m_bg2_tilemap->set_transparent_pen(0);
119   
119
120120   save_item(NAME(m_xscroll));
121121   save_item(NAME(m_yscroll));
122122   save_item(NAME(m_bg2xscroll));
trunk/src/mame/video/thedeep.c
r245142r245143
134134   m_tilemap_1->draw(screen, bitmap, cliprect, 0,0);
135135   return 0;
136136}
137
trunk/src/mame/video/timelimt.c
r245142r245143
7373         8, 8, 32, 32);
7474
7575   m_fg_tilemap->set_transparent_pen(0);
76   
76
7777   save_item(NAME(m_scrollx));
7878   save_item(NAME(m_scrolly));
7979}
trunk/src/mame/video/tryout.c
r245142r245143
1212PALETTE_INIT_MEMBER(tryout_state, tryout)
1313{
1414   const UINT8 *color_prom = memregion("proms")->base();
15   
15
1616   for (int i = 0;i < palette.entries();i++)
1717   {
1818      int bit0,bit1,bit2,r,g,b;
trunk/src/mame/video/tsamurai.c
r245142r245143
5555
5656   m_background->set_transparent_pen(0);
5757   m_foreground->set_transparent_pen(0);
58   
58
5959   save_item(NAME(m_bgcolor));
6060   video_start();
6161}
r245142r245143
6363VIDEO_START_MEMBER(tsamurai_state, m660)
6464{
6565   VIDEO_START_CALL_MEMBER(tsamurai);
66   
66
6767   save_item(NAME(m_textbank2));
6868}
6969
r245142r245143
256256VIDEO_START_MEMBER(tsamurai_state,vsgongf)
257257{
258258   m_foreground = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(tsamurai_state::get_vsgongf_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32);
259   
259
260260   save_item(NAME(m_vsgongf_color));
261261   video_start();
262262}
trunk/src/mame/video/vulgus.c
r245142r245143
113113   m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(vulgus_state::get_bg_tile_info),this),TILEMAP_SCAN_COLS,16,16,32,32);
114114
115115   m_fg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 47);
116   
116
117117   save_item(NAME(m_palette_bank));
118118}
119119
trunk/src/mame/video/xain.c
r245142r245143
8989   m_bgram0_tilemap->set_transparent_pen(0);
9090   m_bgram1_tilemap->set_transparent_pen(0);
9191   m_char_tilemap->set_transparent_pen(0);
92   
92
9393   save_item(NAME(m_pri));
9494   save_item(NAME(m_scrollxP0));
9595   save_item(NAME(m_scrollyP0));
trunk/src/mess/audio/gamate.c
r245142r245143
3838void gamate_sound_device::device_start()
3939{
4040   // bind callbacks
41//   m_irq_cb.bind_relative_to(*owner());
41//  m_irq_cb.bind_relative_to(*owner());
4242
4343   memset(m_channels, 0, sizeof(m_channels));
4444   memset(reg, 0, sizeof(reg));
r245142r245143
5656   stream_sample_t *left=outputs[0], *right=outputs[1];
5757   int i, j;
5858   Tone *channel;
59   
59
6060   for (i = 0; i < samples; i++, left++, right++)
6161   {
6262      noise.pos += noise.step;
r245142r245143
7777         {
7878            case 0: case 1: case 2: case 3:
7979            case 4: case 5: case 6: case 7:
80            case 8: case 9: case 0xb:
80            case 8: case 9: case 0xb:
8181            case 0xd: case 0xf:
8282               if (envelope.index>=ARRAY_LENGTH(EnvelopeVolumes)/2)
8383               {
trunk/src/mess/drivers/a7800.c
r245142r245143
286286   AM_RANGE(0x0480, 0x04ff) AM_RAM AM_SHARE("riot_ram") AM_MIRROR(0x100)
287287   AM_RANGE(0x1800, 0x1fff) AM_RAM AM_SHARE("6116_1")
288288   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
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
294294   AM_RANGE(0x4000, 0xffff) AM_DEVWRITE("cartslot", a78_cart_slot_device, write_40xx)
295295   AM_RANGE(0x4000, 0xbfff) AM_DEVREAD("cartslot", a78_cart_slot_device, read_40xx)
296296   AM_RANGE(0xc000, 0xffff) AM_READ(bios_or_cart_r)    // here also the BIOS can be accessed
trunk/src/mess/drivers/apple2.c
r245142r245143
12291229   SLOT_INTERFACE("dx1", A2BUS_DX1)    /* Decillonix DX-1 sampler card */
12301230   SLOT_INTERFACE("tm2ho", A2BUS_TIMEMASTERHO) /* Applied Engineering TimeMaster II H.O. */
12311231   SLOT_INTERFACE("mouse", A2BUS_MOUSE)    /* Apple II Mouse Card */
1232   SLOT_INTERFACE("ezcgi", A2BUS_EZCGI)   /* E-Z Color Graphics Interface */
1233   SLOT_INTERFACE("ezcgi9938", A2BUS_EZCGI_9938)   /* E-Z Color Graphics Interface (TMS9938) */
1234   SLOT_INTERFACE("ezcgi9958", A2BUS_EZCGI_9958)   /* E-Z Color Graphics Interface (TMS9958) */
1232   SLOT_INTERFACE("ezcgi", A2BUS_EZCGI)    /* E-Z Color Graphics Interface */
1233   SLOT_INTERFACE("ezcgi9938", A2BUS_EZCGI_9938)   /* E-Z Color Graphics Interface (TMS9938) */
1234   SLOT_INTERFACE("ezcgi9958", A2BUS_EZCGI_9958)   /* E-Z Color Graphics Interface (TMS9958) */
12351235//  SLOT_INTERFACE("magicmusician", A2BUS_MAGICMUSICIAN)    /* Magic Musician Card */
12361236SLOT_INTERFACE_END
12371237
trunk/src/mess/drivers/apple2e.c
r245142r245143
30363036   SLOT_INTERFACE("dx1", A2BUS_DX1)    /* Decillonix DX-1 sampler card */
30373037   SLOT_INTERFACE("tm2ho", A2BUS_TIMEMASTERHO) /* Applied Engineering TimeMaster II H.O. */
30383038   SLOT_INTERFACE("mouse", A2BUS_MOUSE)    /* Apple II Mouse Card */
3039   SLOT_INTERFACE("ezcgi", A2BUS_EZCGI)   /* E-Z Color Graphics Interface */
3040   SLOT_INTERFACE("ezcgi9938", A2BUS_EZCGI_9938)   /* E-Z Color Graphics Interface (TMS9938) */
3041   SLOT_INTERFACE("ezcgi9958", A2BUS_EZCGI_9958)   /* E-Z Color Graphics Interface (TMS9958) */
3039   SLOT_INTERFACE("ezcgi", A2BUS_EZCGI)    /* E-Z Color Graphics Interface */
3040   SLOT_INTERFACE("ezcgi9938", A2BUS_EZCGI_9938)   /* E-Z Color Graphics Interface (TMS9938) */
3041   SLOT_INTERFACE("ezcgi9958", A2BUS_EZCGI_9958)   /* E-Z Color Graphics Interface (TMS9958) */
30423042//  SLOT_INTERFACE("magicmusician", A2BUS_MAGICMUSICIAN)    /* Magic Musician Card */
30433043SLOT_INTERFACE_END
30443044
trunk/src/mess/drivers/gamate.c
r245142r245143
44 Morten Shearman Kirkegaard morten+gamate@afdelingp.dk
55 Juan F??lix Mateos vectrex@hackermesh.org
66
7 nmi unknown
7 nmi unknown
88 bomb blast top status line missing
99 ******************************************************************************/
1010
r245142r245143
8484WRITE8_MEMBER( gamate_state::gamate_cart_protection_w )
8585{
8686   logerror("%.6f protection write %x %x address:%x data:%x shift:%d\n",machine().time().as_double(), offset, data, card_protection.address, card_protection.cartridge_byte, card_protection.bit_shifter);
87 
87
8888   switch (offset)
8989   {
9090   case 0:
r245142r245143
118118      ret=(card_protection.cartridge_byte&0x80) ? 2 : 0;
119119      if (card_protection.bit_shifter==7 && !card_protection.failed)
120120      { // now protection chip on cartridge activates cartridge chip select on cpu accesses
121//         m_maincpu->space(AS_PROGRAM).install_read_handler(0x6000, 0x6000, READ8_DELEGATE(gamate_state, gamate_cart_protection_r)); // next time I will try to get this working
121//          m_maincpu->space(AS_PROGRAM).install_read_handler(0x6000, 0x6000, READ8_DELEGATE(gamate_state, gamate_cart_protection_r)); // next time I will try to get this working
122122      }
123123      card_protection.cartridge_byte<<=1;
124124   }
r245142r245143
318318   m_cart_ptr = memregion("maincpu")->base() + 0x6000;
319319   if (m_cart->exists())
320320   {
321//      m_maincpu->space(AS_PROGRAM).install_read_handler(0x6000, 0x6000, READ8_DELEGATE(gamate_state, gamate_cart_protection_r));
321//      m_maincpu->space(AS_PROGRAM).install_read_handler(0x6000, 0x6000, READ8_DELEGATE(gamate_state, gamate_cart_protection_r));
322322      m_cart_ptr = m_cart->get_rom_base();
323323      membank("bankmulti")->set_base(m_cart->get_rom_base()+1);
324324      membank("bank")->set_base(m_cart->get_rom_base()+0x4000); // bankswitched games in reality no offset
325325   }
326//   m_bios[0xdf1]=0xea; m_bios[0xdf2]=0xea; // default bios: $47 protection readback
326//  m_bios[0xdf1]=0xea; m_bios[0xdf2]=0xea; // default bios: $47 protection readback
327327   card_protection.set=false;
328328   bank_multi=0;
329329   card_protection.unprotected=false;
r245142r245143
400400
401401/*    YEAR  NAME     PARENT  COMPAT    MACHINE  INPUT   CLASS         INIT      COMPANY    FULLNAME */
402402CONS( 19??, gamate,  0,      0,        gamate,  gamate, gamate_state, gamate, "Bit Corp", "Gamate", 0)
403
trunk/src/mess/drivers/hh_hmcs40.c
r245142r245143
6666   required_device<cpu_device> m_maincpu;
6767   optional_ioport_array<7> m_inp_matrix; // max 7
6868   optional_device<speaker_sound_device> m_speaker;
69   
69
7070   // misc common
7171   UINT16 m_inp_mux;                   // multiplexed inputs mask
7272
r245142r245143
7878   int m_display_wait;                 // led/lamp off-delay in microseconds (default 33ms)
7979   int m_display_maxy;                 // display matrix number of rows
8080   int m_display_maxx;                 // display matrix number of columns
81   
81
8282   UINT32 m_grid;                      // VFD current row data
8383   UINT64 m_plate;                     // VFD current column data
84   
85   UINT64 m_display_state[0x20];       // display matrix rows data
84
85   UINT64 m_display_state[0x20];       // display matrix rows data
8686   UINT16 m_display_segmask[0x20];     // if not 0, display matrix row is a digit, mask indicates connected segments
8787   UINT64 m_display_cache[0x20];       // (internal use)
8888   UINT8 m_display_decay[0x20][0x40];  // (internal use)
r245142r245143
9595   DECLARE_WRITE8_MEMBER(alnattck_plate_w);
9696   DECLARE_WRITE16_MEMBER(alnattck_d_w);
9797   DECLARE_READ16_MEMBER(alnattck_d_r);
98   
98
9999   void egalaxn2_display();
100100   DECLARE_WRITE8_MEMBER(egalaxn2_plate_w);
101101   DECLARE_WRITE16_MEMBER(egalaxn2_grid_w);
r245142r245143
110110   memset(m_display_cache, ~0, sizeof(m_display_cache));
111111   memset(m_display_decay, 0, sizeof(m_display_decay));
112112   memset(m_display_segmask, 0, sizeof(m_display_segmask));
113   
113
114114   m_inp_mux = 0;
115115   m_grid = 0;
116116   m_plate = 0;
r245142r245143
191191      for (int x = 0; x < m_display_maxx; x++)
192192         if (m_display_decay[y][x] != 0)
193193            m_display_decay[y][x]--;
194   
194
195195   display_update();
196196}
197197
r245142r245143
204204   UINT64 mask = (1 << maxx) - 1;
205205   for (int y = 0; y < maxy; y++)
206206      m_display_state[y] = (sety >> y & 1) ? (setx & mask) : 0;
207   
207
208208   display_update();
209209}
210210
r245142r245143
249249   /* basic machine hardware */
250250   MCFG_CPU_ADD("maincpu", HD38750, 400000) // approximation - RC osc.
251251
252//   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
252//  MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
253253   MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
254254
255255   /* no video! */
r245142r245143
284284   /* basic machine hardware */
285285   MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation - RC osc.
286286
287//   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
287//  MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
288288   MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
289289
290290   /* no video! */
r245142r245143
318318   /* basic machine hardware */
319319   MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation - RC osc.
320320
321//   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
321//  MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
322322   MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
323323
324324   /* no video! */
r245142r245143
351351
352352   // update display
353353   UINT32 plate = BITSWAP16(m_plate,11,9,8,10,7,2,0,1,3,4,5,6,12,13,14,15) | (m_plate & 0xf0000);
354   
354
355355   display_matrix(20, 10, plate, m_grid);
356356}
357357
r245142r245143
359359{
360360   // D4: speaker out
361361   m_speaker->level_w(data >> 4 & 1);
362   
362
363363   // D7-D13: input mux
364364   m_inp_mux = data >> 7 & 0x7f;
365365
366366   // D6-D15: vfd matrix grid
367367   m_grid = data >> 6 & 0x3ff;
368   
368
369369   // D0-D3: plate 16-19 (update display there)
370370   alnattck_plate_w(space, 4, data & 0xf);
371371}
r245142r245143
449449   /* basic machine hardware */
450450   MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation - RC osc.
451451
452//   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
452//  MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
453453   MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
454454
455455   /* no video! */
r245142r245143
484484   /* basic machine hardware */
485485   MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation - RC osc.
486486
487//   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
487//  MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
488488   MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
489489
490490   /* no video! */
r245142r245143
519519   /* basic machine hardware */
520520   MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation - RC osc.
521521
522//   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
522//  MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
523523   MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
524524
525525   /* no video! */
r245142r245143
554554   /* basic machine hardware */
555555   MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation - RC osc.
556556
557//   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
557//  MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
558558   MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
559559
560560   /* no video! */
r245142r245143
583583{
584584   UINT32 grid = BITSWAP16(m_grid,15,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14);
585585   UINT32 plate = BITSWAP24(m_plate,23,22,21,20,15,14,13,12,7,6,5,4,3,2,1,0,19,18,17,16,11,10,9,8);
586   
586
587587   display_matrix(24, 15, plate, grid);
588588}
589589
r245142r245143
591591{
592592   // D0: speaker out
593593   m_speaker->level_w(data & 1);
594   
594
595595   // D1-D4: input mux
596596   m_inp_mux = data >> 1 & 0xf;
597   
597
598598   // D1-D15: vfd matrix grid
599599   m_grid = data >> 1;
600600   egalaxn2_display();
r245142r245143
766766   /* basic machine hardware */
767767   MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation - RC osc.
768768
769//   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
769//  MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
770770   MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
771771
772772   /* no video! */
r245142r245143
787787  * boards are labeled THF-01II 2E138E01/2E128E02
788788  * Hitachi HD38800B23 MCU
789789  * cyan/red/blue VFD display Futaba DM-65ZK 3A
790 
790
791791  NOTE!: MESS external artwork is recommended
792792
793793***************************************************************************/
r245142r245143
801801   /* basic machine hardware */
802802   MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation - RC osc.
803803
804//   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
804//  MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
805805   MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
806806
807807   /* no video! */
r245142r245143
836836   /* basic machine hardware */
837837   MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation - RC osc.
838838
839//   MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
839//  MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
840840   MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
841841
842842   /* no video! */
trunk/src/mess/drivers/hh_pic16.c
r245142r245143
5757   int m_display_wait;                 // led/lamp off-delay in microseconds (default 33ms)
5858   int m_display_maxy;                 // display matrix number of rows
5959   int m_display_maxx;                 // display matrix number of columns
60   
61   UINT32 m_display_state[0x20];       // display matrix rows data
60
61   UINT32 m_display_state[0x20];       // display matrix rows data
6262   UINT16 m_display_segmask[0x20];     // if not 0, display matrix row is a digit, mask indicates connected segments
6363   UINT32 m_display_cache[0x20];       // (internal use)
6464   UINT8 m_display_decay[0x20][0x20];  // (internal use)
r245142r245143
7979   memset(m_display_cache, ~0, sizeof(m_display_cache));
8080   memset(m_display_decay, 0, sizeof(m_display_decay));
8181   memset(m_display_segmask, 0, sizeof(m_display_segmask));
82   
82
8383   m_b = 0;
8484   m_c = 0;
8585
r245142r245143
158158      for (int x = 0; x < m_display_maxx; x++)
159159         if (m_display_decay[y][x] != 0)
160160            m_display_decay[y][x]--;
161   
161
162162   display_update();
163163}
164164
r245142r245143
171171   UINT32 mask = (1 << maxx) - 1;
172172   for (int y = 0; y < maxy; y++)
173173      m_display_state[y] = (sety >> y & 1) ? (setx & mask) : 0;
174   
174
175175   display_update();
176176}
177177
r245142r245143
199199      m_c = data;
200200   else
201201      m_b = data;
202   
202
203203   // d7: speaker out
204204   m_speaker->level_w((m_b >> 7 & 1) | (m_c >> 6 & 2));
205205
206206   // d0-d6: 7seg
207207   m_display_maxx = 7;
208208   m_display_maxy = 2;
209   
209
210210   m_display_segmask[offset] = 0x7f;
211211   m_display_state[offset] = ~data & 0x7f;
212212   display_update();
trunk/src/mess/drivers/hh_tms1k.c
r245142r245143
55  This driver is a collection of simple dedicated handheld and tabletop
66  toys based around the TMS1000 MCU series. Anything more complex or clearly
77  part of a series is (or will be) in its own driver.
8 
8
99  Let's use this driver for a list of known devices and their serials,
1010  excluding TI's own products (see for example ticalc1x.c, tispeak.c)
1111
r245142r245143
5353 @MP7334   TMS1400  1981, Coleco Total Control 4
5454
5555  inconsistent:
56 
56
5757 @CD7282SL TMS1100  1981, Tandy/RadioShack Tandy-12 (serial is similar to TI Speak & Spell series?)
5858
5959  (* denotes not yet emulated by MESS, @ denotes it's in this driver)
r245142r245143
102102   memset(m_display_cache, ~0, sizeof(m_display_cache));
103103   memset(m_display_decay, 0, sizeof(m_display_decay));
104104   memset(m_display_segmask, 0, sizeof(m_display_segmask));
105   
105
106106   m_o = 0;
107107   m_r = 0;
108108   m_inp_mux = 0;
r245142r245143
190190      for (int x = 0; x < m_display_maxx; x++)
191191         if (m_display_decay[y][x] != 0)
192192            m_display_decay[y][x]--;
193   
193
194194   display_update();
195195}
196196
r245142r245143
203203   UINT32 mask = (1 << maxx) - 1;
204204   for (int y = 0; y < maxy; y++)
205205      m_display_state[y] = (sety >> y & 1) ? (setx & mask) : 0;
206   
206
207207   display_update();
208208}
209209
r245142r245143
293293{
294294   // R3,R5-R7,R9,R10: input mux
295295   m_inp_mux = (data >> 3 & 1) | (data >> 4 & 0xe) | (data >> 5 & 0x30);
296   
296
297297   // +others:
298298   m_r = data;
299299   mathmagi_display();
r245142r245143
442442      m_display_segmask[y] = 0x7f;
443443      m_display_state[y] = (m_r >> (y + 8) & 1) ? m_o : 0;
444444   }
445   
445
446446   // R6,R7: lamps (-> lamp20,21)
447447   m_display_state[2] = m_r >> 6 & 3;
448   
448
449449   display_update();
450450}
451451
r245142r245143
453453{
454454   // R0-R5: input mux
455455   m_inp_mux = data & 0x3f;
456   
456
457457   // R10: speaker out
458458   m_speaker->level_w(data >> 10 & 1);
459459
r245142r245143
582582void hh_tms1k_state::tc4_display()
583583{
584584   m_display_wait = 50;
585   
585
586586   // R5,7,8,9 are 7segs
587587   for (int y = 0; y < 10; y++)
588588      if (y >= 5 && y <= 9 && y != 6)
589589         m_display_segmask[y] = 0x7f;
590   
590
591591   // update current state (note: R6 as extra column!)
592592   display_matrix(9, 10, (m_o | (m_r << 2 & 0x100)), m_r);
593593}
r245142r245143
600600   // R0-R5: input mux
601601   // R9: to cartridge slot
602602   m_inp_mux = data & 0x23f;
603   
603
604604   // R6: led column 8
605605   // +other columns
606606   m_r = data;
r245142r245143
699699
700700  Entex Electronic Baseball (1)
701701  * TMS1000NLP MP0914 (die labeled MP0914A)
702 
702
703703  This is a handheld LED baseball game. One player controls the batter, the CPU
704704  or other player controls the pitcher. Pitcher throw buttons are on a 'joypad'
705705  obtained from a compartment in the back. Player scores are supposed to be
706706  written down manually, the game doesn't save scores or innings (this annoyance
707707  was resolved in the sequel). For more information, refer to the official manual.
708 
708
709709  The overlay graphic is known to have 2 versions: one where the field players
710710  are denoted by words ("left", "center", "short", etc), and an alternate one
711711  with little guys drawn next to the LEDs.
r245142r245143
730730{
731731   // R8 is a 7seg
732732   m_display_segmask[8] = 0x7f;
733   
733
734734   display_matrix(7, 9, ~m_o, m_r);
735735}
736736
r245142r245143
738738{
739739   // R1-R5: input mux
740740   m_inp_mux = data >> 1 & 0x1f;
741   
741
742742   // R9: speaker out
743743   m_speaker->level_w(data >> 9 & 1);
744   
744
745745   // R0-R8: led columns
746746   m_r = data;
747747   ebball_display();
r245142r245143
821821  Entex Electronic Baseball 2
822822  * boards are labeled: ZENY
823823  * TMS1000 MCU, MP0923 (die labeled MP0923)
824 
824
825825  The Japanese version was published by Gakken, black casing instead of white.
826 
826
827827  The sequel to Entex Baseball, this version keeps up with score and innings.
828828  As its predecessor, the pitcher controls are on a separate joypad.
829829
830830
831831  lamp translation table: led zz from game PCB = MESS lampyx:
832 
832
833833    00 = -        10 = lamp94   20 = lamp74   30 = lamp50
834834    01 = lamp53   11 = lamp93   21 = lamp75   31 = lamp51
835835    02 = lamp7    12 = lamp92   22 = lamp80   32 = lamp52
r245142r245143
848848   // the first 3 are 7segs
849849   for (int y = 0; y < 3; y++)
850850      m_display_segmask[y] = 0x7f;
851   
851
852852   display_matrix(8, 10, ~m_o, m_r ^ 0x7f);
853853}
854854
r245142r245143
856856{
857857   // R3-R6: input mux
858858   m_inp_mux = data >> 3 & 0xf;
859   
859
860860   // R10: speaker out
861861   m_speaker->level_w(data >> 10 & 1);
862   
862
863863   // R0-R9: led columns
864864   m_r = data;
865865   ebball2_display();
r245142r245143
932932  * boards are labeled: ZENY
933933  * TMS1100NLL 6007 MP1204 (die labeled MP1204)
934934  * 2*SN75492N LED display driver
935 
935
936936  This is another improvement over Entex Baseball, where gameplay is a bit more
937937  varied. Like the others, the pitcher controls are on a separate joypad.
938938
939939
940940  lamp translation table: led zz from game PCB = MESS lampyx:
941941  note: unlabeled panel leds are listed here as Sz, Bz, Oz, Iz, z left-to-right
942 
942
943943    00 = -        10 = lamp75   20 = lamp72
944944    01 = lamp60   11 = lamp65   21 = lamp84
945945    02 = lamp61   12 = lamp55   22 = lamp85
r245142r245143
969969
970970   // R0,R1 are normal 7segs
971971   m_display_segmask[0] = m_display_segmask[1] = 0x7f;
972   
972
973973   // R4,R7 contain segments(only F and B) for the two other digits
974974   m_display_state[10] = (m_display_state[4] & 0x20) | (m_display_state[7] & 0x02);
975975   m_display_state[11] = ((m_display_state[4] & 0x10) | (m_display_state[7] & 0x01)) << 1;
976976   m_display_segmask[10] = m_display_segmask[11] = 0x22;
977   
977
978978   display_update();
979979}
980980
r245142r245143
982982{
983983   // R0-R2: input mux
984984   m_inp_mux = data & 7;
985   
985
986986   // R10: speaker out
987987   m_speaker->level_w(data >> 10 & 1);
988   
988
989989   // R0-R9: led columns
990990   m_r = data;
991991   ebball3_display();
r245142r245143
11181118{
11191119   // O0,O1,O4,O6: input mux
11201120   m_inp_mux = (data & 3) | (data >> 2 & 4) | (data >> 3 & 8);
1121   
1121
11221122   // O0-O6: led segments A-G
11231123   // O7: speaker out
11241124   m_o = data;
r245142r245143
12181218{
12191219   // R6,R8 are 7segs
12201220   m_display_segmask[6] = m_display_segmask[8] = 0x7f;
1221   
1221
12221222   display_matrix(8, 10, m_o, m_r);
12231223}
12241224
r245142r245143
15691569
15701570   // R6-R9: direction leds (-> lamp60-63)
15711571   m_display_state[6] = data >> 6 & 0xf;
1572   
1572
15731573   display_update();
15741574}
15751575
r245142r245143
15771577{
15781578   // O0-O4: input mux
15791579   m_inp_mux = data & 0x1f;
1580   
1580
15811581   // O0-O7: digit segments
15821582   m_o = data;
15831583}
r245142r245143
16461646  Parker Bros Merlin handheld game, by Bob Doyle
16471647  * TMS1100NLL MP3404A-N2
16481648  * red LEDs and 1-bit sound
1649 
1649
16501650  Also published in Japan by Tomy as "Dr. Smith", white case instead of red.
16511651  The one with dark-blue case is the rare sequel Master Merlin. More sequels
16521652  followed too, but on other hardware.
r245142r245143
17801780{
17811781   // O0,O6: input mux
17821782   m_inp_mux = (data & 1) | (data >> 5 & 2);
1783   
1783
17841784   // O3: speaker out
17851785   // O0-O2,O4-O7: led segments A-G
17861786   m_o = data;
trunk/src/mess/drivers/hh_ucom4.c
r245142r245143
66
77
88  known chips:
9 
9
1010  serial  device   etc.
1111----------------------------------------------------------------
1212 @031     uPD553C  1979, Bambino Superstar Football (ET-03)
r245142r245143
5252   required_device<cpu_device> m_maincpu;
5353   optional_ioport_array<5> m_inp_matrix; // max 5
5454   optional_device<speaker_sound_device> m_speaker;
55   
55
5656   // misc common
5757   UINT8 m_port[9];                    // MCU port A-I write data
5858   UINT16 m_inp_mux;                   // multiplexed inputs mask
r245142r245143
6565   int m_display_wait;                 // led/lamp off-delay in microseconds (default 33ms)
6666   int m_display_maxy;                 // display matrix number of rows
6767   int m_display_maxx;                 // display matrix number of columns
68   
68
6969   UINT32 m_grid;                      // VFD current row data
7070   UINT32 m_plate;                     // VFD current column data
71   
72   UINT32 m_display_state[0x20];       // display matrix rows data
71
72   UINT32 m_display_state[0x20];       // display matrix rows data
7373   UINT16 m_display_segmask[0x20];     // if not 0, display matrix row is a digit, mask indicates connected segments
7474   UINT32 m_display_cache[0x20];       // (internal use)
7575   UINT8 m_display_decay[0x20][0x20];  // (internal use)
r245142r245143
9595
9696   DECLARE_WRITE8_MEMBER(edracula_grid_w);
9797   DECLARE_WRITE8_MEMBER(edracula_plate_w);
98   
98
9999   DECLARE_WRITE8_MEMBER(tmtennis_grid_w);
100100   DECLARE_WRITE8_MEMBER(tmtennis_plate_w);
101101   DECLARE_WRITE8_MEMBER(tmtennis_port_e_w);
r245142r245143
107107   void tmpacman_display();
108108   DECLARE_WRITE8_MEMBER(tmpacman_grid_w);
109109   DECLARE_WRITE8_MEMBER(tmpacman_plate_w);
110   
110
111111   DECLARE_WRITE8_MEMBER(alnchase_output_w);
112112   DECLARE_READ8_MEMBER(alnchase_input_r);
113113};
r245142r245143
120120   memset(m_display_cache, ~0, sizeof(m_display_cache));
121121   memset(m_display_decay, 0, sizeof(m_display_decay));
122122   memset(m_display_segmask, 0, sizeof(m_display_segmask));
123   
123
124124   memset(m_port, 0, sizeof(m_port));
125125   m_inp_mux = 0;
126126   m_grid = 0;
r245142r245143
203203      for (int x = 0; x < m_display_maxx; x++)
204204         if (m_display_decay[y][x] != 0)
205205            m_display_decay[y][x]--;
206   
206
207207   display_update();
208208}
209209
r245142r245143
216216   UINT32 mask = (1 << maxx) - 1;
217217   for (int y = 0; y < maxy; y++)
218218      m_display_state[y] = (sety >> y & 1) ? (setx & mask) : 0;
219   
219
220220   display_update();
221221}
222222
r245142r245143
247247  * PCB label Emix Corp. ET-03
248248  * NEC uCOM-43 MCU, labeled D553C 031
249249  * green VFD display Emix-102
250 
250
251251  Press the Kick button to start the game, an automatic sequence follows.
252252  Then choose a formation(A,B,C) and either pass the ball, and/or start
253253  running. For more information, refer to the official manual.
r245142r245143
274274WRITE8_MEMBER(hh_ucom4_state::ssfball_plate_w)
275275{
276276   m_port[offset] = data;
277   
277
278278   // E,F,G,H,I(not all!): vfd matrix plate
279279   int shift = (offset - NEC_UCOM4_PORTE) * 4;
280280   m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
281   
281
282282   // F3,G3: input mux + speaker
283283   m_inp_mux = (m_port[NEC_UCOM4_PORTF] >> 3 & 1) | (m_port[NEC_UCOM4_PORTG] >> 2 & 2);
284284   m_speaker->level_w(m_inp_mux);
285   
285
286286   // E3: vfd matrix grid 8
287287   if (offset == NEC_UCOM4_PORTE)
288288      ssfball_grid_w(space, offset, data >> 3 & 1);
r245142r245143
376376   // G,H,I0: vfd matrix grid
377377   int shift = (offset - NEC_UCOM4_PORTG) * 4;
378378   m_grid = (m_grid & ~(0xf << shift)) | (data << shift);
379   
379
380380   // G(grid 0-3): input mux
381381   m_inp_mux = m_grid & 0xf;
382   
382
383383   // I2: vfd matrix plate 6
384384   if (offset == NEC_UCOM4_PORTI)
385385      m_plate = (m_plate & 0xffff) | (data << 14 & 0x10000);
r245142r245143
392392   // C,D,E,F23: vfd matrix plate
393393   int shift = (offset - NEC_UCOM4_PORTC) * 4;
394394   m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
395   
395
396396   // F01: speaker out
397397   if (offset == NEC_UCOM4_PORTF)
398398      m_speaker->level_w(data & 3);
399   
399
400400   ssfball_display();
401401}
402402
r245142r245143
408408
409409
410410/* physical button layout and labels is like this:
411   
411
412412    * left = P1 side *                                         * right = P2 side * (note: in 1P mode, switch sides between turns)
413413
414414    [  JUMP  ]  [ HIGH ]        (players sw)                   [ HIGH ]  [  JUMP  ]
r245142r245143
530530   {
531531      // E2: speaker out
532532      m_speaker->level_w(data >> 2 & 1);
533     
533
534534      // E3: vfd matrix grid 8
535535      astrocmd_grid_w(space, offset, data >> 3 & 1);
536536   }
r245142r245143
719719
720720
721721/* Pro-Tennis physical button layout and labels is like this:
722   
722
723723    * left = P2/CPU side *    * right = P1 side *
724724
725725    [SERVE] [1] [2] [3]       [3] [2] [1] [SERVE]
r245142r245143
818818  - USA: Pac Man
819819  - UK: Puckman (Tomy), and also published by Grandstand as Munchman
820820  - Australia: Pac Man-1, published by Futuretronics
821 
821
822822  The game will start automatically after turning it on. This Pac Man refuses
823823  to eat dots with his butt, you can only eat them going right-to-left.
824824
r245142r245143
830830{
831831   UINT32 grid = BITSWAP8(m_grid,0,1,2,3,4,5,6,7);
832832   UINT32 plate = BITSWAP24(m_plate,23,22,21,20,19,16,17,18,11,10,9,8,0,2,3,1,4,5,6,7,12,13,14,15);
833   
833
834834   display_matrix(19, 8, plate | 0x100, grid); // plate 8 (maze) is always on
835835}
836836
r245142r245143
930930      // C0(grid 0): input enable PL1
931931      // D0(grid 4): input enable PL2
932932      m_inp_mux = (m_grid & 1) | (m_grid >> 3 & 2);
933     
933
934934      // E1: speaker out
935935      if (offset == NEC_UCOM4_PORTE)
936936         m_speaker->level_w(data >> 1 & 1);
trunk/src/mess/drivers/imds2.c
r245142r245143
8989#define IOC_BEEP_FREQ   3300
9090
9191static ADDRESS_MAP_START(ipc_mem_map , AS_PROGRAM , 8 , imds2_state)
92    AM_RANGE(0x0000 , 0xffff) AM_READWRITE(ipc_mem_read, ipc_mem_write)
92   AM_RANGE(0x0000 , 0xffff) AM_READWRITE(ipc_mem_read, ipc_mem_write)
9393ADDRESS_MAP_END
9494
9595static ADDRESS_MAP_START(ipc_io_map , AS_IO , 8 , imds2_state)
96    ADDRESS_MAP_UNMAP_LOW
97    AM_RANGE(0xc0 , 0xc0) AM_READWRITE(imds2_ipc_dbbout_r , imds2_ipc_dbbin_data_w)
98    AM_RANGE(0xc1 , 0xc1) AM_READWRITE(imds2_ipc_status_r , imds2_ipc_dbbin_cmd_w)
99    AM_RANGE(0xfa , 0xfb) AM_READWRITE(imds2_ipclocpic_r , imds2_ipclocpic_w)
100    AM_RANGE(0xfc , 0xfd) AM_READWRITE(imds2_ipcsyspic_r , imds2_ipcsyspic_w)
101    AM_RANGE(0xff , 0xff) AM_WRITE(imds2_ipc_control_w)
96   ADDRESS_MAP_UNMAP_LOW
97   AM_RANGE(0xc0 , 0xc0) AM_READWRITE(imds2_ipc_dbbout_r , imds2_ipc_dbbin_data_w)
98   AM_RANGE(0xc1 , 0xc1) AM_READWRITE(imds2_ipc_status_r , imds2_ipc_dbbin_cmd_w)
99   AM_RANGE(0xfa , 0xfb) AM_READWRITE(imds2_ipclocpic_r , imds2_ipclocpic_w)
100   AM_RANGE(0xfc , 0xfd) AM_READWRITE(imds2_ipcsyspic_r , imds2_ipcsyspic_w)
101   AM_RANGE(0xff , 0xff) AM_WRITE(imds2_ipc_control_w)
102102ADDRESS_MAP_END
103103
104 static ADDRESS_MAP_START(ioc_mem_map , AS_PROGRAM , 8 , imds2_state)
105    ADDRESS_MAP_UNMAP_HIGH
106    AM_RANGE(0x0000 , 0x1fff) AM_ROM
107    AM_RANGE(0x4000 , 0x5fff) AM_RAM
104   static ADDRESS_MAP_START(ioc_mem_map , AS_PROGRAM , 8 , imds2_state)
105   ADDRESS_MAP_UNMAP_HIGH
106   AM_RANGE(0x0000 , 0x1fff) AM_ROM
107   AM_RANGE(0x4000 , 0x5fff) AM_RAM
108108ADDRESS_MAP_END
109109
110110static ADDRESS_MAP_START(ioc_io_map , AS_IO , 8 , imds2_state)
111    ADDRESS_MAP_UNMAP_HIGH
112    AM_RANGE(0x00 , 0x0f) AM_WRITE(imds2_ioc_dbbout_w)
113    AM_RANGE(0x20 , 0x2f) AM_WRITE(imds2_ioc_f0_w)
114    AM_RANGE(0x30 , 0x3f) AM_WRITE(imds2_ioc_set_f1_w)
115    AM_RANGE(0x40 , 0x4f) AM_WRITE(imds2_ioc_reset_f1_w)
116    AM_RANGE(0x50 , 0x5f) AM_WRITE(imds2_start_timer_w)
117    AM_RANGE(0x60 , 0x6f) AM_WRITE(imds2_miscout_w)
118    AM_RANGE(0x80 , 0x8f) AM_READ(imds2_miscin_r)
119    AM_RANGE(0x90 , 0x9f) AM_READ(imds2_kb_read)
120    AM_RANGE(0xa0 , 0xaf) AM_READ(imds2_ioc_status_r)
121    AM_RANGE(0xb0 , 0xbf) AM_READ(imds2_ioc_dbbin_r)
122    AM_RANGE(0xc0 , 0xcf) AM_DEVREADWRITE("iocfdc" , i8271_device , read , write)
123    AM_RANGE(0xd0 , 0xdf) AM_DEVREADWRITE("ioccrtc" , i8275_device , read , write)
124    AM_RANGE(0xe0 , 0xef) AM_DEVREADWRITE("ioctimer" , pit8253_device , read , write);
111   ADDRESS_MAP_UNMAP_HIGH
112   AM_RANGE(0x00 , 0x0f) AM_WRITE(imds2_ioc_dbbout_w)
113   AM_RANGE(0x20 , 0x2f) AM_WRITE(imds2_ioc_f0_w)
114   AM_RANGE(0x30 , 0x3f) AM_WRITE(imds2_ioc_set_f1_w)
115   AM_RANGE(0x40 , 0x4f) AM_WRITE(imds2_ioc_reset_f1_w)
116   AM_RANGE(0x50 , 0x5f) AM_WRITE(imds2_start_timer_w)
117   AM_RANGE(0x60 , 0x6f) AM_WRITE(imds2_miscout_w)
118   AM_RANGE(0x80 , 0x8f) AM_READ(imds2_miscin_r)
119   AM_RANGE(0x90 , 0x9f) AM_READ(imds2_kb_read)
120   AM_RANGE(0xa0 , 0xaf) AM_READ(imds2_ioc_status_r)
121   AM_RANGE(0xb0 , 0xbf) AM_READ(imds2_ioc_dbbin_r)
122   AM_RANGE(0xc0 , 0xcf) AM_DEVREADWRITE("iocfdc" , i8271_device , read , write)
123   AM_RANGE(0xd0 , 0xdf) AM_DEVREADWRITE("ioccrtc" , i8275_device , read , write)
124   AM_RANGE(0xe0 , 0xef) AM_DEVREADWRITE("ioctimer" , pit8253_device , read , write);
125125// DMA controller range doesn't extend to 0xff because register 0xfd needs to be read as 0xff
126126// This register is used by IOC firmware to detect DMA controller model (either 8237 or 8257)
127    AM_RANGE(0xf0 , 0xf8) AM_DEVREADWRITE("iocdma" , i8257_device , read , write)
127   AM_RANGE(0xf0 , 0xf8) AM_DEVREADWRITE("iocdma" , i8257_device , read , write)
128128ADDRESS_MAP_END
129   
129
130130static ADDRESS_MAP_START(kb_io_map , AS_IO , 8 , imds2_state)
131    AM_RANGE(MCS48_PORT_P1 , MCS48_PORT_P1) AM_WRITE(imds2_kb_port_p1_w)
132    AM_RANGE(MCS48_PORT_P2 , MCS48_PORT_P2) AM_READ(imds2_kb_port_p2_r)
133    AM_RANGE(MCS48_PORT_T0 , MCS48_PORT_T0) AM_READ(imds2_kb_port_t0_r)
134    AM_RANGE(MCS48_PORT_T1 , MCS48_PORT_T1) AM_READ(imds2_kb_port_t1_r)
131   AM_RANGE(MCS48_PORT_P1 , MCS48_PORT_P1) AM_WRITE(imds2_kb_port_p1_w)
132   AM_RANGE(MCS48_PORT_P2 , MCS48_PORT_P2) AM_READ(imds2_kb_port_p2_r)
133   AM_RANGE(MCS48_PORT_T0 , MCS48_PORT_T0) AM_READ(imds2_kb_port_t0_r)
134   AM_RANGE(MCS48_PORT_T1 , MCS48_PORT_T1) AM_READ(imds2_kb_port_t1_r)
135135ADDRESS_MAP_END
136   
136
137137imds2_state::imds2_state(const machine_config &mconfig, device_type type, const char *tag)
138  : driver_device(mconfig , type , tag),
139    m_ipccpu(*this , "ipccpu"),
140    m_ipcsyspic(*this , "ipcsyspic"),
141    m_ipclocpic(*this , "ipclocpic"),
142    m_ioccpu(*this , "ioccpu"),
143    m_iocdma(*this , "iocdma"),
144    m_ioccrtc(*this , "ioccrtc"),
145    m_iocbeep(*this , "iocbeep"),
146    m_ioctimer(*this , "ioctimer"),
147    m_iocfdc(*this , "iocfdc"),
148    m_kbcpu(*this , "kbcpu"),
149    m_palette(*this , "palette"),
150    m_gfxdecode(*this, "gfxdecode"),
151    m_floppy0(*this , FLOPPY_0),
152    m_io_key0(*this , "KEY0"),
153    m_io_key1(*this , "KEY1"),
154    m_io_key2(*this , "KEY2"),
155    m_io_key3(*this , "KEY3"),
156    m_io_key4(*this , "KEY4"),
157    m_io_key5(*this , "KEY5"),
158    m_io_key6(*this , "KEY6"),
159    m_io_key7(*this , "KEY7"),
160    m_ioc_options(*this , "IOC_OPTS")
138   : driver_device(mconfig , type , tag),
139   m_ipccpu(*this , "ipccpu"),
140   m_ipcsyspic(*this , "ipcsyspic"),
141   m_ipclocpic(*this , "ipclocpic"),
142   m_ioccpu(*this , "ioccpu"),
143   m_iocdma(*this , "iocdma"),
144   m_ioccrtc(*this , "ioccrtc"),
145   m_iocbeep(*this , "iocbeep"),
146   m_ioctimer(*this , "ioctimer"),
147   m_iocfdc(*this , "iocfdc"),
148   m_kbcpu(*this , "kbcpu"),
149   m_palette(*this , "palette"),
150   m_gfxdecode(*this, "gfxdecode"),
151   m_floppy0(*this , FLOPPY_0),
152   m_io_key0(*this , "KEY0"),
153   m_io_key1(*this , "KEY1"),
154   m_io_key2(*this , "KEY2"),
155   m_io_key3(*this , "KEY3"),
156   m_io_key4(*this , "KEY4"),
157   m_io_key5(*this , "KEY5"),
158   m_io_key6(*this , "KEY6"),
159   m_io_key7(*this , "KEY7"),
160   m_ioc_options(*this , "IOC_OPTS")
161161{
162162}
163163
164164READ8_MEMBER(imds2_state::ipc_mem_read)
165165{
166    if (imds2_in_ipc_rom(offset)) {
167        return m_ipc_rom[ (offset & 0x07ff) | ((offset & 0x1000) >> 1) ];
168    } else {
169        return m_ipc_ram[ offset ];
170    }
166   if (imds2_in_ipc_rom(offset)) {
167      return m_ipc_rom[ (offset & 0x07ff) | ((offset & 0x1000) >> 1) ];
168   } else {
169      return m_ipc_ram[ offset ];
170   }
171171}
172172
173173WRITE8_MEMBER(imds2_state::ipc_mem_write)
174174{
175    if (!imds2_in_ipc_rom(offset)) {
176        m_ipc_ram[ offset ] = data;
177    }
175   if (!imds2_in_ipc_rom(offset)) {
176      m_ipc_ram[ offset ] = data;
177   }
178178}
179179
180180WRITE8_MEMBER(imds2_state::imds2_ipc_control_w)
181181{
182    // See A84, pg 28 of [1]
183    // b3 is ~(bit to be written)
184    // b2-b0 is ~(no. of bit to be written)
185    UINT8 mask = (1U << (~data & 0x07));
182   // See A84, pg 28 of [1]
183   // b3 is ~(bit to be written)
184   // b2-b0 is ~(no. of bit to be written)
185   UINT8 mask = (1U << (~data & 0x07));
186186
187    if (BIT(data , 3)) {
188        m_ipc_control &= ~mask;
189    } else {
190        m_ipc_control |= mask;
191    }
187   if (BIT(data , 3)) {
188      m_ipc_control &= ~mask;
189   } else {
190      m_ipc_control |= mask;
191   }
192192}
193193
194194WRITE_LINE_MEMBER(imds2_state::imds2_ipc_intr)
195195{
196    m_ipccpu->set_input_line(I8085_INTR_LINE , (state != 0) && BIT(m_ipc_control , 2));
196   m_ipccpu->set_input_line(I8085_INTR_LINE , (state != 0) && BIT(m_ipc_control , 2));
197197}
198198
199199READ8_MEMBER(imds2_state::imds2_ipcsyspic_r)
200200{
201    return m_ipcsyspic->read(space , offset == 0);
201   return m_ipcsyspic->read(space , offset == 0);
202202}
203203
204204READ8_MEMBER(imds2_state::imds2_ipclocpic_r)
205205{
206    return m_ipclocpic->read(space , offset == 0);
206   return m_ipclocpic->read(space , offset == 0);
207207}
208208
209209WRITE8_MEMBER(imds2_state::imds2_ipcsyspic_w)
210210{
211    m_ipcsyspic->write(space , offset == 0 , data);
211   m_ipcsyspic->write(space , offset == 0 , data);
212212}
213213
214214WRITE8_MEMBER(imds2_state::imds2_ipclocpic_w)
215215{
216    m_ipclocpic->write(space , offset == 0 , data);
216   m_ipclocpic->write(space , offset == 0 , data);
217217}
218218
219219WRITE8_MEMBER(imds2_state::imds2_miscout_w)
220220{
221    m_miscout = data;
222    imds2_update_beeper();
223    // Send INTR to IPC
224    m_ipclocpic->ir6_w(BIT(m_miscout , 1));
221   m_miscout = data;
222   imds2_update_beeper();
223   // Send INTR to IPC
224   m_ipclocpic->ir6_w(BIT(m_miscout , 1));
225225}
226226
227227READ8_MEMBER(imds2_state::imds2_miscin_r)
228228{
229    UINT8 res = m_ioc_options->read();
230    return res | ((m_beeper_timer == 0) << 2);
229   UINT8 res = m_ioc_options->read();
230   return res | ((m_beeper_timer == 0) << 2);
231231}
232232
233233WRITE_LINE_MEMBER(imds2_state::imds2_beep_timer_w)
234234{
235    m_beeper_timer = state;
236    imds2_update_beeper();
235   m_beeper_timer = state;
236   imds2_update_beeper();
237237}
238238
239239WRITE8_MEMBER(imds2_state::imds2_start_timer_w)
240240{
241    // Trigger timer 2 of ioctimer
242    m_ioctimer->write_gate2(0);
243    m_ioctimer->write_gate2(1);
241   // Trigger timer 2 of ioctimer
242   m_ioctimer->write_gate2(0);
243   m_ioctimer->write_gate2(1);
244244}
245245
246246READ8_MEMBER(imds2_state::imds2_kb_read)
247247{
248    return m_kbcpu->upi41_master_r(space , (offset & 2) >> 1);
248   return m_kbcpu->upi41_master_r(space , (offset & 2) >> 1);
249249}
250250
251251READ8_MEMBER(imds2_state::imds2_kb_port_p2_r)
252252{
253    if ((m_kb_p1 & 3) == 0) {
254        // Row selected
255        // Row number is encoded on bits P15..P12, they are "backwards" (P15 is LSB) and keyboard rows are encoded starting with value 2 on these bits (see A4, pg 56 of [1])
256        unsigned row = (m_kb_p1 >> 2) & 0x0f;
257        ioport_value data;
258       
259        switch (row) {
260        case 4:
261            // Row 0
262            data = m_io_key0->read();
263            break;
253   if ((m_kb_p1 & 3) == 0) {
254      // Row selected
255      // Row number is encoded on bits P15..P12, they are "backwards" (P15 is LSB) and keyboard rows are encoded starting with value 2 on these bits (see A4, pg 56 of [1])
256      unsigned row = (m_kb_p1 >> 2) & 0x0f;
257      ioport_value data;
264258
265        case 12:
266            // Row 1
267            data = m_io_key1->read();
268            break;
259      switch (row) {
260      case 4:
261         // Row 0
262         data = m_io_key0->read();
263         break;
269264
270        case 2:
271            // Row 2
272            data = m_io_key2->read();
273            break;
265      case 12:
266         // Row 1
267         data = m_io_key1->read();
268         break;
274269
275        case 10:
276            // Row 3
277            data = m_io_key3->read();
278            break;
270      case 2:
271         // Row 2
272         data = m_io_key2->read();
273         break;
279274
280        case 6:
281            // Row 4
282            data = m_io_key4->read();
283            break;
275      case 10:
276         // Row 3
277         data = m_io_key3->read();
278         break;
284279
285        case 14:
286            // Row 5
287            data = m_io_key5->read();
288            break;
280      case 6:
281         // Row 4
282         data = m_io_key4->read();
283         break;
289284
290        case 1:
291            // Row 6
292            data = m_io_key6->read();
293            break;
285      case 14:
286         // Row 5
287         data = m_io_key5->read();
288         break;
294289
295        case 9:
296            // Row 7
297            data = m_io_key7->read();
298            break;
290      case 1:
291         // Row 6
292         data = m_io_key6->read();
293         break;
299294
300        default:
301            data = 0xff;
302            break;
303        }
304        return data & 0xff;
305    } else {
306        // No row selected
307        return 0xff;
308    }
295      case 9:
296         // Row 7
297         data = m_io_key7->read();
298         break;
299
300      default:
301         data = 0xff;
302         break;
303      }
304      return data & 0xff;
305   } else {
306      // No row selected
307      return 0xff;
308   }
309309}
310310
311311WRITE8_MEMBER(imds2_state::imds2_kb_port_p1_w)
312312{
313    m_kb_p1 = data;
313   m_kb_p1 = data;
314314}
315315
316316READ8_MEMBER(imds2_state::imds2_kb_port_t0_r)
317317{
318    // T0 tied low
319    // It appears to be some kind of strapping option on kb hw
320    return 0;
318   // T0 tied low
319   // It appears to be some kind of strapping option on kb hw
320   return 0;
321321}
322322
323323READ8_MEMBER(imds2_state::imds2_kb_port_t1_r)
324324{
325    // T1 tied low
326    // It appears to be some kind of strapping option on kb hw
327    return 0;
325   // T1 tied low
326   // It appears to be some kind of strapping option on kb hw
327   return 0;
328328}
329329
330330WRITE8_MEMBER(imds2_state::imds2_ioc_dbbout_w)
331331{
332    m_ioc_obf = ~data;
333    // Set/reset OBF flag (b0)
334    m_ipc_ioc_status = ((offset & 1) == 0) | (m_ipc_ioc_status & ~0x01);
332   m_ioc_obf = ~data;
333   // Set/reset OBF flag (b0)
334   m_ipc_ioc_status = ((offset & 1) == 0) | (m_ipc_ioc_status & ~0x01);
335335}
336336
337337WRITE8_MEMBER(imds2_state::imds2_ioc_f0_w)
338338{
339    // Set/reset F0 flag (b2)
340    m_ipc_ioc_status = ((offset & 1) << 2) | (m_ipc_ioc_status & ~0x04);
339   // Set/reset F0 flag (b2)
340   m_ipc_ioc_status = ((offset & 1) << 2) | (m_ipc_ioc_status & ~0x04);
341341}
342342
343343WRITE8_MEMBER(imds2_state::imds2_ioc_set_f1_w)
344344{
345    // Set F1 flag (b3)
346    m_ipc_ioc_status |= 0x08;
345   // Set F1 flag (b3)
346   m_ipc_ioc_status |= 0x08;
347347}
348348
349349WRITE8_MEMBER(imds2_state::imds2_ioc_reset_f1_w)
350350{
351    // Reset F1 flag (b3)
352    m_ipc_ioc_status &= ~0x08;
351   // Reset F1 flag (b3)
352   m_ipc_ioc_status &= ~0x08;
353353}
354354
355355READ8_MEMBER(imds2_state::imds2_ioc_status_r)
356356{
357    return (~m_ipc_ioc_status & 0x0f) | 0xf0;
357   return (~m_ipc_ioc_status & 0x0f) | 0xf0;
358358}
359359
360360READ8_MEMBER(imds2_state::imds2_ioc_dbbin_r)
361361{
362    // Reset IBF flag (b1)
363    m_ipc_ioc_status &= ~0x02;
364    return ~m_ioc_ibf;
362   // Reset IBF flag (b1)
363   m_ipc_ioc_status &= ~0x02;
364   return ~m_ioc_ibf;
365365}
366366
367367READ8_MEMBER(imds2_state::imds2_ipc_dbbout_r)
368368{
369    // Reset OBF flag (b0)
370    m_ipc_ioc_status &= ~0x01;
371    return m_ioc_obf;
369   // Reset OBF flag (b0)
370   m_ipc_ioc_status &= ~0x01;
371   return m_ioc_obf;
372372}
373373
374374READ8_MEMBER(imds2_state::imds2_ipc_status_r)
375375{
376    return m_ipc_ioc_status;
376   return m_ipc_ioc_status;
377377}
378378
379379WRITE8_MEMBER(imds2_state::imds2_ipc_dbbin_data_w)
380380{
381    // Set IBF flag (b1)
382    m_ipc_ioc_status |= 0x02;
383    // Reset F1 flag (b3)
384    m_ipc_ioc_status &= ~0x08;
385    m_ioc_ibf = data;
381   // Set IBF flag (b1)
382   m_ipc_ioc_status |= 0x02;
383   // Reset F1 flag (b3)
384   m_ipc_ioc_status &= ~0x08;
385   m_ioc_ibf = data;
386386}
387387
388388WRITE8_MEMBER(imds2_state::imds2_ipc_dbbin_cmd_w)
389389{
390    // Set IBF flag (b1)
391    m_ipc_ioc_status |= 0x02;
392    // Set F1 flag (b3)
393    m_ipc_ioc_status |= 0x08;
394    m_ioc_ibf = data;
390   // Set IBF flag (b1)
391   m_ipc_ioc_status |= 0x02;
392   // Set F1 flag (b3)
393   m_ipc_ioc_status |= 0x08;
394   m_ioc_ibf = data;
395395}
396396
397397WRITE_LINE_MEMBER(imds2_state::imds2_hrq_w)
398398{
399    // Should be propagated to HOLD input of IOC CPU
400    m_iocdma->hlda_w(state);
399   // Should be propagated to HOLD input of IOC CPU
400   m_iocdma->hlda_w(state);
401401}
402402
403403READ8_MEMBER(imds2_state::imds2_ioc_mem_r)
404404{
405    address_space& prog_space = m_ioccpu->space(AS_PROGRAM);
406    return prog_space.read_byte(offset);
405   address_space& prog_space = m_ioccpu->space(AS_PROGRAM);
406   return prog_space.read_byte(offset);
407407}
408408
409409WRITE8_MEMBER(imds2_state::imds2_ioc_mem_w)
410410{
411    address_space& prog_space = m_ioccpu->space(AS_PROGRAM);
412    return prog_space.write_byte(offset , data);
411   address_space& prog_space = m_ioccpu->space(AS_PROGRAM);
412   return prog_space.write_byte(offset , data);
413413}
414414
415415I8275_DRAW_CHARACTER_MEMBER(imds2_state::crtc_display_pixels)
416416{
417    unsigned i;
418    const rgb_t *palette = m_palette->palette()->entry_list_raw();
419    UINT8 chargen_byte = m_chargen[ (linecount & 7) | ((unsigned)charcode << 3) ];
420    UINT16 pixels;
417   unsigned i;
418   const rgb_t *palette = m_palette->palette()->entry_list_raw();
419   UINT8 chargen_byte = m_chargen[ (linecount & 7) | ((unsigned)charcode << 3) ];
420   UINT16 pixels;
421421
422    if (lten) {
423        pixels = ~0;
424    } else if (vsp != 0 || (linecount & 8) != 0) {
425        pixels = 0;
426    } else {
427        // See [2], pg 58 for the very peculiar way of generating character images
428        // Here each half-pixel is translated into a full pixel
429        UINT16 exp_pix_l;
430        UINT16 exp_pix_r;
422   if (lten) {
423      pixels = ~0;
424   } else if (vsp != 0 || (linecount & 8) != 0) {
425      pixels = 0;
426   } else {
427      // See [2], pg 58 for the very peculiar way of generating character images
428      // Here each half-pixel is translated into a full pixel
429      UINT16 exp_pix_l;
430      UINT16 exp_pix_r;
431431
432        exp_pix_l = (UINT16)chargen_byte;
433        exp_pix_l = ((exp_pix_l & 0x80) << 5) |
434            ((exp_pix_l & 0x40) << 4) |
435            ((exp_pix_l & 0x20) << 3) |
436            ((exp_pix_l & 0x10) << 2) |
437            ((exp_pix_l & 0x08) << 1) |
438            (exp_pix_l & 0x04);
439        exp_pix_l |= (exp_pix_l << 1);
440        exp_pix_r = exp_pix_l;
432      exp_pix_l = (UINT16)chargen_byte;
433      exp_pix_l = ((exp_pix_l & 0x80) << 5) |
434         ((exp_pix_l & 0x40) << 4) |
435         ((exp_pix_l & 0x20) << 3) |
436         ((exp_pix_l & 0x10) << 2) |
437         ((exp_pix_l & 0x08) << 1) |
438         (exp_pix_l & 0x04);
439      exp_pix_l |= (exp_pix_l << 1);
440      exp_pix_r = exp_pix_l;
441441
442        // Layout of exp_pix_l/r:
443        // Bit #              : F  E  D  C  B  A  9  8  7  6  5  4  3  2  1  0
444        // Bit of chargen_byte: 0  0  b7 b7 b6 b6 b5 b5 b4 b4 b3 b3 b2 b2 0  0
445        if ((chargen_byte & 2) == 0) {
446            exp_pix_l >>= 1;
447        }
448        exp_pix_l &= 0x3fc0;
442      // Layout of exp_pix_l/r:
443      // Bit #              : F  E  D  C  B  A  9  8  7  6  5  4  3  2  1  0
444      // Bit of chargen_byte: 0  0  b7 b7 b6 b6 b5 b5 b4 b4 b3 b3 b2 b2 0  0
445      if ((chargen_byte & 2) == 0) {
446         exp_pix_l >>= 1;
447      }
448      exp_pix_l &= 0x3fc0;
449449
450        if ((chargen_byte & 1) == 0) {
451            exp_pix_r >>= 1;
452        }
453        exp_pix_r &= 0x003e;
454       
455        pixels = exp_pix_l | exp_pix_r;
456    }
450      if ((chargen_byte & 1) == 0) {
451         exp_pix_r >>= 1;
452      }
453      exp_pix_r &= 0x003e;
457454
458    if (rvv) {
459        pixels = ~pixels;
460    }
455      pixels = exp_pix_l | exp_pix_r;
456   }
461457
462    for (i = 0; i < 14; i++) {
463        bitmap.pix32(y, x + i) = palette[ (pixels & (1U << (13 - i))) != 0 ];
464    }
458   if (rvv) {
459      pixels = ~pixels;
460   }
461
462   for (i = 0; i < 14; i++) {
463      bitmap.pix32(y, x + i) = palette[ (pixels & (1U << (13 - i))) != 0 ];
464   }
465465}
466466
467467void imds2_state::driver_start()
468468{
469    // Allocate 64k for IPC RAM
470    m_ipc_ram.resize(0x10000);
469   // Allocate 64k for IPC RAM
470   m_ipc_ram.resize(0x10000);
471471
472    memory_region *ipcrom = memregion("ipcrom");
473    if (ipcrom == NULL) {
474        fatalerror("Unable to find IPC ROM region\n");
475    } else {
476        m_ipc_rom = ipcrom->base();
477    }
472   memory_region *ipcrom = memregion("ipcrom");
473   if (ipcrom == NULL) {
474      fatalerror("Unable to find IPC ROM region\n");
475   } else {
476      m_ipc_rom = ipcrom->base();
477   }
478478}
479479
480480void imds2_state::machine_start()
481481{
482    m_floppy0->floppy_mon_w(0);
483    m_floppy0->floppy_drive_set_ready_state(1 , 0);
482   m_floppy0->floppy_mon_w(0);
483   m_floppy0->floppy_drive_set_ready_state(1 , 0);
484484}
485485
486486void imds2_state::video_start()
487487{
488    m_chargen = memregion("gfx1")->base();
488   m_chargen = memregion("gfx1")->base();
489489}
490490
491491void imds2_state::machine_reset()
492492{
493    m_iocbeep->set_frequency(IOC_BEEP_FREQ);
494    m_ipc_control = 0x00;
495    m_ipc_ioc_status = 0x0f;
493   m_iocbeep->set_frequency(IOC_BEEP_FREQ);
494   m_ipc_control = 0x00;
495   m_ipc_ioc_status = 0x0f;
496496}
497497
498498bool imds2_state::imds2_in_ipc_rom(offs_t offset) const
499499{
500    offs_t masked_offset = offset & 0xf800;
500   offs_t masked_offset = offset & 0xf800;
501501
502    // Region 0000-07ff is in ROM when START_UP/ == 0 && SEL_BOOT/ == 0
503    if (masked_offset == 0x0000 && (m_ipc_control & 0x28) == 0) {
504        return true;
505    }
502   // Region 0000-07ff is in ROM when START_UP/ == 0 && SEL_BOOT/ == 0
503   if (masked_offset == 0x0000 && (m_ipc_control & 0x28) == 0) {
504      return true;
505   }
506506
507    // Region e800-efff is in ROM when SEL_BOOT/ == 0
508    if (masked_offset == 0xe800 && (m_ipc_control & 0x08) == 0) {
509        return true;
510    }
507   // Region e800-efff is in ROM when SEL_BOOT/ == 0
508   if (masked_offset == 0xe800 && (m_ipc_control & 0x08) == 0) {
509      return true;
510   }
511511
512    // Region f800-ffff is always in ROM
513    if (masked_offset == 0xf800) {
514        return true;
515    }
512   // Region f800-ffff is always in ROM
513   if (masked_offset == 0xf800) {
514      return true;
515   }
516516
517    return false;
517   return false;
518518}
519
519
520520void imds2_state::imds2_update_beeper(void)
521521{
522    m_iocbeep->set_state(m_beeper_timer == 0 && BIT(m_miscout , 0) == 0);
522   m_iocbeep->set_state(m_beeper_timer == 0 && BIT(m_miscout , 0) == 0);
523523}
524524
525525static INPUT_PORTS_START(imds2)
526     // See [1], pg 56 for key matrix layout
527     // See [1], pg 57 for keyboard layout
528     PORT_START("KEY0")
529     PORT_BIT(0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_TAB)           PORT_CHAR('\t')                     // OK
530     PORT_BIT(0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE)     PORT_CHAR('@') PORT_CHAR('`')
531     PORT_BIT(0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA)         PORT_CHAR(',') PORT_CHAR('<')       // OK
532     PORT_BIT(0x08 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_ENTER)         PORT_CHAR(13)                       // OK
533     PORT_BIT(0x10 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE)         PORT_CHAR(' ')
534     PORT_BIT(0x20 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_QUOTE)         PORT_CHAR(':') PORT_CHAR('*')       // '
535     PORT_BIT(0x40 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP)          PORT_CHAR('.') PORT_CHAR('>')       // .
536     PORT_BIT(0x80 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH)         PORT_CHAR('/') PORT_CHAR('?')
526      // See [1], pg 56 for key matrix layout
527      // See [1], pg 57 for keyboard layout
528      PORT_START("KEY0")
529      PORT_BIT(0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_TAB)           PORT_CHAR('\t')                     // OK
530      PORT_BIT(0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE)     PORT_CHAR('@') PORT_CHAR('`')
531      PORT_BIT(0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA)         PORT_CHAR(',') PORT_CHAR('<')       // OK
532      PORT_BIT(0x08 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_ENTER)         PORT_CHAR(13)                       // OK
533      PORT_BIT(0x10 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE)         PORT_CHAR(' ')
534      PORT_BIT(0x20 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_QUOTE)         PORT_CHAR(':') PORT_CHAR('*')       // '
535      PORT_BIT(0x40 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP)          PORT_CHAR('.') PORT_CHAR('>')       // .
536      PORT_BIT(0x80 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH)         PORT_CHAR('/') PORT_CHAR('?')
537537
538     PORT_START("KEY1")
539     PORT_BIT(0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_Z)             PORT_CHAR('z') PORT_CHAR('Z')       // OK
540     PORT_BIT(0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_X)             PORT_CHAR('x') PORT_CHAR('X')       // OK
541     PORT_BIT(0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_M)             PORT_CHAR('m') PORT_CHAR('M')       // OK
542     PORT_BIT(0x08 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_V)             PORT_CHAR('v') PORT_CHAR('V')       // OK
543     PORT_BIT(0x10 , IP_ACTIVE_LOW , IPT_UNUSED)
544     PORT_BIT(0x20 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_C)             PORT_CHAR('c') PORT_CHAR('C')       // OK
545     PORT_BIT(0x40 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_N)             PORT_CHAR('n') PORT_CHAR('N')       // OK
546     PORT_BIT(0x80 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_B)             PORT_CHAR('b') PORT_CHAR('B')       // OK
538      PORT_START("KEY1")
539      PORT_BIT(0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_Z)             PORT_CHAR('z') PORT_CHAR('Z')       // OK
540      PORT_BIT(0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_X)             PORT_CHAR('x') PORT_CHAR('X')       // OK
541      PORT_BIT(0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_M)             PORT_CHAR('m') PORT_CHAR('M')       // OK
542      PORT_BIT(0x08 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_V)             PORT_CHAR('v') PORT_CHAR('V')       // OK
543      PORT_BIT(0x10 , IP_ACTIVE_LOW , IPT_UNUSED)
544      PORT_BIT(0x20 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_C)             PORT_CHAR('c') PORT_CHAR('C')       // OK
545      PORT_BIT(0x40 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_N)             PORT_CHAR('n') PORT_CHAR('N')       // OK
546      PORT_BIT(0x80 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_B)             PORT_CHAR('b') PORT_CHAR('B')       // OK
547547
548     PORT_START("KEY2")
549     PORT_BIT(0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_0)             PORT_CHAR('0') PORT_CHAR('~')       // OK
550     PORT_BIT(0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE)     PORT_CHAR('[') PORT_CHAR('{')
551     PORT_BIT(0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_O)             PORT_CHAR('o') PORT_CHAR('O')       // OK
552     PORT_BIT(0x08 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_L)             PORT_CHAR('l') PORT_CHAR('L')       // OK
553     PORT_BIT(0x10 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_9)             PORT_CHAR('9') PORT_CHAR(')')       // OK
554     PORT_BIT(0x20 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS)         PORT_CHAR('-') PORT_CHAR('=')       // OK
555     PORT_BIT(0x40 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_P)             PORT_CHAR('p') PORT_CHAR('P')       // OK
556     PORT_BIT(0x80 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON)         PORT_CHAR(';') PORT_CHAR('+')
548      PORT_START("KEY2")
549      PORT_BIT(0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_0)             PORT_CHAR('0') PORT_CHAR('~')       // OK
550      PORT_BIT(0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE)     PORT_CHAR('[') PORT_CHAR('{')
551      PORT_BIT(0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_O)             PORT_CHAR('o') PORT_CHAR('O')       // OK
552      PORT_BIT(0x08 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_L)             PORT_CHAR('l') PORT_CHAR('L')       // OK
553      PORT_BIT(0x10 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_9)             PORT_CHAR('9') PORT_CHAR(')')       // OK
554      PORT_BIT(0x20 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS)         PORT_CHAR('-') PORT_CHAR('=')       // OK
555      PORT_BIT(0x40 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_P)             PORT_CHAR('p') PORT_CHAR('P')       // OK
556      PORT_BIT(0x80 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON)         PORT_CHAR(';') PORT_CHAR('+')
557557
558     PORT_START("KEY3")
559     PORT_BIT(0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_S)             PORT_CHAR('s') PORT_CHAR('S')       // OK
560     PORT_BIT(0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_D)             PORT_CHAR('d') PORT_CHAR('D')       // OK
561     PORT_BIT(0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_K)             PORT_CHAR('k') PORT_CHAR('K')       // OK
562     PORT_BIT(0x08 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_G)             PORT_CHAR('g') PORT_CHAR('G')       // OK
563     PORT_BIT(0x10 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_A)             PORT_CHAR('a') PORT_CHAR('A')       // OK
564     PORT_BIT(0x20 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_F)             PORT_CHAR('f') PORT_CHAR('F')       // OK
565     PORT_BIT(0x40 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_J)             PORT_CHAR('j') PORT_CHAR('J')       // OK
566     PORT_BIT(0x80 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_H)             PORT_CHAR('h') PORT_CHAR('H')       // OK
558      PORT_START("KEY3")
559      PORT_BIT(0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_S)             PORT_CHAR('s') PORT_CHAR('S')       // OK
560      PORT_BIT(0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_D)             PORT_CHAR('d') PORT_CHAR('D')       // OK
561      PORT_BIT(0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_K)             PORT_CHAR('k') PORT_CHAR('K')       // OK
562      PORT_BIT(0x08 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_G)             PORT_CHAR('g') PORT_CHAR('G')       // OK
563      PORT_BIT(0x10 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_A)             PORT_CHAR('a') PORT_CHAR('A')       // OK
564      PORT_BIT(0x20 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_F)             PORT_CHAR('f') PORT_CHAR('F')       // OK
565      PORT_BIT(0x40 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_J)             PORT_CHAR('j') PORT_CHAR('J')       // OK
566      PORT_BIT(0x80 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_H)             PORT_CHAR('h') PORT_CHAR('H')       // OK
567567
568     PORT_START("KEY4")
569     PORT_BIT(0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_W)             PORT_CHAR('w') PORT_CHAR('W')       // OK
570     PORT_BIT(0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_E)             PORT_CHAR('e') PORT_CHAR('E')       // OK
571     PORT_BIT(0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_I)             PORT_CHAR('i') PORT_CHAR('I')       // OK
572     PORT_BIT(0x08 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_T)             PORT_CHAR('t') PORT_CHAR('T')       // OK
573     PORT_BIT(0x10 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_Q)             PORT_CHAR('q') PORT_CHAR('Q')       // OK
574     PORT_BIT(0x20 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_R)             PORT_CHAR('r') PORT_CHAR('R')       // OK
575     PORT_BIT(0x40 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_U)             PORT_CHAR('u') PORT_CHAR('U')       // OK
576     PORT_BIT(0x80 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_Y)             PORT_CHAR('y') PORT_CHAR('Y')       // OK
568      PORT_START("KEY4")
569      PORT_BIT(0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_W)             PORT_CHAR('w') PORT_CHAR('W')       // OK
570      PORT_BIT(0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_E)             PORT_CHAR('e') PORT_CHAR('E')       // OK
571      PORT_BIT(0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_I)             PORT_CHAR('i') PORT_CHAR('I')       // OK
572      PORT_BIT(0x08 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_T)             PORT_CHAR('t') PORT_CHAR('T')       // OK
573      PORT_BIT(0x10 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_Q)             PORT_CHAR('q') PORT_CHAR('Q')       // OK
574      PORT_BIT(0x20 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_R)             PORT_CHAR('r') PORT_CHAR('R')       // OK
575      PORT_BIT(0x40 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_U)             PORT_CHAR('u') PORT_CHAR('U')       // OK
576      PORT_BIT(0x80 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_Y)             PORT_CHAR('y') PORT_CHAR('Y')       // OK
577577
578     PORT_START("KEY5")
579     PORT_BIT(0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_2)             PORT_CHAR('2') PORT_CHAR('"')       // OK
580     PORT_BIT(0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_3)             PORT_CHAR('3') PORT_CHAR('#')       // OK
581     PORT_BIT(0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_8)             PORT_CHAR('8') PORT_CHAR('(')       // OK
582     PORT_BIT(0x08 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_5)             PORT_CHAR('5') PORT_CHAR('%')       // OK
583     PORT_BIT(0x10 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_1)             PORT_CHAR('1') PORT_CHAR('!')       // OK
584     PORT_BIT(0x20 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_4)             PORT_CHAR('4') PORT_CHAR('$')       // OK
585     PORT_BIT(0x40 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_7)             PORT_CHAR('7') PORT_CHAR('\'')      // OK
586     PORT_BIT(0x80 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_6)             PORT_CHAR('6') PORT_CHAR('&')       // OK
578      PORT_START("KEY5")
579      PORT_BIT(0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_2)             PORT_CHAR('2') PORT_CHAR('"')       // OK
580      PORT_BIT(0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_3)             PORT_CHAR('3') PORT_CHAR('#')       // OK
581      PORT_BIT(0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_8)             PORT_CHAR('8') PORT_CHAR('(')       // OK
582      PORT_BIT(0x08 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_5)             PORT_CHAR('5') PORT_CHAR('%')       // OK
583      PORT_BIT(0x10 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_1)             PORT_CHAR('1') PORT_CHAR('!')       // OK
584      PORT_BIT(0x20 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_4)             PORT_CHAR('4') PORT_CHAR('$')       // OK
585      PORT_BIT(0x40 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_7)             PORT_CHAR('7') PORT_CHAR('\'')      // OK
586      PORT_BIT(0x80 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_6)             PORT_CHAR('6') PORT_CHAR('&')       // OK
587587
588     PORT_START("KEY6")
589     PORT_BIT(0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSPACE)     PORT_CHAR(8)                        // BS
590     PORT_BIT(0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_HOME)          PORT_CHAR(UCHAR_MAMEKEY(HOME))      // OK
591     PORT_BIT(0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH)     PORT_CHAR('\\') PORT_CHAR('|')      // OK
592     PORT_BIT(0x08 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_RIGHT)         PORT_CHAR(UCHAR_MAMEKEY(RIGHT))     // OK
593     PORT_BIT(0x10 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_LCONTROL)      PORT_CHAR(UCHAR_SHIFT_2)            // OK
594     PORT_BIT(0x20 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_LEFT)          PORT_CHAR(UCHAR_MAMEKEY(LEFT))      // OK
595     PORT_BIT(0x40 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_CLOSEBRACE)    PORT_CHAR(']') PORT_CHAR('}')
596     PORT_BIT(0x80 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_UP)            PORT_CHAR(UCHAR_MAMEKEY(UP))        // OK
588      PORT_START("KEY6")
589      PORT_BIT(0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSPACE)     PORT_CHAR(8)                        // BS
590      PORT_BIT(0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_HOME)          PORT_CHAR(UCHAR_MAMEKEY(HOME))      // OK
591      PORT_BIT(0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH)     PORT_CHAR('\\') PORT_CHAR('|')      // OK
592      PORT_BIT(0x08 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_RIGHT)         PORT_CHAR(UCHAR_MAMEKEY(RIGHT))     // OK
593      PORT_BIT(0x10 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_LCONTROL)      PORT_CHAR(UCHAR_SHIFT_2)            // OK
594      PORT_BIT(0x20 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_LEFT)          PORT_CHAR(UCHAR_MAMEKEY(LEFT))      // OK
595      PORT_BIT(0x40 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_CLOSEBRACE)    PORT_CHAR(']') PORT_CHAR('}')
596      PORT_BIT(0x80 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_UP)            PORT_CHAR(UCHAR_MAMEKEY(UP))        // OK
597597
598     PORT_START("KEY7")
599     PORT_BIT(0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_ESC)           PORT_CHAR(UCHAR_MAMEKEY(ESC))       // OK
600     PORT_BIT(0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_DOWN)          PORT_CHAR(UCHAR_MAMEKEY(DOWN))      // OK
601     PORT_BIT(0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS)         PORT_CHAR('_') PORT_CHAR('^')
602     PORT_BIT(0x08 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_LSHIFT)        PORT_CHAR(UCHAR_SHIFT_1)            // OK
603     PORT_BIT(0x10 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_LALT)          PORT_CHAR(UCHAR_MAMEKEY(LALT))      // OK
604     PORT_BIT(0x20 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_CAPSLOCK)      PORT_TOGGLE PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK))
605     PORT_BIT(0x40 , IP_ACTIVE_LOW , IPT_UNUSED)
606     PORT_BIT(0x80 , IP_ACTIVE_LOW , IPT_UNUSED)
598      PORT_START("KEY7")
599      PORT_BIT(0x01 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_ESC)           PORT_CHAR(UCHAR_MAMEKEY(ESC))       // OK
600      PORT_BIT(0x02 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_DOWN)          PORT_CHAR(UCHAR_MAMEKEY(DOWN))      // OK
601      PORT_BIT(0x04 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS)         PORT_CHAR('_') PORT_CHAR('^')
602      PORT_BIT(0x08 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_LSHIFT)        PORT_CHAR(UCHAR_SHIFT_1)            // OK
603      PORT_BIT(0x10 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_LALT)          PORT_CHAR(UCHAR_MAMEKEY(LALT))      // OK
604      PORT_BIT(0x20 , IP_ACTIVE_LOW , IPT_KEYBOARD) PORT_CODE(KEYCODE_CAPSLOCK)      PORT_TOGGLE PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK))
605      PORT_BIT(0x40 , IP_ACTIVE_LOW , IPT_UNUSED)
606      PORT_BIT(0x80 , IP_ACTIVE_LOW , IPT_UNUSED)
607607
608     // Options on IOC: see [1], pg 40
609     PORT_START("IOC_OPTS")
610     PORT_DIPNAME(0x80 , 0x80 , "Keyboard present")
611     PORT_DIPSETTING(0x80 , DEF_STR(Yes))
612     PORT_DIPSETTING(0x00 , DEF_STR(No))
613     PORT_DIPNAME(0x28 , 0x00 , "IOC mode")
614     PORT_DIPSETTING(0x00 , "On line")
615     PORT_DIPSETTING(0x08 , "Local")
616     PORT_DIPSETTING(0x20 , "Diagnostic")
617     PORT_DIPNAME(0x02 , 0x00 , "Floppy present")
618     PORT_DIPSETTING(0x02 , DEF_STR(Yes))
619     PORT_DIPSETTING(0x00 , DEF_STR(No))
620     PORT_DIPNAME(0x01 , 0x01 , "CRT frame frequency")
621     PORT_DIPSETTING(0x01 , "50 Hz")
622     PORT_DIPSETTING(0x00 , "60 Hz")
608      // Options on IOC: see [1], pg 40
609      PORT_START("IOC_OPTS")
610      PORT_DIPNAME(0x80 , 0x80 , "Keyboard present")
611      PORT_DIPSETTING(0x80 , DEF_STR(Yes))
612      PORT_DIPSETTING(0x00 , DEF_STR(No))
613      PORT_DIPNAME(0x28 , 0x00 , "IOC mode")
614      PORT_DIPSETTING(0x00 , "On line")
615      PORT_DIPSETTING(0x08 , "Local")
616      PORT_DIPSETTING(0x20 , "Diagnostic")
617      PORT_DIPNAME(0x02 , 0x00 , "Floppy present")
618      PORT_DIPSETTING(0x02 , DEF_STR(Yes))
619      PORT_DIPSETTING(0x00 , DEF_STR(No))
620      PORT_DIPNAME(0x01 , 0x01 , "CRT frame frequency")
621      PORT_DIPSETTING(0x01 , "50 Hz")
622      PORT_DIPSETTING(0x00 , "60 Hz")
623623INPUT_PORTS_END
624624
625625static GFXLAYOUT_RAW(imds2_charlayout , 8 , 8 , 8 , 64)
626626
627627static GFXDECODE_START(imds2)
628    GFXDECODE_ENTRY("gfx1" , 0x0000 , imds2_charlayout , 0 , 1)
628   GFXDECODE_ENTRY("gfx1" , 0x0000 , imds2_charlayout , 0 , 1)
629629GFXDECODE_END
630630
631631static LEGACY_FLOPPY_OPTIONS_START(imds2)
r245142r245143
633633
634634static const floppy_interface imds2_floppy_interface =
635635{
636    FLOPPY_STANDARD_8_SSSD,
637    LEGACY_FLOPPY_OPTIONS_NAME(imds2),
638    "floppy_8"
636   FLOPPY_STANDARD_8_SSSD,
637   LEGACY_FLOPPY_OPTIONS_NAME(imds2),
638   "floppy_8"
639639};
640640
641641static MACHINE_CONFIG_START(imds2 , imds2_state)
642     MCFG_CPU_ADD("ipccpu" , I8085A , IPC_XTAL_Y2 / 2)  // 4 MHz
643     MCFG_CPU_PROGRAM_MAP(ipc_mem_map)
644     MCFG_CPU_IO_MAP(ipc_io_map)
645     MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("ipcsyspic" , pic8259_device , inta_cb)
646     MCFG_QUANTUM_TIME(attotime::from_hz(100))
642      MCFG_CPU_ADD("ipccpu" , I8085A , IPC_XTAL_Y2 / 2)  // 4 MHz
643      MCFG_CPU_PROGRAM_MAP(ipc_mem_map)
644      MCFG_CPU_IO_MAP(ipc_io_map)
645      MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("ipcsyspic" , pic8259_device , inta_cb)
646      MCFG_QUANTUM_TIME(attotime::from_hz(100))
647647
648     MCFG_PIC8259_ADD("ipcsyspic" , WRITELINE(imds2_state , imds2_ipc_intr) , VCC , NULL)
649     MCFG_PIC8259_ADD("ipclocpic" , DEVWRITELINE("ipcsyspic" , pic8259_device , ir7_w) , VCC  , NULL)
650     
651     MCFG_CPU_ADD("ioccpu" , I8080A , IOC_XTAL_Y2 / 9)     // 2.448 MHz
652     MCFG_CPU_PROGRAM_MAP(ioc_mem_map)
653     MCFG_CPU_IO_MAP(ioc_io_map)
654     MCFG_QUANTUM_TIME(attotime::from_hz(100))
648      MCFG_PIC8259_ADD("ipcsyspic" , WRITELINE(imds2_state , imds2_ipc_intr) , VCC , NULL)
649      MCFG_PIC8259_ADD("ipclocpic" , DEVWRITELINE("ipcsyspic" , pic8259_device , ir7_w) , VCC  , NULL)
655650
656     // The IOC CRT hw is a bit complex, as the character clock (CCLK) to i8275
657     // is varied according to the part of the video frame being scanned and according to
658     // the 50/60 Hz option jumper (W8).
659     // The basic clock (BCLK) runs at 22.032 MHz.
660     // CCLK = BCLK / 14 when in the active region of video
661     // CCLK = BCLK / 12 when in horizontal retrace (HRTC=1)
662     // CCLK = BCLK / 10 when in horizontal retrace of "short scan lines" (50 Hz only)
663     //
664     // ***** 50 Hz timings *****
665     // 80 chars/row, 26 chars/h. retrace, 11 scan lines/row, 25 active rows, 3 vertical retrace rows
666     // Scan line: 80 chars * 14 BCLK + 26 chars * 12 BCLK = 1432 BCLK (64.996 usec)
667     // Scan row: 11 * scan lines = 15752 BCLK (714.960 usec)
668     // "Short" scan line: 80 chars * 14 BCLK + 26 chars * 10 BCLK = 1380 BCLK (62.636 usec)
669     // Frame: 28 scan rows (8 scan lines of 27th row are short): 27 * scan row + 3 * scan line + 8 * short scan line: 440640 BCLK (20 msec)
670     //
671     // ***** 60 Hz timings *****
672     // 80 chars/row, 20 chars/h. retrace, 10 scan lines/row, 25 active rows, 2 vertical retrace rows
673     // Scan line: 80 chars * 14 BCLK + 20 chars * 12 BCLK = 1360 BCLK (61.728 usec)
674     // Scan row: 10 * scan lines = 13600 BCLK (617.284 usec)
675     // Frame: 27 scan rows : 367200 BCLK (16.667 msec)
676     //
677     // Clock here is semi-bogus: it gives the correct frame frequency at 50 Hz (with the incorrect
678     // assumption that CCLK is fixed at BCLK / 14)
679     MCFG_DEVICE_ADD("ioccrtc" , I8275 , 22853600 / 14)
680     MCFG_I8275_CHARACTER_WIDTH(14)
681     MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(imds2_state , crtc_display_pixels)
682     MCFG_I8275_DRQ_CALLBACK(DEVWRITELINE("iocdma" , i8257_device , dreq2_w))
683     MCFG_I8275_IRQ_CALLBACK(INPUTLINE("ioccpu" , I8085_INTR_LINE))
651      MCFG_CPU_ADD("ioccpu" , I8080A , IOC_XTAL_Y2 / 9)     // 2.448 MHz
652      MCFG_CPU_PROGRAM_MAP(ioc_mem_map)
653      MCFG_CPU_IO_MAP(ioc_io_map)
654      MCFG_QUANTUM_TIME(attotime::from_hz(100))
684655
685     MCFG_SCREEN_ADD("screen" , RASTER)
686     MCFG_SCREEN_UPDATE_DEVICE("ioccrtc" , i8275_device , screen_update)
687     MCFG_SCREEN_REFRESH_RATE(50)
688     MCFG_GFXDECODE_ADD("gfxdecode" , "palette" , imds2)
689     MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
656      // The IOC CRT hw is a bit complex, as the character clock (CCLK) to i8275
657      // is varied according to the part of the video frame being scanned and according to
658      // the 50/60 Hz option jumper (W8).
659      // The basic clock (BCLK) runs at 22.032 MHz.
660      // CCLK = BCLK / 14 when in the active region of video
661      // CCLK = BCLK / 12 when in horizontal retrace (HRTC=1)
662      // CCLK = BCLK / 10 when in horizontal retrace of "short scan lines" (50 Hz only)
663      //
664      // ***** 50 Hz timings *****
665      // 80 chars/row, 26 chars/h. retrace, 11 scan lines/row, 25 active rows, 3 vertical retrace rows
666      // Scan line: 80 chars * 14 BCLK + 26 chars * 12 BCLK = 1432 BCLK (64.996 usec)
667      // Scan row: 11 * scan lines = 15752 BCLK (714.960 usec)
668      // "Short" scan line: 80 chars * 14 BCLK + 26 chars * 10 BCLK = 1380 BCLK (62.636 usec)
669      // Frame: 28 scan rows (8 scan lines of 27th row are short): 27 * scan row + 3 * scan line + 8 * short scan line: 440640 BCLK (20 msec)
670      //
671      // ***** 60 Hz timings *****
672      // 80 chars/row, 20 chars/h. retrace, 10 scan lines/row, 25 active rows, 2 vertical retrace rows
673      // Scan line: 80 chars * 14 BCLK + 20 chars * 12 BCLK = 1360 BCLK (61.728 usec)
674      // Scan row: 10 * scan lines = 13600 BCLK (617.284 usec)
675      // Frame: 27 scan rows : 367200 BCLK (16.667 msec)
676      //
677      // Clock here is semi-bogus: it gives the correct frame frequency at 50 Hz (with the incorrect
678      // assumption that CCLK is fixed at BCLK / 14)
679      MCFG_DEVICE_ADD("ioccrtc" , I8275 , 22853600 / 14)
680      MCFG_I8275_CHARACTER_WIDTH(14)
681      MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(imds2_state , crtc_display_pixels)
682      MCFG_I8275_DRQ_CALLBACK(DEVWRITELINE("iocdma" , i8257_device , dreq2_w))
683      MCFG_I8275_IRQ_CALLBACK(INPUTLINE("ioccpu" , I8085_INTR_LINE))
690684
691     MCFG_SPEAKER_STANDARD_MONO("mono")
692     MCFG_SOUND_ADD("iocbeep" , BEEP , 0)
693     MCFG_SOUND_ROUTE(ALL_OUTPUTS , "mono" , 1.00)
694     
695     MCFG_DEVICE_ADD("iocdma" , I8257 , IOC_XTAL_Y2 / 9)
696     MCFG_I8257_OUT_HRQ_CB(WRITELINE(imds2_state, imds2_hrq_w))
697     MCFG_I8257_IN_MEMR_CB(READ8(imds2_state , imds2_ioc_mem_r))
698     MCFG_I8257_OUT_MEMW_CB(WRITE8(imds2_state , imds2_ioc_mem_w))
699     MCFG_I8257_IN_IOR_1_CB(DEVREAD8("iocfdc" , i8271_device , dack_r))
700     MCFG_I8257_OUT_IOW_1_CB(DEVWRITE8("iocfdc" , i8271_device , dack_w))
701     MCFG_I8257_OUT_IOW_2_CB(DEVWRITE8("ioccrtc" , i8275_device , dack_w))
685      MCFG_SCREEN_ADD("screen" , RASTER)
686      MCFG_SCREEN_UPDATE_DEVICE("ioccrtc" , i8275_device , screen_update)
687      MCFG_SCREEN_REFRESH_RATE(50)
688      MCFG_GFXDECODE_ADD("gfxdecode" , "palette" , imds2)
689      MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
702690
703     MCFG_DEVICE_ADD("ioctimer" , PIT8253 , 0)
704     MCFG_PIT8253_CLK0(IOC_XTAL_Y1 / 4)
705     MCFG_PIT8253_OUT0_HANDLER(DEVWRITELINE("ioctimer" , pit8253_device , write_clk2));
706     MCFG_PIT8253_OUT2_HANDLER(WRITELINE(imds2_state , imds2_beep_timer_w));
691      MCFG_SPEAKER_STANDARD_MONO("mono")
692      MCFG_SOUND_ADD("iocbeep" , BEEP , 0)
693      MCFG_SOUND_ROUTE(ALL_OUTPUTS , "mono" , 1.00)
707694
708     MCFG_DEVICE_ADD("iocfdc" , I8271 , IOC_XTAL_Y1 / 2)
709     MCFG_I8271_DRQ_CALLBACK(DEVWRITELINE("iocdma" , i8257_device , dreq1_w))
710     MCFG_I8271_FLOPPIES(FLOPPY_0 , FLOPPY_1)
711     
712     MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, imds2_floppy_interface)
713     
714     MCFG_CPU_ADD("kbcpu", I8741, XTAL_3_579545MHz)         /* 3.579545 MHz */
715     MCFG_CPU_IO_MAP(kb_io_map)
716     MCFG_QUANTUM_TIME(attotime::from_hz(100))
695      MCFG_DEVICE_ADD("iocdma" , I8257 , IOC_XTAL_Y2 / 9)
696      MCFG_I8257_OUT_HRQ_CB(WRITELINE(imds2_state, imds2_hrq_w))
697      MCFG_I8257_IN_MEMR_CB(READ8(imds2_state , imds2_ioc_mem_r))
698      MCFG_I8257_OUT_MEMW_CB(WRITE8(imds2_state , imds2_ioc_mem_w))
699      MCFG_I8257_IN_IOR_1_CB(DEVREAD8("iocfdc" , i8271_device , dack_r))
700      MCFG_I8257_OUT_IOW_1_CB(DEVWRITE8("iocfdc" , i8271_device , dack_w))
701      MCFG_I8257_OUT_IOW_2_CB(DEVWRITE8("ioccrtc" , i8275_device , dack_w))
702
703      MCFG_DEVICE_ADD("ioctimer" , PIT8253 , 0)
704      MCFG_PIT8253_CLK0(IOC_XTAL_Y1 / 4)
705      MCFG_PIT8253_OUT0_HANDLER(DEVWRITELINE("ioctimer" , pit8253_device , write_clk2));
706      MCFG_PIT8253_OUT2_HANDLER(WRITELINE(imds2_state , imds2_beep_timer_w));
707
708      MCFG_DEVICE_ADD("iocfdc" , I8271 , IOC_XTAL_Y1 / 2)
709      MCFG_I8271_DRQ_CALLBACK(DEVWRITELINE("iocdma" , i8257_device , dreq1_w))
710      MCFG_I8271_FLOPPIES(FLOPPY_0 , FLOPPY_1)
711
712      MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, imds2_floppy_interface)
713
714      MCFG_CPU_ADD("kbcpu", I8741, XTAL_3_579545MHz)         /* 3.579545 MHz */
715      MCFG_CPU_IO_MAP(kb_io_map)
716      MCFG_QUANTUM_TIME(attotime::from_hz(100))
717717MACHINE_CONFIG_END
718718
719719ROM_START(imds2)
720     // ROM definition of IPC cpu (8085A)
721     ROM_REGION(0x1000 , "ipcrom" , 0)
722     ROM_LOAD("ipc_a82.bin" , 0x0000 , 0x1000 , CRC(0889394f) SHA1(b7525baf1884a7d67402dea4b5566016a9861ef2))
723     
724     // ROM definition of IOC cpu (8080A)
725     ROM_REGION(0x2000 , "ioccpu" , 0)
726     ROM_LOAD("ioc_a50.bin" , 0x0000 , 0x0800 , CRC(d9f926a1) SHA1(bd9d0f7458acc2806120a6dbaab9c48be315b060))
727     ROM_LOAD("ioc_a51.bin" , 0x0800 , 0x0800 , CRC(6aa2f86c) SHA1(d3a5314d86e3366545b4c97b29e323dfab383d5f))
728     ROM_LOAD("ioc_a52.bin" , 0x1000 , 0x0800 , CRC(b88a38d5) SHA1(934716a1daec852f4d1f846510f42408df0c9584))
729     ROM_LOAD("ioc_a53.bin" , 0x1800 , 0x0800 , CRC(c8df4bb9) SHA1(2dfb921e94ae7033a7182457b2f00657674d1b77))
730     // ROM definition of keyboard controller (8741)
731     ROM_REGION(0x400 , "kbcpu" , 0)
732     ROM_LOAD("kbd511.bin" , 0 , 0x400 , CRC(ba7c4303) SHA1(19899af732d0ae1247bfc79979b1ee5f339ee5cf))
733     // ROM definition of character generator (2708, A19 on IOC)
734     ROM_REGION(0x400 , "gfx1" , 0)
735     ROM_LOAD ("ioc_a19.bin" , 0x0000 , 0x0400 , CRC(47487d0f) SHA1(0ed98f9f06622949ee3cc2ffc572fb9702db0f81))
720      // ROM definition of IPC cpu (8085A)
721      ROM_REGION(0x1000 , "ipcrom" , 0)
722      ROM_LOAD("ipc_a82.bin" , 0x0000 , 0x1000 , CRC(0889394f) SHA1(b7525baf1884a7d67402dea4b5566016a9861ef2))
723
724      // ROM definition of IOC cpu (8080A)
725      ROM_REGION(0x2000 , "ioccpu" , 0)
726      ROM_LOAD("ioc_a50.bin" , 0x0000 , 0x0800 , CRC(d9f926a1) SHA1(bd9d0f7458acc2806120a6dbaab9c48be315b060))
727      ROM_LOAD("ioc_a51.bin" , 0x0800 , 0x0800 , CRC(6aa2f86c) SHA1(d3a5314d86e3366545b4c97b29e323dfab383d5f))
728      ROM_LOAD("ioc_a52.bin" , 0x1000 , 0x0800 , CRC(b88a38d5) SHA1(934716a1daec852f4d1f846510f42408df0c9584))
729      ROM_LOAD("ioc_a53.bin" , 0x1800 , 0x0800 , CRC(c8df4bb9) SHA1(2dfb921e94ae7033a7182457b2f00657674d1b77))
730      // ROM definition of keyboard controller (8741)
731      ROM_REGION(0x400 , "kbcpu" , 0)
732      ROM_LOAD("kbd511.bin" , 0 , 0x400 , CRC(ba7c4303) SHA1(19899af732d0ae1247bfc79979b1ee5f339ee5cf))
733      // ROM definition of character generator (2708, A19 on IOC)
734      ROM_REGION(0x400 , "gfx1" , 0)
735      ROM_LOAD ("ioc_a19.bin" , 0x0000 , 0x0400 , CRC(47487d0f) SHA1(0ed98f9f06622949ee3cc2ffc572fb9702db0f81))
736736ROM_END
737737
738738/*    YEAR  NAME       PARENT    COMPAT MACHINE INPUT     INIT              COMPANY       FULLNAME */
trunk/src/mess/drivers/mbdtower.c
r245142r245143
1414  The emulated part is the centerpiece, a black tower with a rotating card
1515  panel and LED digits for displaying health, amount of gold, etc. As far
1616  as MESS is concerned, the game works fine.
17 
17
1818  To start up the game, first press [MOVE], the machine now does a self-test.
1919  Then select level and number of players and the game will start. Read the
2020  official manual on how to play the game.
r245142r245143
6464   m_display_maxx = 7;
6565   m_display_maxy = 3;
6666   m_display_segmask[1] = m_display_segmask[2] = 0x7f;
67   
67
6868   // update current state
6969   if (~m_r & 0x10)
7070   {
r245142r245143
8989   if (m_motor_on)
9090   {
9191      m_motor_pos = (m_motor_pos - 1) & 0x7f;
92     
92
9393      // give it some time to spin out when it's turned off
9494      if (m_r & 0x200)
95         m_motor_decay += (m_motor_decay < 6);
95         m_motor_decay += (m_motor_decay < 4);
9696      else if (m_motor_decay > 0)
9797         m_motor_decay--;
9898      else
r245142r245143
105105      m_sensor_blind = false;
106106   else
107107      m_sensor_blind = true;
108   
108
109109   // on change, output info
110110   if (m_motor_pos != m_motor_pos_prev)
111111      output_set_value("motor_pos", 100 * (m_motor_pos / (float)0x80));
112   
112
113113   /* 3 display cards per hole, like this:
114   
115       (0)                <---- display increments this way <----                    (7)
116114
117       VICTORY    WIZARD         DRAGON    GOLD KEY     SCOUT    WARRIOR   (void)    CURSED
118       WARRIORS   BAZAAR CLOSED  SWORD     SILVER KEY   HEALER   FOOD      (void)    LOST
119       BRIGANDS   KEY MISSING    PEGASUS   BRASS KEY    GOLD     BEAST     (void)    PLAGUE
115       (0)                <---- display increments this way <----                   (7)
116
117       CURSED   VICTORY    WIZARD         DRAGON    GOLD KEY     SCOUT    WARRIOR   (void)
118       LOST     WARRIORS   BAZAAR CLOSED  SWORD     SILVER KEY   HEALER   FOOD      (void)
119       PLAGUE   BRIGANDS   KEY MISSING    PEGASUS   BRASS KEY    GOLD     BEAST     (void)
120120   */
121121   int card_pos = m_motor_pos >> 4 & 7;
122122   if (card_pos != (m_motor_pos_prev >> 4 & 7))
123123      output_set_value("card_pos", card_pos);
124   
124
125125   m_motor_pos_prev = m_motor_pos;
126126}
127127
r245142r245143
137137{
138138   // R0-R2: input mux
139139   m_inp_mux = data & 7;
140   
140
141141   // R9: motor on
142142   if ((m_r ^ data) & 0x200)
143143      output_set_value("motor_on", data >> 9 & 1);
r245142r245143
150150   // R8: rotation sensor led
151151   m_r = data;
152152   mbdtower_display();
153   
153
154154   // R10: speaker out
155155   m_speaker->level_w(~data >> 4 & data >> 10 & 1);
156156}
r245142r245143
182182    (green)     (l.blue)    (red)
183183    [YES/       [REPEAT]    [NO/
184184     BUY]                    END]
185   
185
186186    (yellow)    (blue)      (white)
187187    [HAGGLE]    [BAZAAR]    [CLEAR]
188   
188
189189    (blue)      (blue)      (blue)
190190    [TOMB/      [MOVE]      [SANCTUARY/
191191     RUIN]                   CITADEL]
192   
192
193193    (orange)    (blue)      (d.yellow)
194194    [DARK       [FRONTIER]  [INVENTORY]
195195     TOWER]
r245142r245143
233233   m_motor_decay = 0;
234234   m_motor_on = false;
235235   m_sensor_blind = false;
236   
236
237237   save_item(NAME(m_motor_pos));
238238   /* save_item(NAME(m_motor_pos_prev)); */ // don't save!
239239   save_item(NAME(m_motor_decay));
r245142r245143
281281ROM_END
282282
283283
284CONS( 1981, mbdtower, 0, 0, mbdtower, mbdtower, driver_device, 0, "Milton Bradley", "Dark Tower (Milton Bradley)", GAME_SUPPORTS_SAVE | GAME_MECHANICAL | GAME_NOT_WORKING )
284CONS( 1981, mbdtower, 0, 0, mbdtower, mbdtower, driver_device, 0, "Milton Bradley", "Dark Tower (Milton Bradley)", GAME_SUPPORTS_SAVE | GAME_MECHANICAL )
trunk/src/mess/drivers/snes.c
r245142r245143
10051005 *************************************/
10061006
10071007static ADDRESS_MAP_START( snes_map, AS_PROGRAM, 8, snes_console_state )
1008//   AM_RANGE(0x000000, 0x7dffff) AM_READWRITE(snes20_lo_r, snes20_lo_w)
1008//  AM_RANGE(0x000000, 0x7dffff) AM_READWRITE(snes20_lo_r, snes20_lo_w)
10091009   AM_RANGE(0x7e0000, 0x7fffff) AM_RAM                                     /* 8KB Low RAM, 24KB High RAM, 96KB Expanded RAM */
1010//   AM_RANGE(0x800000, 0xffffff) AM_READWRITE(snes20_hi_r, snes20_hi_w)
1010//  AM_RANGE(0x800000, 0xffffff) AM_READWRITE(snes20_hi_r, snes20_hi_w)
10111011ADDRESS_MAP_END
10121012
10131013static ADDRESS_MAP_START( spc_map, AS_PROGRAM, 8, snes_console_state )
r245142r245143
11961196      m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7dffff, read8_delegate(FUNC(snes_console_state::snes20_lo_r),this), write8_delegate(FUNC(snes_console_state::snes20_lo_w),this));
11971197      m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x800000, 0xffffff, read8_delegate(FUNC(snes_console_state::snes20_hi_r),this), write8_delegate(FUNC(snes_console_state::snes20_hi_w),this));
11981198      m_maincpu->set_5a22_map();
1199     
1199
12001200      m_type = m_cartslot->get_type();
12011201
12021202      switch (m_type)
trunk/src/mess/drivers/ticalc1x.c
r245142r245143
5959   int m_display_wait;                 // led/lamp off-delay in microseconds (default 33ms)
6060   int m_display_maxy;                 // display matrix number of rows
6161   int m_display_maxx;                 // display matrix number of columns
62   
63   UINT32 m_display_state[0x20];       // display matrix rows data
62
63   UINT32 m_display_state[0x20];       // display matrix rows data
6464   UINT16 m_display_segmask[0x20];     // if not 0, display matrix row is a digit, mask indicates connected segments
6565   UINT32 m_display_cache[0x20];       // (internal use)
6666   UINT8 m_display_decay[0x20][0x20];  // (internal use)
r245142r245143
6868   TIMER_DEVICE_CALLBACK_MEMBER(display_decay_tick);
6969   void display_update();
7070   void display_matrix_seg(int maxx, int maxy, UINT32 setx, UINT32 sety, UINT16 segmask);
71   
71
7272   // calculator-specific handlers
7373   void tisr16_display();
7474   DECLARE_WRITE16_MEMBER(tisr16_write_o);
r245142r245143
105105   memset(m_display_cache, ~0, sizeof(m_display_cache));
106106   memset(m_display_decay, 0, sizeof(m_display_decay));
107107   memset(m_display_segmask, ~0, sizeof(m_display_segmask)); // !
108   
108
109109   m_o = 0;
110110   m_r = 0;
111111   m_inp_mux = 0;
r245142r245143
193193      for (int x = 0; x < m_display_maxx; x++)
194194         if (m_display_decay[y][x] != 0)
195195            m_display_decay[y][x]--;
196   
196
197197   display_update();
198198}
199199
r245142r245143
209209      m_display_segmask[y] &= segmask;
210210      m_display_state[y] = (sety >> y & 1) ? (setx & colmask) : 0;
211211   }
212   
212
213213   display_update();
214214}
215215
r245142r245143
482482   //   \./    GAB
483483   //   ---     F
484484   //   /.\    EDC
485   
485
486486   // 3rd digit only has A and G for =, though some newer hardware revisions
487487   // (goes for both wizatron and lilprof) use a custom equals-sign digit here
488488   m_display_segmask[3] = 0x41;
489   
489
490490   // R0-R8: select digit (right-to-left)
491491   display_matrix_seg(7, 9, m_o, data, 0x7f);
492492}
r245142r245143
557557
558558  TI Little Professor (1976 version)
559559  * TMS0970 MCU labeled TMS0975NL ZA0356, GP0975CS. die labeled 0970D-75C
560 
560
561561  The hardware is nearly identical to Wiz-A-Tron (or vice versa, since this
562562  one is older).
563563
r245142r245143
631631
632632   // 3rd digit A/G(equals sign) is from O7
633633   m_display_state[3] = (m_o & 0x80) ? 0x41 : 0;
634   
634
635635   // 6th digit is a custom 7seg for math symbols (see wizatron_write_r)
636636   m_display_state[6] = BITSWAP8(m_display_state[6],7,6,1,4,2,3,5,0);
637637
r245142r245143
996996   ROM_LOAD( "za0356", 0x0000, 0x0400, CRC(fef9dd39) SHA1(5c9614c9c5092d55dabeee2d6e0387d50d6ad4d5) )
997997
998998   ROM_REGION( 782, "maincpu:ipla", 0 )
999   ROM_LOAD( "tms0970_lilprof_ipla.pla", 0, 782, BAD_DUMP CRC(05306ef8) SHA1(60a0a3c49ce330bce0c27f15f81d61461d0432ce) ) // not verified
999   ROM_LOAD( "tms0970_lilprof_ipla.pla", 0, 782, CRC(05306ef8) SHA1(60a0a3c49ce330bce0c27f15f81d61461d0432ce) )
10001000   ROM_REGION( 860, "maincpu:mpla", 0 )
1001   ROM_LOAD( "tms0970_lilprof_mpla.pla", 0, 860, BAD_DUMP CRC(6ff5d51d) SHA1(59d3e5de290ba57694068ddba78d21a0c1edf427) ) // not verified
1001   ROM_LOAD( "tms0970_lilprof_mpla.pla", 0, 860, CRC(6ff5d51d) SHA1(59d3e5de290ba57694068ddba78d21a0c1edf427) )
10021002   ROM_REGION( 352, "maincpu:opla", 0 )
1003   ROM_LOAD( "tms0970_lilprof_opla.pla", 0, 352, BAD_DUMP CRC(c74daf97) SHA1(c4948000196171b34d4fe9cdd2962a945da9883d) ) // not verified
1003   ROM_LOAD( "tms0970_lilprof_opla.pla", 0, 352, CRC(c74daf97) SHA1(c4948000196171b34d4fe9cdd2962a945da9883d) )
10041004   ROM_REGION( 157, "maincpu:spla", 0 )
10051005   ROM_LOAD( "tms0970_lilprof_spla.pla", 0, 157, CRC(56c37a4f) SHA1(18ecc20d2666e89673739056483aed5a261ae927) )
10061006ROM_END
trunk/src/mess/drivers/tispeak.c
r245142r245143
326326   int m_display_wait;                 // led/lamp off-delay in microseconds (default 33ms)
327327   int m_display_maxy;                 // display matrix number of rows
328328   int m_display_maxx;                 // display matrix number of columns
329   
330   UINT32 m_display_state[0x20];       // display matrix rows data
329
330   UINT32 m_display_state[0x20];       // display matrix rows data
331331   UINT16 m_display_segmask[0x20];     // if not 0, display matrix row is a digit, mask indicates connected segments
332332   UINT32 m_display_cache[0x20];       // (internal use)
333333   UINT8 m_display_decay[0x20][0x20];  // (internal use)
r245142r245143
454454      for (int x = 0; x < m_display_maxx; x++)
455455         if (m_display_decay[y][x] != 0)
456456            m_display_decay[y][x]--;
457   
457
458458   display_update();
459459}
460460
r245142r245143
470470      m_display_segmask[y] &= segmask;
471471      m_display_state[y] = (sety >> y & 1) ? (setx & colmask) : 0;
472472   }
473   
473
474474   display_update();
475475}
476476
r245142r245143
501501{
502502   // R15: filament on
503503   m_filament_on = data & 0x8000;
504   
504
505505   // R13: power-off request, on falling edge
506506   if ((m_r >> 13 & 1) && !(data >> 13 & 1))
507507      power_off();
trunk/src/mess/includes/hh_tms1k.h
r245142r245143
3232   required_device<cpu_device> m_maincpu;
3333   optional_ioport_array<7> m_inp_matrix; // max 7
3434   optional_device<speaker_sound_device> m_speaker;
35   
35
3636   // misc common
3737   UINT16 m_r;                         // MCU R-pins data
3838   UINT16 m_o;                         // MCU O-pins data
r245142r245143
4747   int m_display_wait;                 // led/lamp off-delay in microseconds (default 33ms)
4848   int m_display_maxy;                 // display matrix number of rows
4949   int m_display_maxx;                 // display matrix number of columns
50   
51   UINT32 m_display_state[0x20];       // display matrix rows data
50
51   UINT32 m_display_state[0x20];       // display matrix rows data
5252   UINT16 m_display_segmask[0x20];     // if not 0, display matrix row is a digit, mask indicates connected segments
5353   UINT32 m_display_cache[0x20];       // (internal use)
5454   UINT8 m_display_decay[0x20][0x20];  // (internal use)
trunk/src/mess/includes/imds2.h
r245142r245143
1818
1919class imds2_state : public driver_device
2020{
21 public:
22    imds2_state(const machine_config &mconfig, device_type type, const char *tag);
21   public:
22   imds2_state(const machine_config &mconfig, device_type type, const char *tag);
2323
24    DECLARE_READ8_MEMBER(ipc_mem_read);
25    DECLARE_WRITE8_MEMBER(ipc_mem_write);
26    DECLARE_WRITE8_MEMBER(imds2_ipc_control_w);
27    DECLARE_WRITE_LINE_MEMBER(imds2_ipc_intr);
28    DECLARE_READ8_MEMBER(imds2_ipcsyspic_r);
29    DECLARE_READ8_MEMBER(imds2_ipclocpic_r);
30    DECLARE_WRITE8_MEMBER(imds2_ipcsyspic_w);
31    DECLARE_WRITE8_MEMBER(imds2_ipclocpic_w);
32   
33    DECLARE_WRITE8_MEMBER(imds2_miscout_w);
34    DECLARE_READ8_MEMBER(imds2_miscin_r);
35    DECLARE_WRITE_LINE_MEMBER(imds2_beep_timer_w);
36    DECLARE_WRITE8_MEMBER(imds2_start_timer_w);
37    DECLARE_READ8_MEMBER(imds2_kb_read);
38    DECLARE_READ8_MEMBER(imds2_kb_port_p2_r);
39    DECLARE_WRITE8_MEMBER(imds2_kb_port_p1_w);
40    DECLARE_READ8_MEMBER(imds2_kb_port_t0_r);
41    DECLARE_READ8_MEMBER(imds2_kb_port_t1_r);
42    DECLARE_WRITE8_MEMBER(imds2_ioc_dbbout_w);
43    DECLARE_WRITE8_MEMBER(imds2_ioc_f0_w);
44    DECLARE_WRITE8_MEMBER(imds2_ioc_set_f1_w);
45    DECLARE_WRITE8_MEMBER(imds2_ioc_reset_f1_w);
46    DECLARE_READ8_MEMBER(imds2_ioc_status_r);
47    DECLARE_READ8_MEMBER(imds2_ioc_dbbin_r);
48    DECLARE_READ8_MEMBER(imds2_ipc_dbbout_r);
49    DECLARE_READ8_MEMBER(imds2_ipc_status_r);
50    DECLARE_WRITE8_MEMBER(imds2_ipc_dbbin_data_w);
51    DECLARE_WRITE8_MEMBER(imds2_ipc_dbbin_cmd_w);
52    DECLARE_WRITE_LINE_MEMBER(imds2_hrq_w);
53   
54    DECLARE_READ8_MEMBER(imds2_ioc_mem_r);
55    DECLARE_WRITE8_MEMBER(imds2_ioc_mem_w);
56   
57    I8275_DRAW_CHARACTER_MEMBER(crtc_display_pixels);
58   
59    virtual void driver_start();
60    virtual void machine_start();
61    virtual void video_start();
62    virtual void machine_reset();
63   
64 private:
65    required_device<i8085a_cpu_device> m_ipccpu;
66    required_device<pic8259_device> m_ipcsyspic;
67    required_device<pic8259_device> m_ipclocpic;
68    required_device<i8080a_cpu_device> m_ioccpu;
69    required_device<i8257_device> m_iocdma;
70    required_device<i8275_device> m_ioccrtc;
71    required_device<beep_device> m_iocbeep;
72    required_device<pit8253_device> m_ioctimer;
73    required_device<i8271_device> m_iocfdc;
74    required_device<i8741_device> m_kbcpu;
75    required_device<palette_device> m_palette;
76    required_device<gfxdecode_device> m_gfxdecode;
77    required_device<legacy_floppy_image_device> m_floppy0;
78    required_ioport m_io_key0;
79    required_ioport m_io_key1;
80    required_ioport m_io_key2;
81    required_ioport m_io_key3;
82    required_ioport m_io_key4;
83    required_ioport m_io_key5;
84    required_ioport m_io_key6;
85    required_ioport m_io_key7;
86    required_ioport m_ioc_options;
87   
88    dynamic_array<UINT8> m_ipc_ram;
24   DECLARE_READ8_MEMBER(ipc_mem_read);
25   DECLARE_WRITE8_MEMBER(ipc_mem_write);
26   DECLARE_WRITE8_MEMBER(imds2_ipc_control_w);
27   DECLARE_WRITE_LINE_MEMBER(imds2_ipc_intr);
28   DECLARE_READ8_MEMBER(imds2_ipcsyspic_r);
29   DECLARE_READ8_MEMBER(imds2_ipclocpic_r);
30   DECLARE_WRITE8_MEMBER(imds2_ipcsyspic_w);
31   DECLARE_WRITE8_MEMBER(imds2_ipclocpic_w);
8932
90    bool imds2_in_ipc_rom(offs_t offset) const;
91   
92    void imds2_update_beeper(void);
33   DECLARE_WRITE8_MEMBER(imds2_miscout_w);
34   DECLARE_READ8_MEMBER(imds2_miscin_r);
35   DECLARE_WRITE_LINE_MEMBER(imds2_beep_timer_w);
36   DECLARE_WRITE8_MEMBER(imds2_start_timer_w);
37   DECLARE_READ8_MEMBER(imds2_kb_read);
38   DECLARE_READ8_MEMBER(imds2_kb_port_p2_r);
39   DECLARE_WRITE8_MEMBER(imds2_kb_port_p1_w);
40   DECLARE_READ8_MEMBER(imds2_kb_port_t0_r);
41   DECLARE_READ8_MEMBER(imds2_kb_port_t1_r);
42   DECLARE_WRITE8_MEMBER(imds2_ioc_dbbout_w);
43   DECLARE_WRITE8_MEMBER(imds2_ioc_f0_w);
44   DECLARE_WRITE8_MEMBER(imds2_ioc_set_f1_w);
45   DECLARE_WRITE8_MEMBER(imds2_ioc_reset_f1_w);
46   DECLARE_READ8_MEMBER(imds2_ioc_status_r);
47   DECLARE_READ8_MEMBER(imds2_ioc_dbbin_r);
48   DECLARE_READ8_MEMBER(imds2_ipc_dbbout_r);
49   DECLARE_READ8_MEMBER(imds2_ipc_status_r);
50   DECLARE_WRITE8_MEMBER(imds2_ipc_dbbin_data_w);
51   DECLARE_WRITE8_MEMBER(imds2_ipc_dbbin_cmd_w);
52   DECLARE_WRITE_LINE_MEMBER(imds2_hrq_w);
9353
94    // IPC control port
95    UINT8 m_ipc_control;
54   DECLARE_READ8_MEMBER(imds2_ioc_mem_r);
55   DECLARE_WRITE8_MEMBER(imds2_ioc_mem_w);
9656
97    // IPC ROM content
98    const UINT8 *m_ipc_rom;
99   
100    // Character generator
101    const UINT8 *m_chargen;
102   
103    // MISCOUT state
104    UINT8 m_miscout;
57   I8275_DRAW_CHARACTER_MEMBER(crtc_display_pixels);
10558
106    // Beeper timer line
107    int m_beeper_timer;
108   
109    // Keyboard state
110    UINT8 m_kb_p1;
59   virtual void driver_start();
60   virtual void machine_start();
61   virtual void video_start();
62   virtual void machine_reset();
11163
112    // IPC to IOC buffer
113    UINT8 m_ioc_ibf;
64   private:
65   required_device<i8085a_cpu_device> m_ipccpu;
66   required_device<pic8259_device> m_ipcsyspic;
67   required_device<pic8259_device> m_ipclocpic;
68   required_device<i8080a_cpu_device> m_ioccpu;
69   required_device<i8257_device> m_iocdma;
70   required_device<i8275_device> m_ioccrtc;
71   required_device<beep_device> m_iocbeep;
72   required_device<pit8253_device> m_ioctimer;
73   required_device<i8271_device> m_iocfdc;
74   required_device<i8741_device> m_kbcpu;
75   required_device<palette_device> m_palette;
76   required_device<gfxdecode_device> m_gfxdecode;
77   required_device<legacy_floppy_image_device> m_floppy0;
78   required_ioport m_io_key0;
79   required_ioport m_io_key1;
80   required_ioport m_io_key2;
81   required_ioport m_io_key3;
82   required_ioport m_io_key4;
83   required_ioport m_io_key5;
84   required_ioport m_io_key6;
85   required_ioport m_io_key7;
86   required_ioport m_ioc_options;
11487
115    // IOC to IPC buffer
116    UINT8 m_ioc_obf;
88   dynamic_array<UINT8> m_ipc_ram;
11789
118    // IPC/IOC status
119    UINT8 m_ipc_ioc_status;
90   bool imds2_in_ipc_rom(offs_t offset) const;
91
92   void imds2_update_beeper(void);
93
94   // IPC control port
95   UINT8 m_ipc_control;
96
97   // IPC ROM content
98   const UINT8 *m_ipc_rom;
99
100   // Character generator
101   const UINT8 *m_chargen;
102
103   // MISCOUT state
104   UINT8 m_miscout;
105
106   // Beeper timer line
107   int m_beeper_timer;
108
109   // Keyboard state
110   UINT8 m_kb_p1;
111
112   // IPC to IOC buffer
113   UINT8 m_ioc_ibf;
114
115   // IOC to IPC buffer
116   UINT8 m_ioc_obf;
117
118   // IPC/IOC status
119   UINT8 m_ipc_ioc_status;
120120};
121121
122122#endif /* _IMDS2_H_ */
trunk/src/mess/layout/mbdtower.lay
r245142r245143
44<!-- define elements -->
55
66   <element name="static_black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element>
7   <element name="static_white"><rect><color red="1.0" green="1.0" blue="1.0" /></rect></element>
78
9   <element name="mask" defstate="0">
10      <text string=" "><color red="0.0" green="0.0" blue="0.0" /></text>
11      <rect state="0"><color red="0.0" green="0.0" blue="0.0" /></rect>
12   </element>
13
14   <element name="card1" defstate="0">
15      <rect><color red="1.0" green="1.0" blue="1.0" /></rect>
16      <text state="0" string="CURSED"><color red="0.0" green="0.0" blue="0.0" /></text>
17      <text state="1" string="VICTORY"><color red="0.0" green="0.0" blue="0.0" /></text>
18      <text state="2" string="WIZARD"><color red="0.0" green="0.0" blue="0.0" /></text>
19      <text state="3" string="DRAGON"><color red="0.0" green="0.0" blue="0.0" /></text>
20      <text state="4" string="GOLD KEY"><color red="0.0" green="0.0" blue="0.0" /></text>
21      <text state="5" string="SCOUT"><color red="0.0" green="0.0" blue="0.0" /></text>
22      <text state="6" string="WARRIOR"><color red="0.0" green="0.0" blue="0.0" /></text>
23      <text state="7" string=" "><color red="0.0" green="0.0" blue="0.0" /></text>
24   </element>
25
26   <element name="card2" defstate="0">
27      <rect><color red="1.0" green="1.0" blue="1.0" /></rect>
28      <text state="0" string="LOST"><color red="0.0" green="0.0" blue="0.0" /></text>
29      <text state="1" string="WARRIORS"><color red="0.0" green="0.0" blue="0.0" /></text>
30      <text state="2" string="BAZAAR CLOSED"><color red="0.0" green="0.0" blue="0.0" /></text>
31      <text state="3" string="SWORD"><color red="0.0" green="0.0" blue="0.0" /></text>
32      <text state="4" string="SILVER KEY"><color red="0.0" green="0.0" blue="0.0" /></text>
33      <text state="5" string="HEALER"><color red="0.0" green="0.0" blue="0.0" /></text>
34      <text state="6" string="FOOD"><color red="0.0" green="0.0" blue="0.0" /></text>
35      <text state="7" string=" "><color red="0.0" green="0.0" blue="0.0" /></text>
36   </element>
37
38   <element name="card3" defstate="0">
39      <rect><color red="1.0" green="1.0" blue="1.0" /></rect>
40      <text state="0" string="PLAGUE"><color red="0.0" green="0.0" blue="0.0" /></text>
41      <text state="1" string="BRIGANDS"><color red="0.0" green="0.0" blue="0.0" /></text>
42      <text state="2" string="KEY MISSING"><color red="0.0" green="0.0" blue="0.0" /></text>
43      <text state="3" string="PEGASUS"><color red="0.0" green="0.0" blue="0.0" /></text>
44      <text state="4" string="BRASS KEY"><color red="0.0" green="0.0" blue="0.0" /></text>
45      <text state="5" string="GOLD"><color red="0.0" green="0.0" blue="0.0" /></text>
46      <text state="6" string="BEAST"><color red="0.0" green="0.0" blue="0.0" /></text>
47      <text state="7" string=" "><color red="0.0" green="0.0" blue="0.0" /></text>
48   </element>
49
50   <element name="text_m1"><text string="(motor pos: 0." align="1"><color red="0.95" green="0.95" blue="0.95" /></text></element>
51   <element name="text_m2"><text string=")" align="1"><color red="0.95" green="0.95" blue="0.95" /></text></element>
52   <element name="counter" defstate="0">
53      <simplecounter maxstate="99" digits="2" align="1">
54         <color red="0.95" green="0.95" blue="0.95" />
55      </simplecounter>
56   </element>
57
858   <element name="digit" defstate="0">
959      <led7seg><color red="1.0" green="0.20" blue="0.22" /></led7seg>
1060   </element>
1161
62   <element name="led" defstate="0">
63      <disk state="0"><color red="0.2" green="0.04" blue="0.05" /></disk>
64      <disk state="1"><color red="1.0" green="0.20" blue="0.22" /></disk>
65   </element>
1266
67
68
1369<!-- build screen -->
1470
1571   <view name="Internal Layout">
16      <bounds left="0" right="64" top="0" bottom="64" />
72      <bounds left="0" right="40" top="0" bottom="118" />
1773      <bezel element="static_black">
18         <bounds left="0" right="64" top="0" bottom="64" />
74         <bounds left="0" right="40" top="0" bottom="118" />
1975      </bezel>
2076
21      <bezel name="digit1" element="digit"><bounds x="0" y="0" width="10" height="15" /></bezel>
22      <bezel name="digit2" element="digit"><bounds x="10" y="0" width="10" height="15" /></bezel>
77      <bezel name="digit1" element="digit"><bounds x="10" y="3" width="10" height="15" /></bezel>
78      <bezel name="digit2" element="digit"><bounds x="20" y="3" width="10" height="15" /></bezel>
2379
80   <!-- card lamps -->
2481
82      <bezel element="static_white"><bounds x="1" y="28" width="38" height="25" /></bezel>
83      <bezel name="card_pos" element="card1"><bounds x="1" y="38" width="38" height="5" /></bezel>
84      <bezel name="lamp3" element="mask">
85         <bounds x="1" y="28" width="38" height="25" />
86         <color alpha="0.8" />
87      </bezel>
88
89      <bezel element="static_white"><bounds x="1" y="56" width="38" height="25" /></bezel>
90      <bezel name="card_pos" element="card2"><bounds x="1" y="66" width="38" height="5" /></bezel>
91      <bezel name="lamp2" element="mask">
92         <bounds x="1" y="56" width="38" height="25" />
93         <color alpha="0.8" />
94      </bezel>
95
96      <bezel element="static_white"><bounds x="1" y="84" width="38" height="25" /></bezel>
97      <bezel name="card_pos" element="card3"><bounds x="1" y="94" width="38" height="5" /></bezel>
98      <bezel name="lamp1" element="mask">
99         <bounds x="1" y="84" width="38" height="25" />
100         <color alpha="0.8" />
101      </bezel>
102
103   <!-- motor status info -->
104
105      <bezel element="text_m1"><bounds x="7" y="112" width="22" height="4" /></bezel>
106      <bezel name="motor_pos" element="counter"><bounds x="27.6" y="112" width="10" height="4" /></bezel>
107      <bezel element="text_m2"><bounds x="31.4" y="112" width="5" height="4" /></bezel>
108      <bezel name="motor_on" element="mask">
109         <bounds x="1" y="111" width="38" height="6" />
110         <color alpha="0.75" />
111      </bezel>
112
113
25114   </view>
26115</mamelayout>
trunk/src/mess/mess.lst
r245142r245143
22062206starwbcp    // Kenner (prototype)
22072207comp4       // Milton Bradley
22082208simon       // Milton Bradley
2209//ssimon      // Milton Bradley
2209ssimon      // Milton Bradley
22102210cnsector    // Parker Bros
22112211merlin      // Parker Bros
22122212stopthie    // Parker Bros
trunk/src/mess/mess.mak
r245142r245143
13351335   $(MESS_DRIVERS)/rex6000.o   \
13361336   $(MESS_DRIVERS)/sdk85.o     \
13371337   $(MESS_DRIVERS)/sdk86.o     \
1338        $(MESS_DRIVERS)/imds2.o     \
1338      $(MESS_DRIVERS)/imds2.o     \
13391339
13401340$(MESSOBJ)/imp.a:               \
13411341   $(MESS_DRIVERS)/tim011.o    \
r245142r245143
21372137$(MESS_DRIVERS)/hh_hmcs40.o:$(MESS_LAYOUT)/hh_hmcs40_test.lh
21382138$(MESS_DRIVERS)/hh_pic16.o: $(MESS_LAYOUT)/maniac.lh
21392139$(MESS_DRIVERS)/hh_tms1k.o: $(MESS_LAYOUT)/amaztron.lh \
2140                            $(MESS_LAYOUT)/bankshot.lh \
2141                            $(MESS_LAYOUT)/cnsector.lh \
2142                            $(MESS_LAYOUT)/comp4.lh \
2143                            $(MESS_LAYOUT)/ebball.lh \
2144                            $(MESS_LAYOUT)/ebball2.lh \
2145                            $(MESS_LAYOUT)/ebball3.lh \
2146                            $(MESS_LAYOUT)/elecdet.lh \
2147                            $(MESS_LAYOUT)/mathmagi.lh \
2148                            $(MESS_LAYOUT)/merlin.lh \
2149                            $(MESS_LAYOUT)/simon.lh \
2150                            $(MESS_LAYOUT)/ssimon.lh \
2151                            $(MESS_LAYOUT)/splitsec.lh \
2152                            $(MESS_LAYOUT)/starwbc.lh \
2153                            $(MESS_LAYOUT)/stopthie.lh \
2154                            $(MESS_LAYOUT)/tandy12.lh \
2155                            $(MESS_LAYOUT)/tc4.lh
2140                     $(MESS_LAYOUT)/bankshot.lh \
2141                     $(MESS_LAYOUT)/cnsector.lh \
2142                     $(MESS_LAYOUT)/comp4.lh \
2143                     $(MESS_LAYOUT)/ebball.lh \
2144                     $(MESS_LAYOUT)/ebball2.lh \
2145                     $(MESS_LAYOUT)/ebball3.lh \
2146                     $(MESS_LAYOUT)/elecdet.lh \
2147                     $(MESS_LAYOUT)/mathmagi.lh \
2148                     $(MESS_LAYOUT)/merlin.lh \
2149                     $(MESS_LAYOUT)/simon.lh \
2150                     $(MESS_LAYOUT)/ssimon.lh \
2151                     $(MESS_LAYOUT)/splitsec.lh \
2152                     $(MESS_LAYOUT)/starwbc.lh \
2153                     $(MESS_LAYOUT)/stopthie.lh \
2154                     $(MESS_LAYOUT)/tandy12.lh \
2155                     $(MESS_LAYOUT)/tc4.lh
21562156$(MESS_DRIVERS)/hh_ucom4.o: $(MESS_LAYOUT)/hh_ucom4_test.lh
21572157$(MESS_DRIVERS)/ie15.o:     $(MESS_LAYOUT)/ie15.lh
21582158$(MESS_DRIVERS)/instruct.o: $(MESS_LAYOUT)/instruct.lh
trunk/src/osd/modules/opengl/osd_opengl.h
r245142r245143
6161      virtual const char *LastErrorMsg() = 0;
6262      virtual void *getProcAddress(const char *proc) = 0;
6363      /*
64       *    0 for immediate updates,
65       *    1 for updates synchronized with the vertical retrace,
66       *    -1 for late swap tearing
64       *  0 for immediate updates,
65       *  1 for updates synchronized with the vertical retrace,
66       *  -1 for late swap tearing
6767       *
68       *    returns -1 if swap interval is not supported
68       * returns -1 if swap interval is not supported
6969       *
7070       */
7171      virtual int SetSwapInterval(const int swap) = 0;
r245142r245143
9999         #undef GET_GLFUNC
100100      };
101101#ifdef _MSC_VER
102    }
102   }
103103#endif
104104
105105   #undef OSD_GL
trunk/src/osd/modules/osdwindow.h
r245142r245143
7878#endif
7979
8080   render_primitive_list   *m_primlist;
81   osd_window_config      m_win_config;
81   osd_window_config       m_win_config;
8282protected:
83   int                  m_prescale;
83   int                     m_prescale;
8484};
8585
8686class osd_renderer
r245142r245143
131131private:
132132
133133   osd_window      *m_window;
134   int         m_flags;
134   int         m_flags;
135135};
136136
137137
trunk/src/osd/modules/render/draw13.c
r245142r245143
118118
119119private:
120120   Uint32              m_sdl_access;
121   sdl_info13 *         m_renderer;
121   sdl_info13 *        m_renderer;
122122   render_texinfo      m_texinfo;            // copy of the texture info
123123   HashT               m_hash;               // hash value for the texture (must be >= pointer size)
124124   UINT32              m_flags;              // rendering flags
trunk/src/osd/modules/render/drawogl.c
r245142r245143
281281
282282   int setupPixelFormat(HDC hDC)
283283   {
284       PIXELFORMATDESCRIPTOR pfd = {
285           sizeof(PIXELFORMATDESCRIPTOR),  /* size */
286           1,                              /* version */
287           PFD_SUPPORT_OPENGL |
288           PFD_DRAW_TO_WINDOW |
289           PFD_DOUBLEBUFFER,               /* support double-buffering */
290           PFD_TYPE_RGBA,                  /* color type */
291           32,                             /* prefered color depth */
292           0, 0, 0, 0, 0, 0,               /* color bits (ignored) */
293           0,                              /* no alpha buffer */
294           0,                              /* alpha bits (ignored) */
295           0,                              /* no accumulation buffer */
296           0, 0, 0, 0,                     /* accum bits (ignored) */
297           16,                             /* depth buffer */
298           0,                              /* no stencil buffer */
299           0,                              /* no auxiliary buffers */
300           PFD_MAIN_PLANE,                 /* main layer */
301           0,                              /* reserved */
302           0, 0, 0,                        /* no layer, visible, damage masks */
303       };
304       int pixelFormat;
284      PIXELFORMATDESCRIPTOR pfd = {
285         sizeof(PIXELFORMATDESCRIPTOR),  /* size */
286         1,                              /* version */
287         PFD_SUPPORT_OPENGL |
288         PFD_DRAW_TO_WINDOW |
289         PFD_DOUBLEBUFFER,               /* support double-buffering */
290         PFD_TYPE_RGBA,                  /* color type */
291         32,                             /* prefered color depth */
292         0, 0, 0, 0, 0, 0,               /* color bits (ignored) */
293         0,                              /* no alpha buffer */
294         0,                              /* alpha bits (ignored) */
295         0,                              /* no accumulation buffer */
296         0, 0, 0, 0,                     /* accum bits (ignored) */
297         16,                             /* depth buffer */
298         0,                              /* no stencil buffer */
299         0,                              /* no auxiliary buffers */
300         PFD_MAIN_PLANE,                 /* main layer */
301         0,                              /* reserved */
302         0, 0, 0,                        /* no layer, visible, damage masks */
303      };
304      int pixelFormat;
305305
306       pixelFormat = ChoosePixelFormat(hDC, &pfd);
307       if (pixelFormat == 0) {
308           strcpy(m_error, "ChoosePixelFormat failed");
309           return 1;
310       }
306      pixelFormat = ChoosePixelFormat(hDC, &pfd);
307      if (pixelFormat == 0) {
308         strcpy(m_error, "ChoosePixelFormat failed");
309         return 1;
310      }
311311
312       if (SetPixelFormat(hDC, pixelFormat, &pfd) != TRUE) {
313           strcpy(m_error, "SetPixelFormat failed.");
314           return 1;
315       }
316       return 0;
312      if (SetPixelFormat(hDC, pixelFormat, &pfd) != TRUE) {
313         strcpy(m_error, "SetPixelFormat failed.");
314         return 1;
315      }
316      return 0;
317317   }
318318
319319   bool WGLExtensionSupported(const char *extension_name)
320320   {
321       //if (pfn_wglGetExtensionsStringEXT != NULL)
322       //   printf("%s\n", this->pfn_wglGetExtensionsStringEXT());
321      //if (pfn_wglGetExtensionsStringEXT != NULL)
322      //  printf("%s\n", this->pfn_wglGetExtensionsStringEXT());
323323
324       if (pfn_wglGetExtensionsStringEXT != NULL && strstr(pfn_wglGetExtensionsStringEXT(), extension_name) != NULL)
325           return true;
326       else
327          return false;
324      if (pfn_wglGetExtensionsStringEXT != NULL && strstr(pfn_wglGetExtensionsStringEXT(), extension_name) != NULL)
325         return true;
326      else
327         return false;
328328   }
329329
330330   HGLRC m_context;
r245142r245143
589589   int             m_height;
590590   osd_dim         m_blit_dim;
591591
592   osd_gl_context   *m_gl_context;
592   osd_gl_context  *m_gl_context;
593593
594594   int             m_initialized;        // is everything well initialized, i.e. all GL stuff etc.
595595   // 3D info (GL mode only)
trunk/src/osd/sdl/sdl.mak
r245142r245143
429429   $(OSDOBJ)/modules/netdev \
430430   $(OSDOBJ)/modules/opengl \
431431   $(OSDOBJ)/modules/render
432   
432
433433#-------------------------------------------------
434434# OSD core library
435435#-------------------------------------------------
r245142r245143
827827   $(OSDOBJ)/modules/render/drawogl.o \
828828   $(OSDOBJ)/modules/opengl/gl_shader_tool.o \
829829   $(OSDOBJ)/modules/opengl/gl_shader_mgr.o
830   
830
831831DEFS += -DUSE_OPENGL=1
832832ifeq ($(USE_DISPATCH_GL),1)
833833DEFS += -DUSE_DISPATCH_GL=1
trunk/src/osd/sdl/video.h
r245142r245143
131131   osd_monitor_info    *m_next;                   // pointer to next monitor in list
132132protected:
133133   virtual void refresh() = 0;
134   osd_rect         m_pos_size;
135   osd_rect         m_usuable_pos_size;
136   bool            m_is_primary;
134   osd_rect            m_pos_size;
135   osd_rect            m_usuable_pos_size;
136   bool                m_is_primary;
137137   char                m_name[64];
138138private:
139139
r245142r245143
185185   int                 syncrefresh;    // sync only to refresh rate
186186   int                 switchres;      // switch resolutions
187187
188   int                 fullstretch;   // FXIME: implement in windows!
188   int                 fullstretch;    // FXIME: implement in windows!
189189
190190   // ddraw options
191191   int                 hwstretch;                  // stretch using the hardware
trunk/src/osd/sdl/window.c
r245142r245143
11531153
11541154#ifdef SDLMAME_MACOSX
11551155   /* FIMXE: On OSX, SDL_WINDOW_FULLSCREEN_DESKTOP seems to be more reliable.
1156    *         It however creates issues with white borders, i.e. the screen clear
1157    *         does not work. This happens both with opengl and accel.
1156    *        It however creates issues with white borders, i.e. the screen clear
1157    *        does not work. This happens both with opengl and accel.
11581158    */
11591159#endif
11601160
trunk/src/osd/windows/video.h
r245142r245143
131131   osd_monitor_info    *m_next;                   // pointer to next monitor in list
132132protected:
133133   virtual void refresh() = 0;
134   osd_rect         m_pos_size;
135   osd_rect         m_usuable_pos_size;
136   bool            m_is_primary;
134   osd_rect            m_pos_size;
135   osd_rect            m_usuable_pos_size;
136   bool                m_is_primary;
137137   char                m_name[64];
138138private:
139139
r245142r245143
175175   int                 syncrefresh;                // sync only to refresh rate
176176   int                 switchres;                  // switch resolutions
177177
178   int                 fullstretch;   // FXIME: implement in windows!
178   int                 fullstretch;    // FXIME: implement in windows!
179179
180180   // ddraw options
181181   int                 hwstretch;                  // stretch using the hardware
trunk/src/osd/windows/windows.mak
r245142r245143
406406   $(OSDOBJ)/modules/render/drawogl.o \
407407   $(OSDOBJ)/modules/opengl/gl_shader_tool.o \
408408   $(OSDOBJ)/modules/opengl/gl_shader_mgr.o
409   
409
410410OBJDIRS += \
411   $(OSDOBJ)/modules/opengl
411   $(OSDOBJ)/modules/opengl
412412
413413DEFS += -DUSE_OPENGL=1
414414
trunk/src/version.c
r245142r245143
88
99***************************************************************************/
1010
11#define BARE_BUILD_VERSION "0.159"
11#define BARE_BUILD_VERSION "0.160"
1212
1313extern const char bare_build_version[];
1414extern const char build_version[];


Previous 199869 Revisions Next


© 1997-2024 The MAME Team