Tools: Difference between revisions
From NESdev Wiki
Jump to navigationJump to search
(→Engines: DRY failure, replace with link to page that has the same content) |
(→IDEs) |
||
(34 intermediate revisions by 7 users not shown) | |||
Line 1: | Line 1: | ||
Useful tools for NES development. | |||
See also: | |||
* [[Projects]] | |||
* [[Emulator tests]] | |||
== Assemblers, compilers, and PRG-oriented tools == | == Assemblers, compilers, and PRG-oriented tools == | ||
Line 14: | Line 20: | ||
* [http://www.obelisk.demon.co.uk/6502/downloads.html/ AS65] - written by Andrew John Jacobs. A macro assembler for 8 and 16-bit 65xx. Available for DOS/Win32 and Java. The Java port is strongly recommended. | * [http://www.obelisk.demon.co.uk/6502/downloads.html/ AS65] - written by Andrew John Jacobs. A macro assembler for 8 and 16-bit 65xx. Available for DOS/Win32 and Java. The Java port is strongly recommended. | ||
* [http://www.esw-heim.tu-clausthal.de/~marco/smorbrod/acme/ ACME] - Marco Baye's ACME 6502/65c02/65c816 cross-assembler. Runs on several platforms, including Amiga, DOS, and Linux. Supports macros, local labels, and many other features. | * [http://www.esw-heim.tu-clausthal.de/~marco/smorbrod/acme/ ACME] - Marco Baye's ACME 6502/65c02/65c816 cross-assembler. Runs on several platforms, including Amiga, DOS, and Linux. Supports macros, local labels, and many other features. | ||
* [https://github.com/dasm-assembler/dasm dasm] - by Matthew Dillon of the DragonflyBSD project, extended and maintained by various other authors. A macro assembler intended for 6502, 6507, 6803, HD6303, 68HC11, 68705, and F8 architectures. | * [https://github.com/dasm-assembler/dasm dasm] - by Matthew Dillon of the DragonflyBSD project, extended and maintained by various other authors. A macro assembler intended for 6502, 6507, 6803, HD6303, 68HC11, 68705, and F8 architectures. | ||
* [http://nesdev.org/fasm10.zip FASM v1.0] by [http://www.mobygames.com/developer/sheet/view/developerId,11349/ Toshi Morita]. FASM was written as a quick replacement for the 2500 AD assembler for Nintendo 8-bit development. Licensed under the GPL. | * [http://nesdev.org/fasm10.zip FASM v1.0] by [http://www.mobygames.com/developer/sheet/view/developerId,11349/ Toshi Morita]. FASM was written as a quick replacement for the 2500 AD assembler for Nintendo 8-bit development. Licensed under the GPL. | ||
Line 28: | Line 33: | ||
* [http://www.bipom.com/products/us/676.html XTOOLS] - table-based assembler and toolkit. Includes an assembler, disassembler, and several tools. Shareware (US$49); registered version includes a table-based assembly source translator. Note: files are generated as Motorola formatted hex files; you will need a converter (see [[#Converters|Converters]] below) | * [http://www.bipom.com/products/us/676.html XTOOLS] - table-based assembler and toolkit. Includes an assembler, disassembler, and several tools. Shareware (US$49); registered version includes a table-based assembly source translator. Note: files are generated as Motorola formatted hex files; you will need a converter (see [[#Converters|Converters]] below) | ||
* [http://theweb.dk/KickAssembler/Main.html#frontpage Kick Assembler] - 6510 assembler with high level scripting. KickC targets at this assembler. | * [http://theweb.dk/KickAssembler/Main.html#frontpage Kick Assembler] - 6510 assembler with high level scripting. KickC targets at this assembler. | ||
* [https://github.com/ClusterM/nesasm NESASM CE] - fork of NESASM (MagicKit) by Alexey Avdyukhin with additional NES features: NES 2.0 headers, symbol files for FCEUX, etc. | * [https://github.com/ClusterM/nesasm NESASM CE] - fork of NESASM (MagicKit) by [https://www.nesdev.org/wiki/User:Cluster Alexey Avdyukhin (Cluster)] with additional NES features: NES 2.0 headers, symbol files for FCEUX, etc. | ||
=== Disassemblers === | === Disassemblers === | ||
* [ | * [https://www.zophar.net/utilities/nesdev/6502d-disassembler.html 6502d] - by Cortez Ralph. Win32 (GUI-based) rewrite of original 6502 disassembler (MS-DOS) by Bart Trzynadlowski. | ||
* [ | * [https://bisqwit.iki.fi/source/nescom.html clever-disasm] - by [[User:Bisqwit|Bisqwit/Joel Yliluoma]]. Part of the nescom assembler suite (see above). | ||
* [ | * [https://www.cc65.org/doc/da65.html da65] - part of the cc65 suite. Primarily intended for individuals using tools in the cc65 suite (ex. ca65). | ||
* [ | * [https://forums.nesdev.org/viewtopic.php?t=7466 disasm6] - PHP-based 6502 (NES-oriented) disassembler intended for use with asm6 assembler. Pre-compiled Windows binaries are available. | ||
* [ | * [https://github.com/kylewlacy/GhidraNes GhidraNes] - Ghidra extension by Kyle Lacy | ||
* [https://www.zophar.net/utilities/nesdev/nes-disassembler.html NES Disassember] - by Morgan Johansson. MS-DOS. | |||
* [https://github.com/retroenv/nesgodisasm nesgodisasm] - a tracing disassembler that can generate output compatible with asm6/ca65/nesasm | |||
* [https://www.romhacking.net/utilities/288/ SmartRENES] - by Hyde. Supports mappers 0, 1, 2, 3, and 7. Windows binaries only. | * [https://www.romhacking.net/utilities/288/ SmartRENES] - by Hyde. Supports mappers 0, 1, 2, 3, and 7. Windows binaries only. | ||
* [ | * [https://www.zophar.net/utilities/nesdev/tracer.html TRaCER] - by [[User:koitsu|koitsu/Jeremy Chadwick]]. 6502/65816 disassembler intended for NES and SNES platforms. MS-DOS. (Does contain a confirmed bug related to one 65816-specific opcode) | ||
=== IDEs === | === IDEs === | ||
* [https://pubby.games/nesfab.html NESfab] While NESfab is a programming language, it's also an IDE with asset management and level editing capabilities. | |||
* [https://www.nesmakers.com/index.php NESmaker] A commercial, semi-walled garden, GameMaker-like IDE with asset management and level editing capabilities. Based on prewritten assembly engine modules. Runs on top of Asm6. | |||
* [https://puzzle.nes.science/ Retro Puzzle Maker] Another simplified, gamemaker-like puzzle games IDE. Can be run in browser or on desktop. | |||
* [https://github.com/christopherpow/nesicide NESICIDE] (WIP) source code only, Github link for the NESICIDE IDE by cpow (Chris Pow) | * [https://github.com/christopherpow/nesicide NESICIDE] (WIP) source code only, Github link for the NESICIDE IDE by cpow (Chris Pow) | ||
* [http://www.wudsn.com/ WUSDN] | * [http://www.wudsn.com/ WUSDN] An NES IDE as of 2012 by the WUSDN team, Originally for Atari 8-Bit computers, Now also comes with NES capability, Requires Java Runtime Environment and Eclipse to run. | ||
=== Compilers === | === Compilers === | ||
* [http://www.cc65.org/ CC65] - A portable 6502/65c02/65c816 assembler, linker, and C compiler. | * [http://www.cc65.org/ CC65] - A portable 6502/65c02/65c816 assembler, linker, and C compiler. | ||
* [https://gitlab.com/camelot/kickc | * [https://github.com/gbdk-2020/gbdk-2020 GBDK] - GBDK is a cross-platform development kit for sm83, z80 and 6502 based gaming consoles. | ||
* [https://gitlab.com/camelot/kickc KickC] - C-compiler for creating optimized and readable 6502 assembler code. ([http://forums.nesdev.org/viewtopic.php?f=2&t=20187 NesDev forum]) | |||
* [https://llvm-mos.org llvm-mos] - llvm-mos is a fork of LLVM supporting the MOS Technology 65xx series of microprocessors and their clones. | |||
* [https://github.com/KarolS/millfork Millfork] - A middle-level programming language targeting 6502- and Z80-based microcomputers and home consoles. | |||
* [https://syntaxerrorsoftware.itch.io/pas6502 Pas 6502] - Pascal cross-compiler for 6502-based machines. | |||
* [https://pubby.games/nesfab.html NESFab] - A new programming language for creating NES games. | |||
* [http://www.compilers.de/vbcc.html vbcc] - vbcc is a highly optimizing portable and retargetable ISO C compiler. | |||
=== Converters === | === Converters === | ||
Line 58: | Line 74: | ||
* [http://www.romhacking.net/utilities/882/ Compress Tools] - A multi-featured open-source compressor featuring many algorithms, extendable to new algorithms. Allows to break data in many small independent blocks and more by the usage of scripts. | * [http://www.romhacking.net/utilities/882/ Compress Tools] - A multi-featured open-source compressor featuring many algorithms, extendable to new algorithms. Allows to break data in many small independent blocks and more by the usage of scripts. | ||
* [https://github.com/bbbradsmith/huffmunch Huffmunch] - A generic compression library for NES/6502 with very low RAM requirements. | * [https://github.com/bbbradsmith/huffmunch Huffmunch] - A generic compression library for NES/6502 with very low RAM requirements. | ||
* [https:// | * [https://forums.nesdev.org/viewtopic.php?t=17313 Donut] - A fast and efficient CHR compression library by JRoatch. | ||
== Graphics-oriented tools == | |||
=== General NES graphics studios === | |||
Collected here are editors that offer a holistic approach to the creation and editing of various NES native graphics assets. These tools may offer in more or less equal measures the editing of tiles, screens, maps, sprites, metasprites and palettes in tandem; allowing for a resource efficient approach. | |||
* [https://nesrocks.itch.io/naw NES Assets Workshop (NAW)], by Nesrocks. Built in GameMaker with a thematic GUI. Compared to NESST & NEXXT, NAW opts for a classic toolbox menu with toggle hotkeys, similar to Photoshop, Aseprite and many more, which makes certain tools instantly discoverable. Has a special "Overlay" editing mode which lets you draw sprite overlays on top of backgrounds. | |||
* [https://frankengraphics.itch.io/nexxt NEXXT], a continuation of NESST maintained by FrankenGraphics. Adds an arsenal of new tools and features along with speed-improved workflows, work safety, discoverability, and bugfixes. | |||
* [https://shiru.untergrund.net/software.shtml NES Screen Tool (NESST)] by Shiru (Deprecated). Tile oriented pixel art studio capable of editing CHR, backgrounds, sprites, metasprites, and palettes. Facilitates a modifier-key approach to make editing quicker, at some cost of discoverability (browsing through the readme is recommended). | |||
* [https://github.com/xverizex/RetroSpriteEditor RetroSpriteEditor], by xverizex. a tile and nametable editor for Windows and Linux. | |||
* [ | === Animation tools === | ||
* [https://github.com/codemeow/doner DONER] by Codemeow. Generates easing tables to use for position animations. Output is suitable for 6502 C or Assembly. | |||
== | |||
=== Asset Converters === | |||
Converters are good choices for when you prefer to work on an asset in a general purpose graphics studio such as Photoshop, GIMP, Aseprite, GraphicsGale etc, and need to convert or extrapolate NES ready data from that work. | |||
* [https://kasumi.itch.io/ichr I-CHR] by Kasumi. Converts PC images and image sequences into NES compatible tilesets and nametables. Can also produce a NES ROM program displaying the graphics. | |||
* [https://github.com/michel-iwaniec/OverlayPal OverlayPal] by Michel Iwaniec (Bananmos). An image-to-NES-assets converterter that specializes in splitting the source image into a background layer and an "overlay" sprite layer. | |||
* [https://github.com/pinobatch/nrom-template/blob/master/tools/pilbmp2nes.py pilbmp2nes.py] by Damian Yerrick - Command-line converter from indexed BMP or PNG to multiple consoles' tile formats. | |||
* [https://sourceforge.net/projects/tilificator/ Tilificator] by Michel Iwaniec (Bananmos) - sprite optimisation tool. Takes an image and finds resource effective hardware tiles for sprite usage. Can import/export to NESST .msb formats. [http://retrocoder.epizy.com/tilificator_tutorial/?i=1 A tutorial] is available. | |||
* [https://github.com/ClusterM/nestiler NesTiler] by [https://www.nesdev.org/wiki/User:Cluster Alexey Avdyukhin (Cluster)]. Converts PC images into pattern tables, nametables, attribute tables and palettes. This application can accept multiple images as input, the main point is to use single set of palettes (and tiles if required) for all of them, so it's possible to switch CHR banks and base nametable on a certain line, in the middle of rendering process. Can produce lossy result if image doesn't meet the limitations of NES. Uses command-line interface, so it can be used as a part of toolchain. Multiplatform. | |||
=== Tile (CHR) editors === | === Tile (CHR) editors === | ||
* [http://pineight.com/pc/#ted 8ted] by Damian Yerrick (deprecated). | * [http://pineight.com/pc/#ted 8ted] by Damian Yerrick (deprecated). | ||
* [http://zzo38computer.org/nes_program/famitile.zip Famitile] - | * [https://web.archive.org/web/20140420062726/http://zzo38computer.org/nes_program/famitile.zip Famitile] - (Note: the link is recovered from archive.org ) Old, super-minimalist graphics tool by zzo38. Requires an sdl of version 1.x, which can be gotten [https://www.libsdl.org/release/ (here)]. Includes command-line and graphical mode; supports editing CHR, but also standard nametables, and [[MMC5]] extension nametables. | ||
* [https://hundredrabbits.itch.io/nasu Nasu] by 100 rabbits. A Minimalist NES tile editor with features such as quick colour selection via hotkeys. For win/mac/linux via an [https://100r.co/site/uxn.html "UXN" emulator]. | |||
* [https:// | |||
* [http://www.romhacking.net/utilities/991/ Tile Molester] by SnowBro, Central MiB, Lab313, and Mewster. | * [http://www.romhacking.net/utilities/991/ Tile Molester] by SnowBro, Central MiB, Lab313, and Mewster. | ||
* [[YY-CHR]] | * [[YY-CHR]], by YY. A tile editor that works like visual hex editor. Particularly popular in the romhacking scene, since you may modify an already assembled ROM image. Also has provisionary tile layout (nametable) capabilities. | ||
* [ | * [[Tile Layer]] a program for modifying graphics in NES ROMs. | ||
=== Map (nametable) editors === | === Map (nametable) editors === | ||
* [https://pineight.com/pc/#ted 8name] by Damian Yerrick | * [https://pineight.com/pc/#ted 8name] by Damian Yerrick | ||
* [https://github.com/pinobatch/thwaite-nes/blob/master/tools/8name.py 8name.py] by Damian Yerrick | * [https://github.com/pinobatch/thwaite-nes/blob/master/tools/8name.py 8name.py] by Damian Yerrick | ||
* [http://zzo38computer.org/nes_program/famitile.zip Famitile] | * [https://web.archive.org/web/20140420062726/http://zzo38computer.org/nes_program/famitile.zip Famitile] (mentioned above). While primarily a CHR editor, there is some support for nametable editing. | ||
* [[YY-CHR]] (mentioned above). Has provisionary tools for nametable layouts. | |||
== Music tools == | == Music tools == | ||
Line 91: | Line 118: | ||
=== Trackers/sequencers === | === Trackers/sequencers === | ||
* [ | * [https://famitracker.org/ FamiTracker] tracker-style music editor | ||
* [http://www.geocities.co.jp/Playtown-Denei/9628/ MCK driver] and MML translator for music creation (includes source code) | * [http://www.geocities.co.jp/Playtown-Denei/9628/ MCK driver] and MML translator for music creation (includes source code) | ||
* [http://kkfos.aspekt.fi/projects/nes/tools/musetracker Musetracker] tracker-style music editor (formerly known as PornoTracker). | * [http://kkfos.aspekt.fi/projects/nes/tools/musetracker Musetracker] tracker-style music editor (formerly known as PornoTracker). | ||
* [http://nesdev.org/nt2/ Nerd Tracker II] tracker-style music editor | * [http://nesdev.org/nt2/ Nerd Tracker II] tracker-style music editor | ||
* [http://zzo38computer.org/nes_program/ppmck.zip PPMCK unofficial version] by [[User:Zzo38|zzo38]] (includes MagicKit as well) | * [http://zzo38computer.org/nes_program/ppmck.zip PPMCK unofficial version] by [[User:Zzo38|zzo38]] (includes MagicKit as well) | ||
* [https://neilbaldwin-nes.netlify.app/nes-audio/index.html NTRQ] native NES tracker by Neil Baldwin | |||
* [https://neilbaldwin-nes.netlify.app/nes-audio/index.html Pulsar] native NES tracker in LSDJ style by Neil Baldwin | |||
* [https://neilbaldwin-nes.netlify.app/nes-audio/index.html Nijuu] NES music macro language assembler by Neil Baldwin | |||
=== DMC conversion tools === | === DMC conversion tools === | ||
* [ | * [https://famitracker.org/ FamiTracker] can import .wav files and convert to DMC samples, which can then be exported as .dmc files. | ||
* [http://user.tninet.se/~zxy965r/ft/nsf.zip NSF Live!] NSF player that can export DMC samples from NSF songs as .dmc files. | * [http://user.tninet.se/~zxy965r/ft/nsf.zip NSF Live!] NSF player that can export DMC samples from NSF songs as .dmc files. | ||
* [http://www.pineight.com/nes/#18 Pin Eight NES Tools] includes a command-line encoder and decoder by Damian Yerrick. | * [http://www.pineight.com/nes/#18 Pin Eight NES Tools] includes a command-line encoder and decoder by Damian Yerrick. | ||
Line 109: | Line 139: | ||
Runtime engines for playing music and sound: see [[Audio drivers]] | Runtime engines for playing music and sound: see [[Audio drivers]] | ||
== Multicart Tools == | |||
* [[Action 53 mapper]] - a multicart mapper designed for homebrew games. | |||
* [[Forbidden Four|Double Crossing: The Forbidden Four]] - a hack of ''The Legend of Zelda'' to add a menu and three NROM games using MMC1. | |||
== Miscellaneous other tools == | == Miscellaneous other tools == | ||
* [https://nesdev.org/archive.html#PC | * [http://www.qmtpro.com/~nes/chipimages/visual2a03/ Visual 2A03] - circuit simulator of the 2A03 | ||
** [[Visual circuit tutorial]] - usage guide | |||
* [http://www.visual6502.org/ Visual 6502] - circuit simulator of the 6502 processor | |||
** [[Visual6502wiki]] - mirror/archive of its wiki documentation | |||
* [[Serial Bootloader]] - tool for uploading from PC to the controller or expansion port | |||
* [[User:Erana/ADOS NES|ADOS NES]] - an operating system project | |||
* [https://nesdev.org/archive.html#PC NESDev old homepage development tools list] | |||
[[Category:Audio]] | [[Category:Audio]] |
Latest revision as of 11:21, 24 August 2024
Useful tools for NES development.
See also:
Assemblers, compilers, and PRG-oriented tools
Assemblers
Commonly used assemblers
- asm6 - written by Loopy because most other assemblers "were either too finicky, had weird syntax, took too much work to set up, or too bug-ridden to be useful".
- asm6f - fork of asm6, providing support for illegal opcodes, NES 2.0 headers, symbol files for FCEUX/Mesen/Lua, and other features. See Releases for Windows binaries
- CC65 - A portable 6502/65c02/65c816 assembler, linker, and C compiler.
- NESASM (MagicKit) by Charles Doty, David Michel, and J.H. Van Ornum.
- Unofficial MagicKit by zzo38. Based on MagicKit but with many improvements; includes PPMCK support
- WLA DX - A portable GB-Z80/Z80/6502/6510/65816 macro assembler. Linux and MS-DOS versions are also available.
Other assemblers
- AS65 - written by Andrew John Jacobs. A macro assembler for 8 and 16-bit 65xx. Available for DOS/Win32 and Java. The Java port is strongly recommended.
- ACME - Marco Baye's ACME 6502/65c02/65c816 cross-assembler. Runs on several platforms, including Amiga, DOS, and Linux. Supports macros, local labels, and many other features.
- dasm - by Matthew Dillon of the DragonflyBSD project, extended and maintained by various other authors. A macro assembler intended for 6502, 6507, 6803, HD6303, 68HC11, 68705, and F8 architectures.
- FASM v1.0 by Toshi Morita. FASM was written as a quick replacement for the 2500 AD assembler for Nintendo 8-bit development. Licensed under the GPL.
- Merlin 32 - by Brutal Deluxe Software. 6502/65816 cross-assembler/linker for Win32, Linux, and OS X. Influenced by the Merlin/16+ assembler/linker for the Apple IIGS.
- nescom - Joel Yliluoma's 6502 assembler; written in C++, based on xa65 and largely compatible with it, including with the o65 object file format.
- NESHLA by Brian Provinciano. A 6502 assembler specifically geared towards NES development.
- Ophis Assembler by Michael C. Martin. An open-source 6502 assembler written in Python.
- P65 Assembler - A portable 6502 assembler written in Perl.
- Telemark Cross Assembler - A shareware assembler for numerous 8-bit processors, including the 6502, Z80, and 8051.
- x816 v1.12f by minus. An assembler for 6502/65c02/65c816. MS-DOS only.
- xa65 - Andre Fachat's open-source cross-assembler; written in C and supports the standard 6502 and 65c816 opcode lists. Sports a C-like preprocessor and supports label-hiding in a block structure. Produces plain binary files, as well as special o65 object files. Further tools include a linker, file and relocation utilities for o65 files.
- XORcyst - "... a rather platform-independent set of tools and languages for 6502 software development" written by Kent Hanson, aka SnowBro.
- XTOOLS - table-based assembler and toolkit. Includes an assembler, disassembler, and several tools. Shareware (US$49); registered version includes a table-based assembly source translator. Note: files are generated as Motorola formatted hex files; you will need a converter (see Converters below)
- Kick Assembler - 6510 assembler with high level scripting. KickC targets at this assembler.
- NESASM CE - fork of NESASM (MagicKit) by Alexey Avdyukhin (Cluster) with additional NES features: NES 2.0 headers, symbol files for FCEUX, etc.
Disassemblers
- 6502d - by Cortez Ralph. Win32 (GUI-based) rewrite of original 6502 disassembler (MS-DOS) by Bart Trzynadlowski.
- clever-disasm - by Bisqwit/Joel Yliluoma. Part of the nescom assembler suite (see above).
- da65 - part of the cc65 suite. Primarily intended for individuals using tools in the cc65 suite (ex. ca65).
- disasm6 - PHP-based 6502 (NES-oriented) disassembler intended for use with asm6 assembler. Pre-compiled Windows binaries are available.
- GhidraNes - Ghidra extension by Kyle Lacy
- NES Disassember - by Morgan Johansson. MS-DOS.
- nesgodisasm - a tracing disassembler that can generate output compatible with asm6/ca65/nesasm
- SmartRENES - by Hyde. Supports mappers 0, 1, 2, 3, and 7. Windows binaries only.
- TRaCER - by koitsu/Jeremy Chadwick. 6502/65816 disassembler intended for NES and SNES platforms. MS-DOS. (Does contain a confirmed bug related to one 65816-specific opcode)
IDEs
- NESfab While NESfab is a programming language, it's also an IDE with asset management and level editing capabilities.
- NESmaker A commercial, semi-walled garden, GameMaker-like IDE with asset management and level editing capabilities. Based on prewritten assembly engine modules. Runs on top of Asm6.
- Retro Puzzle Maker Another simplified, gamemaker-like puzzle games IDE. Can be run in browser or on desktop.
- NESICIDE (WIP) source code only, Github link for the NESICIDE IDE by cpow (Chris Pow)
- WUSDN An NES IDE as of 2012 by the WUSDN team, Originally for Atari 8-Bit computers, Now also comes with NES capability, Requires Java Runtime Environment and Eclipse to run.
Compilers
- CC65 - A portable 6502/65c02/65c816 assembler, linker, and C compiler.
- GBDK - GBDK is a cross-platform development kit for sm83, z80 and 6502 based gaming consoles.
- KickC - C-compiler for creating optimized and readable 6502 assembler code. (NesDev forum)
- llvm-mos - llvm-mos is a fork of LLVM supporting the MOS Technology 65xx series of microprocessors and their clones.
- Millfork - A middle-level programming language targeting 6502- and Z80-based microcomputers and home consoles.
- Pas 6502 - Pascal cross-compiler for 6502-based machines.
- NESFab - A new programming language for creating NES games.
- vbcc - vbcc is a highly optimizing portable and retargetable ISO C compiler.
Converters
- Converters for INTEL/MOTOROLA HEX formats to Binary (BIN) and back, for assemblers like XTOOLS.
Pre-processors and other code (PRG) tools
- shuffle.py by Damian Yerrick - Preprocessor to rearrange variables, subroutines, and instructions in a file, for using other variables as memory canaries or watermarking beta builds
- Compress Tools - A multi-featured open-source compressor featuring many algorithms, extendable to new algorithms. Allows to break data in many small independent blocks and more by the usage of scripts.
- Huffmunch - A generic compression library for NES/6502 with very low RAM requirements.
- Donut - A fast and efficient CHR compression library by JRoatch.
Graphics-oriented tools
General NES graphics studios
Collected here are editors that offer a holistic approach to the creation and editing of various NES native graphics assets. These tools may offer in more or less equal measures the editing of tiles, screens, maps, sprites, metasprites and palettes in tandem; allowing for a resource efficient approach.
- NES Assets Workshop (NAW), by Nesrocks. Built in GameMaker with a thematic GUI. Compared to NESST & NEXXT, NAW opts for a classic toolbox menu with toggle hotkeys, similar to Photoshop, Aseprite and many more, which makes certain tools instantly discoverable. Has a special "Overlay" editing mode which lets you draw sprite overlays on top of backgrounds.
- NEXXT, a continuation of NESST maintained by FrankenGraphics. Adds an arsenal of new tools and features along with speed-improved workflows, work safety, discoverability, and bugfixes.
- NES Screen Tool (NESST) by Shiru (Deprecated). Tile oriented pixel art studio capable of editing CHR, backgrounds, sprites, metasprites, and palettes. Facilitates a modifier-key approach to make editing quicker, at some cost of discoverability (browsing through the readme is recommended).
- RetroSpriteEditor, by xverizex. a tile and nametable editor for Windows and Linux.
Animation tools
- DONER by Codemeow. Generates easing tables to use for position animations. Output is suitable for 6502 C or Assembly.
Asset Converters
Converters are good choices for when you prefer to work on an asset in a general purpose graphics studio such as Photoshop, GIMP, Aseprite, GraphicsGale etc, and need to convert or extrapolate NES ready data from that work.
- I-CHR by Kasumi. Converts PC images and image sequences into NES compatible tilesets and nametables. Can also produce a NES ROM program displaying the graphics.
- OverlayPal by Michel Iwaniec (Bananmos). An image-to-NES-assets converterter that specializes in splitting the source image into a background layer and an "overlay" sprite layer.
- pilbmp2nes.py by Damian Yerrick - Command-line converter from indexed BMP or PNG to multiple consoles' tile formats.
- Tilificator by Michel Iwaniec (Bananmos) - sprite optimisation tool. Takes an image and finds resource effective hardware tiles for sprite usage. Can import/export to NESST .msb formats. A tutorial is available.
- NesTiler by Alexey Avdyukhin (Cluster). Converts PC images into pattern tables, nametables, attribute tables and palettes. This application can accept multiple images as input, the main point is to use single set of palettes (and tiles if required) for all of them, so it's possible to switch CHR banks and base nametable on a certain line, in the middle of rendering process. Can produce lossy result if image doesn't meet the limitations of NES. Uses command-line interface, so it can be used as a part of toolchain. Multiplatform.
Tile (CHR) editors
- 8ted by Damian Yerrick (deprecated).
- Famitile - (Note: the link is recovered from archive.org ) Old, super-minimalist graphics tool by zzo38. Requires an sdl of version 1.x, which can be gotten (here). Includes command-line and graphical mode; supports editing CHR, but also standard nametables, and MMC5 extension nametables.
- Nasu by 100 rabbits. A Minimalist NES tile editor with features such as quick colour selection via hotkeys. For win/mac/linux via an "UXN" emulator.
- Tile Molester by SnowBro, Central MiB, Lab313, and Mewster.
- YY-CHR, by YY. A tile editor that works like visual hex editor. Particularly popular in the romhacking scene, since you may modify an already assembled ROM image. Also has provisionary tile layout (nametable) capabilities.
- Tile Layer a program for modifying graphics in NES ROMs.
Map (nametable) editors
- 8name by Damian Yerrick
- 8name.py by Damian Yerrick
- Famitile (mentioned above). While primarily a CHR editor, there is some support for nametable editing.
- YY-CHR (mentioned above). Has provisionary tools for nametable layouts.
Music tools
Trackers/sequencers
- FamiTracker tracker-style music editor
- MCK driver and MML translator for music creation (includes source code)
- Musetracker tracker-style music editor (formerly known as PornoTracker).
- Nerd Tracker II tracker-style music editor
- PPMCK unofficial version by zzo38 (includes MagicKit as well)
- NTRQ native NES tracker by Neil Baldwin
- Pulsar native NES tracker in LSDJ style by Neil Baldwin
- Nijuu NES music macro language assembler by Neil Baldwin
DMC conversion tools
- FamiTracker can import .wav files and convert to DMC samples, which can then be exported as .dmc files.
- NSF Live! NSF player that can export DMC samples from NSF songs as .dmc files.
- Pin Eight NES Tools includes a command-line encoder and decoder by Damian Yerrick.
Other conversion tools
- Drum sample to noise sound effect/channel converter by lidnariq. Written in C.
Engines
Runtime engines for playing music and sound: see Audio drivers
Multicart Tools
- Action 53 mapper - a multicart mapper designed for homebrew games.
- Double Crossing: The Forbidden Four - a hack of The Legend of Zelda to add a menu and three NROM games using MMC1.
Miscellaneous other tools
- Visual 2A03 - circuit simulator of the 2A03
- Visual circuit tutorial - usage guide
- Visual 6502 - circuit simulator of the 6502 processor
- Visual6502wiki - mirror/archive of its wiki documentation
- Serial Bootloader - tool for uploading from PC to the controller or expansion port
- ADOS NES - an operating system project
- NESDev old homepage development tools list