I suspect Regen is using the exact same bugged code, that's why I thought I should share it with you, the result being that Timer B is overflowing too early the first time (after the first overflow it is reloaded with correct value but it's enough to desync the Z80 program)

(2) In F1 World Championship (demo mode), the left-most 2-cells are sometime not vertically scrolled correctly. It's because vertical scroll value should not be added for the first 2-cells when the horizontal scroll value makes them only partially displayed (fine scroll value).

Eke wrote:After some investigation, I figured the problem came from Timer B counter not being loaded properly, in my case because I was doing this to detect Timer B LOAD bit changes (FM register 0x27):

I'm surprised your compiler didn't issue a warning, since it can easily determine that this will never be true. Hmmm, gcc 4.3.2 doesn't issue a warning, even with high warning levels. Even with -Wunreachable-code, the following generates no warnings:

Eke wrote:(2) In F1 World Championship (demo mode), the left-most 2-cells are sometime not vertically scrolled correctly. It's because vertical scroll value should not be added for the first 2-cells when the horizontal scroll value makes them only partially displayed (fine scroll value).

Eke,

this fix does not seem to be fine. For me, Gynoug scrolls incorrectly first two tiles when applied. HazeMD shows same issue, but i have not tried your emu out yet.

EDIT: Kega / Gens have the same bug in Formula One (and got Gynoug vertical scrolling correct) so maybe it also happens on real hardware. Someone should test both games (Formula One and Gynoug) to check this out. I verified and the game does not do anything special related to timings.

i’ll check the glitches but they may be correct, the Genesis has a bug when using column scroll and horizontal scrolling at the same time (which is what this game does) Basically the left most column (0-15 pixels) depending on the scroll value can’t be scrolled vertically.

I thought my implementation of the bug was correct, but I’ll double check it.

It might be interesting to check on real hardware which implementation is correct, note that F1 uses 32-cell mode while Gynoug uses 40-cell one, maybe the "bug" only affect the first mode.