3DS Virtual Boy Emulator Update from Guy Perfect

Guy Perfect posted an update about development progress that he has made with his 3DS Virtual Boy Emulator. If you are interested in playing stereoscopic 3D Virtual Boy on your 3DS, please consider supporting Guy Perfect’s Patreon. Disclaimer: I’m his Patron 😀

Yay, an update! Boo, it’s not the VIP window. (-:

After my previous message, wherein I described that the philosophy of “fix it later” is generally fruitless, I considered the other parts of the UI that I wasn’t happy with. Then I donned my canvas gloves, overalls, safety glasses and respirator, then grabbed a hammer and went to town. The implication is essentially rebuilding all the UI stuff, but that’s not so bad because the design is already done and I can copy/paste work from the previous round so I don’t have to actually do it all over.

So here’s what I’ve done so far!

The software now supports localization. Previously, display text such as “An error occurred while reading the file.” was hard-coded into the source and only supported… you know… my localization. Now, all localized strings are loaded from text files bundled with the software. This means the application can now be translated into pretty much any language according to the user’s preferences, and people who want to get involved will be able to provide those translations to the project.

Debugging displays will now only update when the state they’re displaying changes. The old setup I used was just a simple “refresh” command that regenerated output any time anything changed in the emulation state. This applied to everything, from the disassembler to the hex editor to each of the individual VIP tabs. In the grand scheme of things this doesn’t have a huge performance impact, but I never did like how it would draw all those pictures when you used the hex editor to change a value that wasn’t even in video memory…

Global UI settings are now managed centrally. This sounds super-obvious, but at the time I was so bent on getting debugging features implemented that I let “do it correctly” take a back seat… Basically this means any configuration settings (back-end) are now all accessed in the same way from every part of the application. In particular, this applies to text elements. Things that depend on global fonts are now registered with the configuration object, and any time the font(s) change(s), all appropriate controls are updated as well. Additionally, all controls that depend on localized strings will be automatically updated whenever the locale is changed.

Right this minute I’m doing a bit of analysis on the disassembler to see if it should be done differently from what I had before. I’ll probably wind up using the previous code, then move onto the other UI components. Finally I feel good about everything.


#virtualboy, #nintendo, #3ds, #emulator