Skip to content
mssolaPublic

About

Tools for NES/Famicom development.

Topics

Resources

Contributing

Stars

1 star

Watchers

1 watching

Forks

Repository files navigation

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.

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. 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.

runrom

runrom is an NES/Famicom emulator that doesn't attempt to run a ROM graphically. Instead, it just runs code and exposes the data on memory, registers, etc. for a given run. This is all done via the vnf library, which allows a developer to programatically run a ROM file from a given address, poke memory addresses, submit joypad inputs, etc. For some uses, running runrom will be fine to get a glimpse of the execution of a piece of code, but in some other cases (e.g. unit tests for a specific function on your NES game), using vnf will be a better fit. In any case, you can read more about all of this on runrom's documentation, and on vnf's documentation.

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.

About

Tools for NES/Famicom development.

Topics

Resources

Contributing

Stars

1 star

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages