mirror of
https://github.com/holub/mame
synced 2025-05-22 21:58:57 +03:00
update to prev system1 commit
This commit is contained in:
parent
765785f927
commit
0ddf029c71
@ -79,8 +79,9 @@
|
|||||||
**************************************************************************
|
**************************************************************************
|
||||||
|
|
||||||
TODO:
|
TODO:
|
||||||
- sprite vs background alignment is off sometimes, best visible when
|
- Sprite vs background alignment is off sometimes, best visible when
|
||||||
scrolling, eg. in regulus, nob, brain
|
scrolling, eg. in regulus, brain. Yet it is correct in other games,
|
||||||
|
such as wboy.
|
||||||
- not sure if sprite priorities are completely accurate
|
- not sure if sprite priorities are completely accurate
|
||||||
|
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
@ -169,7 +170,7 @@ VIDEO_START( system2 )
|
|||||||
WRITE8_HANDLER( system1_videomode_w )
|
WRITE8_HANDLER( system1_videomode_w )
|
||||||
{
|
{
|
||||||
system1_state *state = space->machine().driver_data<system1_state>();
|
system1_state *state = space->machine().driver_data<system1_state>();
|
||||||
if (data & 0x6e) logerror("videomode = %02x\n",data);
|
if (data & 0x6e) logerror("videomode = %02x\n",data);
|
||||||
|
|
||||||
/* bit 4 is screen blank */
|
/* bit 4 is screen blank */
|
||||||
state->m_video_mode = data;
|
state->m_video_mode = data;
|
||||||
@ -453,7 +454,7 @@ static void draw_sprites(running_machine &machine, bitmap_t *bitmap, const recta
|
|||||||
{
|
{
|
||||||
for (i = 0; i < 2; i++)
|
for (i = 0; i < 2; i++)
|
||||||
{
|
{
|
||||||
int effx = flipscreen ? 255 - (x + i) : (x + i);
|
int effx = flipscreen ? 0x1fe - (x + i) : (x + i);
|
||||||
if (effx >= cliprect->min_x && effx <= cliprect->max_x)
|
if (effx >= cliprect->min_x && effx <= cliprect->max_x)
|
||||||
{
|
{
|
||||||
int prevpix = destbase[effx];
|
int prevpix = destbase[effx];
|
||||||
@ -474,7 +475,7 @@ static void draw_sprites(running_machine &machine, bitmap_t *bitmap, const recta
|
|||||||
{
|
{
|
||||||
for (i = 0; i < 2; i++)
|
for (i = 0; i < 2; i++)
|
||||||
{
|
{
|
||||||
int effx = flipscreen ? 255 - (x + 2 + i) : (x + 2 + i);
|
int effx = flipscreen ? 0x1fe - (x + 2 + i) : (x + 2 + i);
|
||||||
if (effx >= cliprect->min_x && effx <= cliprect->max_x)
|
if (effx >= cliprect->min_x && effx <= cliprect->max_x)
|
||||||
{
|
{
|
||||||
int prevpix = destbase[effx];
|
int prevpix = destbase[effx];
|
||||||
@ -582,14 +583,14 @@ SCREEN_UPDATE( system1 )
|
|||||||
fgpixmap = tilemap_get_pixmap(state->m_tilemap_page[1]);
|
fgpixmap = tilemap_get_pixmap(state->m_tilemap_page[1]);
|
||||||
|
|
||||||
/* get fixed scroll offsets */
|
/* get fixed scroll offsets */
|
||||||
xscroll = (videoram[0xffc] | (videoram[0xffd] << 8)) + 28;
|
xscroll = (INT16)((videoram[0xffc] | (videoram[0xffd] << 8)) + 28);
|
||||||
yscroll = videoram[0xfbd];
|
yscroll = videoram[0xfbd];
|
||||||
|
|
||||||
/* adjust for flipping */
|
/* adjust for flipping */
|
||||||
if (flip_screen_get(screen->machine()))
|
if (flip_screen_get(screen->machine()))
|
||||||
{
|
{
|
||||||
xscroll = 279 - xscroll;
|
xscroll = 640 - (xscroll & 0x1ff);
|
||||||
yscroll = 256 - yscroll;
|
yscroll = 764 - (yscroll & 0x1ff);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* fill in the row scroll table */
|
/* fill in the row scroll table */
|
||||||
@ -630,9 +631,9 @@ SCREEN_UPDATE( system2 )
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
xscroll = 262+256 - ((((videoram[0x7f6] | (videoram[0x7f7] << 8)) / 2) & 0xff) - 256 + 5);
|
xscroll = 512 + 512 + 10 - (((videoram[0x7f6] | (videoram[0x7f7] << 8)) & 0x1ff) - 512 + 10);
|
||||||
yscroll = 256+256 - videoram[0x784];
|
yscroll = 512 + 512 - videoram[0x784];
|
||||||
sprxoffset = -7;
|
sprxoffset = -14;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* fill in the row scroll table */
|
/* fill in the row scroll table */
|
||||||
@ -652,6 +653,7 @@ SCREEN_UPDATE( system2_rowscroll )
|
|||||||
bitmap_t *bgpixmaps[4], *fgpixmap;
|
bitmap_t *bgpixmaps[4], *fgpixmap;
|
||||||
int rowscroll[32];
|
int rowscroll[32];
|
||||||
int yscroll;
|
int yscroll;
|
||||||
|
int sprxoffset;
|
||||||
int y;
|
int y;
|
||||||
|
|
||||||
/* 4 independent background pages */
|
/* 4 independent background pages */
|
||||||
@ -668,16 +670,20 @@ SCREEN_UPDATE( system2_rowscroll )
|
|||||||
{
|
{
|
||||||
for (y = 0; y < 32; y++)
|
for (y = 0; y < 32; y++)
|
||||||
rowscroll[y] = ((videoram[0x7c0 + y * 2] | (videoram[0x7c1 + y * 2] << 8)) & 0x1ff) - 512 + 10;
|
rowscroll[y] = ((videoram[0x7c0 + y * 2] | (videoram[0x7c1 + y * 2] << 8)) & 0x1ff) - 512 + 10;
|
||||||
|
|
||||||
yscroll = videoram[0x7ba];
|
yscroll = videoram[0x7ba];
|
||||||
|
sprxoffset = 14;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for (y = 0; y < 32; y++)
|
for (y = 0; y < 32; y++)
|
||||||
rowscroll[y] = 262+256 - ((((videoram[0x7fe - y * 2] | (videoram[0x7ff - y * 2] << 8)) / 2) & 0xff) - 256 + 5);
|
rowscroll[y] = 512 + 512 + 10 - (((videoram[0x7fe - y * 2] | (videoram[0x7ff - y * 2] << 8)) & 0x1ff) - 512 + 10);
|
||||||
yscroll = 256+256 - videoram[0x784];
|
|
||||||
|
yscroll = 512 + 512 - videoram[0x784];
|
||||||
|
sprxoffset = -14;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* common update */
|
/* common update */
|
||||||
video_update_common(screen, bitmap, cliprect, fgpixmap, bgpixmaps, rowscroll, yscroll, 14);
|
video_update_common(screen, bitmap, cliprect, fgpixmap, bgpixmaps, rowscroll, yscroll, sprxoffset);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user