Viewing Issue Advanced Details
ID Category [?] Severity [?] Reproducibility Date Submitted Last Update
00944 Graphics Minor Have not tried Feb 7, 2008, 10:39 Sep 4, 2010, 22:17
Tester Fujix View Status Public Platform
Assigned To robiza Resolution Fixed OS
Status [?] Resolved Driver
Version 0.37b9 Fixed in Version 0.139u3 Build
Fixed in Git Commit Github Pull Request #
Summary 00944: ghox: There are gfx glitches on the background in the ending scene.
Description There are gfx glitches on the background in the ending scene. Also there's a small bit of garbage on the ranking screen.
Steps To Reproduce
Additional Information
Github Commit
Flags
Regression Version
Affected Sets / Systems ghox
Attached Files
7z file icon ghox save state 0.128u2.7z (76,745 bytes) Nov 10, 2008, 17:03
png file icon 170485-ghox.png (48,441 bytes) Nov 10, 2008, 17:04
png file icon ghox_multisprite1.png (17,496 bytes) Sep 4, 2010, 22:13
Relationships
There are no relationship linked to this issue.
Notes
3
User avatar
No.03022
Tafoid
Administrator
Nov 10, 2008, 17:05
Added save state and screenshot made by ShimaPong and posted here:
http://www.mameworld.info/ubbthreads/showthreaded.php?Cat=&Number=170485
User avatar
No.03963
robiza
Developer
Mar 15, 2009, 08:41
the wrong gfx are sprites
User avatar
No.03964
robiza
Developer
Mar 15, 2009, 10:42
edited on: Sep 4, 2010, 22:17
it's necessary to implement a multi sprite bit in the drawing routine (fix submitted)

[code]
Modified: trunk/src/mame/video/toaplan2.c
===================================================================
--- trunk/src/mame/video/toaplan2.c 2009-03-15 07:07:02 UTC (rev 4819)
+++ trunk/src/mame/video/toaplan2.c 2009-03-15 10:40:26 UTC (rev 4820)
@@ -72,7 +72,7 @@
   ---- xxxx ---- ---- = Priority (0 - Fh)
   ---x ---- ---- ---- = Flip X
   --x- ---- ---- ---- = Flip Y
- -?-- ---- ---- ---- = unknown / unused
+ -x-- ---- ---- ---- = Multi-sprite
   x--- ---- ---- ---- = Show sprite ?
 
   1
@@ -1315,13 +1315,16 @@
 {
  const gfx_element *gfx = machine->gfx[ ((controller*2)+1) ];
 
- int offs;
+ int offs, old_x, old_y;
 
  UINT16 *source = (UINT16 *)(spriteram16_n[controller]);
 
 
  priority_to_display <<= 8;
 
+ old_x = (-(sprite_scrollx[controller]+xoffset[3])) & 0x1ff;
+ old_y = (-(sprite_scrolly[controller]+yoffset[3])) & 0x1ff;
+
  for (offs = 0; offs < (TOAPLAN2_SPRITERAM_SIZE/2); offs += 4)
  {
  int attrib, sprite, color, priority, flipx, flipy, sx, sy;
@@ -1350,9 +1353,18 @@
  sprite_sizey = ((source[offs + 3] & 0x0f) + 1) * 8;
 
  /***** find position to display sprite *****/
- sx_base = ((source[offs + 2] >> 7) - (sprite_scrollx[controller]+xoffset[3])) & 0x1ff;
- sy_base = ((source[offs + 3] >> 7) - (sprite_scrolly[controller]+yoffset[3])) & 0x1ff;
+ if (!(attrib & 0x4000))
+ {
+ sx_base = ((source[offs + 2] >> 7) - (sprite_scrollx[controller]+xoffset[3])) & 0x1ff;
+ sy_base = ((source[offs + 3] >> 7) - (sprite_scrolly[controller]+yoffset[3])) & 0x1ff;
+ } else {
+ sx_base = (old_x + (source[offs + 2] >> 7)) & 0x1ff;
+ sy_base = (old_y + (source[offs + 3] >> 7)) & 0x1ff;
+ }
 
+ old_x = sx_base;
+ old_y = sy_base;
+
  flipx = attrib & TOAPLAN2_SPRITE_FLIPX;
  flipy = attrib & TOAPLAN2_SPRITE_FLIPY;
[/code]