View Single Post
Old 09 February 2023, 23:34   #333
Muzza
Registered User
 
Muzza's Avatar
 
Join Date: Sep 2019
Location: Sydney
Posts: 357
Quote:
Originally Posted by ransom1122 View Post
I agree, It's more a FYI for Muzza, in case he has some expert knowledge as to why it may be occuring.
It is most likely the copper timings not being emulated correctly. I saw similar in older emulators when I first developing the game.

Take the screen you posted earlier with the status bar slightly offset in World1-1. Now look at the DMA display from WinUAE:
Click image for larger version

Name:	DMA.png
Views:	104
Size:	5.3 KB
ID:	78080

The yellow line that goes across the screen is where it changes from the game display to the status bar. It has to change 16 AGA colours as well as the bitplanes, and a few other things. It has one scanline to complete the changes before the blue bitplane fetches start for the status screen. You can see it is very tight. If I artificially delay the copper by inserting an empty instruction I can recreate the same problem. It looks to me as though the FPGA machine is not completing the copper operations in time whereas a real Amiga does.

Now look at the copper from World 3-3:
Click image for larger version

Name:	DMA3-3.png
Views:	87
Size:	7.9 KB
ID:	78084
The yellow blocks are the copper is constantly moving the HW sprites that make up the parallax background to repeat them across the screen. If the timings are out, you end up with half of an attached sprite in the wrong position, and it looks like the scrolling has gone wrong - which matches the reports I've had.

I could possibly play with the copper timings, maybe find copper instructions to cut, and come up with a solution that works on both real and FPGA Amigas (I found it is often easy to fix for an emulator, but then it breaks on real Amigas!), but really it is better for everyone if the hardware itself is fixed.
Muzza is offline  
 
Page generated in 0.04379 seconds with 12 queries