3 ms·
Oh. I wrote this post. I didn't expect it to make a second round here. I'll elaborate on anything in here if anyone wants to know things.
by Starlevel004 2y ago
Oh. I wrote this post. I didn't expect it to make a second round here.
I'll elaborate on anything in here if anyone wants to know things.
- msephton 2y agoThird time in 24 hours. I still don't understand how HN works for repeat submissions. Regardless, happy to see it get traction.
- apetresc 2y agoJust wanted to let you know I really thoroughly enjoyed this writeup, and I very much hope you get around to part 2 with input et al.
- enricozb 2y ago> Every Nintendo handheld up to the 3DS contains a GameBoy inside it! I think this was quoted from elsewhere within the post but, is this true? If by "up to" we're not including the 3DS, the DSi and DSi XL still don't contain a GBA slot. I don't _think_ they contain the hardware either b/c with homebrew I believe the GBA games are emulated on those newer devices. Am I mistaken here?
- DCKing 2y agoThe Nintendo 3DS (and DSi too) contain a version of the ARM7TDMI CPU used in the Game Boy Advance [1]. On the 3DS, this chip was used for the Game Boy Advance Ambassador titles [2], which effectively run "natively" on the 3DS - when launching a game, the 3DS reboots into a different firmware and just runs the GBA game. Later, homebrew was able to sideload GBA titles [3], which essentially has perfect software compatibility. However, emulating GBA titles still has advantages over rebooting the device so software emulators are available for the 3DS. The New 3DS is fast enough to provide pretty high quality GBA software emulation. I don't think a similar path to directly use the DSi's ARM7 to boot GBA games was ever found by homebrewers (it may just be that the DSi is not able to reboot in a "different mode", which Nintendo did release for the 3DS?). The best available on the DSi seems to be a "compatibility layer" solution that tries to run the ARM7 code on the main ARM9 CPU [4], which seems to work surprisingly well. [1]: https://www.3dbrew.org/wiki/ARM7_Registers https://www.3dbrew.org/wiki/ARM7_Registers [2]: https://nintendo.fandom.com/wiki/Nintendo_3DS_Ambassador_Program https://nintendo.fandom.com/wiki/Nintendo_3DS_Ambassador_Pro... [3]: through "Virtual Console injection" tools, or through https://github.com/profi200/open_agb_firm https://github.com/profi200/open_agb_firm [4]: https://emulation.gametechwiki.com/index.php/GBARunner3 https://emulation.gametechwiki.com/index.php/GBARunner3
- Starlevel004 2y ago> it may just be that the DSi is not able to reboot in a "different mode", which Nintendo did release for the 3DS? From GBATEK: "The memory regions and IRQ bits do still exist internally, but the DSi does basically behave as if there is no GBA cartridge inserted. Reading GBA ROM areas does return FFFFh halfwords instead of the usual open bus values though." Since the memory map isn't flexible and GBA games expect to load data from the cartridge at the hardcoded area, games won't function on the ARM7. I assume the 3DS has special hardware to handle this properly.