Gameboy Advance and 3DS question

One would think the answer was obvious.  "Why of course they are emulated, the 3DS has no GBA card slot, therefor no GBA hardware!"



I'm starting to think the answer is a bit more complicated.  My friend has an Ambassador account as an early 3DS adopter.  As a result, I've been able to see exactly how GBA games are treated by the 3DS OS and compare it to how they are run on my DS Lite (as well as how OTHER retro games are treated on the 3DS).  It raises some interesting questions.



Most old games (NES, Gameboy, etc) being run on the 3DS are quite obviously being emulated.  They have everything from quick saves to qiuck pausing to custom windows and so on, everything set up exactly as an emulator would be capable of doing.  However, the sole exception are the GBA games my friend also had access to.  These ones run in a very peculiar way.  They can't be "paused" (the system continues to play the game in the background without inturruption when you hit the "home" key), the system can't go into "sleep mode" when they are up, they can't be "quicksaved", and the system can't be customized in any fasion while they are playing.  Further, they can be "letterboxed" but only during boot, just like original DS games on a 3DS.  They also run VERY accurately, especially considering how long it normally takes Nintendo to "release" a new system's games on the VC.  These were all out almost immediately as a "consolation award" for early adopters, without a glitch in sight.  Since then, most of the other ambassador games, mainly NES, have received updates.  These have updated emulator features and accuracy, but the GBA games haven't been altered in the least, nor does it seem they need to, aside from the total lack of typical emulator features on the GBA games.



So this really got my attention.  I started looking at how GBA games run on the original DS.  Again, the DS can't go into sleep mode while a GBA game is playing.  I also looked at a similar case, how Gamecube games run on my Wii.  Very similar, they also can't be "paused" (heck, you need to shut down the system entirely just to get out of a Gamecube game).



But that really seems a waste.  Why would they bother putting GBA hardware inside the 3DS?  Why not just emulate them?  (Well we know the answer, but financially, it does seem foolish.)  Then I recalled something.  The original DS had GBA hardware inside, no doubt.  However, it wasn't JUST for pure backwards compatibility.  I recall reading specs that demonstrated that in DS mode, a DS game can use both the DS hardware and the GBA processor simultaneously, to get some extra "juice" out of the system.  If this is accurate, it answer the question entirely.  For the 3DS (and DSi for that matter) to be FULLY backwards compatible with ALL DS games, it would, as a matter of necessity, NEED to have the GBA hardware baked in.  Once that's established, the rest becomes obvious.  Why bother coding a GBA emulator when the ROM can simply be "plugged into" the GBA hardware, "locked" into its own sandbox?  If it is running in "true" GBA mode, then Nintendo had no way to put the system to sleep unless the GBA was told by specific game code to do so, and they couldn't "hault" the game when pressing "home" for fear of causing a fatal error, as the original GBA hardware likely had no way to do such a thing.  The best they could do was keep a bit of code loaded out of sight in a higher memory block to allow the user to quit the game without needing to reset the system. 



This all hinges on one assumption, that I remember correctly that the original DS allowed DS games to use the GBA hardware as a secondary processor.  Can anyone fill me in on whether or not this is the case?  If so, we may have just cracked a big secret of the 3DS.

Comments

  • They didn't put GBA hardware in the 3DS. Go find the crude tech specs plopped up on the wikipedia to see where I'm going. Both systems use a version of the ARM processor. Clearly the 3DS uses a more powerful in every way ARM chip, but the core functions of what the older slower and less featured GBA chip are all there on the DS and 3DS processors as they've improved over time. I imagine they probably created a simple baseline code to tell the ARM processor to in some sort of way along with the firmware to see a GBA game is being fired up. Since it asks the system to dumb itself down to the older specs it would in effect have to park all the system features of the newer better 3DS hardware and run essentially in a more 'true' non emulated GBA hardware mode, yet keeping just enough extra going so you can pop back out to the system without having to do a restart (like the Wii has to do for Gamecube games, since they're virtually the same hardware it does the same general concept.)



    The DS I believe ran on an ARM9 and ARM7 processor, the 7 used for some DS features but also so it could use the GBA games through the port the first 2 of 3 versions of the system had going for it. With the advent of the DSi GBA capability was dropped, but DS games still needed that subprocessor, so when they went from DS to 3DS they had to keep the same chip functional capability there since 3DS was made backwards compatible with the DS.
  • I heard rumors that the first few 3DS "Ambassador" GBA games actually run in GBA mode.

  • Tanooki, that is essentially what I thought was going on. I didn't literally think they added an extra chip in there, but I knew that if the DS could play GBA games natively, the 3DS should be able to do the same.



    Now, how do we make it common knowledge that the 3DS isn't emulating GBA games, but running them natively?
  • Show actual proof instead of a 2-post thread? Haha. I'd do stuff like see if you can find the CPU clock or something that can be used to determine if it is. A good one would be if all outputs would be more numerous than GBA or just dum b stuff like that. Or lookat the decapped chip.
  • People love to steal tech docs from Nintendo and other companies so I'm sure if it's not out there already it should be eventually where you can read up on all the guts of the system and how stuff works exactly. I used to have stuff from the GBC and GBA handy but it was lost quite a few years ago.
  • I haven't seen anything but a DS game order slip....I don't think there's any tech books out there. Maybe on the libs, I'm sure the exact internal workings are 100% secret because they don't want anyone to know what the hardware REALLY offers.
  • You can't assume that because the DS runs GBA natively that the 3DS does so as well. Most likely the 3DS runs the GBA game in some software environment, otherwise all the button mappings would likely be off when compared to a GBA. Not to mention the video signalling to LCD screens. There are quite some different factors to take into account with these things, among which physical layouts, hardware support..



    Keeping the 3DS 100% compatible to run native GBA games would severely limit the hardware designers in designing the next-gen portable.
  • Segfault, you make some good points, but things like converting button mappings and screen signal timings are trivial, and don't affect the way the game is played back by the system. If it is as Tanooki states, then it is as simple as including that small environment and then just running the game on the downclocked mode of the ARM processor, so it would still effectively be running natively.



    That said, perhaps we gotta do some more research.
  • Please post what qualifies you to say if it's trivial or not. If you have to be asking this question, you have to know less then HOW button mapping works. Button mapping on the DS is actually pretty screwed up. If the 3DS is the same way, I'd be disappointed.



    And research? You have to do some RE work. Get on it, 3DS is just barely cracked AFAIK. They're probably skimming through everything as it is. Still, it'd be more likely to try to find the answer in the binary blobs the 3DS uses for said GBA games. I bet they emulators...I bet a ton on it. Sacrificing the quality of the system vs waste some hardware power to run a game? Nintendo would 1000% go for emulation. It makes 10x more sense from EVERY standpoint to do it that way, especially when the system is so much more powerful.
  • Ya, I have my doubts about them running natively. Altough it could be that certain things run natively with parts of the system emulated. Kinda like how ps2 worked on european ps3´s in the beginning.
  • Alright 3Gen calm down, I didn't mean no harm or nothin'. We're all friends here right?



    I'm just saying there are some weird aspects to how GBA games run on the system when you compare it to how other retro games that certainly work via emulation run. However button mapping works, screwed up or no, I'm betting strongly that at no point is anything output BACK to those buttons. If the system is running on what is essentially a more powerful ARM chip, then it isn't outside the realm of possibility that they wouldn't need to emulate much, that's all I'm saying. I'm certainly not 100% on this, it's just something worth investigating.

  • Originally posted by: Dark Jaguar

    Segfault, you make some good points, but things like converting button mappings and screen signal timings are trivial, and don't affect the way the game is played back by the system.


    Originally posted by: 3GenGames

    Please post what qualifies you to say if it's trivial or not.


    Originally posted by: Dark Jaguar

    If the system is running on what is essentially a more powerful ARM chip, then it isn't outside the realm of possibility that they wouldn't need to emulate much, that's all I'm saying.

    So, you're saying button mappings and screen timings are trivial, right? I'd beg to differ, in all honesty. Screen timings can't be easily converted from one system to another, it takes quite a bit of work to do so.



    As for the 3DS running on a more powerful ARM chip? Sure, it could be so. However, ARM (an acronym for Advanced RISC Machine) isn't one global standard. There are a widely spread number of ARM-based architectures out there, and knowing Nintendo and its past hardware, they're sure to have some kind of customized ARM architecture for the DS, 3DS and even the GBA.



    Code written for an ARM inside the DS doesn't necessarily have to run 'natively' on the 3DS. Sure, you can pop your DS cartridge in a 3DS and play the game. However, at the low level, there is perhaps some kind of wrapper needed to patch code in real time. Which in my book, doesn't come down to 'native code execution'. Sure, the wrapper is, but the Nintendo DS software wouldn't be.



    I'm iterating this once more. If Nintendo hardware designers would have to keep backwards compatibility in their systems purely through hardware, they'd be severely limited in their work, with the addition of having to recycle lots of hardware schematics from previous systems. This doesn't help make a design 'portable' by addition of an X amount of past schematics having to float around in your design.
  • I very highly doubt the 3DS has GBA hardware still in it. It doesn't even have a GBA cart slot. Why would Nintendo waste the silicon and physical real estate on a system that could be emulated instead?
  • Sorry my mistake, I said that wrong.



    Translating signal timings can be tricky work if you have to hack it in, but if you've got the original source code and an existing set of data on the full workings of your screen, it becomes a far simpler task. I don't mean to demean the work of hackers and emulator writers. Running "blind" and having to reverse engineer a piece of hardware makes a task exponentially more difficult, as the translation team behind the translation patch for Mother 3 can attest to. As they themselves made clear, source code would have trivialized their job to an extent (at least as far as hacking the code went).



    Also, sorry I wasn't too clear. I'm not suggesting that the 3DS would keep the old "GBA chip". Rather, from my understanding now, the original DS simply used the existing chip for GBA games, as it was an enhanced version of the GBA chip custom made to take all the GBA instructions. My suspicion was only that if the 3DS chip is custom made to take all DS instructions (running in a mode for that), it is conceivable it can also take all GBA instructions, running in a custom mode for that as well.



    I did ask in another forum, they directed me to this link: http://3dbrew.org/wiki/Title_list#00040138_-_System_Firmware . According to this, the system has the GBA firmware hard coded into it, which upon a specific instruction tells the 3DS to behave like a GBA, except for certain instructions on how to store saved data being redirected to a custom directory on the SD card. This does support my hypothesis, though I am still curious just how far it goes. Obviously the BIOS would be required for GBA mode because of how games are set up not to talk directly to GBA hardware but instead use the BIOS as an intermediary (this is like the Playstation 1 for example, but unlike the NES or SNES which required program code to "talk" directly to the hardware).



    I sincerely apologize for resurrecting an old thread like this, but I thought that everyone would be interested in this discovery.
  • GBA games don't really use the BIOS for anything except waiting for interrupts. The games all talk directly to the hardware, except when they wait for Vblank or other interrupts.
Sign In or Register to comment.