summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Angelo Salese <angelosa@users.noreply.github.com>2011-12-03 17:59:17 +0000
committer Angelo Salese <angelosa@users.noreply.github.com>2011-12-03 17:59:17 +0000
commit8c270bbbf5f657fe4173f4f59807cb30927d630e (patch)
tree2cd8916454da2b01445dcac6f4539a08e47f7542
parenta9e1a73a64b09f2613c231248ab179a9a40406ca (diff)
Converted Super Speed Race Jr video to be vertically oriented [Angelo Salese]
-rw-r--r--src/mame/drivers/ssrj.c12
-rw-r--r--src/mame/includes/ssrj.h2
-rw-r--r--src/mame/video/beezer.c2
-rw-r--r--src/mame/video/ssrj.c42
4 files changed, 36 insertions, 22 deletions
diff --git a/src/mame/drivers/ssrj.c b/src/mame/drivers/ssrj.c
index fdc042eb08e..6cc5531a0dc 100644
--- a/src/mame/drivers/ssrj.c
+++ b/src/mame/drivers/ssrj.c
@@ -6,8 +6,8 @@
TODO:
- colors (missing proms?)
- dips
- - proper video hw emulation
- controls (is there START button ?)
+ - when a car sprite goes outside of the screen it gets stuck for a split frame on top of screen
HW info :
@@ -121,8 +121,8 @@ static const gfx_layout charlayout =
RGN_FRAC(1,3), /* 1024 characters */
3, /* 3 bits per pixel */
{ 0, RGN_FRAC(2,3), RGN_FRAC(1,3) }, /* the bitplanes are separated */
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
{ 0, 1, 2, 3, 4, 5, 6, 7 },
+ { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
8*8 /* every char takes 8 consecutive bytes */
};
@@ -153,16 +153,16 @@ static MACHINE_CONFIG_START( ssrj, ssrj_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
- MCFG_SCREEN_SIZE(32*8, 32*8)
- MCFG_SCREEN_VISIBLE_AREA(2*8, 30*8-1, 3*8, 32*8-1)
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 34*8-1, 1*8, 31*8-1) // unknown res
MCFG_SCREEN_UPDATE(ssrj)
+ MCFG_SCREEN_EOF(ssrj)
MCFG_GFXDECODE(ssrj)
MCFG_PALETTE_LENGTH(128)
MCFG_PALETTE_INIT(ssrj)
MCFG_VIDEO_START(ssrj)
-// MCFG_ASPECT_RATIO(3,4)
MCFG_MACHINE_RESET(ssrj)
@@ -195,4 +195,4 @@ ROM_START( ssrj )
ROM_END
-GAME( 1985, ssrj, 0, ssrj, ssrj, 0, ORIENTATION_FLIP_X, "Taito Corporation", "Super Speed Race Junior (Japan)",GAME_WRONG_COLORS|GAME_IMPERFECT_GRAPHICS )
+GAME( 1985, ssrj, 0, ssrj, ssrj, 0, ROT90, "Taito Corporation", "Super Speed Race Junior (Japan)",GAME_WRONG_COLORS|GAME_IMPERFECT_GRAPHICS )
diff --git a/src/mame/includes/ssrj.h b/src/mame/includes/ssrj.h
index 2a75ae9d6b5..2c64862a848 100644
--- a/src/mame/includes/ssrj.h
+++ b/src/mame/includes/ssrj.h
@@ -13,6 +13,7 @@ public:
UINT8 *m_vram3;
UINT8 *m_vram4;
UINT8 *m_scrollram;
+ UINT8 *m_buffer_spriteram;
};
@@ -24,4 +25,5 @@ WRITE8_HANDLER(ssrj_vram4_w);
VIDEO_START( ssrj );
SCREEN_UPDATE( ssrj );
+SCREEN_EOF( ssrj );
PALETTE_INIT( ssrj );
diff --git a/src/mame/video/beezer.c b/src/mame/video/beezer.c
index 5c81ca5f92f..f709ce2d22c 100644
--- a/src/mame/video/beezer.c
+++ b/src/mame/video/beezer.c
@@ -71,6 +71,6 @@ WRITE8_HANDLER( beezer_map_w )
READ8_HANDLER( beezer_line_r )
{
return space->machine().primary_screen->vpos();
-// Note: was (state->m_scanline & 0xfe) << 1;, with scanline % 128
+// Note: was (state->m_scanline & 0xfe) << 1; with scanline % 128
}
diff --git a/src/mame/video/ssrj.c b/src/mame/video/ssrj.c
index ce6dfc417d3..8640b5990e3 100644
--- a/src/mame/video/ssrj.c
+++ b/src/mame/video/ssrj.c
@@ -20,7 +20,7 @@ static TILE_GET_INFO( get_tile_info1 )
0,
code&0x3ff,
(code>>12)&0x3,
- ((code & 0x8000) ? TILE_FLIPX:0) |( (code & 0x4000) ? TILE_FLIPY:0) );
+ ((code & 0x8000) ? TILE_FLIPY:0) |( (code & 0x4000) ? TILE_FLIPX:0) );
}
/* tilemap 2 */
@@ -42,7 +42,7 @@ static TILE_GET_INFO( get_tile_info2 )
0,
code&0x3ff,
((code>>12)&0x3)+4,
- ((code & 0x8000) ? TILE_FLIPX:0) |( (code & 0x4000) ? TILE_FLIPY:0) );
+ ((code & 0x8000) ? TILE_FLIPY:0) |( (code & 0x4000) ? TILE_FLIPX:0) );
}
/* tilemap 4 */
@@ -64,7 +64,7 @@ static TILE_GET_INFO( get_tile_info4 )
0,
code&0x3ff,
((code>>12)&0x3)+12,
- ((code & 0x8000) ? TILE_FLIPX:0) |( (code & 0x4000) ? TILE_FLIPY:0) );
+ ((code & 0x8000) ? TILE_FLIPY:0) |( (code & 0x4000) ? TILE_FLIPX:0) );
}
@@ -226,11 +226,13 @@ VIDEO_START( ssrj )
{
ssrj_state *state = machine.driver_data<ssrj_state>();
- state->m_tilemap1 = tilemap_create(machine, get_tile_info1, tilemap_scan_rows, 8, 8, 32, 32);
- state->m_tilemap2 = tilemap_create(machine, get_tile_info2, tilemap_scan_rows, 8, 8, 32, 32);
- state->m_tilemap4 = tilemap_create(machine, get_tile_info4, tilemap_scan_rows, 8, 8, 32, 32);
+ state->m_tilemap1 = tilemap_create(machine, get_tile_info1, tilemap_scan_cols, 8, 8, 32, 32);
+ state->m_tilemap2 = tilemap_create(machine, get_tile_info2, tilemap_scan_cols, 8, 8, 32, 32);
+ state->m_tilemap4 = tilemap_create(machine, get_tile_info4, tilemap_scan_cols, 8, 8, 32, 32);
tilemap_set_transparent_pen(state->m_tilemap2, 0);
tilemap_set_transparent_pen(state->m_tilemap4, 0);
+
+ state->m_buffer_spriteram = auto_alloc_array(machine, UINT8, 0x0800);
}
@@ -241,10 +243,13 @@ static void draw_objects(running_machine &machine, bitmap_t *bitmap, const recta
for(i=0;i<6;i++)
{
- x = state->m_scrollram[0x80+20*i];
- y = state->m_scrollram[0x80+20*i+2];
- if (!state->m_scrollram[0x80+20*i+3])
- for(k=0;k<5;k++,y+=8)
+ y = state->m_buffer_spriteram[0x80+20*i];
+ x = state->m_buffer_spriteram[0x80+20*i+2];
+ if (!state->m_buffer_spriteram[0x80+20*i+3])
+ {
+
+ for(k=0;k<5;k++,x+=8)
+ {
for(j=0;j<0x20;j++)
{
int code;
@@ -255,12 +260,14 @@ static void draw_objects(running_machine &machine, bitmap_t *bitmap, const recta
cliprect,machine.gfx[0],
code&1023,
((code>>12)&0x3)+8,
- code&0x8000,
code&0x4000,
- (247-(x+(j<<3)))&0xff,
- y,
+ code&0x8000,
+ x,
+ (247-(y+(j<<3)))&0xff,
0);
}
+ }
+ }
}
}
@@ -277,8 +284,8 @@ SCREEN_UPDATE( ssrj )
{
ssrj_state *state = screen->machine().driver_data<ssrj_state>();
- tilemap_set_scrolly(state->m_tilemap1, 0, 0xff-state->m_scrollram[2] );
- tilemap_set_scrollx(state->m_tilemap1, 0, state->m_scrollram[0] );
+ tilemap_set_scrollx(state->m_tilemap1, 0, 0xff-state->m_scrollram[2] );
+ tilemap_set_scrolly(state->m_tilemap1, 0, state->m_scrollram[0] );
tilemap_draw(bitmap, cliprect, state->m_tilemap1, 0, 0);
draw_objects(screen->machine(), bitmap, cliprect);
tilemap_draw(bitmap, cliprect, state->m_tilemap2, 0, 0);
@@ -287,4 +294,9 @@ SCREEN_UPDATE( ssrj )
return 0;
}
+SCREEN_EOF( ssrj )
+{
+ ssrj_state *state = screen->machine().driver_data<ssrj_state>();
+ memcpy(state->m_buffer_spriteram, state->m_scrollram, 0x800);
+}