mirror of
https://github.com/holub/mame
synced 2025-10-05 08:41:31 +03:00
(MESS)thomson - fixes for a non-standard video mode and adding a new one [Antoine Mine]
This commit is contained in:
parent
422664119e
commit
7bb0f4f33d
@ -256,6 +256,7 @@ public:
|
||||
TIMER_CALLBACK_MEMBER( thom_set_init );
|
||||
void to770_scandraw_16( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
|
||||
void mo5_scandraw_16( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
|
||||
void mo5alt_scandraw_16( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
|
||||
void to9_scandraw_16( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
|
||||
void bitmap4_scandraw_16( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
|
||||
void bitmap4alt_scandraw_16( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
|
||||
@ -266,9 +267,11 @@ public:
|
||||
void page1_scandraw_16( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
|
||||
void page2_scandraw_16( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
|
||||
void overlay_scandraw_16( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
|
||||
void overlayhalf_scandraw_16( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
|
||||
void overlay3_scandraw_16( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
|
||||
void to770_scandraw_8( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
|
||||
void mo5_scandraw_8( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
|
||||
void mo5alt_scandraw_8( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
|
||||
void to9_scandraw_8( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
|
||||
void bitmap4_scandraw_8( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
|
||||
void bitmap4alt_scandraw_8( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
|
||||
@ -279,6 +282,7 @@ public:
|
||||
void page1_scandraw_8( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
|
||||
void page2_scandraw_8( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
|
||||
void overlay_scandraw_8( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
|
||||
void overlayhalf_scandraw_8( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
|
||||
void overlay3_scandraw_8( UINT8* vram, UINT16* dst, UINT16* pal, int org, int len );
|
||||
void thom_vblank( screen_device &screen, bool state );
|
||||
DECLARE_VIDEO_START( thom );
|
||||
@ -607,7 +611,9 @@ protected:
|
||||
#define THOM_VMODE_TO9 10
|
||||
#define THOM_VMODE_80_TO9 11
|
||||
#define THOM_VMODE_BITMAP4_ALT_HALF 12
|
||||
#define THOM_VMODE_NB 13
|
||||
#define THOM_VMODE_MO5_ALT 13
|
||||
#define THOM_VMODE_OVERLAY_HALF 14
|
||||
#define THOM_VMODE_NB 15
|
||||
|
||||
|
||||
class to7_io_line_device : public device_t
|
||||
|
@ -2040,7 +2040,7 @@ void thomson_state::to9_set_video_mode( UINT8 data, int style )
|
||||
break;
|
||||
|
||||
// undocumented, but tested on a real TO8D
|
||||
case 0x20: thom_set_video_mode( THOM_VMODE_MO5 ); break;
|
||||
case 0x20: thom_set_video_mode( THOM_VMODE_MO5_ALT ); break;
|
||||
|
||||
case 0x21: thom_set_video_mode( THOM_VMODE_BITMAP4 ); break;
|
||||
|
||||
@ -2064,6 +2064,9 @@ void thomson_state::to9_set_video_mode( UINT8 data, int style )
|
||||
|
||||
case 0x26: thom_set_video_mode( THOM_VMODE_OVERLAY ); break;
|
||||
|
||||
// undocumented 160x200 variant of overlay
|
||||
case 0x3e: thom_set_video_mode( THOM_VMODE_OVERLAY_HALF ); break;
|
||||
|
||||
case 0x3f: thom_set_video_mode( THOM_VMODE_OVERLAY3 ); break;
|
||||
|
||||
default:
|
||||
|
@ -405,6 +405,31 @@ UPDATE_LOW( mo5 )
|
||||
END_UPDATE
|
||||
|
||||
|
||||
/* as mo5, but with pastel bit switched */
|
||||
|
||||
UPDATE_HI( mo5alt )
|
||||
{
|
||||
int i;
|
||||
pen_t c[2];
|
||||
c[0] = pal[ (ramb & 15) ^ 8 ];
|
||||
c[1] = pal[ (ramb >> 4) ^ 8 ];
|
||||
for ( i = 0; i < 16; i += 2, rama >>= 1 )
|
||||
dst[ 15 - i ] = dst[ 14 - i ] = c[ rama & 1 ];
|
||||
}
|
||||
END_UPDATE
|
||||
|
||||
UPDATE_LOW( mo5alt )
|
||||
{
|
||||
int i;
|
||||
pen_t c[2];
|
||||
c[0] = pal[ (ramb & 15) ^ 8 ];
|
||||
c[1] = pal[ (ramb >> 4) ^ 8 ];
|
||||
for ( i = 0; i < 8; i++, rama >>= 1 )
|
||||
dst[ 7 - i ] = c[ rama & 1 ];
|
||||
}
|
||||
END_UPDATE
|
||||
|
||||
|
||||
|
||||
/* as to770, but with pastel color bit unswitched */
|
||||
|
||||
@ -654,7 +679,7 @@ END_UPDATE
|
||||
|
||||
|
||||
|
||||
/* 320x200, 2-colors, two overlaid pages (untested) */
|
||||
/* 320x200, 2-colors, two overlaid pages */
|
||||
|
||||
UPDATE_HI( overlay )
|
||||
{
|
||||
@ -681,8 +706,40 @@ UPDATE_LOW( overlay )
|
||||
END_UPDATE
|
||||
|
||||
|
||||
/* 160x200 undocumented variant of the above (2-colors, two overlaid pages) */
|
||||
|
||||
/* 160x200, 4-colors, four overlaid pages (untested) */
|
||||
UPDATE_HI( overlayhalf )
|
||||
{
|
||||
int i;
|
||||
pen_t c[2][2];
|
||||
c[0][0] = pal[ 0 ];
|
||||
c[0][1] = c[1][1] = pal[ 1 ];
|
||||
c[1][0] = pal[ 2 ];
|
||||
rama >>= 4;
|
||||
ramb >>= 4;
|
||||
for ( i = 0; i < 16; i += 4, rama >>= 1, ramb >>= 1 )
|
||||
dst[ 15 - i ] = dst[ 14 - i ] = dst[ 13 - i ] = dst[ 12 - i ] =
|
||||
c[ ramb & 1 ] [ rama & 1 ];
|
||||
}
|
||||
END_UPDATE
|
||||
|
||||
UPDATE_LOW( overlayhalf )
|
||||
{
|
||||
int i;
|
||||
pen_t c[2][2];
|
||||
c[0][0] = pal[ 0 ];
|
||||
c[0][1] = c[1][1] = pal[ 1 ];
|
||||
c[1][0] = pal[ 2 ];
|
||||
rama >>= 4;
|
||||
ramb >>= 4;
|
||||
for ( i = 0; i < 8; i += 2, rama >>= 1, ramb >>= 1 )
|
||||
dst[ 7 - i ] = dst[ 6 - i ] = c[ ramb & 1 ] [ rama & 1 ];
|
||||
}
|
||||
END_UPDATE
|
||||
|
||||
|
||||
|
||||
/* 160x200, 4-colors, four overlaid pages */
|
||||
|
||||
UPDATE_HI( overlay3 )
|
||||
{
|
||||
@ -725,7 +782,7 @@ static const thom_scandraw thom_scandraw_funcs[THOM_VMODE_NB][2] =
|
||||
FUN(to770), FUN(mo5), FUN(bitmap4), FUN(bitmap4alt), FUN(mode80),
|
||||
FUN(bitmap16), FUN(page1), FUN(page2), FUN(overlay), FUN(overlay3),
|
||||
FUN(to9), FUN(mode80_to9),
|
||||
FUN(bitmap4althalf),
|
||||
FUN(bitmap4althalf), FUN(mo5alt), FUN(overlayhalf),
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user