summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/video/pastelg.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/video/pastelg.cpp')
-rw-r--r--src/mame/video/pastelg.cpp117
1 files changed, 47 insertions, 70 deletions
diff --git a/src/mame/video/pastelg.cpp b/src/mame/video/pastelg.cpp
index c04df9fc244..29b0b92f146 100644
--- a/src/mame/video/pastelg.cpp
+++ b/src/mame/video/pastelg.cpp
@@ -15,7 +15,7 @@
******************************************************************************/
-void pastelg_state::pastelg_palette(palette_device &palette) const
+void pastelg_state::palette(palette_device &palette) const
{
const uint8_t *color_prom = memregion("proms")->base();
@@ -48,12 +48,12 @@ void pastelg_state::pastelg_palette(palette_device &palette) const
******************************************************************************/
-int pastelg_state::pastelg_blitter_src_addr_r()
+uint16_t pastelg_state::pastelg_blitter_src_addr_r()
{
return m_blitter_src_addr;
}
-WRITE8_MEMBER(pastelg_state::pastelg_blitter_w)
+void pastelg_state::blitter_w(offs_t offset, uint8_t data)
{
switch (offset)
{
@@ -63,52 +63,49 @@ WRITE8_MEMBER(pastelg_state::pastelg_blitter_w)
case 3: m_blitter_desty = data; break;
case 4: m_blitter_sizex = data; break;
case 5: m_blitter_sizey = data;
- /* writing here also starts the blit */
- pastelg_gfxdraw();
+ // writing here also starts the blit
+ gfxdraw();
break;
case 6: m_blitter_direction_x = (data & 0x01) ? 1 : 0;
m_blitter_direction_y = (data & 0x02) ? 1 : 0;
m_flipscreen = (data & 0x04) ? 0 : 1;
m_dispflag = (data & 0x08) ? 0 : 1;
- pastelg_vramflip();
+ vramflip();
break;
}
}
-WRITE8_MEMBER(pastelg_state::threeds_romsel_w)
+void pastelg_state::threeds_romsel_w(uint8_t data)
{
- if (data&0xfc) printf("%02x\n",data);
- m_gfxrom = (data & 0x3);
+ if (data & 0xfc) printf("%02x\n", data);
+ m_gfxbank = (data & 0x3);
}
-WRITE8_MEMBER(pastelg_state::threeds_output_w)
+void pastelg_state::threeds_output_w(uint8_t data)
{
m_palbank = ((data & 0x10) >> 4);
}
-READ8_MEMBER(pastelg_state::threeds_rom_readback_r)
+uint8_t pastelg_state::threeds_rom_readback_r()
{
- uint8_t *GFX = memregion("gfx1")->base();
-
- return GFX[(m_blitter_src_addr | (m_gfxrom << 16)) & 0x3ffff];
+ return m_blitter_rom[(m_blitter_src_addr | (m_gfxbank << 16)) & 0x3ffff];
}
-WRITE8_MEMBER(pastelg_state::pastelg_romsel_w)
+void pastelg_state::pastelg_romsel_w(address_space &space, uint8_t data)
{
- int gfxlen = memregion("gfx1")->bytes();
- m_gfxrom = ((data & 0xc0) >> 6);
+ m_gfxbank = ((data & 0xc0) >> 6);
m_palbank = ((data & 0x10) >> 4);
m_nb1413m3->sndrombank1_w(space, 0, data);
- if ((m_gfxrom << 16) > (gfxlen - 1))
+ if ((m_gfxbank << 16) > m_blitter_rom.mask())
{
#ifdef MAME_DEBUG
popmessage("GFXROM BANK OVER!!");
#endif
- m_gfxrom &= (gfxlen / 0x20000 - 1);
+ m_gfxbank &= (m_blitter_rom.length() / 0x20000 - 1);
}
}
@@ -116,21 +113,19 @@ WRITE8_MEMBER(pastelg_state::pastelg_romsel_w)
******************************************************************************/
-void pastelg_state::pastelg_vramflip()
+void pastelg_state::vramflip()
{
- int x, y;
- uint8_t color1, color2;
int width = m_screen->width();
int height = m_screen->height();
if (m_flipscreen == m_flipscreen_old) return;
- for (y = 0; y < height; y++)
+ for (int y = 0; y < height; y++)
{
- for (x = 0; x < width; x++)
+ for (int x = 0; x < width; x++)
{
- color1 = m_videoram[(y * width) + x];
- color2 = m_videoram[((y ^ 0xff) * width) + (x ^ 0xff)];
+ uint8_t color1 = m_videoram[(y * width) + x];
+ uint8_t color2 = m_videoram[((y ^ 0xff) * width) + (x ^ 0xff)];
m_videoram[(y * width) + x] = color2;
m_videoram[((y ^ 0xff) * width) + (x ^ 0xff)] = color1;
}
@@ -139,45 +134,29 @@ void pastelg_state::pastelg_vramflip()
m_flipscreen_old = m_flipscreen;
}
-void pastelg_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+void pastelg_state::blitter_timer_callback(void *ptr, s32 param)
{
- switch (id)
- {
- case TIMER_BLITTER:
- m_nb1413m3->busyflag_w(1);
- break;
- default:
- throw emu_fatalerror("Unknown id in pastelg_state::device_timer");
- }
+ m_nb1413m3->busyflag_w(1);
}
-void pastelg_state::pastelg_gfxdraw()
+void pastelg_state::gfxdraw()
{
- uint8_t *GFX = memregion("gfx1")->base();
int width = m_screen->width();
- int x, y;
- int dx, dy;
- int startx, starty;
int sizex, sizey;
int incx, incy;
- int ctrx, ctry;
- int readflag;
- int gfxaddr, gfxlen;
- int count;
- uint8_t color;
m_nb1413m3->m_busyctr = 0;
- startx = m_blitter_destx + m_blitter_sizex;
- starty = m_blitter_desty + m_blitter_sizey;
+ int startx = m_blitter_destx + m_blitter_sizex;
+ int starty = m_blitter_desty + m_blitter_sizey;
if (m_blitter_direction_x)
{
- if (m_blitter_sizex&0x80) sizex = 0xff-m_blitter_sizex;
- else sizex=m_blitter_sizex;
+ if (m_blitter_sizex & 0x80) sizex = 0xff - m_blitter_sizex;
+ else sizex = m_blitter_sizex;
incx = 1;
}
else
@@ -188,8 +167,8 @@ void pastelg_state::pastelg_gfxdraw()
if (m_blitter_direction_y)
{
- if (m_blitter_sizey&0x80) sizey = 0xff-m_blitter_sizey;
- else sizey=m_blitter_sizey;
+ if (m_blitter_sizey & 0x80) sizey = 0xff - m_blitter_sizey;
+ else sizey = m_blitter_sizey;
incy = 1;
}
else
@@ -198,23 +177,22 @@ void pastelg_state::pastelg_gfxdraw()
incy = -1;
}
- gfxlen = memregion("gfx1")->bytes();
- gfxaddr = (m_gfxrom << 16) + m_blitter_src_addr;
+ int gfxaddr = (m_gfxbank << 16) + m_blitter_src_addr;
- readflag = 0;
+ int readflag = 0;
- count = 0;
- y = starty;
+ int count = 0;
+ int y = starty;
- for (ctry = sizey; ctry >= 0; ctry--)
+ for (int ctry = sizey; ctry >= 0; ctry--)
{
- x = startx;
+ int x = startx;
- for (ctrx = sizex; ctrx >= 0; ctrx--)
+ for (int ctrx = sizex; ctrx >= 0; ctrx--)
{
- gfxaddr = (m_gfxrom << 16) + ((m_blitter_src_addr + count));
+ gfxaddr = (m_gfxbank << 16) + ((m_blitter_src_addr + count));
- if ((gfxaddr > (gfxlen - 1)))
+ if (gfxaddr > m_blitter_rom.mask())
{
#ifdef MAME_DEBUG
popmessage("GFXROM ADDRESS OVER!!");
@@ -222,10 +200,10 @@ void pastelg_state::pastelg_gfxdraw()
gfxaddr = 0;
}
- color = GFX[gfxaddr];
+ uint8_t color = m_blitter_rom[gfxaddr];
- dx = x & 0xff;
- dy = y & 0xff;
+ int dx = x & 0xff;
+ int dy = y & 0xff;
if (m_flipscreen)
{
@@ -286,13 +264,13 @@ void pastelg_state::video_start()
m_videoram = make_unique_clear<uint8_t[]>(width * height);
- m_blitter_timer = timer_alloc(TIMER_BLITTER);
+ m_blitter_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(pastelg_state::blitter_timer_callback), this));
save_item(NAME(m_blitter_desty));
save_item(NAME(m_blitter_sizex));
save_item(NAME(m_blitter_sizey));
save_item(NAME(m_blitter_src_addr));
- save_item(NAME(m_gfxrom));
+ save_item(NAME(m_gfxbank));
save_item(NAME(m_dispflag));
save_item(NAME(m_flipscreen));
save_item(NAME(m_blitter_direction_x));
@@ -306,16 +284,15 @@ void pastelg_state::video_start()
******************************************************************************/
-uint32_t pastelg_state::screen_update_pastelg(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+uint32_t pastelg_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
if (m_dispflag)
{
- int x, y;
int width = screen.width();
int height = screen.height();
- for (y = 0; y < height; y++)
- for (x = 0; x < width; x++)
+ for (int y = 0; y < height; y++)
+ for (int x = 0; x < width; x++)
bitmap.pix16(y, x) = m_videoram[(y * width) + x];
}
else