{"id":13691240,"url":"https://github.com/Optiroc/SuperFamiconv","last_synced_at":"2025-05-02T15:31:35.969Z","repository":{"id":33416700,"uuid":"37061949","full_name":"Optiroc/SuperFamiconv","owner":"Optiroc","description":"Flexible and composable tile graphics converter supporting Super Nintendo, Game Boy, Game Boy Color, Game Boy Advance, Mega Drive, Master System, Game Gear, PC Engine and WonderSwan formats.","archived":false,"fork":false,"pushed_at":"2025-02-19T06:57:59.000Z","size":1105,"stargazers_count":164,"open_issues_count":22,"forks_count":25,"subscribers_count":15,"default_branch":"main","last_synced_at":"2025-04-05T02:02:28.704Z","etag":null,"topics":["console-development","graphics","tool"],"latest_commit_sha":null,"homepage":"","language":"C++","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-06-08T11:04:33.000Z","updated_at":"2025-03-28T13:52:50.000Z","dependencies_parsed_at":"2024-03-09T00:26:50.304Z","dependency_job_id":"cf711679-6478-4589-90d7-104ce0874c2a","html_url":"https://github.com/Optiroc/SuperFamiconv","commit_stats":null,"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Optiroc%2FSuperFamiconv","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Optiroc%2FSuperFamiconv/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Optiroc%2FSuperFamiconv/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Optiroc%2FSuperFamiconv/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Optiroc","download_url":"https://codeload.github.com/Optiroc/SuperFamiconv/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252062851,"owners_count":21688608,"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":["console-development","graphics","tool"],"created_at":"2024-08-02T17:00:42.323Z","updated_at":"2025-05-02T15:31:35.963Z","avatar_url":"https://github.com/Optiroc.png","language":"C++","funding_links":[],"categories":["Software Development","Software development","软件开发","🔧 Middleware \u0026 SDKs"],"sub_categories":["Tools","工具","Nintendo SDKs \u0026 Hardware"],"readme":"# superfamiconv\nA tile graphics converter with flexible and composable command line options.\n\nDeveloped by David Lindecrantz and distributed under the terms of the [MIT license](./LICENSE).\n\n\n## dependencies\nA C++20 capable compiler.\n\n## building\nUse CMake to generate a build environment, or simply type `make` which will run CMake for you.\n\n## operation\n\n\tsuperfamiconv \u003ccommand\u003e [\u003coptions\u003e]\n\nWhere `\u003ccommand\u003e` is either `palette`, `tiles`, `map` or left blank for a simpler \"short hand\" operation.\n\nIn short hand mode, the following options are available:\n\n\t-i --in-image         Input: image\n\t-p --out-palette      Output: palette data\n\t-t --out-tiles        Output: tile data\n\t-m --out-map          Output: map data\n\t--out-palette-image   Output: palette image\n\t--out-palette-act     Output: photoshop palette\n\t--out-tiles-image     Output: tiles image\n\t--out-scaled-image    Output: image scaled to destination colorspace\n\n\t-M --mode             Mode \u003cdefault: snes\u003e\n\t-B --bpp              Bits per pixel\n\t-W --tile-width       Tile width\n\t-H --tile-height      Tile height\n\t-R --no-remap         Don't remap colors \u003cswitch\u003e\n\t-D --no-discard       Don't discard redundant tiles \u003cswitch\u003e\n\t-F --no-flip          Don't discard using tile flipping \u003cswitch\u003e\n\t-T --tile-base-offset Tile base offset for map data\n\t-S --sprite-mode      Apply sprite output settings \u003cswitch\u003e\n\t--color-zero          Set color #0\n\n\t-v --verbose          Verbose logging \u003cswitch\u003e\n\t-l --license          Show licenses \u003cswitch\u003e\n\t-h --help             Show this help \u003cswitch\u003e\n\nThis command mode accepts one image (either indexed, RGB or RGBA mode PNG – which are the formats supported for all image inputs) and outputs palette, tile and/or map data.\n\nThe `mode` option, which is common for all commands, affects the color space handling and binary output format. It takes one of the following arguments:\n\n* `gb` - Game Boy\n* `gba` - Game Boy Advance\n* `gba_affine` - Game Boy Advance (affine background data)\n* `gbc` - Game Boy Color\n* `gg` - Game Gear\n* `md` - Mega Drive\n* `ngp` - Neo Geo Pocket\n* `ngpc` - Neo Geo Pocket Color\n* `pce` - PC Engine\n* `pce_sprite` - PC Engine (sprite data)\n* `sms` - Master System\n* `snes` - Super Nintendo\n* `snes_mode7` - Super Nintendo (mode 7 background data)\n* `ws` - WonderSwan\n* `wsc` - WonderSwan Color (planar)\n* `wsc_packed` - WonderSwan Color (packed)\n\nSensible default options are applied, and differ depending on selected mode.\n\nExample:\n\n\tsuperfamiconv -v --in-image snes.png --out-palette snes.palette --out-tiles snes.tiles --out-map snes.map --out-tiles-image tiles.png\n\tLoaded image from \"snes.png\" (256x224px, indexed color)\n\tMapping optimized palette (16x16 entries)\n\tSetting color zero to #505050\n\tCreated palette with 24 colors [16,8]\n\tCreated optimized tileset with 156 entries (discarded 740 redudant tiles)\n\tMapping 896 8x8px tiles from image\n\tSaved native palette data to \"snes.palette\"\n\tSaved native tile data to \"snes.tiles\"\n\tSaved native map data to \"snes.map\"\n\tSaved tileset image to \"tiles.png\"\n\n\nFor more flexibility use the sub commands, which have the following options respectively:\n\n**superfamiconv palette**\n\n\tUsage: superfamiconv palette [\u003coptions\u003e]\n\t  -i --in-image             Input: image\n\t  -d --out-data             Output: native data\n\t  -a --out-act              Output: photoshop palette\n\t  -j --out-json             Output: json\n\t  -o --out-image            Output: image\n\n\tSettings:\n\t  -M --mode                 Mode \u003cdefault: snes\u003e\n\t  -P --palettes             Number of subpalettes\n\t  -C --colors               Colors per subpalette\n\t  -W --tile-width           Tile width\n\t  -H --tile-height          Tile height\n\t  -R --no-remap             Don't remap colors \u003cswitch\u003e\n\t  -S --sprite-mode          Apply sprite output settings \u003cswitch\u003e\n\t  -0 --color-zero           Set color #0\n\n\t  -v --verbose              Verbose logging \u003cswitch\u003e\n\t  -h --help                 Show this help \u003cswitch\u003e\n\n\n**superfamiconv tiles**\n\n\tUsage: superfamiconv tiles [\u003coptions\u003e]\n\t  -i --in-image             Input: image\n\t  -n --in-data              Input: native data\n\t  -p --in-palette           Input: palette (native/json)\n\t  -d --out-data             Output: native data\n\t  -o --out-image            Output: image\n\n\tSettings:\n\t  -M --mode                 Mode \u003cdefault: snes\u003e\n\t  -B --bpp                  Bits per pixel\n\t  -W --tile-width           Tile width\n\t  -H --tile-height          Tile height\n\t  -R --no-remap             Don't remap colors \u003cswitch\u003e\n\t  -D --no-discard           Don't discard redundant tiles \u003cswitch\u003e\n\t  -F --no-flip              Don't discard using tile flipping \u003cswitch\u003e\n\t  -S --sprite-mode          Apply sprite output settings \u003cswitch\u003e\n\t  -T --max-tiles            Maximum number of tiles\n\n\t  -v --verbose              Verbose logging \u003cswitch\u003e\n\t  -h --help                 Show this help \u003cswitch\u003e\n\n\n**superfamiconv map**\n\n\tUsage: superfamiconv map [\u003coptions\u003e]\n\t  -i --in-image             Input: image\n\t  -p --in-palette           Input: palette (json/native)\n\t  -t --in-tiles             Input: tiles (native)\n\t  -d --out-data             Output: native data\n\t  -j --out-json             Output: json\n\t  -7 --out-m7-data          Output: interleaved map/tile data (snes_mode7)\n\t  --out-gbc-bank            Output: banked map data (gbc)\n\n\tSettings:\n\t  -M --mode                 Mode \u003cdefault: snes\u003e\n\t  -B --bpp                  Bits per pixel\n\t  -W --tile-width           Tile width\n\t  -H --tile-height          Tile height\n\t  -F --no-flip              Don't use flipped tiles \u003cswitch\u003e\n\t  -T --tile-base-offset     Tile base offset for map data\n\t  -P --palette-base-offset  Palette base offset for map data\n\t  --map-width               Map width (in tiles)\n\t  --map-height              Map height (in tiles)\n\t  --split-width             Split output into columns of \u003ctiles\u003e width\n\t  --split-height            Split output into rows of \u003ctiles\u003e height\n\t  --column-order            Output data in column-major order \u003cswitch\u003e\n\n\t  -v --verbose              Verbose logging \u003cswitch\u003e\n\t  -h --help                 Show this help \u003cswitch\u003e\n\n\n## future work\n* Better error diagnostics\n* Better documentation and example usage\n\n## acknowledgments\nsuperfamiconv uses the following libraries:\n\n* [{fmt}](http://fmtlib.net) by Victor Zverovich\n* [JSON for Modern C++](https://github.com/nlohmann/json) by Niels Lohmann\n* [LodePNG](http://lodev.org/lodepng/) by Lode Vandevenne\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FOptiroc%2FSuperFamiconv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FOptiroc%2FSuperFamiconv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FOptiroc%2FSuperFamiconv/lists"}