Previous 15994 Revisions Next

r10705 Monday 7th March, 2011 at 14:59:46 UTC by Curt Coder
[ABC1600] Added some Mover helper functions.
[src/mess/drivers]abc1600.c
[src/mess/includes]abc1600.h
[src/mess/video]abc1600.c

src/mess/video/abc1600.c
r10704r10705
165165
166166   UINT8 data = 0;
167167
168   // monitor orientation (portrait/landscape)
169//   data |= 0x02;
170   
168171   // vertical sync
169172   data |= m_vs << 6;
170173
r10704r10705
379382//**************************************************************************
380383
381384//-------------------------------------------------
385//  get_drmsk -
386//-------------------------------------------------
387
388inline UINT16 abc1600_state::get_drmsk(UINT8 sh, int udx)
389{
390   /*
391     
392      bit      description
393     
394      A0      SH0
395      A1      SH1
396      A2      SH2
397      A3      SH3
398      A4      U/_D X
399     
400   */
401   
402   UINT16 drmsk_addr = (udx << 4) | (sh & 0x0f);
403   UINT8 drmskl = m_drmsk_rom[drmsk_addr];
404   UINT8 drmskh = m_drmsk_rom[drmsk_addr + 0x20];
405   UINT16 drmsk = (drmskh << 8) | drmskl;
406   
407   return drmsk;
408}
409
410
411//-------------------------------------------------
412//  get_shinf -
413//-------------------------------------------------
414
415inline UINT8 abc1600_state::get_shinf(UINT8 xfrom, UINT8 xto, int udx)
416{
417   /*
418     
419      bit      description
420     
421      A0      XFROM0
422      A1      XFROM1
423      A2      XFROM2
424      A3      XFROM3
425      A4      XTO0
426      A5      XTO1
427      A6      XTO2
428      A7      XTO3
429      A8      U/_D X
430     
431   */
432   
433   UINT16 shinf_addr = (udx << 8) | ((xto & 0x0f) << 4) | (xfrom & 0x0f);
434   
435   return m_shinf_rom[shinf_addr];
436}
437
438
439//-------------------------------------------------
440//  get_wrmsk - get mover write mask
441//-------------------------------------------------
442
443inline UINT16 abc1600_state::get_wrmsk(UINT8 xto, UINT8 xsize, int udx, int cmc, int wrms0, int wrms1)
444{
445   /*
446     
447      bit      description
448     
449      A0      XTO0
450      A1      XTO1
451      A2      XTO2
452      A3      XTO3
453      A4      XSIZE0
454      A5      XSIZE1
455      A6      XSIZE2
456      A7      XSIZE3
457      A8      U/_D X
458      A9      CMC
459      A10      WRMS0
460      A11      WRMS1
461     
462   */
463   
464   UINT16 wrmsk_addr = (wrms1 << 11) | (wrms0 << 10) | (cmc << 9) | (udx << 8) | ((xsize & 0x0f) << 4) | (xto & 0x0f);
465   UINT8 wrmskl = m_wrmsk_rom[wrmsk_addr];
466   UINT8 wrmskh = m_wrmsk_rom[wrmsk_addr + 0x1000];
467   UINT16 wrmsk = (wrmskh << 8) | wrmskl;
468   
469   return wrmsk;
470}
471
472
473//-------------------------------------------------
474//  mover -
475//-------------------------------------------------
476
477void abc1600_state::mover()
478{
479/*   UINT16 xsize = m_sx & 0x3ff;
480   UINT16 ysize = m_sy & 0xfff;
481   int udx = BIT(m_sx, 11);
482   int udy = BIT(m_sx, 10);*/
483}
484
485
486//-------------------------------------------------
382487//  mc6845_interface crtc_intf
383488//-------------------------------------------------
384489
r10704r10705
477582   // allocate video RAM
478583   m_video_ram = auto_alloc_array(machine, UINT8, VIDEORAM_SIZE);
479584   memset(m_video_ram, 0, VIDEORAM_SIZE);
585   
586   // find memory regions
587   m_wrmsk_rom = machine->region("wrmsk")->base();
588   m_shinf_rom = machine->region("shinf")->base();
589   m_drmsk_rom = machine->region("drmsk")->base();
480590
481591   // state saving
482592   save_pointer(NAME(m_video_ram), VIDEORAM_SIZE);
r10704r10705
512622      bitmap_fill(&bitmap, &cliprect, get_black_pen(machine));
513623   }
514624
625   mover();
626
515627   return 0;
516628}
517629
src/mess/includes/abc1600.h
r10704r10705
144144   inline UINT8 dma_iorq_r(int index, UINT16 offset);
145145   inline void dma_iorq_w(int index, UINT16 offset, UINT8 data);
146146
147   inline UINT16 get_drmsk(UINT8 sh, int udx);
148   inline UINT8 get_shinf(UINT8 xfrom, UINT8 xto, int udx);
149   inline UINT16 get_wrmsk(UINT8 xto, UINT8 xsize, int udx, int cmc, int wrms0, int wrms1);
150   void mover();
151
147152   inline UINT16 get_crtca(UINT16 ma, UINT8 ra, UINT8 column);
148153   void crtc_update_row(device_t *device, bitmap_t *bitmap, const rectangle *cliprect, UINT16 ma, UINT8 ra, UINT16 y, UINT8 x_count, INT8 cursor_x, void *param);
154   
149155
150156   // memory access controller
151157   UINT8 m_task;
r10704r10705
160166   UINT8 m_cause;
161167
162168   // video
169   const UINT8 *m_wrmsk_rom;
170   const UINT8 *m_shinf_rom;
171   const UINT8 *m_drmsk_rom;
163172   UINT8 *m_video_ram;         // video RAM
164173   int m_endisp;            // enable display
165174   int m_clocks_disabled;      // clocks disabled
src/mess/drivers/abc1600.c
r10704r10705
13401340
13411341   ROM_REGION( 0x40, "drmsk", 0 )
13421342   ROM_LOAD( "drmskl 6490359-01.1k", 0x00, 0x20, CRC(6e71087c) SHA1(0acf67700d6227f4b315cf8fb0fb31c0e7fb9496) )
1343   ROM_LOAD( "drmskh 6490358-01.1k", 0x20, 0x20, CRC(a4a9a9dc) SHA1(d8575c0335d6021cbb5f7bcd298b41c35294a80a) )
1343   ROM_LOAD( "drmskh 6490358-01.1l", 0x20, 0x20, CRC(a4a9a9dc) SHA1(d8575c0335d6021cbb5f7bcd298b41c35294a80a) )
13441344
13451345   ROM_REGION( 0x71c, "plds", 0 )
13461346   ROM_LOAD( "drmsk 6490360-01.1m", 0x000, 0x104, CRC(5f7143c1) SHA1(1129917845f8e505998b15288f02bf907487e4ac) ) // @ 1m,1n,1t,2t

Previous 15994 Revisions Next


© 1998-2018 The MESS Team