(MESS) g7400: Let's start displaying some things. (nw)

This commit is contained in:
Wilbert Pol 2012-12-30 21:56:29 +00:00
parent ee3329220a
commit 67c211dd92
5 changed files with 349 additions and 14 deletions

1
.gitattributes vendored
View File

@ -7615,6 +7615,7 @@ src/mess/video/dai.c svneol=native#text/plain
src/mess/video/dgn_beta.c svneol=native#text/plain
src/mess/video/dl1416.c svneol=native#text/plain
src/mess/video/dl1416.h svneol=native#text/plain
src/mess/video/ef9341_chargen.h svneol=native#text/plain
src/mess/video/ef9345.c svneol=native#text/plain
src/mess/video/ef9345.h svneol=native#text/plain
src/mess/video/electron.c svneol=native#text/plain

View File

@ -202,7 +202,7 @@ static MACHINE_CONFIG_START( odyssey2, odyssey2_state )
MCFG_SCREEN_UPDATE_DRIVER(odyssey2_state, screen_update_odyssey2)
MCFG_GFXDECODE( odyssey2 )
MCFG_PALETTE_LENGTH(24)
MCFG_PALETTE_LENGTH(32)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@ -231,7 +231,7 @@ static MACHINE_CONFIG_START( videopac, odyssey2_state )
MCFG_SCREEN_UPDATE_DRIVER(odyssey2_state, screen_update_odyssey2)
MCFG_GFXDECODE( odyssey2 )
MCFG_PALETTE_LENGTH(24)
MCFG_PALETTE_LENGTH(32)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@ -261,7 +261,7 @@ static MACHINE_CONFIG_START( g7400, odyssey2_state )
MCFG_VIDEO_START_OVERRIDE(odyssey2_state,g7400)
MCFG_GFXDECODE( odyssey2 )
MCFG_PALETTE_LENGTH(24)
MCFG_PALETTE_LENGTH(32)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")

View File

@ -136,13 +136,14 @@ protected:
UINT8 m_ef934x_ext_char_ram[1024];
bool m_g7400;
inline UINT16 ef9340_get_c_addr();
inline UINT16 ef9340_get_c_addr(UINT8 x, UINT8 y);
inline UINT16 ef9340_get_c_addr() { return ef9340_get_c_addr( m_ef9340.X, m_ef9340.Y ); };
inline void ef9340_inc_c();
// Calculate the external chargen address for a character and slice
inline UINT16 external_chargen_address(UINT8 b, UINT8 slice);
void i824x_scanline(int vpos);
void er9340_scanline(int vpos);
void ef9340_scanline(int vpos);
/* timers */
static const device_timer_id TIMER_LINE = 0;

View File

@ -0,0 +1,268 @@
static const UINT8 ef9341_char_set[2][128][10] = {
// Alphanumeric character set (128 characters)
{
{ 0x00,0x38,0x44,0x40,0x20,0x10,0x00,0x10,0x00,0x00 },
{ 0x00,0x10,0x28,0x00,0x38,0x44,0x7c,0x44,0x00,0x00 },
{ 0x00,0x08,0x10,0x3c,0x20,0x30,0x20,0x3c,0x00,0x00 },
{ 0x00,0x08,0x14,0x10,0x38,0x10,0x24,0x3c,0x00,0x00 },
{ 0x00,0x10,0x38,0x50,0x38,0x14,0x54,0x38,0x10,0x00 },
{ 0x00,0x38,0x44,0x40,0x40,0x40,0x44,0x38,0x10,0x20 },
{ 0x00,0x28,0x28,0x7c,0x28,0x7c,0x28,0x28,0x00,0x00 },
{ 0x00,0x20,0x18,0x00,0x38,0x44,0x7c,0x44,0x00,0x00 },
{ 0x00,0x20,0x18,0x00,0x44,0x44,0x44,0x38,0x00,0x00 },
{ 0x00,0x10,0x08,0x3c,0x20,0x30,0x20,0x3c,0x00,0x00 },
{ 0x00,0x3c,0x50,0x50,0x58,0x50,0x50,0x3c,0x00,0x00 },
{ 0x00,0x08,0x14,0x3c,0x20,0x30,0x20,0x3c,0x00,0x00 },
{ 0x00,0x00,0x10,0x20,0x7f,0x20,0x10,0x00,0x00,0x00 },
{ 0x00,0x10,0x38,0x54,0x10,0x10,0x10,0x10,0x10,0x10 },
{ 0x00,0x00,0x08,0x04,0xfe,0x04,0x08,0x00,0x00,0x00 },
{ 0x10,0x10,0x10,0x10,0x10,0x10,0x54,0x38,0x10,0x00 },
{ 0x00,0x18,0x24,0x18,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x10,0x10,0x7c,0x10,0x10,0x00,0x7c,0x00,0x00 },
{ 0x00,0x08,0x10,0x38,0x44,0x7c,0x40,0x38,0x00,0x00 },
{ 0x00,0x28,0x00,0x38,0x44,0x7c,0x40,0x38,0x00,0x00 },
{ 0x00,0x28,0x00,0x30,0x10,0x10,0x10,0x38,0x00,0x00 },
{ 0x00,0x00,0x00,0x38,0x40,0x40,0x40,0x38,0x10,0x20 },
{ 0x00,0x10,0x28,0x00,0x44,0x44,0x4c,0x34,0x00,0x00 },
{ 0x00,0x20,0x10,0x34,0x4c,0x44,0x4c,0x34,0x00,0x00 },
{ 0x00,0x00,0x10,0x00,0x7c,0x00,0x10,0x00,0x00,0x00 },
{ 0x00,0x20,0x10,0x38,0x44,0x7c,0x40,0x38,0x00,0x00 },
{ 0x00,0x00,0x00,0x3c,0x52,0x5e,0x50,0x3e,0x00,0x00 },
{ 0x00,0x10,0x28,0x38,0x44,0x7c,0x40,0x38,0x00,0x00 },
{ 0x00,0x40,0xc0,0x40,0x44,0x4c,0x14,0x3e,0x04,0x00 },
{ 0x00,0x40,0xc0,0x40,0x4c,0x52,0x04,0x08,0x1e,0x00 },
{ 0x00,0xe0,0x20,0x40,0x24,0xcc,0x14,0x3e,0x04,0x00 },
{ 0x00,0x10,0x28,0x00,0x38,0x44,0x44,0x38,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x10,0x10,0x10,0x10,0x10,0x00,0x10,0x00,0x00 },
{ 0x00,0x28,0x28,0x28,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x28,0x00,0x3c,0x20,0x30,0x20,0x3c,0x00,0x00 },
{ 0x00,0x10,0x28,0x34,0x4c,0x44,0x4c,0x34,0x00,0x00 },
{ 0x00,0x60,0x64,0x08,0x10,0x20,0x4c,0x0c,0x00,0x00 },
{ 0x00,0x20,0x50,0x50,0x20,0x54,0x48,0x34,0x00,0x00 },
{ 0x00,0x10,0x10,0x20,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x08,0x10,0x20,0x20,0x20,0x10,0x08,0x00,0x00 },
{ 0x00,0x20,0x10,0x08,0x08,0x08,0x10,0x20,0x00,0x00 },
{ 0x00,0x10,0x54,0x38,0x10,0x38,0x54,0x10,0x00,0x00 },
{ 0x00,0x00,0x10,0x10,0x7c,0x10,0x10,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x40,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00 },
{ 0x01,0x02,0x02,0x04,0x08,0x10,0x20,0x20,0x40,0x80 },
{ 0x00,0x10,0x28,0x44,0x44,0x44,0x28,0x10,0x00,0x00 },
{ 0x00,0x10,0x30,0x10,0x10,0x10,0x10,0x10,0x00,0x00 },
{ 0x00,0x38,0x44,0x04,0x18,0x20,0x40,0x7c,0x00,0x00 },
{ 0x00,0x7c,0x04,0x08,0x18,0x04,0x44,0x38,0x00,0x00 },
{ 0x00,0x08,0x18,0x28,0x48,0x7c,0x08,0x08,0x00,0x00 },
{ 0x00,0x7c,0x40,0x78,0x04,0x04,0x44,0x38,0x00,0x00 },
{ 0x00,0x18,0x20,0x40,0x78,0x44,0x44,0x38,0x00,0x00 },
{ 0x00,0x7c,0x04,0x08,0x10,0x20,0x20,0x20,0x00,0x00 },
{ 0x00,0x38,0x44,0x44,0x38,0x44,0x44,0x38,0x00,0x00 },
{ 0x00,0x38,0x44,0x44,0x3c,0x04,0x04,0x38,0x00,0x00 },
{ 0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00 },
{ 0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x20,0x40,0x00 },
{ 0x00,0x04,0x08,0x10,0x20,0x10,0x08,0x04,0x00,0x00 },
{ 0x00,0x00,0x00,0x7c,0x00,0x7c,0x00,0x00,0x00,0x00 },
{ 0x00,0x40,0x20,0x10,0x08,0x10,0x20,0x40,0x00,0x00 },
{ 0x00,0x38,0x44,0x04,0x08,0x10,0x00,0x10,0x00,0x00 },
{ 0x00,0x38,0x44,0x5c,0x54,0x5c,0x40,0x38,0x00,0x00 },
{ 0x00,0x38,0x44,0x44,0x44,0x7c,0x44,0x44,0x00,0x00 },
{ 0x00,0x78,0x44,0x44,0x78,0x44,0x44,0x78,0x00,0x00 },
{ 0x00,0x38,0x44,0x40,0x40,0x40,0x44,0x38,0x00,0x00 },
{ 0x00,0x78,0x44,0x44,0x44,0x44,0x44,0x78,0x00,0x00 },
{ 0x00,0x7c,0x40,0x40,0x70,0x40,0x40,0x7c,0x00,0x00 },
{ 0x00,0x7c,0x40,0x40,0x70,0x40,0x40,0x40,0x00,0x00 },
{ 0x00,0x38,0x44,0x40,0x40,0x4c,0x44,0x3c,0x00,0x00 },
{ 0x00,0x44,0x44,0x44,0x7c,0x44,0x44,0x44,0x00,0x00 },
{ 0x00,0x38,0x10,0x10,0x10,0x10,0x10,0x38,0x00,0x00 },
{ 0x00,0x1c,0x08,0x08,0x08,0x08,0x48,0x30,0x00,0x00 },
{ 0x00,0x44,0x48,0x50,0x60,0x50,0x48,0x44,0x00,0x00 },
{ 0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x7c,0x00,0x00 },
{ 0x00,0x44,0x6c,0x54,0x44,0x44,0x44,0x44,0x00,0x00 },
{ 0x00,0x44,0x44,0x64,0x54,0x4c,0x44,0x44,0x00,0x00 },
{ 0x00,0x38,0x44,0x44,0x44,0x44,0x44,0x38,0x00,0x00 },
{ 0x00,0x78,0x44,0x44,0x78,0x40,0x40,0x40,0x00,0x00 },
{ 0x00,0x38,0x44,0x44,0x44,0x54,0x48,0x34,0x00,0x00 },
{ 0x00,0x78,0x44,0x44,0x78,0x50,0x48,0x44,0x00,0x00 },
{ 0x00,0x38,0x44,0x40,0x38,0x04,0x44,0x38,0x00,0x00 },
{ 0x00,0x7c,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00 },
{ 0x00,0x44,0x44,0x44,0x44,0x44,0x44,0x38,0x00,0x00 },
{ 0x00,0x44,0x44,0x44,0x28,0x28,0x10,0x10,0x00,0x00 },
{ 0x00,0x44,0x44,0x44,0x54,0x54,0x54,0x28,0x00,0x00 },
{ 0x00,0x44,0x44,0x28,0x10,0x28,0x44,0x44,0x00,0x00 },
{ 0x00,0x44,0x44,0x28,0x10,0x10,0x10,0x10,0x00,0x00 },
{ 0x00,0x7c,0x04,0x08,0x10,0x20,0x40,0x7c,0x00,0x00 },
{ 0x00,0x1c,0x10,0x10,0x10,0x10,0x10,0x1c,0x00,0x00 },
{ 0x80,0x40,0x40,0x20,0x10,0x08,0x04,0x04,0x02,0x01 },
{ 0x00,0x38,0x08,0x08,0x08,0x08,0x08,0x38,0x00,0x00 },
{ 0x00,0x10,0x28,0x00,0x30,0x10,0x10,0x38,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff },
{ 0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x34,0x4c,0x44,0x4c,0x34,0x00,0x00 },
{ 0x00,0x40,0x40,0x78,0x44,0x44,0x44,0x78,0x00,0x00 },
{ 0x00,0x00,0x00,0x38,0x40,0x40,0x40,0x38,0x00,0x00 },
{ 0x00,0x04,0x04,0x3c,0x44,0x44,0x44,0x3c,0x00,0x00 },
{ 0x00,0x00,0x00,0x38,0x44,0x7c,0x40,0x38,0x00,0x00 },
{ 0x00,0x18,0x24,0x20,0x70,0x20,0x20,0x20,0x00,0x00 },
{ 0x00,0x00,0x00,0x3c,0x44,0x44,0x3c,0x04,0x24,0x18 },
{ 0x00,0x40,0x40,0x58,0x64,0x44,0x44,0x44,0x00,0x00 },
{ 0x00,0x10,0x00,0x30,0x10,0x10,0x10,0x38,0x00,0x00 },
{ 0x00,0x08,0x00,0x18,0x08,0x08,0x08,0x08,0x48,0x30 },
{ 0x00,0x20,0x20,0x24,0x28,0x30,0x28,0x24,0x00,0x00 },
{ 0x00,0x30,0x10,0x10,0x10,0x10,0x10,0x38,0x00,0x00 },
{ 0x00,0x00,0x00,0x68,0x54,0x54,0x54,0x54,0x00,0x00 },
{ 0x00,0x00,0x00,0x58,0x64,0x44,0x44,0x44,0x00,0x00 },
{ 0x00,0x00,0x00,0x38,0x44,0x44,0x44,0x38,0x00,0x00 },
{ 0x00,0x00,0x00,0x78,0x44,0x44,0x44,0x78,0x40,0x40 },
{ 0x00,0x00,0x00,0x3c,0x44,0x44,0x44,0x3c,0x04,0x04 },
{ 0x00,0x00,0x00,0x58,0x64,0x40,0x40,0x40,0x00,0x00 },
{ 0x00,0x00,0x00,0x38,0x40,0x38,0x04,0x78,0x00,0x00 },
{ 0x00,0x20,0x20,0x38,0x20,0x20,0x20,0x18,0x00,0x00 },
{ 0x00,0x00,0x00,0x44,0x44,0x44,0x4c,0x34,0x00,0x00 },
{ 0x00,0x00,0x00,0x44,0x44,0x28,0x28,0x10,0x00,0x00 },
{ 0x00,0x00,0x00,0x44,0x44,0x54,0x54,0x28,0x00,0x00 },
{ 0x00,0x00,0x00,0x44,0x28,0x10,0x28,0x44,0x00,0x00 },
{ 0x00,0x00,0x00,0x44,0x44,0x4c,0x34,0x04,0x44,0x38 },
{ 0x00,0x00,0x00,0x7c,0x08,0x10,0x20,0x7c,0x00,0x00 },
{ 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80 },
{ 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10 },
{ 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01 },
{ 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff }
},
{
// Separated semi-graphic character set (64 characters)
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x70,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x07,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x77,0x77,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x70,0x70,0x70,0x00,0x00,0x00,0x00 },
{ 0x70,0x70,0x00,0x70,0x70,0x70,0x00,0x00,0x00,0x00 },
{ 0x07,0x07,0x00,0x70,0x70,0x70,0x00,0x00,0x00,0x00 },
{ 0x77,0x77,0x00,0x70,0x70,0x70,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x07,0x07,0x07,0x00,0x00,0x00,0x00 },
{ 0x70,0x70,0x00,0x07,0x07,0x07,0x00,0x00,0x00,0x00 },
{ 0x07,0x07,0x00,0x07,0x07,0x07,0x00,0x00,0x00,0x00 },
{ 0x77,0x77,0x00,0x07,0x07,0x07,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x77,0x77,0x77,0x00,0x00,0x00,0x00 },
{ 0x70,0x70,0x00,0x77,0x77,0x77,0x00,0x00,0x00,0x00 },
{ 0x07,0x07,0x00,0x77,0x77,0x77,0x00,0x00,0x00,0x00 },
{ 0x77,0x77,0x00,0x77,0x77,0x77,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x70,0x00 },
{ 0x70,0x70,0x00,0x00,0x00,0x00,0x00,0x70,0x70,0x00 },
{ 0x07,0x07,0x00,0x00,0x00,0x00,0x00,0x70,0x70,0x00 },
{ 0x77,0x77,0x00,0x00,0x00,0x00,0x00,0x70,0x70,0x00 },
{ 0x00,0x00,0x00,0x70,0x70,0x70,0x00,0x70,0x70,0x00 },
{ 0x70,0x70,0x00,0x70,0x70,0x70,0x00,0x70,0x70,0x00 },
{ 0x07,0x07,0x00,0x70,0x70,0x70,0x00,0x70,0x70,0x00 },
{ 0x77,0x77,0x00,0x70,0x70,0x70,0x00,0x70,0x70,0x00 },
{ 0x00,0x00,0x00,0x07,0x07,0x07,0x00,0x70,0x70,0x00 },
{ 0x70,0x70,0x00,0x07,0x07,0x07,0x00,0x70,0x70,0x00 },
{ 0x07,0x07,0x00,0x07,0x07,0x07,0x00,0x70,0x70,0x00 },
{ 0x77,0x77,0x00,0x07,0x07,0x07,0x00,0x70,0x70,0x00 },
{ 0x00,0x00,0x00,0x77,0x77,0x77,0x00,0x70,0x70,0x00 },
{ 0x70,0x70,0x00,0x77,0x77,0x77,0x00,0x70,0x70,0x00 },
{ 0x07,0x07,0x00,0x77,0x77,0x77,0x00,0x70,0x70,0x00 },
{ 0x77,0x77,0x00,0x77,0x77,0x77,0x00,0x70,0x70,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x07,0x00 },
{ 0x70,0x70,0x00,0x00,0x00,0x00,0x00,0x07,0x07,0x00 },
{ 0x07,0x07,0x00,0x00,0x00,0x00,0x00,0x07,0x07,0x00 },
{ 0x77,0x77,0x00,0x00,0x00,0x00,0x00,0x07,0x07,0x00 },
{ 0x00,0x00,0x00,0x70,0x70,0x70,0x00,0x07,0x07,0x00 },
{ 0x70,0x70,0x00,0x70,0x70,0x70,0x00,0x07,0x07,0x00 },
{ 0x07,0x07,0x00,0x70,0x70,0x70,0x00,0x07,0x07,0x00 },
{ 0x77,0x77,0x00,0x70,0x70,0x70,0x00,0x07,0x07,0x00 },
{ 0x00,0x00,0x00,0x07,0x07,0x07,0x00,0x07,0x07,0x00 },
{ 0x70,0x70,0x00,0x07,0x07,0x07,0x00,0x07,0x07,0x00 },
{ 0x07,0x07,0x00,0x07,0x07,0x07,0x00,0x07,0x07,0x00 },
{ 0x77,0x77,0x00,0x07,0x07,0x07,0x00,0x07,0x07,0x00 },
{ 0x00,0x00,0x00,0x77,0x77,0x77,0x00,0x07,0x07,0x00 },
{ 0x70,0x70,0x00,0x77,0x77,0x77,0x00,0x07,0x07,0x00 },
{ 0x07,0x07,0x00,0x77,0x77,0x77,0x00,0x07,0x07,0x00 },
{ 0x77,0x77,0x00,0x77,0x77,0x77,0x00,0x07,0x07,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x77,0x77,0x00 },
{ 0x70,0x70,0x00,0x00,0x00,0x00,0x00,0x77,0x77,0x00 },
{ 0x07,0x07,0x00,0x00,0x00,0x00,0x00,0x77,0x77,0x00 },
{ 0x77,0x77,0x00,0x00,0x00,0x00,0x00,0x77,0x77,0x00 },
{ 0x00,0x00,0x00,0x70,0x70,0x70,0x00,0x77,0x77,0x00 },
{ 0x70,0x70,0x00,0x70,0x70,0x70,0x00,0x77,0x77,0x00 },
{ 0x07,0x07,0x00,0x70,0x70,0x70,0x00,0x77,0x77,0x00 },
{ 0x77,0x77,0x00,0x70,0x70,0x70,0x00,0x77,0x77,0x00 },
{ 0x00,0x00,0x00,0x07,0x07,0x07,0x00,0x77,0x77,0x00 },
{ 0x70,0x70,0x00,0x07,0x07,0x07,0x00,0x77,0x77,0x00 },
{ 0x07,0x07,0x00,0x07,0x07,0x07,0x00,0x77,0x77,0x00 },
{ 0x77,0x77,0x00,0x07,0x07,0x07,0x00,0x77,0x77,0x00 },
{ 0x00,0x00,0x00,0x77,0x77,0x77,0x00,0x77,0x77,0x00 },
{ 0x70,0x70,0x00,0x77,0x77,0x77,0x00,0x77,0x77,0x00 },
{ 0x07,0x07,0x00,0x77,0x77,0x77,0x00,0x77,0x77,0x00 },
{ 0x77,0x77,0x00,0x77,0x77,0x77,0x00,0x77,0x77,0x00 },
// Mosaic semi-graphic character set (64 characters)
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xf0,0xf0,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x0f,0x0f,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0xf0,0xf0,0xf0,0xf0,0x00,0x00,0x00 },
{ 0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0x00,0x00,0x00 },
{ 0x0f,0x0f,0x0f,0xf0,0xf0,0xf0,0xf0,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xf0,0xf0,0xf0,0xf0,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x0f,0x0f,0x0f,0x0f,0x00,0x00,0x00 },
{ 0xf0,0xf0,0xf0,0x0f,0x0f,0x0f,0x0f,0x00,0x00,0x00 },
{ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0x0f,0x0f,0x0f,0x0f,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00 },
{ 0xf0,0xf0,0xf0,0xff,0xff,0xff,0xff,0x00,0x00,0x00 },
{ 0x0f,0x0f,0x0f,0xff,0xff,0xff,0xff,0x00,0x00,0x00 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xf0,0xf0 },
{ 0xf0,0xf0,0xf0,0x00,0x00,0x00,0x00,0xf0,0xf0,0xf0 },
{ 0x0f,0x0f,0x0f,0x00,0x00,0x00,0x00,0xf0,0xf0,0xf0 },
{ 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xf0,0xf0,0xf0 },
{ 0x00,0x00,0x00,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0 },
{ 0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0 },
{ 0x0f,0x0f,0x0f,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0 },
{ 0xff,0xff,0xff,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0 },
{ 0x00,0x00,0x00,0x0f,0x0f,0x0f,0x0f,0xf0,0xf0,0xf0 },
{ 0xf0,0xf0,0xf0,0x0f,0x0f,0x0f,0x0f,0xf0,0xf0,0xf0 },
{ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0xf0,0xf0,0xf0 },
{ 0xff,0xff,0xff,0x0f,0x0f,0x0f,0x0f,0xf0,0xf0,0xf0 },
{ 0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xf0,0xf0,0xf0 },
{ 0xf0,0xf0,0xf0,0xff,0xff,0xff,0xff,0xf0,0xf0,0xf0 },
{ 0x0f,0x0f,0x0f,0xff,0xff,0xff,0xff,0xf0,0xf0,0xf0 },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0xf0,0xf0 },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x0f,0x0f },
{ 0xf0,0xf0,0xf0,0x00,0x00,0x00,0x00,0x0f,0x0f,0x0f },
{ 0x0f,0x0f,0x0f,0x00,0x00,0x00,0x00,0x0f,0x0f,0x0f },
{ 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x0f,0x0f,0x0f },
{ 0x00,0x00,0x00,0xf0,0xf0,0xf0,0xf0,0x0f,0x0f,0x0f },
{ 0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0x0f,0x0f,0x0f },
{ 0x0f,0x0f,0x0f,0xf0,0xf0,0xf0,0xf0,0x0f,0x0f,0x0f },
{ 0xff,0xff,0xff,0xf0,0xf0,0xf0,0xf0,0x0f,0x0f,0x0f },
{ 0x00,0x00,0x00,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f },
{ 0xf0,0xf0,0xf0,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f },
{ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f },
{ 0xff,0xff,0xff,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f },
{ 0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x0f,0x0f,0x0f },
{ 0xf0,0xf0,0xf0,0xff,0xff,0xff,0xff,0x0f,0x0f,0x0f },
{ 0x0f,0x0f,0x0f,0xff,0xff,0xff,0xff,0x0f,0x0f,0x0f },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x0f,0x0f },
{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff },
{ 0xf0,0xf0,0xf0,0x00,0x00,0x00,0x00,0xff,0xff,0xff },
{ 0x0f,0x0f,0x0f,0x00,0x00,0x00,0x00,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0xf0,0xf0,0xf0,0xf0,0xff,0xff,0xff },
{ 0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xff,0xff,0xff },
{ 0x0f,0x0f,0x0f,0xf0,0xf0,0xf0,0xf0,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xf0,0xf0,0xf0,0xf0,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0x0f,0x0f,0x0f,0x0f,0xff,0xff,0xff },
{ 0xf0,0xf0,0xf0,0x0f,0x0f,0x0f,0x0f,0xff,0xff,0xff },
{ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0x0f,0x0f,0x0f,0x0f,0xff,0xff,0xff },
{ 0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xf0,0xf0,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0x0f,0x0f,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff },
{ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff }
}
};

View File

@ -12,6 +12,7 @@
#include "emu.h"
#include "includes/odyssey2.h"
#include "video/ef9341_chargen.h"
#define COLLISION_SPRITE_0 0x01
@ -60,7 +61,17 @@ const UINT8 odyssey2_colors[] =
0x50,0xAE,0xFF, /* Blue */
0xa9,0x80,0xff, /* Violet */
0x82,0xfb,0xdb, /* Lt Grey */
0xff,0xff,0xff /* White */
0xff,0xff,0xff, /* White */
/* EF9340/EF9341 colors */
0x00, 0x00, 0x00,
0x00, 0x00, 0xFF,
0x00, 0xFF, 0x00,
0x00, 0xFF, 0xFF,
0xFF, 0x00, 0x00,
0xFF, 0x00, 0xFF,
0xFF, 0xFF, 0x00,
0xFF, 0xFF, 0xFF
};
static const UINT8 o2_shape[0x40][8]={
@ -134,7 +145,7 @@ void odyssey2_state::palette_init()
{
int i;
for ( i = 0; i < 24; i++ )
for ( i = 0; i < 32; i++ )
{
palette_set_color_rgb( machine(), i, odyssey2_colors[i*3], odyssey2_colors[i*3+1], odyssey2_colors[i*3+2] );
}
@ -554,6 +565,10 @@ void odyssey2_state::device_timer(emu_timer &timer, device_timer_id id, int para
case TIMER_LINE:
// handle i824x line timer
i824x_scanline(vpos);
if ( m_g7400 )
{
ef9340_scanline(vpos);
}
break;
case TIMER_HBLANK:
@ -708,17 +723,17 @@ STREAM_UPDATE( odyssey2_sh_update )
Thomson EF9340/EF9341 extra chips in the g7400
*/
UINT16 odyssey2_state::ef9340_get_c_addr()
UINT16 odyssey2_state::ef9340_get_c_addr(UINT8 x, UINT8 y)
{
if ( ( m_ef9340.Y & 0x0C ) == 0x0C )
if ( ( y & 0x0c ) == 0x0c )
{
return 0x318 | ( ( m_ef9340.X & 0x38 ) << 2 ) | ( m_ef9340.X & 0x07 );
return 0x318 | ( ( x & 0x38 ) << 2 ) | ( x & 0x07 );
}
if ( m_ef9340.X & 0x20 )
if ( x & 0x20 )
{
return 0x300 | ( ( m_ef9340.Y & 0x07 ) << 5 ) | ( m_ef9340.Y & 0x18 ) | ( m_ef9340.X & 0x07 );
return 0x380 | ( ( y & 0x07 ) << 5 ) | ( y & 0x18 ) | ( x & 0x07 );
}
return ( m_ef9340.Y << 5 ) | m_ef9340.X;
return y << 5 | x;
}
@ -849,6 +864,7 @@ void odyssey2_state::ef9341_w( UINT8 command, UINT8 b, UINT8 data )
}
}
UINT8 odyssey2_state::ef9341_r( UINT8 command, UINT8 b )
{
UINT8 data = 0xFF;
@ -880,7 +896,7 @@ UINT8 odyssey2_state::ef9341_r( UINT8 command, UINT8 b )
}
void odyssey2_state::er9340_scanline(int vpos)
void odyssey2_state::ef9340_scanline(int vpos)
{
if ( vpos < m_start_vpos )
{
@ -889,6 +905,55 @@ void odyssey2_state::er9340_scanline(int vpos)
if ( vpos < m_start_vblank )
{
int y = vpos - m_start_vpos;
int y_row, slice;
if ( y < 10 )
{
// Displaying service row
y_row = 31;
slice = y;
}
else
{
// Displaying regular row
y_row = (y - 10) / 10;
slice = (y - 10) % 10;
}
for ( int x = 0; x < 40; x++ )
{
UINT16 addr = ef9340_get_c_addr( x, y_row );
UINT8 a = m_ef934x_ram_a[addr];
UINT8 b = m_ef934x_ram_b[addr];
UINT8 fg = 24;
UINT8 bg = 24;
UINT8 char_data = 0x00;
if ( a & 0x80 )
{
// Graphics
}
else
{
// Alphannumeric
if ( b & 0x80 )
{
// Special (DEL or Extension)
}
else
{
// Normal
char_data = ef9341_char_set[0][b & 0x7f][slice];
fg = 24 + ( a & 0x07 );
}
}
for ( int i = 0; i < 8; i++ )
{
m_tmp_bitmap.pix16(vpos, I824X_START_ACTIVE_SCAN*2 + x*8 + i ) = (char_data & 0x80) ? fg : bg;
char_data <<= 1;
}
}
}
}