Previous 199869 Revisions Next

r30667 Sunday 25th May, 2014 at 22:50:21 UTC by Carl
dwarfd: convert to use 8275 device (nw)
----
dwarfd displays the wrong tiles until the dips are changed.  Wasn't able to find a combination that worked consistently for both.
[src/emu/video]i8275.c
[src/mame/drivers]dwarfd.c

trunk/src/mame/drivers/dwarfd.c
r30666r30667
299299#include "emu.h"
300300#include "cpu/i8085/i8085.h"
301301#include "sound/ay8910.h"
302#include "video/i8275.h"
302303
303304class dwarfd_state : public driver_device
304305{
r30666r30667
306307   dwarfd_state(const machine_config &mconfig, device_type type, const char *tag)
307308      : driver_device(mconfig, type, tag),
308309      m_maincpu(*this,"maincpu"),
309      m_gfxdecode(*this, "gfxdecode"),
310      m_palette(*this, "palette")
310      m_palette(*this, "palette"),
311      m_crtc(*this, "i8275"),
312      m_charmap(*this, "gfx1"),
313      m_dsw2(*this, "DSW2")
311314      { }
312315
313316   /* video-related */
314   int m_bank;
315   int m_line;
316   int m_idx;
317317   int m_crt_access;
318318
319   /* i8275 */
320   int m_i8275Command;
321   int m_i8275HorizontalCharactersRow;
322   int m_i8275CommandSeqCnt;
323   int m_i8275SpacedRows;
324   int m_i8275VerticalRows;
325   int m_i8275VerticalRetraceRows;
326   int m_i8275Underline;
327   int m_i8275Lines;
328   int m_i8275LineCounterMode;
329   int m_i8275FieldAttributeMode;
330   int m_i8275CursorFormat;
331   int m_i8275HorizontalRetrace;
332
333319   /* memory */
334320   UINT8    m_dw_ram[0x1000];
335   UINT8    m_videobuf[0x8000];
336321
337322   required_device<cpu_device> m_maincpu;
338   required_device<gfxdecode_device> m_gfxdecode;
339323   required_device<palette_device> m_palette;
324   required_device<i8275_device> m_crtc;
325   required_memory_region m_charmap;
326   required_ioport m_dsw2;
340327
341   DECLARE_WRITE8_MEMBER(i8275_preg_w);
342   DECLARE_READ8_MEMBER(i8275_preg_r);
343   DECLARE_WRITE8_MEMBER(i8275_creg_w);
344   DECLARE_READ8_MEMBER(i8275_sreg_r);
345328   DECLARE_READ8_MEMBER(dwarfd_ram_r);
346329   DECLARE_WRITE8_MEMBER(dwarfd_ram_w);
347330   DECLARE_WRITE8_MEMBER(output1_w);
348331   DECLARE_WRITE8_MEMBER(output2_w);
349332   DECLARE_READ8_MEMBER(qc_b8_r);
350333   DECLARE_WRITE_LINE_MEMBER(dwarfd_sod_callback);
334   DECLARE_WRITE_LINE_MEMBER(drq_w);
351335   DECLARE_DRIVER_INIT(qc);
352336   DECLARE_DRIVER_INIT(dwarfd);
353337   virtual void machine_start();
354338   virtual void machine_reset();
355   virtual void video_start();
356339   DECLARE_PALETTE_INIT(dwarfd);
357   UINT32 screen_update_dwarfd(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
358   TIMER_DEVICE_CALLBACK_MEMBER(dwarfd_interrupt);
359   void drawCrt( bitmap_rgb32 &bitmap,const rectangle &cliprect );
340   I8275_DRAW_CHARACTER_MEMBER(display_pixels);
341   I8275_DRAW_CHARACTER_MEMBER(qc_display_pixels);
360342};
361343
362344
363//should be taken from crt params
364static const int maxy = 25;
365static const int maxx = 80;
366
367
368#define TOPLINE 7
369#define BOTTOMLINE 18
370
371#define CHARACTERS_UNDEFINED -1
372
373enum
374{
375   I8275_COMMAND_RESET=0,
376   I8275_COMMAND_START,
377   I8275_COMMAND_STOP,
378   I8275_COMMAND_READ_LIGHT_PEN,
379   I8275_COMMAND_LOAD_CURSOR,
380   I8275_COMMAND_EI,
381   I8275_COMMAND_DI,
382   I8275_COMMAND_PRESET,
383
384   NUM_I8275_COMMANDS
385};
386
387enum
388{
389   I8275_COMMAND_RESET_LENGTH = 4,
390   I8275_COMMAND_START_LENGTH = 0,
391   I8275_COMMAND_STOP_LENGTH = 0,
392   I8275_COMMAND_EI_LENGTH = 0,
393   I8275_COMMAND_DI_LENGTH = 0,
394   I8275_COMMAND_READ_LIGHT_PEN_LENGTH = 2,
395   I8275_COMMAND_LOAD_CURSOR_LENGTH = 2,
396   I8275_COMMAND_PRESET_LENGTH = 0
397};
398
399
400WRITE8_MEMBER(dwarfd_state::i8275_preg_w)//param reg
401{
402   switch (m_i8275Command)
403   {
404      case I8275_COMMAND_RESET:
405      {
406         switch (m_i8275CommandSeqCnt)
407         {
408            case 4:
409            {
410               //screen byte comp byte 1
411               m_i8275SpacedRows = data >> 7;
412               m_i8275HorizontalCharactersRow = (data & 0x7f) + 1;
413               if (m_i8275HorizontalCharactersRow > 80)
414               {
415                  logerror("i8275 Undefined num of characters/Row! = %d\n", m_i8275HorizontalCharactersRow);
416                  m_i8275HorizontalCharactersRow = CHARACTERS_UNDEFINED;
417               }
418               else
419               {
420                  logerror("i8275 %d characters/row\n", m_i8275HorizontalCharactersRow);
421               }
422               if (m_i8275SpacedRows & 1)
423               {
424                  logerror("i8275 spaced rows\n");
425               }
426               else
427               {
428                  logerror("i8275 normal rows\n");
429               }
430               m_i8275CommandSeqCnt--;
431            }
432            break;
433
434            case 3:
435            {
436               //screen byte comp byte 2
437               m_i8275VerticalRows = (data & 0x3f) + 1;
438               m_i8275VerticalRetraceRows = (data >> 6) + 1;
439
440               logerror("i8275 %d rows\n", m_i8275VerticalRows);
441               logerror("i8275 %d vertical retrace rows\n", m_i8275VerticalRetraceRows);
442
443               m_i8275CommandSeqCnt--;
444            }
445            break;
446
447            case 2:
448            {
449               //screen byte comp byte 3
450               m_i8275Underline = (data >> 4) + 1;
451               m_i8275Lines = (data & 0xf) + 1;
452               logerror("i8275 underline placement: %d\n", m_i8275Underline);
453               logerror("i8275 %d lines/row\n", m_i8275Lines);
454
455               m_i8275CommandSeqCnt--;
456            }
457            break;
458
459            case 1:
460            {
461               //screen byte comp byte 4
462               m_i8275LineCounterMode = data >> 7;
463               m_i8275FieldAttributeMode = (data >> 6) & 1;
464               m_i8275CursorFormat = (data >> 4) & 3;
465               m_i8275HorizontalRetrace = ((data & 0xf) + 1) << 1;
466               logerror("i8275 line counter mode: %d\n", m_i8275LineCounterMode);
467               if (m_i8275FieldAttributeMode)
468               {
469                  logerror("i8275 field attribute mode non-transparent\n");
470               }
471               else
472               {
473                  logerror("i8275 field attribute mode transparent\n");
474               }
475
476               switch (m_i8275CursorFormat)
477               {
478                  case 0: {logerror("i8275 cursor format - blinking reverse video block\n");} break;
479                  case 1: {logerror("i8275 cursor format - blinking underline\n");}break;
480                  case 2: {logerror("i8275 cursor format - nonblinking reverse video block\n");}break;
481                  case 3: {logerror("i8275 cursor format - nonblinking underline\n");}break;
482               }
483
484               logerror("i8275 %d chars for horizontal retrace\n",m_i8275HorizontalRetrace );
485               m_i8275CommandSeqCnt--;
486            }
487            break;
488
489            default:
490            {
491               logerror("i8275 illegal\n");
492            }
493
494         }
495      }
496      break;
497
498      case I8275_COMMAND_START:
499      {
500      }
501      break;
502
503      case I8275_COMMAND_STOP:
504      {
505      }
506      break;
507
508   }
509
510}
511
512READ8_MEMBER(dwarfd_state::i8275_preg_r)//param reg
513{
514   return 0;
515}
516
517WRITE8_MEMBER(dwarfd_state::i8275_creg_w)//comand reg
518{
519   switch (data>>5)
520   {
521      case 0:
522      {
523         /* reset */
524         m_i8275Command = I8275_COMMAND_RESET;
525         m_i8275CommandSeqCnt = I8275_COMMAND_RESET_LENGTH;
526      }
527      break;
528
529      case 5:
530      {
531         /* enable interrupt */
532         m_i8275Command = I8275_COMMAND_EI;
533         m_i8275CommandSeqCnt = I8275_COMMAND_EI_LENGTH;
534      }
535      break;
536
537      case 6:
538      {
539         /* disable interrupt */
540         m_i8275Command = I8275_COMMAND_DI;
541         m_i8275CommandSeqCnt = I8275_COMMAND_DI_LENGTH;
542      }
543      break;
544
545      case 7:
546      {
547         /* preset counters */
548         m_i8275CommandSeqCnt = I8275_COMMAND_PRESET_LENGTH;
549
550      }
551      break;
552   }
553}
554
555READ8_MEMBER(dwarfd_state::i8275_sreg_r)//status
556{
557   return 0;
558}
559
560345READ8_MEMBER(dwarfd_state::dwarfd_ram_r)
561346{
562347   if (m_crt_access == 0)
r30666r30667
565350   }
566351   else
567352   {
568      m_videobuf[m_line * 256 + m_idx] = m_dw_ram[offset];
569      m_idx++;
353      m_crtc->dack_w(space, 0, m_dw_ram[offset], mem_mask);
570354      return m_dw_ram[offset];
571355   }
572356}
r30666r30667
622406   AM_RANGE(0x01, 0x01) AM_DEVREAD("aysnd", ay8910_device, data_r)
623407   AM_RANGE(0x02, 0x03) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
624408
625   AM_RANGE(0x20, 0x20) AM_READWRITE(i8275_preg_r, i8275_preg_w)
626   AM_RANGE(0x21, 0x21) AM_READWRITE(i8275_sreg_r, i8275_creg_w)
409   AM_RANGE(0x20, 0x21) AM_DEVREADWRITE("i8275", i8275_device, read, write)
627410   AM_RANGE(0x40, 0x40) AM_WRITENOP // unknown
628411   AM_RANGE(0x60, 0x60) AM_WRITE(output1_w)
629412   AM_RANGE(0x80, 0x80) AM_WRITE(output2_w)
r30666r30667
785568INPUT_PORTS_END
786569
787570
788void dwarfd_state::video_start()
571I8275_DRAW_CHARACTER_MEMBER(dwarfd_state::display_pixels)
789572{
573   int i;
574   int bank = ((gpa & 2) ? 0 : 4) + (gpa & 1) + ((m_dsw2->read() & 4) >> 1);
575   const rgb_t *palette = m_palette->palette()->entry_list_raw();
576   UINT16 pixels = m_charmap->u16((linecount & 7) + ((charcode + (bank * 128)) << 3));
577
578   //if(!linecount)
579   //   logerror("%d %d %02x %02x %02x %02x %02x %02x %02x\n", x/8, y/8, charcode, lineattr, lten, rvv, vsp, gpa, hlgt);
580
581   for(i=0;i<8;i+=2)
582   {
583      UINT8 pixel = (pixels >> (i * 2)) & 0xf;
584      bitmap.pix32(y, x + i) = palette[pixel & 0xe];
585      bitmap.pix32(y, x + i + 1) = palette[(pixel & 1) ? 0 : (pixel & 0xe)];
586   }
790587}
791588
792void dwarfd_state::drawCrt( bitmap_rgb32 &bitmap,const rectangle &cliprect )
589I8275_DRAW_CHARACTER_MEMBER(dwarfd_state::qc_display_pixels)
793590{
794   int x, y;
795   for (y = 0; y < maxy; y++)
796   {
797      int count = y * 256;
798      int bank2 = 4;
591   int i;
592   int bank = gpa;
593   const rgb_t *palette = m_palette->palette()->entry_list_raw();
594   UINT16 pixels = m_charmap->u16((linecount & 7) + ((charcode + (bank * 128)) << 3));
799595
800      if (y < TOPLINE || y > BOTTOMLINE)
801      {
802         bank2 = 0;
803      }
804      for (x = 0; x < maxx; x++)
805      {
806         int tile = 0;
596   //if(!linecount)
597   //   logerror("%d %d %02x %02x %02x %02x %02x %02x %02x\n", x/8, y/8, charcode, lineattr, lten, rvv, vsp, gpa, hlgt);
807598
808         int b = 0; //end marker
809         while (b == 0)
810         {
811            if (count < 0x8000)
812               tile = m_videobuf[count++];
813            else
814                  return;
599   if(vsp)
600      pixels ^= 0xeeee; // FIXME: What is this really supposed to do?
815601
816            if (tile & 0x80)
817            {
818               if ((tile & 0xfc) == 0xf0)
819               {
820                  switch (tile & 3)
821                  {
822                     case 0:
823                     case 1: break;
824
825                     case 2:
826                     case 3: return;
827                  }
828               }
829               if ((tile & 0xc0) == 0x80)
830               {
831                  m_bank = (tile >> 2) & 3;
832               }
833               if ((tile & 0xc0) == 0xc0)
834               {
835                  b = 1;
836                  tile = machine().rand() & 0x7f;//(tile >> 2) & 0xf;
837               }
838            }
839            else
840               b = 1;
841         }
842         m_gfxdecode->gfx(0)->transpen(bitmap,cliprect,
843            tile + (m_bank + bank2) * 128,
844            0,
845            0, 0,
846            x*8,y*8,0);
847      }
602   for(i=0;i<8;i+=2)
603   {
604      UINT8 pixel = (pixels >> (i * 2)) & 0xf;
605      bitmap.pix32(y, x + i) = palette[pixel & 0xe];
606      bitmap.pix32(y, x + i + 1) = palette[(pixel & 1) ? 0 : (pixel & 0xe)];
848607   }
849608}
850609
851
852UINT32 dwarfd_state::screen_update_dwarfd(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
853{
854   bitmap.fill(m_palette->black_pen(), cliprect);
855   drawCrt(bitmap, cliprect);
856   return 0;
857}
858
859610WRITE_LINE_MEMBER(dwarfd_state::dwarfd_sod_callback)
860611{
861612   m_crt_access = state;
862613}
863614
864TIMER_DEVICE_CALLBACK_MEMBER(dwarfd_state::dwarfd_interrupt)
615WRITE_LINE_MEMBER(dwarfd_state::drq_w)
865616{
866   int scanline = param;
617   if(state && !m_crt_access)
618      m_maincpu->set_input_line(I8085_RST65_LINE, ASSERT_LINE);
619   else if(!state)
620      m_maincpu->set_input_line(I8085_RST65_LINE, CLEAR_LINE);
867621
868   if((scanline % 8) != 0)
869      return;
870
871   if (scanline < 25*8)
872   {
873      m_maincpu->set_input_line(I8085_RST65_LINE, HOLD_LINE); // 34 - every 8th line
874      m_line = scanline/8;
875      m_idx = 0;
876   }
877   else
878   {
879      if (scanline == 25*8)
880      {
881         m_maincpu->set_input_line(I8085_RST55_LINE, HOLD_LINE);//2c - generated by  crt - end of frame
882      }
883   }
884622}
885623
886624#if 0
r30666r30667
892630   { 0,1,2,3},
893631   {8,0,24,16 },
894632   //{ 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 },
895   { 7*32, 6*32, 5*32, 4*32, 3*32, 2*32, 1*32, 0*32 },
633   { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
896634   8*32
897635};
898636#endif
r30666r30667
906644   {8,12,0,4,24,28,16,20 },
907645//  {12,8,4,0,28,24,20,16 },
908646   //{ 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 },
909   { 7*32, 6*32, 5*32, 4*32, 3*32, 2*32, 1*32, 0*32 },
647   { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
910648   8*32
911649};
912650
r30666r30667
919657   { 0 },
920658   {8,0,24,16 },
921659   //{ 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 },
922   { 7*32, 6*32, 5*32, 4*32, 3*32, 2*32, 1*32, 0*32 },
660   { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
923661   8*32
924662};
925663
r30666r30667
931669   { 1 },
932670   {8,0,24,16 },
933671   //{ 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 },
934   { 7*32, 6*32, 5*32, 4*32, 3*32, 2*32, 1*32, 0*32 },
672   { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
935673   8*32
936674};
937675
r30666r30667
943681   { 2 },
944682   {8,0,24,16 },
945683   //{ 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 },
946   { 7*32, 6*32, 5*32, 4*32, 3*32, 2*32, 1*32, 0*32 },
684   { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
947685   8*32
948686};
949687
r30666r30667
955693   { 3 },
956694   {8,0,24,16 },
957695   //{ 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 },
958   { 7*32, 6*32, 5*32, 4*32, 3*32, 2*32, 1*32, 0*32 },
696   { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
959697   8*32
960698};
961699/*
r30666r30667
967705    { 1,1},
968706    {6,6,2,2,14,14,10,10 },
969707    //{ 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 },
970    { 7*16, 6*16, 5*16, 4*16, 3*16, 2*16, 1*16, 0*16 },
708    { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
971709    8*16
972710};
973711*/
r30666r30667
1001739
1002740void dwarfd_state::machine_start()
1003741{
1004   save_item(NAME(m_bank));
1005   save_item(NAME(m_line));
1006   save_item(NAME(m_idx));
1007742   save_item(NAME(m_crt_access));
1008
1009   /* i8275 */
1010   save_item(NAME(m_i8275Command));
1011   save_item(NAME(m_i8275HorizontalCharactersRow));
1012   save_item(NAME(m_i8275CommandSeqCnt));
1013   save_item(NAME(m_i8275SpacedRows));
1014   save_item(NAME(m_i8275VerticalRows));
1015   save_item(NAME(m_i8275VerticalRetraceRows));
1016   save_item(NAME(m_i8275Underline));
1017   save_item(NAME(m_i8275Lines));
1018   save_item(NAME(m_i8275LineCounterMode));
1019   save_item(NAME(m_i8275FieldAttributeMode));
1020   save_item(NAME(m_i8275CursorFormat));
1021   save_item(NAME(m_i8275HorizontalRetrace));
1022743}
1023744
1024745void dwarfd_state::machine_reset()
1025746{
1026   m_bank = 0;
1027   m_line = 0;
1028   m_idx = 0;
1029747   m_crt_access = 0;
1030   m_i8275Command = 0;
1031   m_i8275HorizontalCharactersRow = 0;
1032   m_i8275CommandSeqCnt = 0;
1033   m_i8275SpacedRows = 0;
1034   m_i8275VerticalRows = 0;
1035   m_i8275VerticalRetraceRows = 0;
1036   m_i8275Underline = 0;
1037   m_i8275Lines = 0;
1038   m_i8275LineCounterMode = 0;
1039   m_i8275FieldAttributeMode = 0;
1040   m_i8275CursorFormat = 0;
1041   m_i8275HorizontalRetrace = 0;
1042748}
1043749
1044750static MACHINE_CONFIG_START( dwarfd, dwarfd_state )
r30666r30667
1049755   MCFG_I8085A_SOD(WRITELINE(dwarfd_state,dwarfd_sod_callback))
1050756   MCFG_CPU_PROGRAM_MAP(mem_map)
1051757   MCFG_CPU_IO_MAP(io_map)
1052   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", dwarfd_state, dwarfd_interrupt, "screen", 0, 1)
1053758
1054
1055759   /* video hardware */
1056760   MCFG_SCREEN_ADD("screen", RASTER)
1057761   MCFG_SCREEN_REFRESH_RATE(60)
1058   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
1059762   MCFG_SCREEN_SIZE(272*2, 200+4*8)
1060763   MCFG_SCREEN_VISIBLE_AREA(0, 272*2-1, 0, 200-1)
1061   MCFG_SCREEN_UPDATE_DRIVER(dwarfd_state, screen_update_dwarfd)
764   MCFG_SCREEN_UPDATE_DEVICE("i8275", i8275_device, screen_update)
1062765
766   MCFG_DEVICE_ADD("i8275", I8275, 10595000/3)
767   MCFG_I8275_CHARACTER_WIDTH(8)
768   MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(dwarfd_state, display_pixels)
769   MCFG_I8275_IRQ_CALLBACK(INPUTLINE("maincpu", I8085_RST55_LINE))
770   MCFG_I8275_DRQ_CALLBACK(WRITELINE(dwarfd_state, drq_w))
771
1063772   MCFG_GFXDECODE_ADD("gfxdecode", "palette", dwarfd)
1064773   MCFG_PALETTE_ADD("palette", 0x100)
1065774   MCFG_PALETTE_INIT_OWNER(dwarfd_state, dwarfd)
r30666r30667
1076785   MCFG_CPU_MODIFY("maincpu")
1077786   MCFG_CPU_PROGRAM_MAP(qc_map)
1078787   MCFG_CPU_IO_MAP(qc_io_map)
788
789   MCFG_DEVICE_MODIFY("i8275")
790   MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(dwarfd_state, qc_display_pixels)
1079791MACHINE_CONFIG_END
1080792
1081793/* Dwarfs den PROM explanation:
r30666r30667
13001012   //      src[i] = src[i] & 0xe0;
13011013   }
13021014
1303   save_item(NAME(m_videobuf));
13041015   save_item(NAME(m_dw_ram));
13051016
1306   memset(m_videobuf, 0, sizeof(m_videobuf));
13071017   memset(m_dw_ram, 0, sizeof(m_dw_ram));
13081018
13091019}
r30666r30667
13231033}
13241034
13251035/*    YEAR  NAME      PARENT     MACHINE INPUT   INIT    ORENTATION,         COMPANY           FULLNAME            FLAGS */
1326GAME( 1981, dwarfd,   0,         dwarfd, dwarfd, dwarfd_state, dwarfd, ORIENTATION_FLIP_Y, "Electro-Sport", "Draw Poker III / Dwarfs Den (Dwarf Gfx)",            GAME_IMPERFECT_GRAPHICS | GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE )
1327GAME( 1981, dwarfda,   dwarfd,   dwarfd, dwarfd, dwarfd_state, dwarfd, ORIENTATION_FLIP_Y, "Electro-Sport", "Draw Poker III / Dwarfs Den (Card Gfx)",            GAME_IMPERFECT_GRAPHICS | GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE )
1328GAME( 1983, quarterh, 0,         dwarfd, quarterh, dwarfd_state, dwarfd, ORIENTATION_FLIP_Y, "Electro-Sport", "Quarter Horse (set 1, Pioneer PR-8210)", GAME_IMPERFECT_GRAPHICS | GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE | GAME_NOT_WORKING )
1329GAME( 1983, quarterha, quarterh, dwarfd, quarterh, dwarfd_state, dwarfd, ORIENTATION_FLIP_Y, "Electro-Sport", "Quarter Horse (set 2, Pioneer PR-8210)", GAME_IMPERFECT_GRAPHICS | GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE | GAME_NOT_WORKING )
1330GAME( 1983, quarterhb, quarterh, dwarfd, quarterh, dwarfd_state, dwarfd, ORIENTATION_FLIP_Y, "Electro-Sport", "Quarter Horse (set 3, Pioneer LD-V2000)", GAME_IMPERFECT_GRAPHICS | GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE | GAME_NOT_WORKING )
1331GAME( 1995, qc,       0,         qc,     quarterh, dwarfd_state, qc,     ORIENTATION_FLIP_Y, "ArJay Exports/Prestige Games", "Quarter Horse Classic", GAME_IMPERFECT_GRAPHICS | GAME_NOT_WORKING )
1036GAME( 1981, dwarfd,   0,         dwarfd, dwarfd, dwarfd_state, dwarfd, 0, "Electro-Sport", "Draw Poker III / Dwarfs Den (Dwarf Gfx)",            GAME_IMPERFECT_GRAPHICS | GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE )
1037GAME( 1981, dwarfda,   dwarfd,   dwarfd, dwarfd, dwarfd_state, dwarfd, 0, "Electro-Sport", "Draw Poker III / Dwarfs Den (Card Gfx)",            GAME_IMPERFECT_GRAPHICS | GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE )
1038GAME( 1983, quarterh, 0,         dwarfd, quarterh, dwarfd_state, dwarfd, 0, "Electro-Sport", "Quarter Horse (set 1, Pioneer PR-8210)", GAME_IMPERFECT_GRAPHICS | GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE | GAME_NOT_WORKING )
1039GAME( 1983, quarterha, quarterh, dwarfd, quarterh, dwarfd_state, dwarfd, 0, "Electro-Sport", "Quarter Horse (set 2, Pioneer PR-8210)", GAME_IMPERFECT_GRAPHICS | GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE | GAME_NOT_WORKING )
1040GAME( 1983, quarterhb, quarterh, dwarfd, quarterh, dwarfd_state, dwarfd, 0, "Electro-Sport", "Quarter Horse (set 3, Pioneer LD-V2000)", GAME_IMPERFECT_GRAPHICS | GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE | GAME_NOT_WORKING )
1041GAME( 1995, qc,       0,         qc,     quarterh, dwarfd_state, qc,     0, "ArJay Exports/Prestige Games", "Quarter Horse Classic", GAME_IMPERFECT_GRAPHICS | GAME_NOT_WORKING )
trunk/src/emu/video/i8275.c
r30666r30667
286286      {
287287         int line_counter = OFFSET_LINE_COUNTER ? ((lc - 1) % SCANLINES_PER_ROW) : lc;
288288         bool end_of_row = false;
289         int fifo_idx = 0;
289290         m_hlgt = (m_stored_attr & FAC_H) ? 1 : 0;
290291         m_vsp = (m_stored_attr & FAC_B) ? 1 : 0;
291292         m_gpa = (m_stored_attr & FAC_GG) >> 2;
r30666r30667
315316
316317                  if (!VISIBLE_FIELD_ATTRIBUTE)
317318                  {
318                     int fifo_idx = 0;
319
320319                     data = m_fifo[!m_buffer_dma][fifo_idx];
321320
322321                     fifo_idx++;

Previous 199869 Revisions Next


© 1997-2024 The MAME Team