summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Angelo Salese <angelosa@users.noreply.github.com>2012-11-20 13:48:49 +0000
committer Angelo Salese <angelosa@users.noreply.github.com>2012-11-20 13:48:49 +0000
commitfeaea9222800e65e71c18fc93fad7faf3c11d30a (patch)
tree21601d641836e74389923ed5da2445ecac8175c6 /src
parentd9361e375933e140544288dcc042fd9b892cb0d3 (diff)
Fixed a bunch of graphic regressions in QX-10
Diffstat (limited to 'src')
-rw-r--r--src/mess/drivers/apc.c4
-rw-r--r--src/mess/drivers/qx10.c31
2 files changed, 23 insertions, 12 deletions
diff --git a/src/mess/drivers/apc.c b/src/mess/drivers/apc.c
index 48951f95c01..bf1d543820b 100644
--- a/src/mess/drivers/apc.c
+++ b/src/mess/drivers/apc.c
@@ -167,7 +167,7 @@ void apc_state::video_start()
UINT32 apc_state::screen_update( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
- bitmap.fill(0, cliprect);
+ bitmap.fill(get_black_pen(machine()), cliprect);
/* graphics */
m_hgdc2->screen_update(screen, bitmap, cliprect);
@@ -248,7 +248,7 @@ static UPD7220_DRAW_TEXT_LINE( hgdc_draw_text )
else
pen = (tile_data >> (xi) & 1) ? color : 0;
- //if(pen)
+ if(pen)
bitmap.pix16(res_y, res_x) = pen;
// if(state->m_video_ff[WIDTH40_REG])
diff --git a/src/mess/drivers/qx10.c b/src/mess/drivers/qx10.c
index ad229cb6d12..386c867af89 100644
--- a/src/mess/drivers/qx10.c
+++ b/src/mess/drivers/qx10.c
@@ -67,8 +67,8 @@ public:
m_fdc(*this, "upd765"),
m_hgdc(*this, "upd7220"),
m_rtc(*this, "rtc"),
- m_vram_bank(0),
- m_video_ram(*this, "video_ram"){ }
+ m_vram_bank(0)
+ { }
required_device<device_t> m_pit_1;
required_device<device_t> m_pit_2;
@@ -82,7 +82,10 @@ public:
required_device<upd7220_device> m_hgdc;
required_device<mc146818_device> m_rtc;
UINT8 m_vram_bank;
- required_shared_ptr<UINT8> m_video_ram;
+ //required_shared_ptr<UINT8> m_video_ram;
+ UINT8 *m_video_ram;
+
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
virtual void machine_start();
virtual void machine_reset();
@@ -156,9 +159,9 @@ static UPD7220_DISPLAY_PIXELS( hgdc_display_pixels )
if(state->m_color_mode)
{
- gfx[0] = state->m_video_ram[(address * 2) + 0x00000];
- gfx[1] = state->m_video_ram[(address * 2) + 0x20000];
- gfx[2] = state->m_video_ram[(address * 2) + 0x40000];
+ gfx[0] = state->m_video_ram[(address) + 0x00000];
+ gfx[1] = state->m_video_ram[(address) + 0x20000];
+ gfx[2] = state->m_video_ram[(address) + 0x40000];
}
else
{
@@ -230,6 +233,15 @@ static UPD7220_DRAW_TEXT_LINE( hgdc_draw_text )
}
}
+UINT32 qx10_state::screen_update( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect )
+{
+ bitmap.fill(get_black_pen(machine()), cliprect);
+
+ m_hgdc->screen_update(screen, bitmap, cliprect);
+
+ return 0;
+}
+
/*
Memory
*/
@@ -963,7 +975,7 @@ GFXDECODE_END
void qx10_state::video_start()
{
// allocate memory
- //m_video_ram = auto_alloc_array_clear(machine(), UINT8, 0x60000);
+ m_video_ram = auto_alloc_array_clear(machine(), UINT8, 0x60000);
// find memory regions
m_char_rom = memregion("chargen")->base();
@@ -1007,8 +1019,7 @@ WRITE8_MEMBER( qx10_state::vram_w )
}
static ADDRESS_MAP_START( upd7220_map, AS_0, 8, qx10_state )
- ADDRESS_MAP_GLOBAL_MASK(0x1ffff)
- AM_RANGE(0x00000, 0x1ffff) AM_RAM AM_SHARE("video_ram")
+ AM_RANGE(0x00000, 0x5ffff) AM_READWRITE(vram_r,vram_w)
ADDRESS_MAP_END
@@ -1022,7 +1033,7 @@ static MACHINE_CONFIG_START( qx10, qx10_state )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(50)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
- MCFG_SCREEN_UPDATE_DEVICE("upd7220", upd7220_device, screen_update)
+ MCFG_SCREEN_UPDATE_DRIVER(qx10_state, screen_update)
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_GFXDECODE(qx10)