From Nesdev wikiJump to navigationJump to search
Assemblers, compilers, and PRG-oriented tools
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.
- 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.
- asm6f - by AJ Kelly. A fork of asm6, offering several improvements over asm6. Windows 64-bit binaries available.
- 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 with additional NES features: NES 2.0 headers, symbol files for FCEUX, etc.
- 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.
- 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)
- 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!
- CC65 - A portable 6502/65c02/65c816 assembler, linker, and C compiler.
- KickC - C-compiler for creating optimized and readable 6502 assembler code. (NesDev forum)
- 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 CHR compression library.
- NEStress ROM for testing emulators (includes source code)
Tile (CHR) editors
- 8ted by Damian Yerrick (deprecated).
- Famitile - Includes command-line and graphical mode.
- NES Screen Tool (NESST) by Shiru. Tile editing oriented pixel art studio capable of editing backgrounds, sprites, metasprites, and palettes.
- pilbmp2nes.py by Damian Yerrick - Command-line converter from indexed BMP or PNG to multiple consoles' tile formats.
- Tile Molester by SnowBro, Central MiB, Lab313, and Mewster.
- 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.
Map (nametable) editors
- 8name by Damian Yerrick
- 8name.py by Damian Yerrick
- Famitile - Includes command-line and graphical mode; support standard nametables and MMC5 extension nametables.
- NES Screen Tool (NESST) by Shiru
- 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)
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.
Runtime engines for playing music and sound:
- Famitone - supports a subset of Famitracker features, and sound effects
- Famitone Update - an in progress extension of Famitone
- FamiTracker NSF Driver - can play back music made in Famitracker, but lacks support for sound effects
- Lizard Music - music and sound engine by rainwarrior (ca65, Famitracker export/subset)
- GGSound - a lightweight, free sound engine for use with ca65, asm6 or NES ASM
- Muse - a music and sound engine supporting the MUSE tracker by thefox
- Pently - a music and sound engine by Damian Yerrick