- --
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
|
|||||
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. |