{"id":13514260,"url":"https://github.com/ShadauxCat/CATSFC","last_synced_at":"2025-03-31T03:30:19.627Z","repository":{"id":45243263,"uuid":"1445115","full_name":"ShadauxCat/CATSFC","owner":"ShadauxCat","description":"Super Nintendo/Super Famicom emulator for the DSTWO","archived":false,"fork":false,"pushed_at":"2021-12-28T14:07:59.000Z","size":24875,"stargazers_count":63,"open_issues_count":13,"forks_count":56,"subscribers_count":16,"default_branch":"master","last_synced_at":"2024-11-01T17:37:32.347Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ShadauxCat.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2011-03-06T02:24:17.000Z","updated_at":"2024-07-17T07:44:40.000Z","dependencies_parsed_at":"2022-09-06T09:40:10.613Z","dependency_job_id":null,"html_url":"https://github.com/ShadauxCat/CATSFC","commit_stats":null,"previous_names":[],"tags_count":27,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ShadauxCat%2FCATSFC","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ShadauxCat%2FCATSFC/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ShadauxCat%2FCATSFC/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ShadauxCat%2FCATSFC/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ShadauxCat","download_url":"https://codeload.github.com/ShadauxCat/CATSFC/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246413377,"owners_count":20773053,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T05:00:50.767Z","updated_at":"2025-03-31T03:30:19.062Z","avatar_url":"https://github.com/ShadauxCat.png","language":"C","funding_links":[],"categories":["Home Game Console Emulators","Super Nintendo Entertainment System/Super Famicom"],"sub_categories":["Nintendo"],"readme":"CATSFC version 1.36, 2013-06-16\r\n\r\nA Super Nintendo emulator for the Supercard DSTWO.\r\n\r\nBased on:\r\n* Snes9x 1.43, by the Snes9x team (with research by the ZSNES folks, anomie,\r\n  zsKnight, etc.)\r\n* NDSSFC 1.06, by the Supercard team (porting to the MIPS processor)\r\n* BAGSFC, by BassAceGold (improving over NDSSFC)\r\n* CATSFC, by ShadauxCat and Nebuleon (improving over BAGSFC)\r\n\r\nContains:\r\n* Language files written by the GBAtemp community: Dutch by Aeter, French\r\n  by Nebuleon, German by SignZ, Portuguese (Brazilian) by Diego Liberal,\r\n  Spanish by Boriar\r\n* Language files written by GitHub users: Italian by alexinfurs\r\n\r\n# Installing\r\n\r\n(If you got the source code and want to compile it, see the `Compiling` section\r\n at the end of the file.)\r\n\r\nTo install the plugin to your storage card, copy `catsfc.plg`, `catsfc.ini` and\r\n`catsfc.bmp` from the release archive to the card's `_dstwoplug` directory.\r\nThen, copy the `CATSFC` subdirectory to the root of the card.\r\n\r\n# Cheats\r\n\r\nThe format accepted by the \"Load a cheat file\" function is equivalent to the\r\nold format used in Mightymo's BSNES Cheat Code Pack.\r\n\r\n1. Download the BSNES Cheat Code Pack at\r\n   \u003chttp://www.mightymo.net/downloads.html\u003e. It will be a zip archive.\r\n2. Open the zip file, with WinZip, WinRAR or the built-in zip extension in\r\n   the operating system on your computer.\r\n3. In the zip file, open the folder called *BSNES Cheat Code Pack*, then\r\n   the one called *BSNES v0.51-0.74 Cheat Code Pack*.\r\n4. Open your storage card's CATSFC folder, then descend into gamecht.\r\n5. Drag the cheat code files from the zip archive to the card's gamecht\r\n   folder.\r\n\r\nTo add cheats to the menu in a game, first load the game, then use the Cheats\r\nmenu's \"Load a cheat file\" option.\r\n\r\n# Frame skipping\r\n\r\nIn the Video \u0026 audio menu, the **Frame skipping** option allows you to select\r\na number of frames to skip between rendered frames.\r\n\r\nAs of version 1.29, the default is - (Keep up with the game). For most games,\r\nthis setting keeps video and audio fluid, without the sudden slowdowns of\r\nprevious versions when many sprites fill the screen. The DS controller buttons\r\nare also responsive at this setting.\r\n\r\nFor some games, you may need to adjust frame skipping.\r\n* If a game runs at 5 frames per second, like *Yoshi's Island*,\r\n  *Kirby Super Star*, *Star Fox* or *Super Mario RPG*, setting frame skipping\r\n  to 1 will allow you to jump, move or shoot at the right times.\r\n* If you want to show more frames per second in a game that already shows 20,\r\n  setting frame skipping to 1 or 0 will cause more frames to appear,\r\n  but your DS button input may stop responding for 2 entire seconds every so\r\n  often. The audio may also be stretched. (This is similar to NDSGBA.)\r\n* Setting this to 10 will skip 10 frames and render one, but this will\r\n  severely desynchronise the audio. You will also find yourself unable to\r\n  perform actions during the correct frame with the DS buttons. It is advised\r\n  to set frame skipping to the lowest value with which you can play a game.\r\n\r\n# Fluidity\r\n\r\nFluidity is an option you can find under the Video \u0026 audio menu in a game.\r\nBy default, video fluidity is preferred over audio fluidity in games.\r\n\r\n* Preferring video fluidity makes audio skip certain notes, up to\r\n  23 milliseconds, in order to render more video. In many games, this\r\n  difference is not audible, but you may hear certain audio glitches if a game\r\n  depends highly on timing for its audio.\r\n  Use this option if you want to play games that require fluid imagery more\r\n  than precise audio emulation. You can also use this option when watching game\r\n  introductions, endings and cutscenes.\r\n* Preferring audio fluidity makes video skip certain images, up to\r\n  46 milliseconds, in order to render audio closer to 32,000 times per second.\r\n  Use this option if you want to play games mainly for their soundtracks, or in\r\n  a game's sound test mode. You can also use this option to experiment with the\r\n  green berry glitch in Super Mario World that makes TIME go over and under 100\r\n  units constantly and makes the music play very fast.\r\n\r\n# Hotkeys\r\n\r\nYou can set buttons to press to perform certain actions. For each action,\r\nthere is a *global hotkey* and a *game-specific override hotkey*. You might,\r\nfor example, want to have the R button bound to Temporary fast-forward, but\r\na specific game uses R for something important. In that case, you can set the\r\nglobal hotkey to R and make an override with X for that game.\r\n\r\nHotkeys are sent to the current game as well as to their corresponding action.\r\nThe criterion for a hotkey is met when **at least** all of its buttons are\r\nheld. Additional keys are sent to the game and can trigger another hotkey.\r\nFor example, setting a hotkey to L and another to R+X, then pressing L+R+X+Y\r\nwill trigger both and send L+R+X+Y to the game.\r\n\r\nAvailable actions are:\r\n* Go to main menu. In addition to tapping the Touch Screen to return to\r\n  the main menu, you can set a hotkey to do the same.\r\n* Temporary fast-forward. While this hotkey is held, the fast-forward option\r\n  will be forced on.\r\n* Toggle sound. Each time this hotkey is held, the sound will be disabled if\r\n  it's currently enabled, and vice-versa.\r\n* Save state #1. Each time this hotkey is held, saved state #1 will be written,\r\n  without confirmation if it exists.\r\n* Load state #1. Each time this hotkey is held, saved state #1 will be loaded.\r\n* Toggle full-screen. Each time this hotkey is held:\r\n  * If the current display mode *is* a full-screen mode, then the display mode\r\n    is set to 3 (Middle, square pixels) and the top and bottom will be cut off.\r\n  * If the current display mode *is not* a full-screen mode, then the display\r\n    mode is set to 4 (Entire screen, smoothed).\r\n\r\n# The font\r\n\r\nThe font used by CATSFC is similar to the Pictochat font. To modify it,\r\nsee `source/font/README.txt`.\r\n\r\n# Translations\r\n\r\nTranslations for CATSFC may be submitted to the author(s) under many forms,\r\none of which is the Github pull request. To complete a translation, you will\r\nneed to do the following:\r\n\r\n* Open `CATSFC/system/language.msg`.\r\n* Copy what's between `STARTENGLISH` and `ENDENGLISH` and paste it at the end\r\n  of the file.\r\n* Change the tags. For example, if you want to translate to Japanese, the tags\r\n  will become `STARTJAPANESE` and `ENDJAPANESE`.\r\n* Translate each of the messages, using the lines starting with `#MSG_` as a\r\n  guide to the context in which the messages will be used.\r\n\r\nIf you are not comfortable editing C code, or cannot compile CATSFC after your\r\nchanges, you may instead test your translation in the English block and submit\r\nit. That allows you to look for message length issues and to align the option\r\nnames and values to your liking with spaces.\r\n\r\nIf you wish to also hook your language into the user interface, you will need\r\nto do the following:\r\n\r\n* Edit `source/nds/message.h`. Find `enum LANGUAGE` and add the name of your\r\n  language there. For the example of Japanese, you would add this at the end of\r\n  the list:\r\n  ```\r\n\t,\r\n\tJAPANESE\r\n  ```\r\n* Still in `source/nds/message.h`, just below `enum LANGUAGE`, you will find\r\n  `extern char* lang[` *some number* `]`. Add 1 to that number.\r\n* Edit `source/nds/gui.c`. Find `char *lang[` *some number* `] =`.\r\n  Add the name of your language, in the language itself. For the example of\r\n  Japanese, you would add this at the end of the list:\r\n  ```\r\n\t,\r\n\t\"日本語\"\r\n  ```\r\n* Still in `source/nds/gui.c`, find `char* language_options[]`, which is below\r\n  the language names. Add an entry similar to the others, with the last number\r\n  plus 1. For example, if the last entry is `, (char *) \u0026lang[7]`, yours would\r\n  be `, (char *) \u0026lang[8]`.\r\n* Still in `source/nds/gui.c`, find `case CHINESE_SIMPLIFIED`. Copy the lines\r\n  starting at the `case` and ending with `break`, inclusively. Paste them\r\n  before the `}`. Change the language name and tags. For the example of\r\n  Japanese, you would use:\r\n  ```\r\n\tcase JAPANESE:\r\n\t\tstrcpy(start, \"STARTJAPANESE\");\r\n\t\tstrcpy(end, \"ENDJAPANESE\");\r\n\t\tbreak;\r\n  ```\r\n\r\nCompile again, copy the plugin and your new `language.msg` to your card\r\nunder `CATSFC/system`, and you can now select your new language in CATSFC!\r\n\r\n# Compiling\r\n\r\nCompiling CATSFC is best done on Linux. Make sure you have access to a Linux\r\nsystem to perform these steps.\r\n\r\n## The DS2 SDK\r\nTo compile CATSFC, you need to have the Supercard team's DS2 SDK.\r\nThe Makefile expects it at `/opt/ds2sdk`, but you can move it anywhere,\r\nprovided that you update the Makefile's `DS2SDKPATH` variable to point to it.\r\n\r\nFor best results, download version 0.13 of the DS2 SDK, which will have the\r\nMIPS compiler (`gcc`), extract it to `/opt/ds2sdk`, follow the instructions,\r\nthen download version 1.2 of the DS2 SDK and extract its files into\r\n`opt/ds2sdk`, overwriting version 0.13.\r\n\r\nAdditionally, you will need to add the updated `zlib`, DMA\r\n(Direct Memory Access) and filesystem access routines provided by BassAceGold\r\nand recompile `libds2a.a`. To do this:\r\n\r\n\u003e sudo rm -r /opt/ds2sdk/libsrc/{console,core,fs,key,zlib,Makefile} /opt/ds2sdk/include\r\n\u003e sudo cp -r sdk-modifications/{libsrc,include} /opt/ds2sdk\r\n\u003e sudo chmod -R 600 /opt/ds2sdk/{libsrc,include}\r\n\u003e sudo chmod -R a+rX /opt/ds2sdk/{libsrc,include}\r\n\u003e cd /opt/ds2sdk/libsrc\r\n\u003e sudo rm libds2a.a ../lib/libds2a.a\r\n\u003e sudo make\r\n\r\n## The MIPS compiler (`gcc`)\r\nYou also need the MIPS compiler from the DS2 SDK.\r\nThe Makefile expects it at `/opt/mipsel-4.1.2-nopic`, but you can move it\r\nanywhere, provided that you update the Makefile's `CROSS` variable to point to\r\nit.\r\n\r\n## Making the plugin\r\nTo make the plugin, `catsfc.plg`, use the `cd` command to change to the\r\ndirectory containing your copy of the CATSFC source, then type\r\n`make clean; make`. `catsfc.plg` should appear in the same directory.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FShadauxCat%2FCATSFC","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FShadauxCat%2FCATSFC","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FShadauxCat%2FCATSFC/lists"}