- --
      Viewing Issue Advanced Details
    
  | ID | Category [?] | Severity [?] | Reproducibility | Date Submitted | Last Update | 
|---|---|---|---|---|---|
| 03427 | Graphics | Minor | Always | Sep 7, 2009, 23:49 | Nov 18, 2012, 11:20 | 
| Tester | M.A.S.H. | View Status | Public | Platform | MAME (Self-compiled) | 
| Assigned To | Robbbert | Resolution | Fixed | OS | |
| Status [?] | Resolved | Driver | |||
| Version | 0.133u5 | Fixed in Version | 0.147u3 | Build | Normal | 
| Fixed in Git Commit | Github Pull Request # | ||||
| Summary | 03427: porter: Missing GFX banking. | ||||
| Description | Port Man (bootleg on Moon Cresta hardware) needs like Dock Man/Port Man (thepit.c) a graphics_bank_w. The addrees is 0xa002. Create a logfile: 'maincpu' (00003133): unmapped program memory byte write to 0000A002 = 01 . . . 'maincpu' (000030F3): unmapped program memory byte write to 0000A002 = 00 If you start Port Man it wrotes to 0000A002 = 01 and the attract mode shows the wrong start screen with the 'PORT MAN' text. Right after it wrotes to 0000A002 = 00 and the screen with the ship appears. This screen is *correct* . Then it wrotes to 0000A002 = 01 again and the 3rd screen dsiplayed the gfx wrong again (see picture). | ||||
| Steps To Reproduce | |||||
| Additional Information | |||||
| Github Commit | |||||
| Flags | |||||
| Regression Version | |||||
| Affected Sets / Systems | porter | ||||
| Attached Files |  Port Man-Compare.png (8,890 bytes) Sep 7, 2009, 23:49 | ||||
|  porter.diff (6,409 bytes) Mar 11, 2010, 18:09 diff -Nru old/src/mame/drivers/galaxold.c new/src/mame/drivers/galaxold.c
--- old/src/mame/drivers/galaxold.c	2010-02-14 22:40:38.000000000 +0100
+++ new/src/mame/drivers/galaxold.c	2010-03-11 18:51:48.000000000 +0100
@@ -394,6 +394,8 @@
 #define VBSTART				(224+16)
 
 
+WRITE8_HANDLER( porter_graphics_bank_w );
+
 
 /* Send sound data to the sound cpu and cause an nmi */
 static READ8_HANDLER( drivfrcg_port0_r )
@@ -688,6 +690,35 @@
 ADDRESS_MAP_END
 
 
+static ADDRESS_MAP_START( porter_map, ADDRESS_SPACE_PROGRAM, 8 )
+        AM_RANGE(0x0000, 0x5000) AM_ROM
+        AM_RANGE(0x7400, 0x7bff) AM_RAM
+        AM_RANGE(0x8000, 0x87ff) AM_RAM
+        AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(galaxold_videoram_w) AM_BASE(&galaxold_videoram)
+        AM_RANGE(0x9400, 0x97ff) AM_READ(galaxold_videoram_r)
+        AM_RANGE(0x9800, 0x983f) AM_RAM_WRITE(galaxold_attributesram_w) AM_BASE(&galaxold_attributesram)
+        AM_RANGE(0x9840, 0x985f) AM_RAM AM_BASE(&galaxold_spriteram) AM_SIZE(&galaxold_spriteram_size)
+        AM_RANGE(0x9860, 0x987f) AM_RAM AM_BASE(&galaxold_bulletsram) AM_SIZE(&galaxold_bulletsram_size)
+        AM_RANGE(0x9880, 0x98ff) AM_RAM
+        AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0")
+        AM_RANGE(0xa002, 0xa002) AM_WRITE(porter_graphics_bank_w)
+        AM_RANGE(0xa003, 0xa003) AM_WRITE(galaxold_coin_counter_w)
+        AM_RANGE(0xa004, 0xa007) AM_DEVWRITE(GAL_AUDIO, galaxian_lfo_freq_w)
+        AM_RANGE(0xa800, 0xa800) AM_READ_PORT("IN1")
+        AM_RANGE(0xa800, 0xa802) AM_DEVWRITE(GAL_AUDIO, galaxian_background_enable_w)
+        AM_RANGE(0xa803, 0xa803) AM_DEVWRITE(GAL_AUDIO, galaxian_noise_enable_w)
+        AM_RANGE(0xa805, 0xa805) AM_DEVWRITE(GAL_AUDIO, galaxian_shoot_enable_w)
+        AM_RANGE(0xa806, 0xa807) AM_DEVWRITE(GAL_AUDIO, galaxian_vol_w)
+        AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW0") AM_WRITE(galaxold_nmi_enable_w)
+        AM_RANGE(0xb002, 0xb002) AM_WRITENOP // coin_lockout_w
+//      AM_RANGE(0xb004, 0xb004) AM_WRITE(galaxold_stars_enable_w)
+        AM_RANGE(0xb006, 0xb006) AM_WRITE(galaxold_flip_screen_x_w)
+        AM_RANGE(0xb007, 0xb007) AM_WRITE(galaxold_flip_screen_y_w)
+        AM_RANGE(0xb800, 0xb800) AM_READ(watchdog_reset_r)
+        AM_RANGE(0xb800, 0xb800) AM_DEVWRITE(GAL_AUDIO, galaxian_pitch_w)
+ADDRESS_MAP_END
+
+
 static ADDRESS_MAP_START( tazzmang, ADDRESS_SPACE_PROGRAM, 8 )
 	AM_RANGE(0x0000, 0x5fff) AM_ROM
 	AM_RANGE(0x7000, 0x7000) AM_READ_PORT("DSW0") /* mirror */
@@ -2116,6 +2147,13 @@
 	GFXDECODE_ENTRY( "gfx1", 0x4000, _4in1_spritelayout,    0, 8 )
 GFXDECODE_END
 
+static GFXDECODE_START( porter )
+        GFXDECODE_ENTRY( "gfx1", 0x0000, galaxold_charlayout,   0, 8 )
+        GFXDECODE_ENTRY( "gfx1", 0x0000, galaxold_spritelayout, 0, 8 )
+        GFXDECODE_ENTRY( "gfx1", 0x0800, galaxold_charlayout,   0, 8 )
+        GFXDECODE_ENTRY( "gfx1", 0x0800, galaxold_spritelayout, 0, 8 )
+GFXDECODE_END
+
 static const ay8910_interface bongo_ay8910_interface =
 {
 	AY8910_LEGACY_OUTPUT,
@@ -2260,6 +2298,17 @@
 	MDRV_VIDEO_START(dkongjrm)
 MACHINE_DRIVER_END
 
+static MACHINE_DRIVER_START( porter )
+
+	/* basic machine hardware */
+	MDRV_IMPORT_FROM(galaxian)
+	MDRV_CPU_MODIFY("maincpu")
+	MDRV_CPU_PROGRAM_MAP(porter_map)
+
+	/* video hardware */
+	MDRV_GFXDECODE(porter)
+MACHINE_DRIVER_END
+
 static MACHINE_DRIVER_START( rockclim )
 	/* basic machine hardware */
 	MDRV_IMPORT_FROM(galaxian)
@@ -3107,7 +3156,7 @@
 GAME( 1981, 4in1,     0,        4in1,     4in1,     4in1,     ROT90,  "Armenia / Food and Fun", "4 Fun in 1", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
 GAME( 1982, bagmanmc, bagman,   bagmanmc, bagmanmc, 0,        ROT90,  "bootleg", "Bagman (bootleg on Moon Cresta hardware)", GAME_WRONG_COLORS | GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
 GAME( 1982, dkongjrm, dkongjr,  dkongjrm, dkongjrm, 0,        ROT90,  "bootleg", "Donkey Kong Jr. (bootleg on Moon Cresta hardware)", GAME_WRONG_COLORS | GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1982, porter,   dockman,  mooncrst, porter,   0,        ROT90,  "bootleg", "Port Man (bootleg on Moon Cresta hardware)", GAME_IMPERFECT_GRAPHICS | GAME_NO_COCKTAIL ) // missing GFX bank switch!
+GAME( 1982, porter,   dockman,  porter,   porter,   0,        ROT90,  "bootleg", "Port Man (bootleg on Moon Cresta hardware)", GAME_IMPERFECT_GRAPHICS | GAME_NO_COCKTAIL ) // missing GFX bank switch!
 GAME( 1982, tazzmang, tazmania,	tazzmang, tazzmang, 0,        ROT90,  "bootleg", "Tazz-Mania (bootleg on Galaxian hardware)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
 GAME( 1983, bongo,    0,        bongo,    bongo,    0,	      ROT90,  "Jetsoft", "Bongo", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
 GAME( 1983, ozon1,    0,        ozon1,    ozon1,    0,	      ROT90,  "Proma", "Ozon I", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
diff -Nru old/src/mame/video/galaxold.c new/src/mame/video/galaxold.c
--- old/src/mame/video/galaxold.c	2010-01-28 13:14:18.000000000 +0100
+++ new/src/mame/video/galaxold.c	2010-03-11 18:03:58.000000000 +0100
@@ -45,6 +45,7 @@
 static int mooncrst_gfxextend;
 static int spriteram2_present;
 static UINT8 gfxbank[5];
+static UINT8 graphics_bank;
 static UINT8 flipscreen_x;
 static UINT8 flipscreen_y;
 static UINT8 color_mask;
@@ -557,6 +558,16 @@
 	tilemap_set_scroll = tilemap_set_scrolly;
 }
 
+WRITE8_HANDLER( porter_graphics_bank_w )
+{
+	if (graphics_bank != (data & 0x01))
+	{
+		graphics_bank = data & 0x01;
+
+		tilemap_mark_all_tiles_dirty(bg_tilemap);
+	}
+}
+
 VIDEO_START( galaxold )
 {
 	VIDEO_START_CALL(galaxold_plain);
@@ -564,6 +575,8 @@
 	draw_stars = galaxold_draw_stars;
 
 	draw_bullets = galaxold_draw_bullets;
+
+	graphics_bank = 0;	/* only used in porter */
 }
 
 VIDEO_START( scrambold )
@@ -1776,7 +1789,7 @@
 		modify_color(&color);
 	}
 
-	SET_TILE_INFO(0, code, color, 0);
+	SET_TILE_INFO(2 * graphics_bank, code, color, 0);
 }
 
 static TILE_GET_INFO( rockclim_get_tile_info )
@@ -1861,7 +1874,7 @@
 		if (offs < 3*4)  sy++;
 
 
-		drawgfx_transpen(bitmap,flipscreen_x ? spritevisibleareaflipx : spritevisiblearea,machine->gfx[1],
+		drawgfx_transpen(bitmap,flipscreen_x ? spritevisibleareaflipx : spritevisiblearea,machine->gfx[2 * graphics_bank + 1],
 				code,color,
 				flipx,flipy,
 				sx,sy,0);
 | |||||
      Relationships
		
    
  | There are no relationship linked to this issue. | 
      Notes
      
    
  4
    |   No.04922 Haze Senior Tester Sep 8, 2009, 19:55 | Direction needed? The graphic banking should be added. | 
|---|---|
|   No.04925 Tafoid Administrator Sep 8, 2009, 22:33 | I set it to that for someone who has the know how with this specific driver to confirm and decide to do it.  Can't step on toes.. Setting to confirmed. | 
|   No.05856 M.A.S.H. Senior Tester Mar 11, 2010, 18:09 | I fixed the missing GFX banking in porter. The game uses the same graphics_bank_w as Dock Man. I also disable the star field, because there is no star field in Dock Man. Use attached DIFF file for testing! | 
|   No.09096 M.A.S.H. Senior Tester Nov 18, 2012, 11:18 | Fixed by Robbbert in r19014. |