                            SNEmulDS release 0.2
                            (c) 2006 by archeide
                          
  SNEmulDS is partially based on SNEmul, a SNES emulator for DOS
  and linux, which was the cooperative work of archeide & v0x.
  Take a look at the site of the DOS emulator: http://snemul.free.fr/

  1. DISCLAIMER

  THE SNEMULDS AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
  SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
  FITNESS FOR A CERTAIN PURPOSE; IN NO EVENT SHALL WE BE LIABLE FOR ANY
  SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
  RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
  CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
  CONNECTION WITH THE USE OF THIS SOFTWARE.  
  Short: use at your own risk.

  2. Introduction

  Nearly ten years after the heroic times of the first SNES emulators 
  (SNEmul was one of them), the new console made by Nintendo, the Nintendo DS,
  offer new opportunites to turn alive again all those old games which probaby
  made the Super NES the best 2D game system of all time.
  It was clear for me that i had to port my old emulator to the new console,
  because i wanted so hardly to play thoses old SNES games on my DS.
  There are already good emulators for the DS, but i wanted also to make my old
  project alive again, and remember those old times where i lost
  nights tracking bugs in MARIO or Secret Of Mana!
  
  This first release is not yet a real contender, but i wanted to show people
  that old projects never die, and that i was working again!
    
  3. Installation and usage

  Current version of SNEmulDS needs a card reader (like M3, supercard, G6, etc.)
  and a passkey/passcard (You should know how to get/use them).  
  - A SNES directory must be created in the root directory of the flash card.
  - All SNES ROMs have to be put in this directory.
  - Launch the SNEmulDS.ds or SNEmulDS.ds.gba in your ROM launcher.
  - A file list should then appear displaying all your SNES ROMs.
  - Tap on the desired game and press START to launch the game.

  During the game, a menu is displayed with the following items:
  # SelectROM: show the content of a directory list to select another ROM
  # Options: show the option menu. There you can disable background,
    select the BG3 mode (see below) or the relative scroll height for
    BG1 and BG2, enable or disable the Vblank waiting, and enable/disable speed
    hacks.
  # Load State: restore one of your 8 game states. (see below)
  # Save State: save your current game state. You can save up to 8 game states
    for each game. States are saved in a file put in the SNES directory along 
    with your ROM (the file has extension '.SML'). This file format is
    compatible with the SNEmul emulator.
  # Reset: reset the game
  # Save SRAM: save battery-saved cartridge RAM. The SRAM is saved in a file put
    in the SNES directory along with your ROM (the file has extension '.SRM').
  # Debug: show debug informations (not really interesting stuff)

  The BG3 mode selection allows the BG3 (in most games, a later containing only
  static informations) to be displayed entirely on the DS screen, even if it is
  bigger with a real SNES. It can be useful in some games. In fact, the middle of
  the layer is crused, so you'll lose information in some games.
 
  4. What is implemented

  - 65816 CPU (bugs remain, and 6502 emulation is not supported)
  - LoROM/HiROM support
  - Tile by tile graphics engine
  - Graphic Mode 1
  - Graphics Modes 0,2,3,4,5,6,7 are implemented but not correct yet
  - 8x8, 16x16 tiles 
  - 32x32, 64x32, 32x64, 64x64 screen modes
  - 8x8, 16x16, 32x32, 64x64 sprites
  - BG priorities (still buggy)
  - Full DMA support
  - HDMA support (uncomplete)
  - HIRQ/VIRQ/NMI interrupts
  - PAL/NTSC detection
  - Buggy Subscren Add/sub for BG
  - Large ROM support (> 2Mbytes)
  - SRAM support
  - Snapshots(State save) support
 
What is not or bad supported, but will be soon:
  - Line by line graphics engine
  - Mode 7 effects
  - 512 horizontal resolution with Mode 5 
  - priority per tile is not implemented (difficult task :-()
  - Window clipping
  - Mosaic effects 
  - Correct BACK color support
  - Correct Sprite priorities
  - SPC700 CPU
  - Sound DSP (ADSR/GAIN effects implemented)
  - Palette alteration between scanlines
  - Fixed color Add/sub for BG/sprites/BACK
  - Window color clipping
  - Subscren Add/sub for BG/sprites/BACK
 
What will never be supported: (never say never, as we say in France)
  - Super FX
  - DSP1

But other interesting features will be implemented instead:
  - Debugger
  - Tiles/Sprites editor(designe your own sprites with the pen !!!)
  - Memory, Palette viewer
  - Cheats editor, Cheats search
  - can read zipped ROMs.(only one ROM by zip file)

  Compatibility is still low: most games launch, but only a part
  of them are really playable.

  5. Misc

  You can ask me question (not about SNES ROMs of course) at:
  archeide@yahoo.com or snemul@free.fr
  I don't have a lot of free time, so don't expect that i will
  answer to all your questions.
  
  A web site exists, you can get the latest version of SNEmulDS at:
  http://snemul.free.fr/ds/

  If you are interested in working on this project, please tell me!
  I am especially interested in people who would like to work on a GUI for
  the subscreen! (But beware, you'll just have 48kbytes of VRAM for you :p)
  And if you have knowledge in ARM assembler and DS low level programming,
  i'm also interested ;)
  

  6. FAQ

  - Why SNEmulDS doesn't have sound ?
  
  My first priority is to make a good emulator with high level
  of compatiblity. I will work on sound support in next versions.
  There are already very good emulators with sound support like
  Snezzy DS, take a look for them!

  - Why SNEmulDS is so slow ?

    Currently, SNEmulDS is entirely in C. And as i am a newcomer in the
    DS developpement world, i don't master all the optimizations
    (like how to put a piece of code in IWRAM, for instance!)
    My first priority is still to make a "easy-to-maintain" emulator,
    so i will try to translate only critical parts in ASM (like the 
    CPU of course).
    Anyway expect a lot of improvements in the future!

  - How can i speed up SNEmulDS ?
  
    Make sure you are in "No vblank" mode in Options, and that "Speed hack"
    is enabled.

  - My graphic are all corrupted, what can i do ?
 
    Go in the debug mode which will clear the GFX buffers.
    Try to enable "Wait for Vblank" in the options and replay
    your game

  - My game doesn't even start! Your emu sucks!?
  
    Disable "Speed hack" in Options menu.
  
  - I lost all my game progress !!! I will kill you!
 
    Don't forget that SNEmulDS doesn't save SRAM automatically.
    You have to tap "Save SRAM" in the main menu to save your game progress.
    You can also use save states to save your progress.

  - Save states doesn't work :(

    I'm sorry but the current FAT librairies doesn't support
    saving for all cards. Use of DS SRAM is a future feature
    that may be help you (short: wait for next release).
    TO BE PEACEFUL: writing to card is not perfect, and your saved state
    can be corrupted, so you should save your game in several slots!!

  - How i can use my own ZSNES/SNES9X save states ?
 
    I think I will make a ZST->SML translator in the first time...
    In the future, there will be direct compatibility with ZSNES
    format. (short: wait!)
    Anyway, you should be able to use your ".SRM" created by
    other emus. Be sure it is not compressed. Simply put the
    SRM file in the SNES directory, along with your ROM.

  - Why do you not support "packing", my card/flasher is not
    working with SNEmulDS?
   
    SNEmul philosophy is "easy to use".
    That means no pre-script, no packer, no patches, etc. 
    You put your ROMS, SRAMs, save states directly in your SNES directory and that's all.
    Moreover, by using a "real" filesytem development of specific features is much easier
    (especially large save states, SRAM saving, very large ROMs (4Mo) and  multi ROMs support).
    I will surely work on a "packed" version later, but this is not 
    my first goal.

  8. Credits
  
  Old good SNEmul emulator engine was made with the help of:

  The Teach        - Thanks for the great help
  Trepalium        - The TrepSNES sources helped us a lot...
  Y0shi            - Thanks for all your docs and your support...
  (and all the other guys who made SNES docs)
  Pan/ANTHROX      - They made the MODE 7 demo
  zsKnight         - Thanks for the great help
  Lestat           - Thanks for your help
  ZoOp             - Thanks for LoROM/HiROM informations, and beta testing
  Lord ESNES       - Thanks for your mails

  Special credits to :
  ------------------
  Jerremy Koot, Gary Handerson, Lestat, _Demo_... and all the other SNES9X
  contributors.
  The SNES9X sources have helped and will help us a lot!
  Thanks to Spark for his help
  Thanks to bubble2k for his advices
  Thanks to wraggy from DCEMU for translating my message and make this
  emulator alive again!

  Greets and good luck for all the other authors of SNES emulator:
  ZSNES, SNES9X, SNEeSe, NLKE, SnezzyDS, SnesDs....
  
  SNEmulDS use the chrism FAT library modified by REIN, devkitpro,
  and libds! Thanks for all their work for the DS developper community.
  
