Viewing Issue Advanced Details
ID Category [?] Severity [?] Reproducibility Date Submitted Last Update
08530 Graphics Major Always Dec 3, 2022, 12:07 Dec 11, 2022, 14:17
Tester sgpowers View Status Public Platform MAME (Official Binary)
Assigned To Haze Resolution Fixed OS Linux (64-bit)
Status [?] Resolved Driver
Version 0.250 Fixed in Version 0.251 Build 64-bit
Fixed in Git Commit a8c82d8 Github Pull Request #
Summary 08530: zombraid: Graphics corruption
Description First reported in https://github.com/mamedev/mame/issues/10626
Moved here by request.

Regression caused by: https://github.com/mamedev/mame/commit/7cbb49c5c77270898f58ed67238eb54014aa9a0d

Ported Notes from GitHub issue (DavidHaywood):

" I suspect the problem is the overall display timing is wrong
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
is completely unrealistic for example"

"although changing that makes no difference, so it might be telling us something else"
Steps To Reproduce Start `zombraid` in 0.250
Additional Information
Github Commit
Flags
Regression Version 0.250
Affected Sets / Systems zombraid
Attached Files
png file icon zomraidcorrupt.png (1,982,909 bytes) Dec 3, 2022, 12:07 Uploaded by sgpowers
Example corruption
Relationships
There are no relationship linked to this issue.
Notes
9
User avatar
No.20894
hap
Developer
Dec 3, 2022, 19:08
Maybe some of the regs don't have effect on video hardware until the start of the frame.
Whereas xscroll would have effect on the next scanline.

In that case, see my earlier advice on only updating screen when xscroll is written :|
User avatar
No.20895
Haze
Senior Tester
Dec 3, 2022, 20:06
edited on: Dec 3, 2022, 20:12
Only updating the screen when xscroll is written is a hack though, as real hardware draws every scanline based on what it thinks the current values are, so nothing should technically break if you force partial updates, even on *every* line. Not just drawing every line as a partial scanline update is simply a MAME optimization that ends up masking some other bad assumptions.

You'd want proper latching behavior of certain registers at the start/end of frame if some values are only read once per frame.

Partial updates here is simply exposing the timing of something else being incorrect, or a value that should be latched not being latched, or maybe even an entire extra sprite RAM buffer present on these later hardware games that isn't on the earlier ones.
User avatar
No.20897
Haze
Senior Tester
Dec 3, 2022, 20:27
edited on: Dec 3, 2022, 20:28
I'm not opposed to a hack to disable the partial updates in this case, but it would just be masking a real problem. However, given that 99% of the drivers in MAME mask real problems by only updating the display at a single point in a frame I'm not really sure that would be such a big deal.

This is one of the things MAME gets away with, whereas FPGA based solutions, which to my knowledge HAVE to work as proper per-pixel,per-scanline renderers, do not. It would be interesting to see if any research on these hardware types ends up coming from that direction.
User avatar
No.20907
Mamesick
Senior Tester
Dec 4, 2022, 07:45
edited on: Dec 4, 2022, 07:45
FWIW, this commits also makes BLANDIA look worse than before, see expecially Athena stage. STRIKE GUNNER STG intro seems also bugged, with a lot of flickering at middle of the screen.
User avatar
No.20908
Haze
Senior Tester
Dec 4, 2022, 11:51
edited on: Dec 4, 2022, 11:51
Alright, those are useful datapoints too then.

I suspect either the way the chip does buffering in MAME is incorrect, or the later games have some additional external buffering.

I may just go with the suggested hack for now, as there really isn't enough evidence to draw better conclusions, but should MAME one day decide to enforce more realistic handling (updating every scanline rather than every frame) by default, the issue will no doubt come back.
User avatar
No.20938
Haze
Senior Tester
Dec 7, 2022, 17:24
FWIW even restricting it to xscroll writes isn't enough, the timing is so out on the other games.
User avatar
No.20942
Haze
Senior Tester
Dec 10, 2022, 15:29
fixed with a hack (only doing partial updates for caliber50 rather than for everything using the chip)
there are definitely underlying timing issues with these games that will need resolving one day.
User avatar
No.20943
sgpowers
Tester
Dec 11, 2022, 00:50
Manually applying a8c82d8a86a8af04b81434e283d14cedec2cb792 - looks good to me.
User avatar
No.20946
Haze
Senior Tester
Dec 11, 2022, 13:21
edited on: Dec 11, 2022, 13:22
honestly it's a shameful fix, but it just restores the behaviour to what it was before the raster effect support was added, so yeah.

MT probably needs a 'worked around with awful hack' resolution ;)