GithubHelp home page GithubHelp logo

arisotura / lolsnes Goto Github PK

View Code? Open in Web Editor NEW
65.0 16.0 16.0 375 KB

SNES emulator for DS

License: GNU General Public License v3.0

C 33.32% Assembly 60.00% C++ 6.43% Objective-C 0.24% Shell 0.01%

lolsnes's Introduction

lolSnes

http://lolsnes.net/

A SNES emulator for the DS. My goal is to make rendering the most accurate possible, we'll see how far I can get.

** EmuCR please stop copypasting this every time you post a lolSnes build. It is almost always outdated. Either ** spend some time determining a more accurate feature list, or don't release Git builds.

Considering the DS isn't powerful enough to handle a line-accurate software renderer AND emulate the CPU and other funny things at the same time, I have to emulate graphics using the DS hardware. Reproducing the functions it doesn't support (like per-tile priority or funky color effects) will be the challenge. How they will be emulated will also depend on how games use them.

What is currently supported

  • CPU -- 99% (all opcodes emulated; may miss a few unimportant bits about timing)
  • PPU -- ~50% (2bpp, 4bpp and 8bpp graphics, modes 0-4 and 7, mosaic, master brightness)
  • SPC700 -- 90% (most important stuff emulated)
  • DSP -- ~80% (code taken from SNemulDS. Emulates BRR sound with envelopes. Seems to lack noise and echo.)
  • DMA -- 50% (HDMA not supported yet, and DMA method is inefficient)
  • Support for large ROMs via intelligent ROM cache system
  • Regular joypad for player 1
  • Linear audio interpolation (the SNES does Gaussian interpolation, but the DS isn't powerful enough)
  • SRAM with auto-saving

What is NOT supported

  • Expansion chips
  • Multiplayer

What will never be emulated correctly (hacks could be developed for most common cases, though)

  • Color subtract -- DS hardware has no such feature
  • Offset per tile -- same as above
  • Per-tile priority -- layer priority is changed per-scanline based on gross approximation, though

100% accurate graphics emulation is impossible, but we'll do our best.

How to use

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.

lolSnes is able to properly detect the ROM type in most cases. Headered and headerless ROMs are supported, both LoROM and HiROM.

Once it starts, you should see a (not so) fancy ROM selection menu. Select the ROM you want to play, and press A or B. Then uh... see what happens. Some games run, others explode spectacularly or just do nothing.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.