{"id":23661377,"url":"https://github.com/city41/ereader-tools","last_synced_at":"2026-04-02T15:01:56.116Z","repository":{"id":269735463,"uuid":"907608221","full_name":"city41/ereader-tools","owner":"city41","description":"E-Reader development tools","archived":false,"fork":false,"pushed_at":"2025-10-09T14:26:17.000Z","size":971,"stargazers_count":8,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-11T05:55:43.102Z","etag":null,"topics":["ereader","gba-development","homebrew","nintendo","retrogamedev"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/city41.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-12-24T01:39:18.000Z","updated_at":"2025-10-09T14:26:18.000Z","dependencies_parsed_at":"2025-01-10T03:22:14.054Z","dependency_job_id":"17851f8a-689d-4510-b727-90329fb5cf97","html_url":"https://github.com/city41/ereader-tools","commit_stats":null,"previous_names":["city41/ereader-tools"],"tags_count":29,"template":false,"template_full_name":null,"purl":"pkg:github/city41/ereader-tools","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/city41%2Fereader-tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/city41%2Fereader-tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/city41%2Fereader-tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/city41%2Fereader-tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/city41","download_url":"https://codeload.github.com/city41/ereader-tools/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/city41%2Fereader-tools/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31308582,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T12:59:32.332Z","status":"ssl_error","status_checked_at":"2026-04-02T12:54:48.875Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["ereader","gba-development","homebrew","nintendo","retrogamedev"],"created_at":"2024-12-29T04:57:30.718Z","updated_at":"2026-04-02T15:01:56.088Z","avatar_url":"https://github.com/city41.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# E-Reader Tools\n\nTools for developing applications for the Nintendo GBA E-Reader.\n\nThis is a port of CaitSith2's [ereader tools](https://caitsith2.com/ereader/devtools.htm) to NodeJS as well as neflmake, originally written by Tim Schuerewegen\n\n## Goals\n\n- Entirely written in TypeScript\n- Full support for everything the original tools do\n- Improvements and additions, such as raw to svg\n- well documented and tested\n\n## Why?\n\n- Generally non-native tools are easier to work with.\n- Support actions in the eventual VSCode Ereader extension I plan to make.\n- Support the eventual web version of these tools.\n  - Here is [one simple web tool](https://www.retrodotcards.com/tools/convert-raw) as an example.\n- Print out more accurate dotcode strips that more closely match Nintendo's\n\n# Status\n\nVery alpha. So far only `compress-vpk`, `convert-raw` and `create-sav` exist and are quite raw (no pun intended). Not recommended for general usage yet.\n\n# To Use\n\n```bash\nnpm install --global @city41/ereader-tools\ncompress-vpk --input myGame.bin --output myGame.vpk\ndecompress-vpk --input myGame.vpk --output myGame.bin\ncreate-sav --input myGame.vpk --output myGame.sav --type z80 --region us\nconvert-raw --input myGame.raw --output myGame\nconvert-raw --input myGame.raw --output myGame --format bmp\nconvert-raw --input myGame.raw --output myGame --format bmp --dpi 600\nconvert-raw --input myGame.raw --output myGame --format png\n```\n\n## convert-raw\n\n`convert-raw` is this toolset's equivalent to `raw2bmp`. It is currently in a transition/experimental phase and not recommended for use. For now I recommend sticking with `raw2bmp`. Ultimately I am very hopeful that `convert-raw` will create images that scan more reliably than the ones created by `raw2bmp` and match Nintendo's original dotstrips more closely, if not perfectly.\n\n### bmp\n\nIf you specify `--format bmp`, it will produce MS bitmap files identical to raw2bmp. It supports the same dpi's too: 300, 600, 1200 and 2400, specified with `--dpi \u003cdpi\u003e`.\n\nTo create bmps, it is doing the exact same steps as `raw2bmp` does. There also integration tests to verify the output matches `raw2bmp`.\n\n### png\n\nIf you specify `--format png`, then only 300 dpi is supported. This is not a useful output, 300 dpi almost certainly will not scan in an E-Reader. This really exists to help ensure the svg implementation is correct.\n\n### svg\n\nLong term, this may be the main output format and likely the only supported format. With svg, `--dpi` is not supported. The resulting svg image can be scaled to any size needed, so dpi is irrelevant.\n\nThat assumes svg actually provides improvements. It might not. It does allow for controlling the gap between the dots, which should help with ink bleed that varies from printer to printer. Whether this is actually true or not remains to be seen.\n\n# Development\n\n## Publishing\n\nereader-tools uses [semantic versioning](https://semver.org/)\n\nPublishing a new version is done by bumping the version in package.json\n\n```bash\nyarn version\nyarn version v1.22.19\ninfo Current version: 0.4.0\nquestion New version: 0.4.1\ninfo New version: 0.4.1\nDone in 16.19s.\n\ngit push\ngit push --tags\n```\n\nOnce [the Publish action](https://github.com/city41/ereader-tools/actions/workflows/publish.yml) notices the version has changed, it will run a build and publish to npm.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcity41%2Fereader-tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcity41%2Fereader-tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcity41%2Fereader-tools/lists"}