- Joined
- Dec 5, 2009
- Messages
- 839
- Trophies
- 1
- Age
- 29
- Location
- center of the Sun
- Website
- kuribo64.net
- XP
- 2,463
- Country
I hope this project will bring some new life into the SNES-on-DS scene. It looks like all the existing emulators for the DS are dormant or discontinued, which is sad.
lolSnes is a project I had started two years ago. I wanted to make a SNES emulator for the DS, that could render most sane games without glitches. But I followed a wrong approach with the PPU side: trying to make a line-accurate software renderer. The DS just isn't powerful enough to handle such a renderer. That discovery pretty much shattered my motivation and the project stayed dormant for two years.
And now, for some reason, I felt like working on it again. I trashed the software PPU attempt and coded the PPU using the DS's 2D video hardware.
So far, SMW is playable, to some extent.
You can't get past Donut Plains 2, though: for some reason, the camera keeps rewinding and moving forward a bit at the start of the level, keeping you from going further. Aside from this bug, gameplay is near perfect. The game also runs at fullspeed (albeit with a speedhack).
Screenshots
Version 1.0:
Older screenshots: (pre-1.0, many issues there have since been fixed)
Emulator in emulator. Wee.
What is currently supported
* CPU -- 99% (all opcodes emulated; may miss a few unimportant bits about timing)
* PPU -- ~40% (mode 1 BGs, OBJs, mosaic, master brightness, giant kludge for BG3 prio)
* SPC700 -- 80% (most useful opcodes implemented, CPU/SPC I/O, timers)
* DSP -- 0% (yep, no sound)
* SRAM with auto-saving
Download link
Version 1.0
Unofficial Git builds
People may have built Git versions and distributed those. (if your lolSnes build's version is above the last released version, it's a Git build)
Keep in mind that Git builds may be unstable. They may explode in your face at any time, so don't be surprised.
Git builds can offer features that aren't in the last version, though.
How to use it
Place lolsnes.nds in your flashcart's root folder (or wherever DS ROMs are). In the same folder, create a folder
named 'snes', and place your ROMs in there.
You can place savefiles from other emulators too. They have to have the same name as the corresponding ROMs and have
.srm extensions.
lolSnes is able to properly detect the ROM type in most cases. Headered and headerless ROMs are supported, both
LoROM and HiROM.
Start lolSnes and select your ROM in the menu. If all goes well, you should see it run. If not, you'll stay in the
menu. Oh also, there's no pause/stop/reset feature yet, so if you want to run a different ROM, you need to reset your DS.
Github repo
For those who are interested, the source code is available in a Github repo.
Even though it isn't explicitly mentioned in the code files, the code is under the GPL license.
A lot of this is written in ARM ASM. If you don't have some knowledge of ARM ASM and GCC calling convention, the code may look like black magic to you...
Have fun!
lolSnes is a project I had started two years ago. I wanted to make a SNES emulator for the DS, that could render most sane games without glitches. But I followed a wrong approach with the PPU side: trying to make a line-accurate software renderer. The DS just isn't powerful enough to handle such a renderer. That discovery pretty much shattered my motivation and the project stayed dormant for two years.
And now, for some reason, I felt like working on it again. I trashed the software PPU attempt and coded the PPU using the DS's 2D video hardware.
So far, SMW is playable, to some extent.
You can't get past Donut Plains 2, though: for some reason, the camera keeps rewinding and moving forward a bit at the start of the level, keeping you from going further. Aside from this bug, gameplay is near perfect. The game also runs at fullspeed (albeit with a speedhack).
Screenshots
Version 1.0:

Older screenshots: (pre-1.0, many issues there have since been fixed)



Emulator in emulator. Wee.
What is currently supported
* CPU -- 99% (all opcodes emulated; may miss a few unimportant bits about timing)
* PPU -- ~40% (mode 1 BGs, OBJs, mosaic, master brightness, giant kludge for BG3 prio)
* SPC700 -- 80% (most useful opcodes implemented, CPU/SPC I/O, timers)
* DSP -- 0% (yep, no sound)
* SRAM with auto-saving
Download link
Version 1.0
Unofficial Git builds
People may have built Git versions and distributed those. (if your lolSnes build's version is above the last released version, it's a Git build)
Keep in mind that Git builds may be unstable. They may explode in your face at any time, so don't be surprised.
Git builds can offer features that aren't in the last version, though.
How to use it
Place lolsnes.nds in your flashcart's root folder (or wherever DS ROMs are). In the same folder, create a folder
named 'snes', and place your ROMs in there.
You can place savefiles from other emulators too. They have to have the same name as the corresponding ROMs and have
.srm extensions.
lolSnes is able to properly detect the ROM type in most cases. Headered and headerless ROMs are supported, both
LoROM and HiROM.
Start lolSnes and select your ROM in the menu. If all goes well, you should see it run. If not, you'll stay in the
menu. Oh also, there's no pause/stop/reset feature yet, so if you want to run a different ROM, you need to reset your DS.
Github repo
For those who are interested, the source code is available in a Github repo.
Even though it isn't explicitly mentioned in the code files, the code is under the GPL license.
A lot of this is written in ARM ASM. If you don't have some knowledge of ARM ASM and GCC calling convention, the code may look like black magic to you...
Have fun!