ShadowOne333 / The-Legend-of-Zelda-Redux

Source code for the hack The Legend of Zelda Redux
GNU General Public License v3.0
106 stars 11 forks source link

Graphical issues and missing Triforce #4

Closed HMPoweredMan closed 3 years ago

HMPoweredMan commented 3 years ago

The Triforce piece is missing in Dungeon 4 All rooms in Dungeon 4 have been explored though SRAM save does not reflect exploration of top room in dungeon Triforce cannot be acquired. After beating the boss in this dungeon, when leaving the world, serious graphic issues occur. May have something to do with rupee count.

I've attached my SRAM save perhaps you can reproduce this. Zelda I.zip

You can watch it happen on my stream around 33:00 to 38:00 https://www.reddit.com/rpan/r/TheGamerLounge/kzhslk

ShadowOne333 commented 3 years ago

Just to be sure, you are using the MMC5 version of the hack, right? I assume so given the Automap behaviour and the glitch with the graphics. I need to be sure so I can debug the issue properly.

As for the issues... I tried replicating the issue with the missing boss/Triforce in Dungeon 4, and I couldn't replicate it. I made a clean save, went up to Dungeon 4 all the way up to the boss, and it worked fine.

Zelda1_Redux_MMC5-0

The glitch issue did happen to me once, and I think I know why it's happening. Were you, by any chance, using one of the Waterfall Animation beta patches? Before MMC5/MMC1 animation? The issue with the graphics there are related to the RAM addresses $0700/$0701. Iirc, the Waterfall Animation code by Bogaa modified those addresses, but the MMC5 code also modifies those exact addresses in a different way, and one of the glitches that happened was exactly like in your video, in that it started fine and then a few frames later, it borks the animation counter and starts doing that.

One way to fix the issue, it to open up your game/SRAM in FCEUX in a PC, and go to the Hex Editor -> View -> NES Memory -> Go to address $0700 and $0701. Load your 1st Quest game, and then overwrite the values in both of those addresses to $00.

Another way of doing it would be through Cheat codes. You could try with the following

Reset 0700:
AAAAAY

Reset 0701:
AAAAPY

I think those should be the right codes to Reset addresses $0700 and $0701 back to $00, so the counter should work. Just make sure that you enable the codes, save the game, and then reset without those cheat codes enabled, otherwise the animation won't work, as it will always be $00 and the counter needs to be updated. Once you fix the SRAM issue, you could try repatching the MMC5 patch on a clean ROM, the Dungeon 4 issue should work, as I cannot replicate it.

HMPoweredMan commented 3 years ago

I am using the latest build of the MMC5 version patched over the clean PRG0 ROM Your address resets seem to work for the graphical issue. I created a few .gg files to perform that function attached. Zelda I.zip

As for the progression issue, it could be related to the emulator. I'm running it on a MiSTER which may cause an issue though it is supposed to be true to original hardware.

Regardless it seems that the issue is with multiple rooms in that dungeon. Their 'explored' state is not getting written to the SRAM or perhaps being overwritten with some other value. I don't know which byte should be written for room states or where but this may be helpful.

image

I'm able to continue my progression now though thanks to your graphic fix code. I did some hex editing on my current save to get the triforce I was missing. If you're curious incrementing 034 by 8 seems to do the trick. Though figuring out the checksum was a little tricky.

For the checksum it seems to be 524 and 525 which make up a 16 bit number which also has to be incremented by 8

Anyways I appreciate the time you've spent on this and love the work you've been doing. I've been playing through all the 'Reduxs'

ShadowOne333 commented 3 years ago

Oh glad the cheat codes worked to fix the graphical glitches! As for the Dungeon 4 bug, I think I was able to replicate it. I defeated the boss, and the Triforce didn't appear.

I revisited Dungeon 4 with a clean save, and it seems to be happening due to the MMC5.asm code specifically. I tested without the MMC5 code, and the Triforce piece in Dungeon 4 appeared without issues.

Could you try beating Dungeon 4 with the MMC1 version just to be sure, please? Just to be 100% sure it's the MMC5 code at fault. If it is, I'll see what could be causing the issue.

ShadowOne333 commented 3 years ago

After some small talk with Bogaa, he figured out that the RAM addresses from $0700 up to $077F are used for game progression, meaning that the MMC5 and its code was overwriting RAM addresses that were being used for flags, and one of those was for acquiring the Triforce pieces.

Based on his suggestion, I managed to fix the MMC5 code so it uses RAM addresses from $0780 and above, properly avoiding game progression flags. Please, redownload the MMC5 patch and try replicating the issue on your end in Dungeon 4.

If it is indeed fixed, then we can close the issue.