Results 1 to 10 of 10
  1. #1
    Emulator Developer Mega-Mario's Avatar
    Join Date
    Aug 2013
    Posts
    11
    Mentioned
    1 Post(s)

    lolSnes -- SNES emulator for DS

    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. The background layer tends to obstruct text like menus and info boxes because per-tile priorities aren't emulated yet.

    You also can't get past Donut Plains 2: 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

    http://i.imgur.com/YWA0zPl.png
    http://i.imgur.com/dUfKTte.png

    Emulator in emulator. Wee.

    (I would post them as img tags, but the board has some silly URL count limit. Blarg.)

    What's in?

    * Main CPU: 99% -- all opcodes emulated, may miss some unimportant bits though
    * PPU: ~30% -- Mode 1 BG and OBJ supported, as well as some of the priority
    * SPC700: 80% -- most useful opcodes implemented, as well as I/O (SPC/CPU comm, timers)
    * DSP: 0% -- what it says. No sound yet.
    * Joypad input for joypad 1

    Issues



    * There is no interface for selecting a ROM-- it is hardcoded to load snes/rom.smc
    * Tearing and black pixels tend to appear when backgrounds scroll, because writes to the BG scroll registers are applied directly and not synced to the DS display
    * CPU bugs are hidden in the main CPU core, and possibly the SPC700 core. They may bite you when you expect it the least.

    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...

    If you're crazy enough to try it out

    At the time of writing this, the latest revision should run on a DS, but there is no guarantee that it will always be the case. I mostly test on desmume, which is not 100% accurate. As such, issues may go unnoticed on desmume and cause trouble on a DS. Such issues being mainly accesses to invalid addresses-- desmume doesn't seem to emulate the memory protection unit.

    Feel free to try it though, any feedback is recommended.

    You need a recent devKitPro to build it. Then, place lolSnes.nds on your flashcart/whatever. Create a folder named 'snes' there, and put your ROM in it, under the name 'rom.smc'.

    Run lolSnes.nds and it should automatically load your ROM. You'll get to see it either launch your game, or explode.


    Have fun!
    Last edited by NES_player4LIFE; December 15th, 2013 at 07:19. Reason: updated lmage

  2. #2
    Moderator smcd's Avatar
    Join Date
    Jun 2004
    Posts
    2,547
    Mentioned
    0 Post(s)
    Neat! I'll keep an eye out for updates

  3. #3
    Administrator & Programmer Danny's Avatar
    Join Date
    Nov 2005
    Posts
    897
    Mentioned
    19 Post(s)
    Quote Originally Posted by Mega-Mario View Post
    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. The background layer tends to obstruct text like menus and info boxes because per-tile priorities aren't emulated yet.

    You also can't get past Donut Plains 2: 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

    http://i.imgur.com/uIKsC7Q.png
    http://i.imgur.com/YWA0zPl.png
    http://i.imgur.com/dUfKTte.png

    Emulator in emulator. Wee.

    (I would post them as img tags, but the board has some silly URL count limit. Blarg.)

    What's in?

    * Main CPU: 99% -- all opcodes emulated, may miss some unimportant bits though
    * PPU: ~30% -- Mode 1 BG and OBJ supported, as well as some of the priority
    * SPC700: 80% -- most useful opcodes implemented, as well as I/O (SPC/CPU comm, timers)
    * DSP: 0% -- what it says. No sound yet.
    * Joypad input for joypad 1

    Issues

    * There is no interface for selecting a ROM-- it is hardcoded to load snes/rom.smc
    * Tearing and black pixels tend to appear when backgrounds scroll, because writes to the BG scroll registers are applied directly and not synced to the DS display
    * CPU bugs are hidden in the main CPU core, and possibly the SPC700 core. They may bite you when you expect it the least.

    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...

    If you're crazy enough to try it out

    At the time of writing this, the latest revision should run on a DS, but there is no guarantee that it will always be the case. I mostly test on desmume, which is not 100% accurate. As such, issues may go unnoticed on desmume and cause trouble on a DS. Such issues being mainly accesses to invalid addresses-- desmume doesn't seem to emulate the memory protection unit.

    Feel free to try it though, any feedback is recommended.

    You need a recent devKitPro to build it. Then, place lolSnes.nds on your flashcart/whatever. Create a folder named 'snes' there, and put your ROM in it, under the name 'rom.smc'.

    Run lolSnes.nds and it should automatically load your ROM. You'll get to see it either launch your game, or explode.


    Have fun!
    Nice stuff!

    Keep us updated!
    Proud Administrator Of Emutalk.net

    * I develop software for: iOS, Android, Mac, Linux & Windows.
    * Proficient in C#, C, C++, Objective-C, Java, Swift, Lua. Also know some: PHP.

    Want to help EmuTalk? Want us to relive the glory days of old? Ping me, I would love to hear your ideas


  4. #4
    Emulator Developer Mega-Mario's Avatar
    Join Date
    Aug 2013
    Posts
    11
    Mentioned
    1 Post(s)
    I'm linking to GbaTemp as an update because I'm lazy. lolSnes basically got a lot better since the time I posted here.

    See Here for Git builds. Try out the last one, definitely.


    [conveniency would require that I post clickable links, but once again, the dumb forum software decided to get in the way and refuse my links. That's it, call me a spammer, Vbulletin >_< ]
    Last edited by NES_player4LIFE; December 14th, 2013 at 00:11. Reason: Fixed link as Mega-Mario does not seem to be a spammer

  5. #5
    EmuTalk Member
    Join Date
    Mar 2012
    Posts
    998
    Mentioned
    5 Post(s)
    You just need a certain amount of posts to be able to post links. The amount required is a secret, but you're far away from it.

  6. #6
    Texture Pack Invader NES_player4LIFE's Avatar
    Join Date
    Nov 2005
    Location
    Earth
    Posts
    2,191
    Mentioned
    20 Post(s)
    @Mega-Mario links were added.
    We at Emutalk have a set post limit requirement in effort to combat spam.

    We the staff are considering removing the requirement from trusted users however the Admin has not decided on a fix just yet,
    in the meantime your links will be edited by a staff member.


    - - - Updated - - -

    Also Please do update the first post as to keep the thread clean(er)
    News has been posted to Emulation64.com
    Last edited by NES_player4LIFE; December 14th, 2013 at 05:56.
    -NES
    We are in the process of archiving all qualifying texture packs!
    Contact me via PM to have your N64 texture pack hosted on Emulation64.com!
    Having a hard time loading Large packs? Be sure to patch your emulator.
    Can't load .DAT or .HTC archives? Look no further then this shiny Tutorial, Android users may use this Tutorial.

      Spoiler:

  7. #7
    Emulator Developer Mega-Mario's Avatar
    Join Date
    Aug 2013
    Posts
    11
    Mentioned
    1 Post(s)
    Thanks. You should post a more up-to-date screenshot though, the one you chose is from a pre-v1.0 version and is definitely not good for attracting people. The one on lolsnes.net would be fine.

    I'll keep the first post updated. Hoping to get a good release out for Christmas.


    Edit- okay, tried to update the first post. Got tagged by the URL count limit again. Accidentally clicked 'cancel changes', causing my changes to be lost. I'm too lazy to do it again for now.

    You should definitely consider using other spam protection methods that aren't a major annoyance for new users. I don't want to have to contact an admin or wait to have a big postcount every time I want to edit my first post.
    Last edited by NES_player4LIFE; December 15th, 2013 at 06:41. Reason: oh my

  8. #8
    Texture Pack Invader NES_player4LIFE's Avatar
    Join Date
    Nov 2005
    Location
    Earth
    Posts
    2,191
    Mentioned
    20 Post(s)
    Hmm, your new dev status should have over ridden the user restrictions.
    I'll inform our admin and see if we can't fix the issue, in the meantime if you PM me the information I can add it to the top post.
    -NES
    We are in the process of archiving all qualifying texture packs!
    Contact me via PM to have your N64 texture pack hosted on Emulation64.com!
    Having a hard time loading Large packs? Be sure to patch your emulator.
    Can't load .DAT or .HTC archives? Look no further then this shiny Tutorial, Android users may use this Tutorial.

      Spoiler:

  9. #9
    Galactic FREAK winter_mute's Avatar
    Join Date
    Sep 2005
    Location
    EU
    Posts
    245
    Mentioned
    2 Post(s)
    Congrats on release. Good job and keep up great work!

    NewsPoster at emulation64.com :: Moderator at emutalk.net :: Admin at psemu.pl

  10. #10
    Emulator Developer Mega-Mario's Avatar
    Join Date
    Aug 2013
    Posts
    11
    Mentioned
    1 Post(s)
    Thanks

    You guys should try the last Git build, definitely. It fixes a lot of issues.

    Release coming soon!

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •