- --
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 [Show Content] [Hide Content]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. |