diff options
| author | 2011-12-03 17:59:17 +0000 | |
|---|---|---|
| committer | 2011-12-03 17:59:17 +0000 | |
| commit | 8c270bbbf5f657fe4173f4f59807cb30927d630e (patch) | |
| tree | 2cd8916454da2b01445dcac6f4539a08e47f7542 | |
| parent | a9e1a73a64b09f2613c231248ab179a9a40406ca (diff) | |
Converted Super Speed Race Jr video to be vertically oriented [Angelo Salese]
| -rw-r--r-- | src/mame/drivers/ssrj.c | 12 | ||||
| -rw-r--r-- | src/mame/includes/ssrj.h | 2 | ||||
| -rw-r--r-- | src/mame/video/beezer.c | 2 | ||||
| -rw-r--r-- | src/mame/video/ssrj.c | 42 |
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); +} |
