Sonic Nes - Help with the continue screen?

Started by sics, December 26, 2018, 02:32:08 PM

Previous topic - Next topic

sics

 As you know some time ago I am working hard to bring a new improved version of the NES Sonic and another day looking for new data on the subject I stumbled upon the Blast - Forever channel who writing data to lazar discovered a continue screen not used in the game.



For this reason I decided to try to see if I could replicate what happened, to find what triggered that event, luckily after a while manipulating the ram I came to the conclusion that by placing some value (greater than zero) in the address 0x0000b3 the screen for continue the game worked normally again.

But my problem arose when trying to make these permanent changes, since I was unable to find the real location that stores that value. My question is you who are great, would you help me achieve this noble task? :thumbsup:

I am currently working on the version known as "Sonic the Hedgehog (NES) - Improvement Plus Tracks".

From already thank you very much!!!
Linktree  | Better a small finished project than a thousand giant ideas stuck in your system.

torridgristle

#1
7EBD2 (Header) 7EBC2 (No Header) = A9 00 85 5A

This loads #$00 into accumulator and then stores it in $5A to make the CONTINUE? screen render correctly, and replaces a zero flag check to make it always appear regardless of what $B3 is set to.

It appears that the U is missing some graphics, though it does have unique tiles. I was able to just paint it in with Mesen.

https://i.imgur.com/NSo7dMk.png

sics

 Thank you very much for your contribution, it made me very happy to receive your answer :beer:

On the other hand being honest I still have no idea how to use this information in my favor, for example one of the things I tried was to replace the container $5A for a fixed value (in this case $01) In this way getting the continue screen to work when the time comes, but this improvised and unfeasible solution also made that in some areas it will end up looking corrupt, I imagine that this is due to what you mentioned about the $B3 value, but my knowledge in that area being so scarce, I can only speculate :-\

About the graphics, I do not think I have difficulties fixing them, the only reason why I have not tried it, is because I still do not know if I will be able to make the rest work correctly.

Finally I would like to add that any contribution that helps to clarify these doubts is more than welcome, because even though my present self may not achieve it, I am sure that my future self will make a great effort to do so :thumbsup:
Linktree  | Better a small finished project than a thousand giant ideas stuck in your system.

torridgristle

At that address replace the existing bytes with the bytes given. If using a hex editor on the ROM then use the headered address, if using Mesen to edit the PRG-ROM use the non-headered address. Sorry, forgot to mention that after editing my post to have the second fix.

sics

#4
 I have no words to thank you thanks to you this hack is already at another level :beer: When you need to kill someone, do not hesitate to tell me :laugh:




Finally when I was aligning the graphics I noticed something very strange, as you will see in the table viewer you can see that the original image has a correct layout, but the output image is distorted. And when that problem is compensated, the image becomes corrupted.



Linktree  | Better a small finished project than a thousand giant ideas stuck in your system.

Cyneprepou4uk

Try to disable sprites in your emulator and see how it looks like on this screen.

sics

#6
 After further testing, I concluded that it could be an emulation error, since depending on the emulator this error is presented in different ways, except for "Nestopia Plus! R425" where the game is seen correctly.



It would be great to get the help of someone who had a Nes FlashCard so that it could be checked if this failure also occurs in the real hardware.


Linktree  | Better a small finished project than a thousand giant ideas stuck in your system.

torridgristle

Try it in Mesen, it goes for hardware accuracy as a priority.

sics



Test done!, on the other hand commented that I had not used Mese because I occupy an old computer as a means of entertainment, and although I have a more modern PC, here I am more free to try things that could break :laugh:

I also take the opportunity to add that I have already managed to load the correct music on the screen to continue the game :D
Linktree  | Better a small finished project than a thousand giant ideas stuck in your system.

Jeville

puNES is another high-accuracy emulator. I don't know how it compares to Mesen though.

sics

 Thank you very much, the truth is that I have never given this emulator a chance and I love it, it works really well and its filters are very useful for the project I do :thumbsup:



On the other hand it gives me some pity that it does not work correctly in Fceux, since it is the most used emulator. Hopefully this will be solved in future versions.
Linktree  | Better a small finished project than a thousand giant ideas stuck in your system.

sics

#11
I have new information on this topic, continuing the manipulation of data in memory, I found that if a value is replaced with zeros apparently corrects the failure of screen "Contiunue".

This value is located in:
0x00034d (Memory)
0x07ed5f (Rom) [Original value F0]

(Continue-Ips).zip for "STH - Improvement + Music"  :thumbsup:

♦ But I really do not know what happens here, my question is if someone could help me understand.
Linktree  | Better a small finished project than a thousand giant ideas stuck in your system.

#

The FCEUX handling of the special mapper used by this game doesn't seem entirely correct, specifically the IRQ states, which triggers this bug.

The ROM hack is just breaking code, the F0 is not directly related to the one in memory address 034d. If you really want a hack fix instead of waiting for FCEUX to catch up than I'd suggest adding a write of 00 to 034d (the offset of the bottom of CONTINUE) somewhere in the code that initializes the continue screen.

sics

Thanks a lot! I think I'll attach this as an optional patch in conjunction with your explanation (And crediting it for its contribution of course :thumbsup:).
Linktree  | Better a small finished project than a thousand giant ideas stuck in your system.