LIJI32 / SameBoy

Game Boy and Game Boy Color emulator written in C
https://sameboy.github.io/
Other
1.64k stars 207 forks source link

Link's Awakening DX (JP 1.0) ACE Failure #188

Closed spicefather closed 5 years ago

spicefather commented 5 years ago

One of the speedrun categories for LADX is Any% ACE (arbitrary code execution). By setting our filenames in a specific way and following certain steps, we're able to skip to the end-game cutscene. As a test of fitness for allowing SameBoy for speedrunning, I've tested this route several times but am entirely unable to reproduce the intended effects.

Upon opening the chest at the end of the run, the effects see are either:

The game freeze is an expected outcome -- it happens sometimes if a certain value in RAM isn't "good". However the crash is something which doesn't occur elsewhere (BGB 1.5.7, Gambatte Speedrun r649, or on Gameboy Player).

I've attached two states: 1: file select screen with file names already input 0: near end of run, just before opening the final chest

You can also find the current world record video here for a demo of what should happen. If you're trying to follow along, bear in mind that everything needs to be followed identically (especially filenames and talking to the child on the way back from the beach). ACE.zip

Thanks for your time.

LIJI32 commented 5 years ago

This will surely take some work, but I hope I can get it fixed soon. Is there any documentation on how this ACE works? It should aid in fixing this bug.

spicefather commented 5 years ago

I'll try to get more detailed information as I can. The most I'm familiar with is that code in the region of 0xF600 (echo of 0xD600 -- filename storage) is executed as part of it.

spicefather commented 5 years ago

With the help of other people pointing out me doing something wrong in my tests, I was able to get this to work. Sorry for wasting your time. :(