Spyke

Syndicated from the fediverse. Read and engage on the original instance.

View original on lemmy.ml
retrogaming·RetroGamingbykuiskaaja

Why do GBA games boot so damn fast?

For context: I have basically 0 experience with anything pre-PS2 except that I had a PS1 as a kid with a few games. Never had an official gaming handheld console, Gameboy, DS, PSP or anything like that.

I've recently started playing the GBA game Crash Bandicoot 2 N-Tranced on my R36S (Chinese low end emulator handheld) that was collecting dust and wow, the game boots up blazing fast!

It's very convenient as I don't want to leave the thing on sleep mode, as that drains battery.

Is this how it was like on the real console too and how were the loading times on the previous Gameboy and Gameboy Color? How about the NES and NES? Were the handhelds more optimized to be picked up on the go: were the PSP loading times short too?

I remember having to wait quite a while on the PS1 and PS2 and that is still a thing on an emulator on an actual gaming pc while this 27€ handheld boots GBA games so so fast.

View original on lemmy.ml
45

33 replies

lemmy.world

Cartridge games were always fast to start. There are essentially no loading times on them, just maybe some logos that you would have to wait through. CD based systems are what introduced the concept of loading times to console gamers, because cds read data from the disk at a massively slower speed than a cartridge.

68

Also the data on a cartridge is read using addresses just like memory, whereas on a disc you use tracks and then do a long sequential read. If you want one byte of data from a specific place you have to read much more than one byte from a disc, but from an addressed system you may be able to read an individual address then move on.

Also if you have 600mb to work with you tend to be a little less frugal thab if you have only a few megs to work with like on a GBA.

9

I remember once watching someone play a game on a PSP when that was a current console... and being absolutely surprised that on occasion, frames didn't load completely instantly. I only owned Nintendo consoles (GBA, NDS) at the time, so wasn't used to this.

4

Traditional cartridge based games (NES, SNES, N64, GB, GBA, Sega Genesis) had pretty much no load times, this is because a cartridge is a memory chip you connect directly to the console, so its contents can be read instantly. There are a few exceptions, some cartridge games still have loading screens because they need to decompress assets (an example that comes to mind is crazy taxi for GBA).

Disc based games (PS1, PS2, Xbox, PSP) have load times because they need to physically spin the disc and move the laser to read its contents. This was also the case with floppy disc and tape based games (commodore 64).

28
feddit.org

For something like the Gameboy the cartridge is literally part of the hardware of the system. The cartridge contains ROM (and sometimes a bit of flash/eeprom as well) which the CPU can read from directly, just like the ROM and RAM it has inside the console. So there is no loading time, as soon as you insert the cartridge all the data is simply there.

Now this can get a bit complicated, but sometimes there can be a tiny bit of loading. Although I don't know if any Gameboy game did this. ROM chips could get expensive and the bigger the more expensive. So in order to get away with a smaller ROM chip, sometimes data was compressed or generated when required. This is a trade off between RAM/CPU and ROM space. I know there are NES and SNES games that did this. Something that is noticeable on the SNES for example is music and digital sound effects. They need to be into memory in a specific way and this can lead to a little bit of loading, mostly this is done at times when you wouldn't notice it, but sometimes it can cause a bit of lag as the system transfers the data. But it's usually less than 1 sec.

Something like a spinning piece of media like a CD or those little discs used for the PSP work very differently, where the data must be read from the disc and put into memory. This takes time, thus the loading times. Often these media were much larger than the memory available, so it would only load what is needed. Then when other stuff is needed, more loading is required.

As for your modern emulator. Compared to the original system your emulator is leaps and bounds faster. The games are tiny and even if they need to be loaded from flash to RAM, it's basically instant.

21
kuiskaajareply
lemmy.ml

that's very interesting.

thank you for the in depth explanation.

would be very interesting to see how the R36S compares to the real GBA. i'm definitely getting one at some point, but for now i wanna spend what little spare money i have on emulator stuff :D

5
klankinreply
piefed.ca

The RK3326's CPU in it is around 100x faster than the GBA SOC, as well as 64 bit and has 4 cores - so at their respective peaks can be around 1000x faster than a game boy.

The R36S has 1GB of ram, or around 4000x what the GBA had.

So long story short you're minimum 100x overkill for playing gameboy games (assuming an insane 10x overhead)

3
Ghoelianreply
piefed.social

Surely it doesn't actually run the CPU that fast when emulating GBA games? Speeding up the CPU meant actually speeding up the game as well. Emulators, especially for these older consoles, try very hard to get as close to real hardware as possible.

1

Oh gosh no it certainly doesn't - while that would be absolutely halarious, part of the overhead is usually making the GBA games play well with something like the Linux scheduler.

Some games back then do crazy stuff like use the number of CPU instructions executed as a timer, so for a playable experience this has to be pretty controlled.

That being said, most emulators allow a time multiplier for their virtual console, so you usually can experience it as fast as your hardware can run (Imagine hooking up a water cooled modern CPU to a minimalist realtime linux kernel and seeing how fast that bad boy can wheel).

1
kuiskaajareply
lemmy.ml

that's nuts.

do u have some kind of source for the cpu being that much faster?

0
kuiskaajareply
lemmy.ml

are you referring to the mhz and ghz?

cus that isn't really entirely reflective of performance.

when the difference is that huge, it obviously says something, but there's 20 year old CPUs that have a higher cpu clock rate than modern CPUs but easily get destroyed by the modern CPUs in benchmarks

0
klankinreply
piefed.ca

Well yeah, I can't say I pulled out my hardware for a benchmark - but I think its a reasonable indicator of a minimum bounds when comparing older hardware with low clocks to newer. ie presumably the GBA doesn't have AVX, but if you're running gameboy games thats just wasted silicon.

Between the GBA to the RK3326 there's almost 2 decades of improvement, honestly 'only' 1000-4000x improvement is actually kinda disappointing considering the previous decades following Moores law.

2

well, then again the r36s costs like 30 bucks and the gba cost like 180 dollars adjusted for inflation

0

For Gameboy, there should be no difference in loading time for an emulator or the original system. The roms are only a few MB in size, and get loaded fully into ram. The initial loading is probably well under 1 second. On the official system you will see a short Gameboy advance logo animation. I don't know if the emulator strips that out or not.

2

Today's equivalent of a GBA cartridge would be a special read-only DDR5 stick that you plug into your mainboard, and the game runs directly from the installed memory. They don't need loading, they don't need booting at all, when you power up it is already in the memory.

17

The Gameboy Advance is a little weird, but most cartridge-based game systems featured little to no boot or loading time because the ROM chips in the cartridge are attached to the CPU the same way the RAM does (electrically speaking), and has similar performance. So game data, things like textures, sprites, level data, audio, are just...accessible to the CPU already. It has to do a very brief initialization to set up some variables but other than that everything is just ready to go.

On a disc-based system like Playstations, the game data is on an optical disc. So the game has to be read into memory from the disc before the game can start. That takes time, hence boot times and loading screens. PCs are similar, it takes time to load the game data from a hard disk or SSD or optical drive or diskette into working memory. Fun fact about this: CD-based games usually stored the background music as red book digital audio, so the console would load game data into memory, start executing it from there, then the optical drive just starts playing the disc like a normal CD simultaneously, which 1. allows the background music to be very high quality and 2. completely frees the CPU from that task.

Another fun fact, on at least some consoles it was possible to add additional RAM or even sound or graphics accelerators to the cartridge. Super Mario Bros 3 on the NES has additional RAM in the cartridge, Star Fox on the SNES has a 3D accelerator chip.

9

To expand on what the others are saying here, cartridge based systems load quickly because they are more or less directly accessing the data in the cartridge as if it were memory. In fact, in many older systems the cartridge storage area is mapped directly into the memory (RAM) address space. Disk based systems need to sequentially read data into memory temporarily in order to use it for anything, and are inherently limited by their small amount of memory so they can't load anything even approaching the entire contents of the disk at once, and they also tended to have slow drives in order to make them cheaper. A Playstation 1 has 2 megabytes of memory but a CD can hold somewhere in the neighborhood of 650 or 700 megabytes of data. There's no amount of programming trickery that's going to get the entire game into memory all at once unless your game is hilariously small, so the system is going to have to pull the parts of it needs off of the disk as it needs them, which necessitates loading screens.

Meanwhile a cartridge based system can access all (deliberately leaving more complicated topics like bank switching out of the conversation, here) of the data on cartridge more or less instantly.

Things are starting to come full circle here a bit with the Switch and Switch 2 which are indeed cartridge based, but have to load as if they had a disk because the data on their cartridges is both encrypted and compressed, so it can't be used directly off of the cart like in the good old days and instead has to be unpacked and copied into the system's memory first.

8
suppo.fi

Solid state storage is fast. CDs are slower and because it's a physically spinning disc, there are seek times that delay reading too.

On gba you should be able to just stream things directly from the cartidge instead of loading everything to memory first.

Edit: and your modern emulator console can load the entire gba rom into memory in the blink of an eye.

6
hayvanreply
piefed.world

Actually you don't even stream from the cartridge. The cartridge connector is part of the system bus. The equivalent of the CPU-RAM connection on the current motherboards. When you insert a cartridge, the ROM chips inside the cartridge becomes part of your system memory. So you literally run it directly from the cartridge. Imagine today's games came inside RAM sticks, and inserting them into DDR5 slots.

3
klankinreply
piefed.ca

More like a PCie storage device with DMA no?

Sorry if that's pedantic lmao, but I feel like even the GBA ram blew nonvolatile storage out of the water

2
hayvanreply
piefed.world

I'm not sure about GBA architecture specifically, but earlier systems just plugged those into the system bus directly.

According to here the ROM is directly on the bus, but since ROMs are slower than RAM, there is a cache-like buffer in between. But it's not a separate IO bus, it's still the memory-mapped system bus.

2
klankinreply
piefed.ca

That's pretty cool, so like DMA but because the hardware couldn't (directly) tell the difference instead of an actual standard

1

Serves a similar purpose but closer to a cache memory than a DMA. It is not explicitly programmed for block access.

1
lemmy.world

The games are tiny so it doesn't take long to load stuff.

5

Not really correct. The games are tiny sure, but they don't need loading at all, they run directly from the cartridge.

3
kuiskaajareply
lemmy.ml

yeah but the hardware is also really low powered right? and the emulator emulates that hardware

2

Emulators don't necessarily try to mimic all aspects of hardware. It would be more appropriate to say most emulators are translation programs. There are some emulators that do emulate all aspects of hardware though. So "it depends".

4

One more note to clarify what's already been said: While the CPU in older consoles can read data and execute instructions directly from the cartridge because it's connected to the CPU's memory map like all the other hardware and RAM in the system, most consoles still needed graphics and sound data to be copied into specific areas of onboard RAM, and couldn't use them straight from the cartridge. This is because those subsystems were hardwired to work only from certain addresses, or even their own, separate RAM.

(I'm aware that the Famicom/NES doesn't do graphics this way by default, but in terms of hardware design it's an outlier, and getting into the weeds explaining everything related to that would at least double the length of this comment.)

Because the CPU can read and write that data so fast, however, it's still orders of magnitude faster than reading from most external media like tapes, floppy disks, and optical discs.

5

You reached the end