-
-
Notifications
You must be signed in to change notification settings - Fork 26
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
TEK - Rampage issues #708
Comments
I think the graphics glitch is not a bug. It is also visible in UAE if the screen geometry is switched to "Extreme" (just notices that I am still running 4.9.0, need to check if this makes a difference...): On my A500, there is no visible glitch, because the erroneous stripe is outside the visible area. If vAmiga is run with the same screen geometry as my TFT, it looks just fine, too. BTW, I've written a bunch of new test cases that verify BPLCON1 behaviour in the overscan area ( Update: Same in UAE 4.9.1 |
sorry, yes, you're right about the gap being in the non-visible area. The part appears to be a "standard" BPL1CON "compression", btw like the bouncing logo in Desert Dream (writing lower and lower values to BPLCON1). Second issue I think is this part:
In WinUAE I can see that the interrupt is triggered after the Made a quick test. It's green in WinUAE and blue in vAmiga indicating interrupt happens too fast. That's actually the opposite of what I was expecting, but a difference none the less. |
Very interesting, so actual time is (probably) even longer? Of course, the issue might be different in vAmiga, but since I got this debug output if figured it was very close:
Looked at the IPL timing of I didn't figure I needed any elaborate sync for the test, since I just wanted VERTB set in INTREQ (of course could have just set it myself or something similar) and thought only time from INTENA write to interrupt mattered. |
You've implemented an interesting test case here. I've written some INTENA / INTREQ (enatim1 - enatim4) tests for which I thought they would catch everything your test catches, but they don't. A major difference is that my tests utilise the Copper to write into INTENA / INTREQ. Needs more investigation later this week... I haven't found any IPLissue w.r.t the SUB instruction either. I've modified the existing IPL/ADD1.w test by replacing all ADDs with SUBs. As expected, the test image remained the same. Bottom. line: There is no difference between ADD and SUB. |
If I remember correctly, the VERTB interrupt is signalled at (0,0). There is memory refresh DMA going on in cycles 1,3,5 which might possibly interfere. I am not sure if this could really make the test case indeterministic, but it might be safer to run the code sequence in the middle of the scanline. |
I've written two more tests which basically mimic the INTENA test written by @mras0 (enabling IRQ by letting the CPU write into Despite some strange OCS / ECS difference (see #709), vAmiga does it right (it matches the ECS output pixel by pixel). After running out of options, I decided to run the mras-test again on both of my stock ECS and OCS machines. On these machines, I get a different result. The winner is "blue" on both: Summary:
|
More findings: I tried to run IPL test vAmiga: This is the reference image (A500 OCS): The discrepancies mean that UAE either uses wrong IPL timing for the SUB command or the mismatch is due to a more general interrupt timing issue. Putting all together, there is another hypothesis we might have to consider: Maybe vAmiga does the right thing (i.e., modifying a Blitter register while the Blitter is active) and crashes because it does not handle this case correctly. |
Since I last posted the post on EAB has been updated, and latest WinUAE beta now also shows blue in my test. So vAmiga was right all along.
Yes, I asked Ross (Guru from EAB), and while I located the right place where things go wrong my diagnosis was incorrect. It's not related to interrupt timing, but as you guessed, it's because of the write to BLTCON0. Apparently that change causes blitter channel sequence to change to BAC (i.e. no longer writing to D). In other words this crash is expected until "blitter accuracy=3" is supported. Sorry for the wild goose chases! You can close this one and maybe just leave a mention in #647. |
IPL/S/SUB1w.adf is stable in 4.9.1 with A500 "Most common" configuration for me. Config I'm using:a500.zip Looks like this: |
That's totally fine. Although there was no bug to fix, it was worth debugging. Firstly, the test suite grew by a few more tests which is good. Secondly, by reviewing my own code, I've seen that I need to verify the timing of the Copper COPJMP instruction. Thirdly, I've levelled up by peeking into your test cases. E.g., I wasn't aware that there is a |
Pouet link ADF: TekRampage.zip
Works in WinUAE 4.9.1 with classic A500 quickstart (KS1.3/512K chip/512K slow) and on my real A1200. Note that I tested it because it was mentioned in the "Problematic Demos" thread on EAB (probably for a good reason).
Just tested a few configs (including vAmigaWeb) and issues are the same. (It also crashes in my emulator, but haven't debugged it).
The text was updated successfully, but these errors were encountered: