Tools I have created to help with NES/Famicom development. **Note**: this is under heavy development and it's not currently usable. ## `nasm` `nasm` is an assembler specifically tailored for the NES/Famicom. Read more about it in [./crates/nasm/README.md](./crates/nasm/README.md). ## `xa65` Since `nasm` is still under heavy development, it's a good idea to compare the results that it produces with a mature and stable assembler like [cc65](https://github.com/cc65/cc65). The purpose of `xa65` is to provide a bridge, and so it simply executes both `nasm` and `cc65` with the given arguments. If the results from both assemblers are not the same, then it will display a warning and produce the binary as taken from `cc65`. Moreover, if you want this warning to be an error instead, then use the `--no-errors`. Last but not least, you can also pass flags to `xa65` like `--strict`, which will invoke `nasm` with more pedantic features like its address sanitizer. ## `readrom` `readrom` is an objdump-like utility that reads a given ROM file and shows information about it. Read more about it in [./crates/readrom/README.md](./crates/readrom/README.md). ## License This repository holds two licenses, as you can also note on the `Cargo.toml` file. As it's written there: - The source code on the `crates/` directory is licensed under the GNU GPLv3 (or any later version). - The source code on the `lib/` directory is licensed under the GNU LGPLv3 (or any later version). In practice, for the libraries under `lib/` this means that if you plan to compile your binary statically, you still need to abide by the LGPLv3+ license. This means at least providing the object files necessary to allow someone to recompile your program using a modified version of these libraries. See the LGPLv3 license for more details.