Previous 199869 Revisions Next

r32383 Thursday 25th September, 2014 at 18:03:34 UTC by Miodrag Milanović
(MESS)thomson - fixes for a non-standard video mode and adding a new one [Antoine Mine]
[src/mess/includes]thomson.h
[src/mess/machine]thomson.c
[src/mess/video]thomson.c

trunk/src/mess/machine/thomson.c
r32382r32383
20402040      break;
20412041
20422042        // undocumented, but tested on a real TO8D
2043        case 0x20: thom_set_video_mode( THOM_VMODE_MO5 );         break;
2043        case 0x20: thom_set_video_mode( THOM_VMODE_MO5_ALT );     break;
20442044
20452045   case 0x21: thom_set_video_mode( THOM_VMODE_BITMAP4 );     break;
20462046
r32382r32383
20642064
20652065   case 0x26: thom_set_video_mode( THOM_VMODE_OVERLAY );     break;
20662066
2067        // undocumented 160x200 variant of overlay
2068   case 0x3e: thom_set_video_mode( THOM_VMODE_OVERLAY_HALF );     break;
2069
20672070   case 0x3f: thom_set_video_mode( THOM_VMODE_OVERLAY3 );    break;
20682071
20692072   default:
trunk/src/mess/includes/thomson.h
r32382r32383
256256   TIMER_CALLBACK_MEMBER( thom_set_init );
257257   void to770_scandraw_16( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
258258   void mo5_scandraw_16( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
259   void mo5alt_scandraw_16( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
259260   void to9_scandraw_16( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
260261   void bitmap4_scandraw_16( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
261262   void bitmap4alt_scandraw_16( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
r32382r32383
266267   void page1_scandraw_16( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
267268   void page2_scandraw_16( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
268269   void overlay_scandraw_16( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
270   void overlayhalf_scandraw_16( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
269271   void overlay3_scandraw_16( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
270272   void to770_scandraw_8( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
271273   void mo5_scandraw_8( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
274   void mo5alt_scandraw_8( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
272275   void to9_scandraw_8( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
273276   void bitmap4_scandraw_8( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
274277   void bitmap4alt_scandraw_8( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
r32382r32383
279282   void page1_scandraw_8( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
280283   void page2_scandraw_8( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
281284   void overlay_scandraw_8( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
285   void overlayhalf_scandraw_8( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
282286   void overlay3_scandraw_8( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
283287   void thom_vblank( screen_device &screen, bool state );
284288   DECLARE_VIDEO_START( thom );
r32382r32383
607611#define THOM_VMODE_TO9        10
608612#define THOM_VMODE_80_TO9     11
609613#define THOM_VMODE_BITMAP4_ALT_HALF 12
610#define THOM_VMODE_NB         13
614#define THOM_VMODE_MO5_ALT    13
615#define THOM_VMODE_OVERLAY_HALF     14
616#define THOM_VMODE_NB         15
611617
612618
613619class to7_io_line_device : public device_t
trunk/src/mess/video/thomson.c
r32382r32383
405405END_UPDATE
406406
407407
408/* as mo5, but with pastel bit switched */
408409
410UPDATE_HI( mo5alt )
411{
412   int i;
413   pen_t c[2];
414   c[0] = pal[ (ramb & 15) ^ 8 ];
415        c[1] = pal[ (ramb >> 4) ^ 8 ];
416   for ( i = 0; i < 16; i += 2, rama >>= 1 )
417      dst[ 15 - i ] = dst[ 14 - i ] = c[ rama & 1 ];
418}
419END_UPDATE
420
421UPDATE_LOW( mo5alt )
422{
423   int i;
424   pen_t c[2];
425   c[0] = pal[ (ramb & 15) ^ 8 ];
426   c[1] = pal[ (ramb >> 4) ^ 8 ];
427   for ( i = 0; i < 8; i++, rama >>= 1 )
428      dst[ 7 - i ] = c[ rama & 1 ];
429}
430END_UPDATE
431
432
433
409434/* as to770, but with pastel color bit unswitched */
410435
411436UPDATE_HI( to9 )
r32382r32383
654679
655680
656681
657/* 320x200, 2-colors, two overlaid pages (untested) */
682/* 320x200, 2-colors, two overlaid pages */
658683
659684UPDATE_HI( overlay )
660685{
r32382r32383
681706END_UPDATE
682707
683708
709/* 160x200 undocumented variant of the above (2-colors, two overlaid pages) */
684710
685/* 160x200, 4-colors, four overlaid pages (untested) */
711UPDATE_HI( overlayhalf )
712{
713   int i;
714   pen_t c[2][2];
715   c[0][0] = pal[ 0 ];
716   c[0][1] = c[1][1] = pal[ 1 ];
717   c[1][0] = pal[ 2 ];
718        rama >>= 4;
719        ramb >>= 4;
720   for ( i = 0; i < 16; i += 4, rama >>= 1, ramb >>= 1 )
721      dst[ 15 - i ] =  dst[ 14 - i ] = dst[ 13 - i ] =  dst[ 12 - i ] =
722                        c[ ramb & 1 ] [ rama & 1 ];
723}
724END_UPDATE
686725
726UPDATE_LOW( overlayhalf )
727{
728   int i;
729   pen_t c[2][2];
730   c[0][0] = pal[ 0 ];
731   c[0][1] = c[1][1] = pal[ 1 ];
732   c[1][0] = pal[ 2 ];
733        rama >>= 4;
734        ramb >>= 4;
735   for ( i = 0; i < 8; i += 2, rama >>= 1, ramb >>= 1 )
736      dst[ 7 - i ] = dst[ 6 - i ] = c[ ramb & 1 ] [ rama & 1 ];
737}
738END_UPDATE
739
740
741
742/* 160x200, 4-colors, four overlaid pages */
743
687744UPDATE_HI( overlay3 )
688745{
689746   /* Note: "Manuel Technique" doc implies that the palette entries are 0,1,2,4,8;
r32382r32383
725782   FUN(to770),    FUN(mo5),    FUN(bitmap4), FUN(bitmap4alt),  FUN(mode80),
726783   FUN(bitmap16), FUN(page1),  FUN(page2),   FUN(overlay),     FUN(overlay3),
727784   FUN(to9), FUN(mode80_to9),
728        FUN(bitmap4althalf),
785        FUN(bitmap4althalf), FUN(mo5alt), FUN(overlayhalf),
729786};
730787
731788

Previous 199869 Revisions Next


© 1997-2024 The MAME Team