Skip to content
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

The third flying level in Power Rangers - Super Legends (USA) (En,Fr,De,Es,It) doesn't show any graphics #840

Closed
ghost opened this issue Dec 8, 2020 · 19 comments

Comments

@ghost
Copy link

ghost commented Dec 8, 2020

Tried with both OpenGL and Software.

Capture

@RSDuck
Copy link
Member

RSDuck commented Dec 8, 2020

do you use 0.9 or do you build from latest source?

@ghost
Copy link
Author

ghost commented Dec 8, 2020

Very latest version.

@RSDuck
Copy link
Member

RSDuck commented Dec 8, 2020

this could be a regression because I recently made some changes to GPU2D. Can you give me a savefile?

@ghost
Copy link
Author

ghost commented Dec 8, 2020

@RSDuck
Copy link
Member

RSDuck commented Dec 8, 2020

how can I enter the level?

@ghost
Copy link
Author

ghost commented Dec 8, 2020

Go here.

Capture

Then choose mission 3 and play through it until you get to the flying section. It's after you've collected three pieces of the compass.

Capture2

@RSDuck
Copy link
Member

RSDuck commented Dec 8, 2020

thank you for the instructions. It seems to be not working in 0.9 as well, so it's not a regression.

@RSDuck RSDuck added the 3D accuracy ass-battering 3D accuracy bug label Dec 8, 2020
@RSDuck
Copy link
Member

RSDuck commented Dec 8, 2020

no$gba seems to suffer from the same problem. Polygons seem to be submitted and seem to be rendered as well, well except that nothing appears…

@RSDuck
Copy link
Member

RSDuck commented Dec 8, 2020

oof I made some progress. What made everything more tricky is the fact that it's too issues combined. First there's one with scrolling of the 3D layer. I haven't looked much into this one yet. The other one is the fact that this game has the light color configured as black (0, 0, 0).

@RSDuck
Copy link
Member

RSDuck commented Dec 8, 2020

I figured out why the light color is zero. It's not included in savestates, uff this is so stupid…

@RSDuck
Copy link
Member

RSDuck commented Dec 8, 2020

so the game just forgets to reset the 3D layer scroll back from 256 (which it is before the 3D level starts). The 3D layer scrolling in melonDS seems to be right, I just double checked it on a real DS.

@Arisotura
Copy link
Member

Arisotura commented Dec 9, 2020

confirmed to be working correctly on hardware (so, not a bad ROM dump or anything).

my hardware tests didn't reveal anything about this for now. I fear this is some stupid timing issue (although tweaking melonDS's timing constants didn't change shit).

but, so far, there are two possible solutions:

  1. some obscure hardware quirk causes the BG0 position to be reset/truncated

  2. the game is not running the code that should reset the BG0 position register (now go figure out why)

@RSDuck RSDuck removed the 3D accuracy ass-battering 3D accuracy bug label Dec 9, 2020
@ghost
Copy link

ghost commented Dec 10, 2020

Is this what emulator devs call "open bus" behavior?

@RSDuck
Copy link
Member

RSDuck commented Dec 10, 2020

open bus is something pretty specific which fortunately on a DS can only happen for the cartridge slot. Maybe it's related and the game relies on this accidentally, though then the game shouldn't work on a DSi either.

@Arisotura
Copy link
Member

I tested on a DSLite fwiw, and it works fine.

I've been banging my head at this for a while now and have no idea what that could be. I think we have a candidate for a holy-grail bug.

@RSDuck
Copy link
Member

RSDuck commented Dec 10, 2020

I just tested it on a 3DS, works fine here, so no open bus

@ghost
Copy link
Author

ghost commented Dec 10, 2020

Have you guys gotten to the broken part with a verified good dump of the game and a new save file and not just the one I provided? Just to be sure I didn't fuck up that particular save or ROM somehow.

@RSDuck
Copy link
Member

RSDuck commented Dec 10, 2020

we both reproduced this bug with a rom which works on real hw

@Arisotura
Copy link
Member

technical explanation of this:

after much fumbling, we figured out that 3D layer scroll is implemented in the 3D rendering engine. BG0HOFS is forwarded to an internal register in the 3D rendering engine, but only when the rendering engine is enabled (via POWCNT) -- otherwise the internal register will retain its previous value when BG0HOFS is written to.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants