|Viewing Issue Advanced Details||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)|
|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|
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.
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|
|Affected Sets / Systems||pacman|
| x flip problem.gif (403,073 bytes) Jun 13, 2016, 05:04 by Hurray Banana
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.|
Jun 18, 2016, 14:59
|Thanks for checking with your hardware. :)|