gbadev.org forum archive

This is a read-only mirror of the content originally found on forum.gbadev.org (now offline), salvaged from Wayback machine copies. A new forum can be found here.

Coding > SNES emulation on GBA

#4185 - TheWhy - Sat Mar 22, 2003 11:08 pm

I've heard of one group that is trying to do it, but they haven't updating so much and i haven't seen so much of them. http://gbadev.gbxemu.com
But, since the GBA is a little more powerfull than the SNES, couldn't SNES emulation on GBA be possible?
If someone knows anything about this, then tell me!
_________________
-TheWhy

#4189 - NEiM0D - Sun Mar 23, 2003 1:24 am

I think if you can make use of the BG layers for the SNES emu, and some fast sound engine, I think it's pretty well do-able.

The GBA CPU is more powerful than the SNES'.
GBA has more RAM memory.

But, there is a downside.
The SNES' screenresolution can be 512x448 (very few use this) or 320x240.
GBA's resolution is 240x160.

You could do like PocketNES does and build in a scaled and unscaled option...
But in my opinion it can never be "fun" to play such a game.

And dont forget the buttons.
SNES has L,R, A,B,C,D,Start,Select.
GBA has L,R,A,B,Start,Select.

Mapped buttons (e.g. A+Start = C) will be a pain in the butt.
So that leaves out some games too.

And don't forget games like Yoshi's Island 2, Star Fox, they use special chips to increase speed.
These games can't be emulated on GBA because it is too slow for it.

All in all, you can play a *few* SNES games on GBA with ease, so a SNES emu for GBA is kinda useless.

EDIT: Ofcourse I'm not stopping anyone from making such a nice emulator for GBA.

Cheers,
NEiM0D.

#4190 - tepples - Sun Mar 23, 2003 1:38 am


  • There is one ARM7TDMI CPU in the GBA. There are two CPUs in the Super NES: a 3.6 MHz 65C816 and a 2.0 MHz SPC700, neither of whose instruction sets is anything like ARM.
  • The Super NES's 128 KB of main memory runs at 3.6 MHz; the GBA's 256 KB of EWRAM runs at 5.6 MHz. That's faster, but not faster enough to allow for emulation.
  • The Super NES PPU differs in several fundamental ways from the GBA PPU, especially in the mode-7 memory layout (map and tile data are interleaved in the Super NES) and the priority (Super NES could set priority individually per BG tile), requiring fully emulated video as opposed to the 1:1 virtualization we see in PocketNES.
  • The Super NES has a fixed-function audio DSP that decompresses and filters samples in real time, unlike the GBA that has a simple SB Pro style (dumb sample DMA + tone generators) audio architecture.

Bottom line: You're not going to see Super NES emulation on the GBA except with dedicated cartridge hardware sending a video+audio stream through the cartridge port.

(edit: fix formatting codes)
_________________
-- Where is he?
-- Who?
-- You know, the human.
-- I think he moved to Tilwick.


Last edited by tepples on Sun Mar 23, 2003 5:13 am; edited 1 time in total

#4193 - mbcook - Sun Mar 23, 2003 3:22 am

The GBA is capable of SNES quality games (as we've already seen from the ports). That said, I don't think anyone will ever get a good emulator going on the GBA.

What would be MUCH more reasonable would be a program for the PC that would turn a SNES rom into a GBA rom. This would simply convert the memory map of the SNES to the GBA, change port numbers, how you access SRAM, the differences in the sound system, etc. In this way (actually coverting the game into a GBA game, not just emulating it) I think you could do a pretty good job. You might be able to do this by grafting code onto a working SNES emulator.

But actual emulation on the GBA? No, I don't think it can be done (and still reasonably playable. People could emulate the N64 if they wanted, it just wouldn't be anywhere near playable).
_________________
--Michael

#4196 - tepples - Sun Mar 23, 2003 5:32 am

mbcook wrote:
a program for the PC that would turn a SNES rom into a GBA rom. This would simply convert the memory map of the SNES to the GBA, change port numbers

You describe high-level emulation of the Super NES on the GBA using static recompilation, but high-level emulation has its own problems, especially in compatibility with lesser known titles. Static recompilation introduces an additional wrinkle: how to handle self-modifying code without requiring a solution of The Halting Problem.

And you still haven't solved the problem of the lack of A and X buttons when converting a game such as Robotron or Smash TV that uses the A, B, Y, and X buttons as a second directional pad.

The easiest way to get a Super NES game onto the GBA is to sign a contract with the original game's publisher, license the source code and assets, and port it yourself. Or just borrow the uncopyrightable game rules, create your own source code and assets, and make yet another homebrew clone.
_________________
-- Where is he?
-- Who?
-- You know, the human.
-- I think he moved to Tilwick.

#4214 - TheWhy - Sun Mar 23, 2003 9:58 pm

Damn... and i who really wanted to play ff6 on gba...
well... hope they make a remake of it and release...
_________________
-TheWhy

#4216 - mbcook - Sun Mar 23, 2003 10:42 pm

Well, I think many major games will get rereleased so it won't be much of a problem. That said, I still don't understand why nintendo didn't add the X and Y buttons to the GBA. Especially since they have done so much porting.
_________________
--Michael

#4219 - FluBBa - Mon Mar 24, 2003 11:30 am

tepples wrote:

  • There is one ARM7TDMI CPU in the GBA. There are two CPUs in the Super NES: a 3.6 MHz 65C816 and a 2.0 MHz SPC700, neither of whose instruction sets is anything like ARM.


Does this make it harder or easier to emulate?
Have you seen any fast Genesis emulator on the Amiga? They have the same CPU.
Does the 65C816 have any similarities with 6502?
I'm sorry but I can't see the problem with the CPU of the SNES, if you skip the sound (some of the first snes emus for PC did this and I think you still can do it in ZSNES) then there should be no problem on that side. Super Mario Bros runs around 300% speed if you turn off throttle in PocketNES. Ofcourse there are a lot more things to consider and I really know nothing about the SNES except that it uses 256x224 resolution on most games, have a max of 4 playfields (planes) and 16 color tiles/objs.

/FluBBa
_________________
I probably suck, my not is a programmer.

#4222 - thehive - Mon Mar 24, 2003 1:21 pm

...erm, it has a 16bit CPU for starters. That makes for a lot more involved OpCode decode process.

#4225 - FluBBa - Mon Mar 24, 2003 3:54 pm

I may be wrong here but to me it seems it got 16 bit registers and can do operations on them in 16 bit. There doesn't seem to be so many "new" instructions, and they take more cycles to execute also. And it also only got 2 banking registers, one for data and one for instructions, not 8 like the PCE or NES (well NES doesn't got any internal to the CPU but...).

/FluBBa
_________________
I probably suck, my not is a programmer.