Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Most gameboy games use banked memory, swapped in as 16k chunks. I'd wager a guess that the recording process monitors what chunks get banked in during the recorded gameplay, removes any bank that isn't used, and then restarts the demo if that removed data is accessed, as a failsafe.

The Raccoon demo behaves the way I might expect this to work: most potential player inputs allow you to reach the Raccoon, trigger his two text prompts, and cut the grass with Link's sword. But you can't enter any other screen, can't leave the second screen out the bottom, and can't perform most other actions; the moment you do, the game would need to run code that the quote never accessed, which triggers the failsafe. Even performing certain "safe" actions out of order occasionally fails, I'm guessing due to the RNG for stuff like leaf particles and whatnot.



We actually monitor each individual byte of memory accessed, then add some (configurable) padding around those bytes to make the quotes more durable.

You can see what that looks like in this visualization of the Racoon demo: https://tenmile.quote.games/quote-visualizer.html#drop=https...


That's extremely cool, thanks a bunch for the clarification! I'm working on an NES emulator that runs in the browser, and while it's not fit for purpose yet (lacks save states and recorded-input playback), this might just inspire those features. Seems like it should be a fun weekend project :)


Awesome! I'm really happy to hear that. I expect that you're going to have a LOT of fun with that project. Please let me know if you ever need another pair of eyes to help with your project, even if it doesn't involve adding support for Playable Quotes. As I recall, the Game Boy shares a lot of design features with the NES.

Oh, and regarding recorded input playback. That is something we haven't gotten working yet. Some of the details for that are in our blog post. The short version is that button presses can happen in the middle of a scan-line, which can make it really tricky to play back if the emulator wasn't designed with that in mind!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: