From b753df9e455acd317cac9cef038ea13512ac6fb1 Mon Sep 17 00:00:00 2001 From: Roberto Zandona Date: Fri, 10 Sep 2010 19:45:27 +0000 Subject: [PATCH] ssv: - implemented y tilemap offset register; (Roberto Zandona') - implemented x and y visible area register; (Roberto Zandona') - disabled tilemap draw when mode=0; (Roberto Zandona') - confirmed visible area register with a twin eagle II PCB (Corrado Tomaselli) --- src/mame/drivers/ssv.c | 107 ++++++++++++---------- src/mame/includes/ssv.h | 1 - src/mame/video/ssv.c | 198 ++++++++++++++++++++++------------------ 3 files changed, 169 insertions(+), 137 deletions(-) diff --git a/src/mame/drivers/ssv.c b/src/mame/drivers/ssv.c index f295cad06d3..33e7ca309d4 100644 --- a/src/mame/drivers/ssv.c +++ b/src/mame/drivers/ssv.c @@ -2639,7 +2639,7 @@ static const es5506_interface es5506_config = ***************************************************************************/ -static void init_ssv(running_machine *machine, int sprites_offsx, int sprites_offsy, int tilemap_offsx, int tilemap_offsy, int interrupt_ultrax) +static void init_ssv(running_machine *machine, int sprites_offsx, int sprites_offsy, int tilemap_offsx, int interrupt_ultrax) { ssv_state *state = machine->driver_data(); int i; @@ -2654,7 +2654,6 @@ static void init_ssv(running_machine *machine, int sprites_offsx, int sprites_of state->sprites_offsx = sprites_offsx; state->sprites_offsy = sprites_offsy; state->tilemap_offsx = tilemap_offsx; - state->tilemap_offsy = tilemap_offsy; } static void init_hypreac2(running_machine *machine) @@ -2666,31 +2665,46 @@ static void init_hypreac2(running_machine *machine) state->tile_code[i] = (i << 16); } +// [1c0070-71 & 0x03ff] is the global y offset for tilemaps (it's negative if [1c0070-71 & 0x0100] == 0x0100) +// 1c006a-6b is the y start visible area +// tilemap_offsy = (1c0070-71) + (1c006a-6b) +// drifto94: +// 70-71 = 0x300 -> -0x100 +// 6a-6b = 0x13 +// tilemap_offsy = -0x100 + 0x13 = -0xed +// gdfs: +// 70-71 = 0x3ec -> -0x14 +// 6a-6b = 0x12 +// tilemap_offsy = -0x14 + 0x12 = -0x02 +// twineagl: +// 70-71 = 0xffec -> 0x03ec -> -0x14 +// 6a-6b = 12 +// tilemap_offsy = -0x14 + 0x12 = -0x02 -static DRIVER_INIT( drifto94 ) { init_ssv(machine, -8, +0xf0, +0, -0xf0, 0); } -static DRIVER_INIT( eaglshot ) { init_ssv(machine, -8, +0xf0, +0, -0xef, 0); init_hypreac2(machine); } -static DRIVER_INIT( gdfs ) { init_ssv(machine, -8, +0x01, +0, +0x00, 0); } -static DRIVER_INIT( hypreact ) { init_ssv(machine, +0, +0xf0, +0, -0xf7, 0); } -static DRIVER_INIT( hypreac2 ) { init_ssv(machine, +0, +0xf0, +0, -0xf8, 0); init_hypreac2(machine); } -static DRIVER_INIT( janjans1 ) { init_ssv(machine, +0, +0xe8, +0, -0xf0, 0); } -static DRIVER_INIT( keithlcy ) { init_ssv(machine, -8, +0xf1, +0, -0xf0, 0); } -static DRIVER_INIT( meosism ) { init_ssv(machine, +0, +0xe8, +0, -0xef, 0); } -static DRIVER_INIT( mslider ) { init_ssv(machine, -8, +0xf0, +0, -0xf1, 0); } -static DRIVER_INIT( ryorioh ) { init_ssv(machine, +0, +0xe8, +0, -0xf0, 0); } -static DRIVER_INIT( srmp4 ) { init_ssv(machine, -8, +0xf0, +0, -0xf0, 0); +static DRIVER_INIT( drifto94 ) { init_ssv(machine, -8, +0xec, +0, 0); } +static DRIVER_INIT( eaglshot ) { init_ssv(machine, -8, +0xf0, +0, 0); init_hypreac2(machine); } +static DRIVER_INIT( gdfs ) { init_ssv(machine, -8 ,+0x00, +0, 0); } +static DRIVER_INIT( hypreact ) { init_ssv(machine, +0, +0xe8, +0, 0); } +static DRIVER_INIT( hypreac2 ) { init_ssv(machine, +0, +0xe8, +0, 0); init_hypreac2(machine); } +static DRIVER_INIT( janjans1 ) { init_ssv(machine, +0, +0xe8, +0, 0); } +static DRIVER_INIT( keithlcy ) { init_ssv(machine, -8, +0xec, +0, 0); } +static DRIVER_INIT( meosism ) { init_ssv(machine, +0, +0xe4, +0, 0); } +static DRIVER_INIT( mslider ) { init_ssv(machine, -8, +0xf0, +0, 0); } +static DRIVER_INIT( ryorioh ) { init_ssv(machine, +0, +0xe8, +0, 0); } +static DRIVER_INIT( srmp4 ) { init_ssv(machine, -8, +0xec, +0, 0); // ((UINT16 *)memory_region(machine, "user1"))[0x2b38/2] = 0x037a; /* patch to see gal test mode */ } -static DRIVER_INIT( srmp7 ) { init_ssv(machine, +0, -0x0f, +0, -0xf0, 0); } -static DRIVER_INIT( stmblade ) { init_ssv(machine, -8, +0xef, +0, -0xf0, 0); } -static DRIVER_INIT( survarts ) { init_ssv(machine, +0, +0xe8, +0, -0xef, 0); } -static DRIVER_INIT( dynagear ) { init_ssv(machine, -8, +0xec, +0, -0xef, 0); } -static DRIVER_INIT( sxyreact ) { init_ssv(machine, +0, +0xe8, +0, -0xef, 0); init_hypreac2(machine); } // different -static DRIVER_INIT( cairblad ) { init_ssv(machine, +0, +0xe8, +0, -0xef, 0); init_hypreac2(machine); } // different -static DRIVER_INIT( sxyreac2 ) { init_ssv(machine, +0, +0xe8, +0, -0xef, 0); init_hypreac2(machine); } -static DRIVER_INIT( twineag2 ) { init_ssv(machine, -6, +0x01, -2, +0x00, 1); } -static DRIVER_INIT( ultrax ) { init_ssv(machine, -8, +0x01, +0, +0x00, 1); } -static DRIVER_INIT( vasara ) { init_ssv(machine, +0, +0xf0, +0, -0xf8, 0); } -static DRIVER_INIT( jsk ) { init_ssv(machine, -8, +0xf5, +0, -0xf4, 0); } +static DRIVER_INIT( srmp7 ) { init_ssv(machine, +0, -0x0f, +0, 0); } +static DRIVER_INIT( stmblade ) { init_ssv(machine, -8, +0xef, +0, 0); } +static DRIVER_INIT( survarts ) { init_ssv(machine, +0, +0xe4, +0, 0); } +static DRIVER_INIT( dynagear ) { init_ssv(machine, -8, +0xec, +0, 0); } +static DRIVER_INIT( sxyreact ) { init_ssv(machine, +0, +0xe8, +0, 0); init_hypreac2(machine); } +static DRIVER_INIT( cairblad ) { init_ssv(machine, +0, +0xe8, +0, 0); init_hypreac2(machine); } +static DRIVER_INIT( sxyreac2 ) { init_ssv(machine, +0, +0xe8, +0, 0); init_hypreac2(machine); } +static DRIVER_INIT( twineag2 ) { init_ssv(machine, -8, +0x01, +0, 1); } +static DRIVER_INIT( ultrax ) { init_ssv(machine, -8, +0x01, +0, 1); } +static DRIVER_INIT( vasara ) { init_ssv(machine, +0, +0xf0, +0, 0); } +static DRIVER_INIT( jsk ) { init_ssv(machine, -8, +0xf5, +0, 0); } static MACHINE_CONFIG_START( ssv, ssv_state ) @@ -2733,7 +2747,7 @@ static MACHINE_CONFIG_DERIVED( drifto94, ssv ) /* video hardware */ MDRV_SCREEN_MODIFY("screen") - MDRV_SCREEN_VISIBLE_AREA(0, 0x150-1, 1, 0xf0-1-1) + MDRV_SCREEN_VISIBLE_AREA(0, (0xcd-0x25)*2-1, 0, (0x101-0x13)-1) MACHINE_CONFIG_END @@ -2748,7 +2762,7 @@ static MACHINE_CONFIG_DERIVED( gdfs, ssv ) /* video hardware */ MDRV_SCREEN_MODIFY("screen") - MDRV_SCREEN_VISIBLE_AREA(0, 0x152-1, 0, 0xf0-1) + MDRV_SCREEN_VISIBLE_AREA(0, (0xd5-0x2c)*2-1, 0, (0x102-0x12)-1) MDRV_GFXDECODE(gdfs) MDRV_VIDEO_START(gdfs) @@ -2764,7 +2778,7 @@ static MACHINE_CONFIG_DERIVED( hypreact, ssv ) /* video hardware */ MDRV_SCREEN_MODIFY("screen") - MDRV_SCREEN_VISIBLE_AREA(0, 0x152-1, 8, 0xf8-1) + MDRV_SCREEN_VISIBLE_AREA(0, (0xcb-0x22)*2-1, 0, (0xfe - 0x0e)-1) MACHINE_CONFIG_END @@ -2776,7 +2790,7 @@ static MACHINE_CONFIG_DERIVED( hypreac2, ssv ) /* video hardware */ MDRV_SCREEN_MODIFY("screen") - MDRV_SCREEN_VISIBLE_AREA(0, 0x152-1, 8, 0xf8-1) + MDRV_SCREEN_VISIBLE_AREA(0, (0xcb-0x22)*2-1, 0, (0xfe - 0x0e)-1) MACHINE_CONFIG_END @@ -2788,7 +2802,7 @@ static MACHINE_CONFIG_DERIVED( janjans1, ssv ) /* video hardware */ MDRV_SCREEN_MODIFY("screen") - MDRV_SCREEN_VISIBLE_AREA(0, 0x150-1, 0, 0xf0-1-1) + MDRV_SCREEN_VISIBLE_AREA(0, (0xcb-0x23)*2-1, 0, (0xfe - 0x0f)-1) MACHINE_CONFIG_END @@ -2800,7 +2814,7 @@ static MACHINE_CONFIG_DERIVED( keithlcy, ssv ) /* video hardware */ MDRV_SCREEN_MODIFY("screen") - MDRV_SCREEN_VISIBLE_AREA(0, 0x150-1, 1, 0xf0-1-1) + MDRV_SCREEN_VISIBLE_AREA(0, (0xcd-0x25)*2-1, 0, (0x101 - 0x13)-1) MACHINE_CONFIG_END @@ -2814,7 +2828,7 @@ static MACHINE_CONFIG_DERIVED( meosism, ssv ) /* video hardware */ MDRV_SCREEN_MODIFY("screen") - MDRV_SCREEN_VISIBLE_AREA(0, 0x150-1+2, 2, 0xf0-1-2) + MDRV_SCREEN_VISIBLE_AREA(0, (0xd5-0x2c)*2-1, 0, (0xfe - 0x12)-1) MACHINE_CONFIG_END @@ -2826,7 +2840,7 @@ static MACHINE_CONFIG_DERIVED( mslider, ssv ) /* video hardware */ MDRV_SCREEN_MODIFY("screen") - MDRV_SCREEN_VISIBLE_AREA(0, 0x160-1, 0, 0xf0-1) + MDRV_SCREEN_VISIBLE_AREA(0, (0xd6-0x26)*2-1, 0, (0xfe - 0x0e)-1) MACHINE_CONFIG_END @@ -2838,7 +2852,7 @@ static MACHINE_CONFIG_DERIVED( ryorioh, ssv ) /* video hardware */ MDRV_SCREEN_MODIFY("screen") - MDRV_SCREEN_VISIBLE_AREA(0, 0x150-1, 0, 0xf0-1-1) + MDRV_SCREEN_VISIBLE_AREA(0, (0xcb-0x23)*2-1, 0, (0xfe - 0x0f)-1) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( vasara, ssv ) @@ -2849,7 +2863,7 @@ static MACHINE_CONFIG_DERIVED( vasara, ssv ) /* video hardware */ MDRV_SCREEN_MODIFY("screen") - MDRV_SCREEN_VISIBLE_AREA(0, 0x150-1, 0, 0xf0-1) + MDRV_SCREEN_VISIBLE_AREA(0, (0xcc-0x24)*2-1, 0,(0xfe - 0x0e)-1) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( srmp4, ssv ) @@ -2860,7 +2874,7 @@ static MACHINE_CONFIG_DERIVED( srmp4, ssv ) /* video hardware */ MDRV_SCREEN_MODIFY("screen") - MDRV_SCREEN_VISIBLE_AREA(0, 0x150-1, 4, 0xf4-1) + MDRV_SCREEN_VISIBLE_AREA(0, (0xd4-0x2c)*2-1, 0, (0x102 - 0x12)-1) MACHINE_CONFIG_END @@ -2872,7 +2886,7 @@ static MACHINE_CONFIG_DERIVED( srmp7, ssv ) /* video hardware */ MDRV_SCREEN_MODIFY("screen") - MDRV_SCREEN_VISIBLE_AREA(0, 0x150-1, 0, 0xf0-1-1) + MDRV_SCREEN_VISIBLE_AREA(0, (0xd4-0x2c)*2-1, 0, (0xfd - 0x0e)-1) MACHINE_CONFIG_END @@ -2885,7 +2899,7 @@ static MACHINE_CONFIG_DERIVED( stmblade, ssv ) MDRV_NVRAM_HANDLER(ssv) /* video hardware */ MDRV_SCREEN_MODIFY("screen") - MDRV_SCREEN_VISIBLE_AREA(0, 0x160-1, 0, 0xf0-1) + MDRV_SCREEN_VISIBLE_AREA(0, (0xd6-0x26)*2-1, 0, (0xfe - 0x0e)-1) MACHINE_CONFIG_END @@ -2897,15 +2911,16 @@ static MACHINE_CONFIG_DERIVED( survarts, ssv ) /* video hardware */ MDRV_SCREEN_MODIFY("screen") - MDRV_SCREEN_VISIBLE_AREA(0, 0x150-1, 4, 0xf4-1) + MDRV_SCREEN_VISIBLE_AREA(0, (0xd4-0x2c)*2-1, 0, (0x102 - 0x12)-1) MACHINE_CONFIG_END + static MACHINE_CONFIG_DERIVED( dynagear, survarts ) /* basic machine hardware */ /* video hardware */ MDRV_SCREEN_MODIFY("screen") - MDRV_SCREEN_VISIBLE_AREA(0, 336-1, 0, 0xf0-1) + MDRV_SCREEN_VISIBLE_AREA(0, (0xd4-0x2c)*2-1, 0, (0x102 - 0x12)-1) MACHINE_CONFIG_END @@ -2919,7 +2934,7 @@ static MACHINE_CONFIG_DERIVED( eaglshot, ssv ) /* video hardware */ MDRV_SCREEN_MODIFY("screen") - MDRV_SCREEN_VISIBLE_AREA(0, 0x140-1, 8, 0xe8-1) + MDRV_SCREEN_VISIBLE_AREA(0, (0xca - 0x2a)*2-1, 0, (0xf6 - 0x16)-1) MDRV_GFXDECODE(eaglshot) MDRV_VIDEO_START(eaglshot) @@ -2937,7 +2952,7 @@ static MACHINE_CONFIG_DERIVED( sxyreact, ssv ) /* video hardware */ MDRV_SCREEN_MODIFY("screen") - MDRV_SCREEN_VISIBLE_AREA(0, 0x150-1+2, 0, 0xf0-1) + MDRV_SCREEN_VISIBLE_AREA(0, (0xcb - 0x22)*2-1, 0, (0xfe - 0x0e)-1) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( sxyreac2, ssv ) @@ -2950,7 +2965,7 @@ static MACHINE_CONFIG_DERIVED( sxyreac2, ssv ) /* video hardware */ MDRV_SCREEN_MODIFY("screen") - MDRV_SCREEN_VISIBLE_AREA(0, 0x150-1, 0, 0xf0-1) + MDRV_SCREEN_VISIBLE_AREA(0, (0xcb - 0x23)*2-1, 0, (0xfe - 0x0e)-1) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( cairblad, ssv ) @@ -2963,7 +2978,7 @@ static MACHINE_CONFIG_DERIVED( cairblad, ssv ) /* video hardware */ MDRV_SCREEN_MODIFY("screen") - MDRV_SCREEN_VISIBLE_AREA(0, 0x150-1+2, 0, 0xf0-1) + MDRV_SCREEN_VISIBLE_AREA(0, (0xcb - 0x22)*2-1, 0, (0xfe - 0x0e)-1) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( twineag2, ssv ) @@ -2974,7 +2989,7 @@ static MACHINE_CONFIG_DERIVED( twineag2, ssv ) /* video hardware */ MDRV_SCREEN_MODIFY("screen") - MDRV_SCREEN_VISIBLE_AREA(0, 0x150-1, 0, 0xf0-1) + MDRV_SCREEN_VISIBLE_AREA(0, (0xd4 - 0x2c)*2-1, 0, (0x102 - 0x12)-1) MACHINE_CONFIG_END @@ -2986,7 +3001,7 @@ static MACHINE_CONFIG_DERIVED( ultrax, ssv ) /* video hardware */ MDRV_SCREEN_MODIFY("screen") - MDRV_SCREEN_VISIBLE_AREA(0, 0x150-1, 0, 0xf0-1) + MDRV_SCREEN_VISIBLE_AREA(0, (0xd4 - 0x2c)*2-1, 0, (0x102 - 0x12)-1) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( jsk, ssv ) @@ -3000,7 +3015,7 @@ static MACHINE_CONFIG_DERIVED( jsk, ssv ) /* video hardware */ MDRV_SCREEN_MODIFY("screen") - MDRV_SCREEN_VISIBLE_AREA(0, 0x150-1, 0, 0xf0-1) + MDRV_SCREEN_VISIBLE_AREA(0, (0xca - 0x22)*2-1, 0, (0xfe - 0x0e)-1) MACHINE_CONFIG_END diff --git a/src/mame/includes/ssv.h b/src/mame/includes/ssv.h index ad0a9c4925f..38a8313d3bf 100644 --- a/src/mame/includes/ssv.h +++ b/src/mame/includes/ssv.h @@ -15,7 +15,6 @@ public: int sprites_offsx; int sprites_offsy; int tilemap_offsx; - int tilemap_offsy; int shadow_pen_mask; int shadow_pen_shift; diff --git a/src/mame/video/ssv.c b/src/mame/video/ssv.c index 543497139cb..7a19a94bc39 100644 --- a/src/mame/video/ssv.c +++ b/src/mame/video/ssv.c @@ -7,9 +7,8 @@ This hardware only generates sprites. But they're of various types, including some large "floating tilemap" ones. - Sprites RAM is 0x40000 bytes long. The first 0x2000 bytes hold a list - of sprites to display (the list can be made shorter using an end-of-list - marker). + Sprites RAM is 0x40000 bytes long. The first 0x2000 bytes hold a list of + sprites to display (the list can be made shorter using an end-of-list marker). Each entry in the list (8 bytes) is a multi-sprite (e.g it tells the hardware to display up to 32 single-sprites). @@ -244,121 +243,133 @@ VIDEO_START( gdfs ) /*************************************************************************** - CRT controller, registers that are read - (vblank etc.?) + CRT controller, registers that are read + (vblank etc.?) - 1c0000 (wait for bit .. to become ..) + 1c0000 (wait for bit .. to become ..) - keithlcy: bit D, 0 -> 1 + keithlcy: bit D, 0 -> 1 - mslider: bit A, 0 + mslider: bit A, 0 - hypreact: - meosism: - srmp7: - sxyreact: - ultrax: bit F, 0 + hypreact: + meosism: + srmp7: + sxyreact: + ultrax: bit F, 0 - twineag2: - hypreac2: bit C, 1 -> 0 - bit F, 0 + twineag2: + hypreac2: bit C, 1 -> 0 + bit F, 0 - janjans1: - srmp4: - survarts: No checks + janjans1: + srmp4: + survarts: no checks - ryorioh: - drifto94: bit D, 0 -> 1 - bit A, 0 + ryorioh: + drifto94: bit D, 0 -> 1 + bit A, 0 - CRT controller, registers that are written - (resolution, visible area, flipping etc. ?) + CRT controller, registers that are written + (resolution, visible area, flipping etc.) + 1c0060-61 ? + 1c0062-63 x start visible area + 1c0064-65 x end visible area + 1c0066-67 ? + 1c0068-69 ? + 1c006a-6b y start visible area + 1c006c-6d y end visible area + 1c006e-6f ? + 1c0070-71 y global tilemap offset + 1c0072-73 ? + 1c0074-75 ? + 1c0076-77 ? + 1c0078-79 ? + 1c007a-7b ? + 1c0060-7f: - 1c0060-7f: + drifto94: 0000 0025 00cd 01c6 - 0001 0013 0101 0106 + 0300 0711 0500 0000 - 0015 5940 + 03ea 5558 (flip) - drifto94: 0000 0025 00cd 01c6 - 0001 0013 0101 0106 - 0300 0711 0500 0000 - 0015 5940 0000 0000 - 03ea 5558 (flip) + dynagear: 002b 002c 00d4 01c6 - 0001 0012 0102 0106 + 02fd 0000 0500 0000 - 0015 5940 + ???? ???? (flip) - dynagear: 002b 002c 00d4 01c6 - 0001 0012 0102 0106 - 02fd 0000 0500 0000 - 0015 5940 0000 0000 - ???? ???? (flip) + eaglshot: 0021 002a 00ca 01c6 - 0001 0016 00f6 0106 + 0301 0000 0500 d000 - 0015 5940 + ???? ???? (flip) - eaglshot: 0021 002a 00ca 01c6 - 0001 0016 00f6 0106 - 0301 0000 0500 d000 - 0015 5940 0000 0000 - ???? ???? (flip) + gdfs: 002b 002c 00d5 01c6 - 0001 0012 0102 0106 + 03ec 0711 0500 0000 - 00d5 5950 + 03ec 1557 (flip) - gdfs: 002b 002c 00d5 01c6 - 0001 0012 0102 0106 - 03ec 0711 0500 0000 - 00d5 5950 0000 0000 - 03ec 1557 (flip) + hypreact: 0021 0022 00cb 01c6 - 0001 000e 00fe 0106 + 0301 0000 0500 c000 - 0015 5140 + 03f0 5558 (flip) - hypreact: 0021 0022 00cb 01c6 - 0001 000e 00fe 0106 - 0301 0000 0500 c000 - 0015 5140 0000 0000 - 03f0 5558 (flip) + hypreac2: 0021 0022 00cb 01c6 - 0001 000e 00fe 0106 + 0301 0000 05ff c000 - 0015 5140 + 03ea 5558 (flip) - hypreac2: 0021 0022 00cb 01c6 - 0001 000e 00fe 0106 - 0301 0000 05ff c000 - 0015 5140 0000 0000 - 03ea 5558 (flip) + janjans1: 0021 0023 00cb 01c6 - 0001 000f 00fe 0106 + 0300 0000 0500 c000 - 0015 5140 + 0300 (flip) - janjans1: 0021 0023 00cb 01c6 - 0001 000f 00fe 0106 - 0300 0000 0500 c000 - 0015 5140 0000 0000 - same! (flip) + keithlcy: 002b 0025 00cd 01c6 - 0001 0013 0101 0106 + 0300 0711 0500 0000 - 0015 5940 + 03ea 5558 (flip) - keithlcy: 002b 0025 00cd 01c6 - 0001 0013 0101 0106 - 0300 0711 0500 0000 - 0015 5940 0000 0000 - 03ea 5558 (flip) + meosism: 002b 002c 00d5 01c6 - 0001 0012 00fe 0106 + 0301 0000 0500 c000 - 0015 5140 + (no flip) - meosism: 002b 002c 00d5 01c6 - 0001 0012 00fe 0106 - 0301 0000 0500 c000 - 0015 5140 0000 0000 - (no flip) + mslider: 0021 0026 00d6 01c6 - 0001 000e 00fe 0106 + 03f1 0711 5550 c080 - 0015 5940 + 0301 0500 (flip) - mslider: 0021 0026 00d6 01c6 - 0001 000e 00fe 0106 - 03f1 0711 5550 c080 - 0015 5940 0000 0000 - 0301 0500 (flip) + ryorioh: 0021 0023*00cb 01c6 - 0001 000f 00fe 0106 + 0300 0000 0500 c000 - 0015 5140 + 03ed 5558 (flip) *0025 - ryorioh: 0021 0023*00cb 01c6 - 0001 000f 00fe 0106 - 0300 0000 0500 c000 - 0015 5140 0000 0000 - 03ed 5558 (flip) *0025 + srmp4: 002b 002c 00d4 01c6 - 0001 0012 0102 0106 + 0301 0711 0500 0000 - 0015 4940 + ffe8 5557 (flip) - srmp4: 002b 002c 00d4 01c6 - 0001 0012 0102 0106 - 0301 0711 0500 0000 - 0015 4940 0000 0000 - ffe8 5557 (flip) + srmp7: 002b 002c 00d4 01c6 - 0001 000e 00fd 0106 + 0000 0000 e500 0000 - 0015 7140 + 02f2 b558 (flip) - srmp7: 002b 002c 00d4 01c6 - 0001 000e 00fd 0106 - 0000 0000 e500 0000 - 0015 7140 0000 0000 - 02f2 b558 (flip) + stmblade: 0021 0026 00d6 01c6 - 0001 000e 00fe 0106 + 03f1 0711 5550 c080 - 0015 5940 <- 711 becomes 0 during gameplay + 0301 0500 (flip) - stmblade: 0021 0026 00d6 01c6 - 0001 000e 00fe 0106 - 03f1 0711 5550 c080 - 0015 5940 0000 0000 <- 711 becomes 0 during gameplay - 0301 0500 (flip) + survarts: 002b 002c 00d4 01c6 - 0001 0012 0102 0106 + 0301 0000 0500 0000 - 0015 5140 + 03e9 5558 (flip) - survarts: 002b 002c 00d4 01c6 - 0001 0012 0102 0106 - 0301 0000 0500 0000 - 0015 5140 0000 0000 - 03e9 5558 (flip) + sxyreact: 0021 0022 00cb 01c6 - 0001 000e 00fe 0106 + 0301 0000 0500 c000 - 0015 5140 + 03ef 5558 (flip) - sxyreact: 0021 0022 00cb 01c6 - 0001 000e 00fe 0106 - 0301 0000 0500 c000 - 0015 5140 0000 0000 - 03ef 5558 (flip) + sxyreac2: 0021 0023 00cb 01c6 - 0001 000e 00fe 0106 + 0301 0000 0500 c000 - 0015 5140 + ???? ???? (flip) - sxyreac2: 0021 0023 00cb 01c6 - 0001 000e 00fe 0106 - 0301 0000 0500 c000 - 0015 5140 0000 0000 - ???? ???? (flip) + twineag2: 002b 002c 00d4 01c6 - 0001 0012 0102 0106 + ffec 0000 e500 4000 - 0315 7940 + ???? ???? (flip) - twineag2: 002b 002c 00d4 01c6 - 0001 0012 0102 0106 - ffec 0000 e500 4000 - 0315 7940 0000 0000 - ???? ???? (flip) - - ultrax: 002b 002c 00d4 01c6 - 0001 0012 0102 0106 - ffec 0000 e500 4000 - 0315 7940 0000 0000 - 02fe b558 (flip) - - vasara & 0021 0024 00cc 01c6 - 0001 000e 00fe 0106 - vasara2: 03f1 0000 6500 c000 - 0015 5140 0000 0000 - 0301 3558 (flip) + ultrax: 002b 002c 00d4 01c6 - 0001 0012 0102 0106 + ffec 0000 e500 4000 - 0315 7940 + 02fe b558 (flip) + vasara & 0021 0024 00cc 01c6 - 0001 000e 00fe 0106 + vasara2: 03f1 0000 6500 c000 - 0015 5140 + 0301 3558 (flip) ***************************************************************************/ @@ -651,13 +662,16 @@ static void draw_row(running_machine *machine, bitmap_t *bitmap, const rectangle page = (x & 0x7fff) / size; /* Given a fixed scroll value, the portion of tilemap displayed changes - with the sprite postion */ + with the sprite position */ x += sx; y += sy; /* Tweak the scroll values (game specific) */ x += state->tilemap_offsx; - y += state->tilemap_offsy; + if (ssv_scroll[0x70/2] & 0x0200) + y += ((ssv_scroll[0x70/2] & 0x1ff) - 0x200 + ssv_scroll[0x6a/2] + 2); + else + y += ((ssv_scroll[0x70/2] & 0x1ff) + ssv_scroll[0x6a/2] + 2); /* Draw the rows */ @@ -808,7 +822,11 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta case 0x7940: sy -= 0x10; break; // ultrax, twineag2 } - draw_row(machine, bitmap, cliprect, sx, sy, scroll); +// sx += xoffs; +// sy += yoffs; + + if ((mode & 0x001f) != 0) + draw_row(machine, bitmap, cliprect, sx, sy, scroll); } else {