{"id":23136634,"url":"https://github.com/optiroc/libsfx","last_synced_at":"2025-04-09T20:08:49.984Z","repository":{"id":32993889,"uuid":"36622844","full_name":"Optiroc/libSFX","owner":"Optiroc","description":"Super Nintendo (SNES) development framework","archived":false,"fork":false,"pushed_at":"2024-04-01T17:47:29.000Z","size":1118,"stargazers_count":207,"open_issues_count":1,"forks_count":14,"subscribers_count":19,"default_branch":"master","last_synced_at":"2025-04-09T20:08:44.411Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Assembly","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Optiroc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-05-31T21:24:50.000Z","updated_at":"2025-03-27T12:23:12.000Z","dependencies_parsed_at":"2024-04-01T18:59:43.197Z","dependency_job_id":null,"html_url":"https://github.com/Optiroc/libSFX","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Optiroc%2FlibSFX","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Optiroc%2FlibSFX/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Optiroc%2FlibSFX/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Optiroc%2FlibSFX/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Optiroc","download_url":"https://codeload.github.com/Optiroc/libSFX/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248103873,"owners_count":21048245,"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-12-17T12:21:41.872Z","updated_at":"2025-04-09T20:08:49.963Z","avatar_url":"https://github.com/Optiroc.png","language":"Assembly","funding_links":[],"categories":[],"sub_categories":[],"readme":"# libSFX\nA Super Nintendo assembler development framework featuring:\n\n* Basic system runtime for initialization and interrupt handling\n* 65816 register size tracking macros to minimize rep/sep instructions (and mental overhead)\n* Full set of memcpy/memset routines for efficiently transferring data to different parts of the system\n* Some useful data structures with allocation and accessor macros (FIFO and FILO are currently implemented)\n* S-SMP communication and SPC playing routines.\n* LZ4 decompression\n* Mouse driver\n* Graphics conversion via [SuperFamiconv](https://github.com/Optiroc/SuperFamiconv)\n* BRR audio encoding using [BRRtools](https://github.com/Optiroc/BRRtools)\n* ROM image validation via [SuperFamicheck](https://github.com/Optiroc/SuperFamicheck)\n* Sublime Text [syntax definitions](./extras/SublimeText)\n\nDocumentation available at [optiroc.github.io/libSFX](https://optiroc.github.io/libSFX).\n\nlibSFX is developed by David Lindecrantz and distributed under the terms of the [MIT license](./LICENSE).\n\n\n## dependencies\nA C/C++ toolchain, make, git and a decent command line interface.  \n\nUnix-like (Mac, Linux, etc.) systems should be ready to go out of the box. If you're running Windows the best option is to install [Cygwin](https://cygwin.com/install.html) and make sure you include the `git` and `mingw64` toolchain (`mingw64-x86_64-binutils`, `mingw64-x86_64-gcc-core` and `mingw64-x86_64-gcc-g++`) packages.\n\n\n## building\nFirst you need to build the bundled tools, which are included as git submodules. Simply run `make` from the libSFX root path to initialize the submodules and build the tools.\n\nNow the toolchain is in place and you should be able to run `make` from any of the example directories to assemble the source files and link a Super Nintendo ROM image (*.sfc).\n\n\n## setting up a project\nFor the most basic setup, copy `examples/Template` to a location of your liking. Then edit `Makefile` and make sure that `libsfx_dir` points to the libSFX root directory.\n\nFor project customization – for example extending the ROM size, adding SRAM or special code segments, or changing the default stack and scratchpad sizes – the build script looks for two files in the project directory; `libSFX.cfg` and `Map.cfg`. If these aren't found (like in the Template project), the defaults inside `$(libsfx_dir)/include/Configurations` are used.\n\nTo override the defaults, simply copy these two files into your project directory and edit them to your liking. In [include/Configurations](./include/Configurations/) there's a few additional Map.cfg examples. You may also check out the [example](./examples/SixteenMegaPower) [projects](./examples/SuperFX) to see how a project can be customized.\n\n\n## acknowledgments\nlibSFX includes the following code and snippets:\n\n* SPC-700 assembler for ca65 and S-SMP transfer routines by [Blargg](http://blargg.8bitalley.com)\n* GSU assembler for ca65 by [ARM9](https://github.com/ARM9/casfx)\n* ca65 define/undefine macros by [Movax12](http://forums.nesdev.com/memberlist.php?mode=viewprofile\u0026u=4680)\n\n\n## resources\n* [fullsnes](http://problemkaputt.de/fullsnes.htm) - comprehensive SNES reference\n* [ca65 users guide](https://cc65.github.io/doc/ca65.html)\n* [SNESdev forum](http://forums.nesdev.com/viewforum.php?f=12)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foptiroc%2Flibsfx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foptiroc%2Flibsfx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foptiroc%2Flibsfx/lists"}