Viewing Issue Advanced Details Jump to Notes ] pacman.cpp
ID Category [?] Severity [?] Reproducibility Date Submitted Last Update
06235 Graphics Feature Always Jun 13, 2016, 05:04 Jun 18, 2016, 14:59
Tester Hurray Banana View Status Public Platform MAME (Official Binary)
Assigned To Robbbert Resolution Fixed OS Windows Vista/7/8 (64-bit)
Status [?] Resolved   Driver pacman.cpp
Version 0.174 Fixed in Version 0.175 Build Normal
Summary 06235: pacman: X and Y flip bits are ignored when sprite is rendered at top of screen due to vertical wrapping
Description When a sprite is partially off the bottom of the screen (Y values less than $10) the hardware draws the missing parts at the top of the screen, basically wrapping the sprite. Unfortunately it appears in Mame that the driver is ignoring the x and y flip bits (bits 1 and 0 of the sprite number register - that's the first byte in each sprites info values) so if the sprite is flipped vertically (bit 1 is set in the sprite number regsiter) it is drawn at the bottom of the screen ok but the wrap at the top is rendered as if the bit is clear.

This renders properly on the Pac-Man board.
Steps To Reproduce Setup any sprite regsiter ($4ff2 for example) with sprite #0 and set the y flip (storing $01 would set this)
make sure you set the sprites palette to say pallete 1 ($4ff3 to continue current example)

set the sprites Y value in it's Y position register of $8. (in this example that would be $5063)

You will see at the bottom of the screen the cherry upside down, but the wrap at the top of the screen is shown unflipped.

Additional Information Found this bug while coding a simple game for pacman hardware, it can never occur in the original code as sprites don't wrap top and bottom of screen because of maze layout.

This happens for either x or y fliping

This does not happen on actual hardware.

I've included a screenshot, showing it (uses different sprite rom)

Here is a video I made showing the mame problem and the same code running on a Midway pacman board flipping correctly.



The correct behaviour can be observed @2:14 onwards

Can provide source code and binaries or my code to try
Flags Verified with Original
Regression Version
Affected Sets / Systems pacman
Attached Files
gif file icon x flip problem.gif (403,073 bytes)  Jun 13, 2016, 05:04 by Hurray Banana
Hurray Banana


-  Notes
User avatar
No.12764
AJR
(Developer)
Jun 13, 2016, 23:10
The MAME driver doesn't ignore the flip bits on wrapped-around sprites, but exchanges them for the first two sprites only. The relevant line of code in video/pacman.cpp has a "FIXME" comment attached.
User avatar
No.12780
Robbbert
(Developer)
Jun 18, 2016, 14:59
Thanks for checking with your hardware. :)