Tools: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
m (Updates the dead Famitracker links to its new website.)
 
(27 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/freem/asm6f asm6f] - by AJ Kelly.  A fork of asm6, offering several improvements over asm6.  Windows 64-bit binaries available.
* [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 ===
* [http://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://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.
* [http://bisqwit.iki.fi/source/nescom.html clever-disasm] - by [[User:Bisqwit|Bisqwit/Joel Yliluoma]].  Part of the nescom assembler suite (see above).
* [https://bisqwit.iki.fi/source/nescom.html clever-disasm] - by [[User:Bisqwit|Bisqwit/Joel Yliluoma]].  Part of the nescom assembler suite (see above).
* [http://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://www.cc65.org/doc/da65.html da65] - part of the cc65 suite.  Primarily intended for individuals using tools in the cc65 suite (ex. ca65).
* [http://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://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.
* [http://www.zophar.net/utilities/nesdev/nes-disassembler.html NES Disassember] - by Morgan Johansson.  MS-DOS.
* [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.
* [http://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)
* [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 ===
Line 46: Line 52:
=== 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/-/tree/master KickC] - C-compiler for creating optimized and readable 6502 assembler code. ([http://forums.nesdev.org/viewtopic.php?f=2&t=20187 NesDev forum])
* [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://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 69:
* [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://github.com/jroatch/donut-nes Donut] - A CHR compression library.
* [https://forums.nesdev.org/viewtopic.php?t=17313 Donut] - A fast and efficient CHR compression library by JRoatch.
 
== Emulator-oriented tools ==
 
* [http://nesdev.org/NEStress.zip NEStress] ROM for testing emulators (includes source code)


== Graphics-oriented tools ==
== Graphics-oriented tools ==
Line 73: Line 80:
* [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://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://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 ===
=== Asset Converters ===
Line 81: Line 93:
* [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://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://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 ===
Line 88: Line 101:
* [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]], 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.
* [[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 ===
Line 99: Line 113:
=== Trackers/sequencers ===
=== Trackers/sequencers ===


* [http://famitracker.com/ FamiTracker] tracker-style music editor
* [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 ===


* [http://famitracker.com/ FamiTracker] can import .wav files and convert to DMC samples, which can then be exported as .dmc files.
* [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 117: Line 134:


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 More development tools]
* [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:Tools]]
[[Category:Graphics]]
[[Category:Audio]]
[[Category:Audio]]

Latest revision as of 21:49, 26 December 2023

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

  • NESICIDE (WIP) source code only, Github link for the NESICIDE IDE by cpow (Chris Pow)
  • WUSDN A New 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.
  • NESFab - A new programming language for creating NES games.
  • vbcc - vbcc is a highly optimizing portable and retargetable ISO C compiler.

Converters

Pre-processors and other code (PRG) tools

Compression related tools

  • 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

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

Engines

Runtime engines for playing music and sound: see Audio drivers

Multicart Tools

Miscellaneous other tools