• Hey, guest user. Hope you're enjoying NeoGAF! Have you considered registering for an account? Come join us and add your take to the daily discourse.

My Take on no GBA eShop on 3DS

optimiss

Junior Member
Can anyone explain why if the 3DS was running the GBA code natively, it couldn't also run the 3DS menu stuff in the background? It seems as if it would be more than capable from a CPU point of view. I can't imagine the menu is that taxing.

You' think it could run the GBA code natively with some sort of 3DS layer that could interact with the GBA code, pausing it when needed. Like just put the GBA game in a temporary state of suspended animation, which when resumed, would be completely transparent from the view of the GBA code.

Why is this not possible?
 

Berordn

Member
Why is this not possible?

It isn't impossible, it's just more work to create that wrapper than it is to throw you into the system's native BC mode. If they were to release GBA games for public consumption this would probably be their ultimate goal, and they could add savestate and suspend support to it.
 

optimiss

Junior Member
It isn't impossible, it's just more work to create that wrapper than it is to throw you into the system's native BC mode. If they were to release GBA games for public consumption this would probably be their ultimate goal, and they could add savestate and suspend support to it.

If the OP's assertions are true, then this is the only possible solution to the issue. You'd think they would have gone for this solution from the beginning. I guess they really just don't want to put in the effort to get GBA bc going on 3DS.
 
Can anyone explain why if the 3DS was running the GBA code natively, it couldn't also run the 3DS menu stuff in the background? It seems as if it would be more than capable from a CPU point of view. I can't imagine the menu is that taxing.

You' think it could run the GBA code natively with some sort of 3DS layer that could interact with the GBA code, pausing it when needed. Like just put the GBA game in a temporary state of suspended animation, which when resumed, would be completely transparent from the view of the GBA code.

Why is this not possible?

If it's running the code natively, it's almost certainly downclocking the CPUs to get as close to the original hardware as possible. To do anything different on the hardware level is essentially going into virtualization, which is probably not something Nintendo is in a hurry to implement in a sub-$200 device.
 
Can anyone explain why if the 3DS was running the GBA code natively, it couldn't also run the 3DS menu stuff in the background? It seems as if it would be more than capable from a CPU point of view. I can't imagine the menu is that taxing.

You' think it could run the GBA code natively with some sort of 3DS layer that could interact with the GBA code, pausing it when needed. Like just put the GBA game in a temporary state of suspended animation, which when resumed, would be completely transparent from the view of the GBA code.

Why is this not possible?

To run it natively is to run it as it. A GBA didn't have it, so it can't.
Imagine this: Games cannot natively "pause". There is not some innate hardware level feature that causes this. For pressing start to pause your game, you must send out a command that freezes everything, to begin with, must be explicitly programmed. Having then for a pause menu to show up is more programming to be done.
The same is true of a Suspend state, when being run as code. The processor can't just shut off, otherwise the system wouldn't know what it was doing when it picked back up. Therefore, suspension has to be implemented in whatever code you are making. If you take a system and suddenly do a full stop -- that's what you'd get. Full stop, as in no longer running, and not suspended. It would just close the game.
So instead, you have Suspend capabilities programmed into each of these games. They tell the code in the game to halt everything, stick it in RAM, and then shut the screen off. This stuff is likely part of any SDK that devs get. But, if these lines of code aren't a part of the game, they don't know how to do it.

When a software emulator pauses a game, I'd imagine that it more or less simply stops updating the virtual processor, in a matter of speaking. So far as the game is aware, it's never stopped. As far as any virtual machine is aware, they've never stopped. However, if you aren't using a virtual GBA, but rather an in fact 100% real GBA (well, same processor and guts that run the code instead of interpreting it), you can't just pause yourself.

Think of it this way: Telling a game that does not have the code to do so, to perform the save state and suspend features, is similar to telling someone to temporarily die, and wake up, or suddenly be who they were 10 years ago. A real human being can't do that--they can't just suddenly halt themselves or transport themselves 10 years back. But if you, say, were an animator drawing a person doing that, it's entirely possible because stopping, or regaining youth isn't happening to the person in question, but to our perception of the person in question.
Bad analogy? Maybe, and obviously no technical base for it, but it's a way to think of it. I know some troll will run in here and say "Nuh uh! It's not like that because dur CPU!" but it's a viewpoint.
 
You' think it could run the GBA code natively with some sort of 3DS layer that could interact with the GBA code, pausing it when needed. Like just put the GBA game in a temporary state of suspended animation, which when resumed, would be completely transparent from the view of the GBA code.

Because if it's possible for the software to switch between GBA and 3DS modes like that, any exploit in the GBA part can be used to hack the 3DS mode.
 
Double post, but it contains some slightly more technical back-reasoning.

Games, on their native consoles, and at least in the past, relied on the processor speed. Games got their timings and such not from a system clock, but based on, if you will, the framerate. That's why games like Super Metroid have glitches that only existed in the PAL versions -- part of the game was based on time, and the other parts on framerate.
If you crack open a GBA emulator, and don't enable "Frame limiting", you are almost guaranteed to have a game running at 600% or so. Reason why, is that without frame limiting, it's spitting out the code as fast as it can -- which happens to be much faster than what a GBA can actually do. Turning on the frame limiter uses (at least in one possible implementation, I'm not sure of any real world implementations) a delta timer to instead use the system clock to tell the emulator when the processor would render the next frame. In other words, games only run at 100% because a delta timer is being used to tell the code to run at a certain speed. I'd imagine that pausing a software emulator is basically like taking that delta timer and telling it to have that single clock take an indefinite amount of time to process.
 

backlot

Member
No, they just want you to buy all those ugly NES and GB games instead.

I really don't think this is a good argument. Aren't there already original 3DS eShop titles that are arguably better than GB games? If that's not stopping Nintendo from releasing original games then why would it stop them from releasing GBA games?
 
I really don't think this is a good argument. Aren't there already original 3DS eShop titles that are arguably better than GB games? If that's not stopping Nintendo from releasing original games then why would it stop them from releasing GBA games?

Not Mario, Zelda, or Metroid titles. You forget the good eShop titles are mostly new IPs.
 

DaBoss

Member
I really don't think this is a good argument. Aren't there already original 3DS eShop titles that are arguably better than GB games? If that's not stopping Nintendo from releasing original games then why would it stop them from releasing GBA games?

lol look at who you're replying to. You aren't gonna get a better argument than that.
 

Velcro Fly

Member
i'll take whatever imperfect replica of a game that will play on my 3DS over having to worry about buying a bootleg GBA cart that will not work at all. there's only a few GBA games that I'd really want like the first Mario & Luigi game or Minish Cap and those are the games with a high chance of being bootleg when you buy them online.
 

efyu_lemonardo

May I have a cookie?
If this is true, I think the deal-breaker has to be the no sleeping when the lid is closed. I could see them letting the rest slide, not so much that.


That is my opinion too.

While save states and other OS features are nice. I think GBA games not going into sleep mode is the deal breaker, and probably the main reason GBA games aren't on the eShop.

However most people are very happy with imperfect emulation, see SNE9X vs BSNES. So people would probably be very happy with an emulator just as capable as the PSP-GBA emulator, even if it's not up to Nintendo's standards.

Isn't there a problem with this opinion?
didn't GBA have its own system wide Sleep Mode enabled by pressing L+R+start+select or something?

If so, that means the required interrupt commands already existed in the GBA's OS and it would just be a matter of passing those commands when the lid was closed..

Then again I don't remember if the original DS did this either, not sure why though..
 

backlot

Member
Not Mario, Zelda, or Metroid titles. You forget the good eShop titles are mostly new IPs.

If you're only going to buy one Mario or Zelda game on your 3DS ever then you probably wouldn't want to be buying a Virtual Console game over a retail game anyway.

Isn't there a problem with this opinion?
didn't GBA have its own system wide Sleep Mode enabled by pressing L+R+start+select or something?

If so, that means the required interrupt commands already existed in the GBA's OS and it would just be a matter of passing those commands when the lid was closed..

Then again I don't remember if the original DS did this either, not sure why though..

Sleep mode for GBA was game dependent. Not every game had it and if they did it was up to the game itself to implement it, not anything system level. Also the information at that link is inaccurate. GBA SP did not enter sleep mode when you closed the lid.
 

Cbajd5

Member
Isn't there a problem with this opinion?
didn't GBA have its own system wide Sleep Mode enabled by pressing L+R+start+select or something?

If so, that means the required interrupt commands already existed in the GBA's OS and it would just be a matter of passing those commands when the lid was closed..

Then again I don't remember if the original DS did this either, not sure why though..

I don't think it was system wide, it was for only for certain games that implemented it. Or at least it's not working for a GBA SpongeBob game I'm trying it on.
 

Eric C

Member
Isn't there a problem with this opinion?
didn't GBA have its own system wide Sleep Mode enabled by pressing L+R+start+select or something?

If so, that means the required interrupt commands already existed in the GBA's OS and it would just be a matter of passing those commands when the lid was closed..

Then again I don't remember if the original DS did this either, not sure why though..

That wasn't universal across all GBA games, only some GBA games did that, and some GBA games you actually had to go into a menu to put it into sleep mode.

Edit:

Beat
 

tuffy

Member
Sleep mode for GBA was game dependent. Not every game had it and if they did it was up to the game itself to implement it, not anything system level.
Surprisingly, the DS seems to be the same way. Even though most titles support sleeping when the lid is closed, early launch titles like Zoo Keeper do not.
 
I can only think of two reasons:

1. It isn't high on their list of priorities
2. They want people to buy GameBoy/NES games first

And it's probably both. Nintendo is extremely bone-headed when it comes to their digital stores, especially Virtual Console.
 

Shaanyboi

Banned
I have an even better theory:

1. They release Earthbound (Mother 2) on the eShop this year.
2. Next year they'll release Mother on the Wii U NES VC and Mother 3 on the Wii U GBA VC.
3. Holidays 2014. Mother 4. Wii U exclusive.
4. ????
5. Profit.

There you have, the Nintendo Mother Machine™.

Don't play with my heart man...

DON'T PLAY WITH MY HEART
 

serplux

Member
I can only think of two reasons:

1. It isn't high on their list of priorities
2. They want people to buy GameBoy/NES games first

And it's probably both. Nintendo is extremely bone-headed when it comes to their digital stores, especially Virtual Console.

I think they're understaffed/too busy. I believe the Virtual Console team has moved on to handling the entire eShop(s), so their focus has shifted.
 
Sleep mode for GBA was game dependent. Not every game had it and if they did it was up to the game itself to implement it, not anything system level. Also the information at that link is inaccurate. GBA SP did not enter sleep mode when you closed the lid.

Hmm, now you've got me thinking.

Maybe a partial solution is to patch the games themselves to support GBA sleep mode, and then hook the home button and closing action to the GBA sleep mode.

Honestly just release the damned games. Put the disclaimer screen in there and let the gamers deal with it. Yeah, it would be nice if everything was consistently implemented, but it's still better to have the games than not.

Hell, put them in a store segment that isn't labeled VC. Just call it Gameboy Legacy or something like that.
 

Berordn

Member
Surprisingly, the DS seems to be the same way. Even though most titles support sleeping when the lid is closed, early launch titles like Zoo Keeper do not.

Games could choose to ignore the lid closing, Animal Crossing for example just shuts off the screen and speakers but continues running at full speed. Most games would ignore it when the wi-fi was enabled.
 

backlot

Member
Surprisingly, the DS seems to be the same way. Even though most titles support sleeping when the lid is closed, early launch titles like Zoo Keeper do not.

I'm not surprised. The DS probably shuts off any kind of operating system type stuff when a game boots and developers are just made to implement sleep mode as a standard thing in their games. I think I read that the Wii worked that way with the screen that pops up when you hit the home button actually having to be programmed into every game.
 

efyu_lemonardo

May I have a cookie?
I'm not surprised. The DS probably shuts off any kind of operating system type stuff when a game boots and developers are just made to implement sleep mode as a standard thing in their games. I think I read that the Wii worked that way with the screen that pops up when you hit the home button actually having to be programmed into every game.
yep, I think that's why it was slightly different in each game. Some had it as a semi-transparent overlay, others just showed the menu.
Also, I seem to recall some early Wii games got the aspect ration messed up on the home screen.
 
I'm not surprised. The DS probably shuts off any kind of operating system type stuff when a game boots and developers are just made to implement sleep mode as a standard thing in their games. I think I read that the Wii worked that way with the screen that pops up when you hit the home button actually having to be programmed into every game.
This is evidenced by any homebrew game ever, and whenever you pop in a Japanese game.
 
I think they're understaffed/too busy. I believe the Virtual Console team has moved on to handling the entire eShop(s), so their focus has shifted.

Probably, it just makes zero sense to me. Going through the same slow-ass trickle releases as on the Wii is just idiotic.
 

optimiss

Junior Member
Double post, but it contains some slightly more technical back-reasoning.

Games, on their native consoles, and at least in the past, relied on the processor speed. Games got their timings and such not from a system clock, but based on, if you will, the framerate. That's why games like Super Metroid have glitches that only existed in the PAL versions -- part of the game was based on time, and the other parts on framerate.
If you crack open a GBA emulator, and don't enable "Frame limiting", you are almost guaranteed to have a game running at 600% or so. Reason why, is that without frame limiting, it's spitting out the code as fast as it can -- which happens to be much faster than what a GBA can actually do. Turning on the frame limiter uses (at least in one possible implementation, I'm not sure of any real world implementations) a delta timer to instead use the system clock to tell the emulator when the processor would render the next frame. In other words, games only run at 100% because a delta timer is being used to tell the code to run at a certain speed. I'd imagine that pausing a software emulator is basically like taking that delta timer and telling it to have that single clock take an indefinite amount of time to process.

Thanks, that makes sense.

I hope programmers are smart enough to no longer tie stuff to clock speed knowing how their games might be used in the future. It seems short sighted.
 
Thanks, that makes sense.

I hope programmers are smart enough to no longer tie stuff to clock speed knowing how their games might be used in the future. It seems short sighted.

I'm not an actual developer, but I'm pretty sure more or less all of them run off of delta timers for their shit now. That was more for the 2D console era where your frame rate was usually rock solid. I think that's also a major source of why we call frame rate drops "slow down". Because it used to literally slow it all down.
 

rjc571

Banned
Emulation is extremely CPU-dependent. 3DS has an extremely weak CPU. Sorry dudes, it's just not powerful enough to emulate the GBA perfectly through software. And don't bring up the PSP GBA emulator, that thing uses frame skipping and all sorts of hacks to get games running at full speed. It's not nearly good enough to pass Nintendo's emulation standards.
 
Thanks, that makes sense.

I hope programmers are smart enough to no longer tie stuff to clock speed knowing how their games might be used in the future. It seems short sighted.

I'm not an actual developer, but I'm pretty sure more or less all of them run off of delta timers for their shit now. That was more for the 2D console era where your frame rate was usually rock solid. I think that's also a major source of why we call frame rate drops "slow down". Because it used to literally slow it all down.

Basing timing off hardware timing is often the only option when you're working on hardware as limited as a GBA or DS. Every tick counts and you can't waste processing power doing calculations against an RTC (that might not even exist, for that matter) if you're trying to push the envelope on what the game itself can do. I wouldn't be surprised if even 3DS games are CPU cycle dependent because it's still not exactly a workhorse.
 
Top Bottom