Super Nintendo/Super Famicom emulator for the DSTWO
Go to file
2013-02-02 01:38:32 -05:00
CATSFC Add an option that controls which element should be more fluid, per game: video or audio. 2013-02-01 20:09:24 -05:00
source Correct overzealous detection of buffer overruns. It was making the sound crackle constantly, like a record player. Most audible with earphones. 2013-02-02 01:37:16 -05:00
.gitignore Add the experimental branch's files to .gitignore. 2013-02-02 01:38:32 -05:00
catsfc.bmp Image modifications. 2012-12-30 17:00:24 -05:00
catsfc.ini first commit 2011-03-05 21:39:25 -05:00
copyright GUI picture overhaul. 2013-01-18 21:36:59 -05:00
installation.txt first commit 2011-03-05 21:39:25 -05:00
Makefile Remove unneeded volatility, enabling more optimisations. Sound volatility is #define'd away, GUI volatility is simply removed. 2013-01-19 20:28:17 -05:00
README.md Release 1.25. 2013-02-01 20:47:46 -05:00
source.txt source.txt: Merged to ShadauxCat's repository. Update the source link. 2012-12-30 16:22:43 -05:00
version first commit 2011-03-05 21:39:25 -05:00

CATSFC version 1.25, 2013-02-01

A Super Nintendo emulator for the Supercard DSTWO.

Based on:

  • Snes9x 1.43, by the Snes9x team (with research by the ZSNES folks, anomie, zsKnight, etc.)
  • NDSSFC 1.06, by the Supercard team (porting to the MIPS processor)
  • BAGSFC, by BassAceGold (improving over NDSSFC)
  • CATSFC, by ShadauxCat (improving over BAGSFC)

Compiling

(If you downloaded the plugin ready-made, you can safely skip this section. In this case, go to # Installing.)

Compiling CATSFC is best done on Linux. Make sure you have access to a Linux system to perform these steps.

The DS2 SDK

To compile CATSFC, you need to have the Supercard team's DS2 SDK. The Makefile expects it at /opt/ds2sdk, but you can move it anywhere, provided that you update the Makefile's DS2SDKPATH variable to point to it.

For best results, download version 0.13 of the DS2 SDK, which will have the MIPS compiler (gcc), extract it to /opt/ds2sdk, follow the instructions, then download version 1.2 of the DS2 SDK and extract its files into opt/ds2sdk, overwriting version 0.13.

The MIPS compiler (gcc)

You also need the MIPS compiler from the DS2 SDK. The Makefile expects it at /opt/mipsel-4.1.2-nopic, but you can move it anywhere, provided that you update the Makefile's CROSS variable to point to it.

Making the plugin

To make the plugin, catsfc.plg, use the cd command to change to the directory containing your copy of the CATSFC source, then type make clean; make. catsfc.plg should appear in the same directory.

Installing

To install the plugin to your storage card after compiling it, copy catsfc.plg, catsfc.ini and catsfc.bmp to the card's _dstwoplug directory. Then, copy the source directory's CATSFC subdirectory to the root of the card.

Cheats

The format accepted by the "Load a cheat file" function is equivalent to the old format used in Mightymo's BSNES Cheat Code Pack.

  1. Download the BSNES Cheat Code Pack at http://www.mightymo.net/downloads.html. It will be a zip archive.
  2. Open the zip file, with WinZip, WinRAR or the built-in zip extension in the operating system on your computer.
  3. In the zip file, open the folder called BSNES Cheat Code Pack, then the one called BSNES v0.51-0.74 Cheat Code Pack.
  4. Open your microSD card's CATSFC folder, then descend into gamecht.
  5. Drag the cheat code files from the zip archive to the card's gamecht folder.
  6. In the card's gamecht directory, create two folders. Name the first one a-m and the second one n-z. Drag the cheat files from the games whose name starts with A to M into a-m and the rest into n-z.

This is because the directory display does not handle more than 512 files.

To add cheats to the menu in a game, first load the game, then use the Cheats menu's "Load a cheat file" option.

Frame skipping

In the Video & audio menu, the Frame skipping option allows you to select a number of frames to skip between rendered frames.

  • Setting this to 0 will show every single frame, but this will slow down the game considerably, as the DSTWO would only have enough processing power to emulate and render a few frames per second. It has enough power to emulate all frames and render some, though.
  • Setting this to 10 will skip 10 frames and render one, but this will severely desynchronise the audio. You will also find yourself unable to perform actions during the correct frame with the controller.
  • Setting this to - (Keep up with the game) will make the emulator try to render the game at its correct speed, dropping frames as needed (up to 8).

It is recommended to start with frame skipping 4 (Show 1 frame every 5) and go to 3 or 2 if the game doesn't run with major slowdowns with them. If you don't like the slowdowns, return to frame skipping 4 or -.

Fluidity

Fluidity is an option you can find under the Video & audio menu in a game. By default, video fluidity is preferred over audio fluidity in games.

  • Preferring video fluidity makes audio skip certain notes, up to 23 milliseconds, in order to render more video. In many games, this difference is not audible. Use this option if you want to play games that require precise controls or fluid imagery more than precise audio emulation. You can also use this option when watching game introductions, endings and cutscenes.
  • Preferring audio fluidity makes video skip certain images, up to 166 milliseconds, in order to render audio closer to 32,000 times per second. Use this option if you want to play games mainly for their soundtracks, or in a game's sound test mode. You can also use this option to experiment with the green berry glitch in Super Mario World that makes TIME go over and under 100 units constantly and makes the music play very fast.

Hotkeys

You can set buttons to press to perform certain actions. For each action, there is a global hotkey and a game-specific override hotkey. You might, for example, want to have the R button bound to Temporary fast-forward, but a specific game uses R for something important. In that case, you can set the global hotkey to R and make an override with X for that game.

Hotkeys are sent to the current game as well as to their corresponding action. The criterion for a hotkey is met when at least all of its buttons are held. Additional keys are sent to the game and can trigger another hotkey. For example, setting a hotkey to L and another to R+X, then pressing L+R+X+Y will trigger both and send L+R+X+Y to the game.

Available actions are:

  • Go to main menu. In addition to tapping the Touch Screen to return to the main menu, you can set a hotkey to do the same.
  • Temporary fast-forward. While this hotkey is held, the fast-forward option will be forced on.
  • Toggle sound. Each time this hotkey is held, the sound will be disabled if it's currently enabled, and vice-versa.

The font

The font used by CATSFC is now similar to the Pictochat font. To modify it, see source/font/README.txt.

Translations

Translations for CATSFC may be submitted to the author(s) under many forms, one of which is the Github pull request. To complete a translation, you will need to do the following:

  • Open CATSFC/system/language.msg.
  • Copy what's between STARTENGLISH and ENDENGLISH and paste it at the end of the file.
  • Change the tags. For example, if you want to translate to German, the tags will become STARTGERMAN and ENDGERMAN.
  • Translate each of the messages, using the lines starting with #MSG_ as a guide to the context in which the messages will be used.
  • Edit source/nds/message.h. Find enum LANGUAGE and add the name of your language there. For the example of German, you would add this at the end of the list:
      ,
      GERMAN
    
  • Still in source/nds/message.h, just below enum LANGUAGE, you will find extern char* lang[ some number ]. Add 1 to that number.
  • Edit source/nds/gui.c. Find char *lang[ some number ] =. Add the name of your language, in the language itself. For the example of German, you would add this at the end of the list:
      ,
      "Deutsch"
    
  • Still in source/nds/gui.c, find char* language_options[], which is below the language names. Add an entry similar to the others, with the last number plus 1. For example, if the last entry is , (char *) &lang[2], yours would be , (char *) &lang[3].
  • Still in source/nds/gui.c, find case CHINESE_SIMPLIFIED. Copy the lines starting at the case and ending with break, inclusively. Paste them before the }. Change the language name and tags. For the example of German, you would use:
      case GERMAN:
      	strcpy(start, "STARTGERMAN");
      	strcpy(end, "ENDGERMAN");
      	break;
    

Compile again, copy the plugin and your new language.msg to your card under CATSFC/system, and you can now select your new language in CATSFC!