Homebrew lolSnes -- SNES emulator for DS

  • Thread starter Thread starter Arisotura
  • Start date Start date
  • Views Views 169,454
  • Replies Replies 555
  • Likes Likes 24
CATSFC redux, TempGBA, GameYob, and now lolSnes? 2013 is getting exponentially more awesome for (3)DS homebrew. Can't wait to see where this goes.
Don't forget. :D

Tested sudokuhax DSi Mode with Super Punch out and Mario World, both games hung on game loading text.
 
Final Fantasy III/VI errored almost as soon as I started it. No big surprise, really. It's still so heavily in the works haha.
 
Looking forward to trying this. Is it hardcoded to run only Super Mario World, or could one dare attempt to run another game?
You can run any ROM you want; it just have to be snes/rom.smc.

Oh also, it can take SFC (headerless) ROMs. You need to change your ROM's extension, though :P

Don't forget. :D

Tested sudokuhax DSi Mode with Super Punch out and Mario World, both games hung on game loading text.
lolSnes isn't made to run in DSi mode. I also can't test, no DSi or compatible flashcart here.

3DS homebrew would be nice, but the 3DS isn't hacked yet. Also given the 3DS's power, you could just port Snes9x, so there wouldn't be as much fun :P
 
Hopefully your interest holds out, as, although I don't have exceptionally high hopes for this being amazing, seeing as I recognize the DS is very limited where SNES emulation is concerned, I'm thinking you can surpass SNemulDS by quite a bit by making it a point to build this emulator the way that you are.

Though, I'd suggest maybe trying to get your hands on a cheap DSlite and a basic R4 card to test the emulator on proper hardware. If you happen to have access to it, maybe try using it. It seems slightly silly to me to design an emulator that only an emulator can run properly.
 
I already have a DSLite and a linker, actually. It's a SuperCard One, not a R4, but that doesn't matter.

I do test it on the real hardware to ensure it works there, but most of the time I use desmume because it's more practical.

What I meant is that it may break on some linkers due to subtle differences I don't know about, or whatever. I don't know. This is why testing is welcome.
 
  • Like
Reactions: Rydian
Ah, I see. I was slightly worried, as the first post made it sound like it may not work on flash carts period with each new revision. Glad to hear that it's just the standard "it may or may not work on your specific cart for a number of reasons".
 
any chance you will change the name? lolsnes? really?
could just be me.

other than that, sounds promising.
 
Proper SMW emulation is all I'm asking for!
At the current rate of progress, SMW will run full speed with little to no glitches in a month, correct?

Well, maybe sound will take longer.

EDIT: lolSNES is a great name; I haven't seen such an original name in a long time.
 
It mostly depends on my motivation.

Tile priority will be tricky to emulate without major overhead, too. But eventually I'll find a way. :)

As for sound, well... I hope interpolation will be feasible, but dunno. The SPC700 core is already taking quite a bit of the ARM7's power.
 
It mostly depends on my motivation.

Tile priority will be tricky to emulate without major overhead, too. But eventually I'll find a way. :)

As for sound, well... I hope interpolation will be feasible, but dunno. The SPC700 core is already taking quite a bit of the ARM7's power.

We need more programmers like you to help keep the scene alive :P I for one look forward to good Snes emulation without having to get an expensive flash cart ;) Gaussian or linear interpolation would be awesome B-)
 
Also, seems like someone made a site about my emulator already (lolsnes.com). Ignore that site. It's definitely not mine. It's part of some fake emu site network. It links to desmume.com and nogba.com which are the same kind of site. They don't even mention my name or link to the repo.
 
I'd recommend you read GBAtek a bit ;)

The first write enables timer 0 IRQ in IE. The second write sets the reload value for timer 0, and the third configures timer 0 to run.


This got me working the whole day (today) of work!

after reading gbatek , and doing bitwise tests myself all day..

Code:
*(u32*)0x04000210 |= 0x00000008(hex); //6th bit left-shifted must be set at least --> [ (0x04000218) = | (1<<6) ]
//which (according to gbatek) refers to  -- 4000214h  4  IF  - Interrupt Request Flags (R/W)
//(03h IF) 4th Interrupt Request Flag
 
//also writing to 32 unsigned integer??
//why the other valus are 16 unsigned, then this one 32bit? I'm quite curious about this (i love assembly hehe)
 
*(u16*)0x04000100 = 0xFBE9; //timer 0 should happen every 64489 cycles then?
 
*(u16*)0x04000102 = 0x00C0; //timer (0) (as next timer should be at 0x04000110) should forcefully have 192 cycles ahead(writing to 0x04000103)?

trust me this is harder to get at first, not like n64 mips asm, but quite similar. :lol:

edit: one of you must be wintermute then, welcome here!
 
That's still not quite right... I'd recommend you learn a bit about hex and that stuff ;)


As for lolSnes, well, I'm planning to release a proper build very soon. I made it so BG3 becomes the topmost layer if BG3 high priority is enabled, assuming most games would do that to use BG3 as a HUD layer. It works quite well for SMW. I don't think it'll be good for every game, though.

I still want to come up with better ways of handling per-tile priority, though. I'll likely be resorting to SNemulDS's tricks (ie using extra layers in modes other than mode 0, or switching the whole BG to higher prio per-line if all the tiles on a given line are high-prio or empty). I could also try using spare sprites to handle individual tiles that don't get covered by the other workarounds.

I'm also trying to add support for saves. So far it reads saves fine. But then I tested on my DS, and that annoying issue came back: CPU->SPC700 transfers hang inbetween for some mysterious reason, and then both CPUs get stuck waiting for eachother to do stuff. Given how they normally communicate, this shouldn't happen, I still need to investigate it. Annoyingly, it never seems to happen on desmume.
 

Site & Scene News

Popular threads in this forum