**** Best viewed with fixed width font. Adjust viewer so this is 1 line. ****

NES DeCompose is an easy-to-use NES disassembler for Windows that works with both mapper 0 and mapper 3 games. It has many options to create customized output, and can do trace disassembly. The program can also extract and reinsert non-embedded graphics to and from bitmap files.

===========
 Features:
===========

Easy-to-use interface
A good number of options
Can extract graphics
No command lines!

=======================
 A few mapper 0 games:
=======================

1942
Arkanoid
Balloon Fight
Battle City
Dig Dug 1
Dog Town (J)
Donkey Kong
Donky Kong Jr.
Donkey Kong 3
Exite Bike
Hydlide
Ice Climber
Super Mario Bros. 1

=======================
 A few mapper 3 games:
=======================

Adventure Island 1
Bump N' Jump
ChopLifter
Ghostbusters
Goonies 1
The Flinstones
Milon's Secret Castle
Paperboy
Pipe Dream
Q-Bert
Solar Wars 2001
Spy Hunter


Warning: Attempts to use this program with a non mapper 0/3 game are not recommended. If NES DeCompose doesn't crash, it will still only process 32k of data, and may not work properly even then.

Note: This program was created in Visual Basic 6. You'll need the VB runtimes in order to run it. And being a VB program, this version probably uses a sizeable amount of memory.

**************************
 History: Notable Changes
**************************

(Program develops faster with user feedback!)

February 22, 2004 - Version .62

	- Rudimentary "Modify File" section added
	- Can now group .db in sets of 2
	- No code before $8000 is now a non-default option
	  (Some games like Dragon Quest put code in memory)
	- New option: Byte after JSR to Sub with Stack Trick as
	  Invalid (Can detects limited stack tricks)
	- No NMI option removed
	- Various small bugs fixed

January 28, 2004 - Version .61

	- Linear scan vastly improved
	- Trace threads are now trimmed to the last branch when an invalid
	  opcode is found (Advanced Options: ThreadBurn)
	- New option: SED as invalid opcode - default

January 21, 2004 - Version .6

	- *Major* bug fixed - LDA Addr16, Y was coming out as
	   LDA Addr16, X. This is the last one of it's kind, as I can now
	   get the code to recompile perfectly with an assembler
	   I'm producing.
	- BRK now can process as 2 bytes instead of 1 - thanks to
	  FrenziedPanda for pointing out that BRK is technically 2 bytes.
	  (Advanced Options)

July 18 - Version .53

	New option: Stop trace on invalid opcode (no longer default)
	New option: Stop trace if end of game reached (default)
	New option: On trace fail, stop decompile or run linear decompile
		(Default = Linear)
	Fixed several bugs with header output and commenting
	Blank after RTS is now blank after RTS/RTI
	Fixed: Blank line before label option was broken
	New spacing option: No blank line before labels if label was created
		by branch (default)
	New spacing option: No blank line after RTS/RTI unless followed by
		branch label called previously (default)

July 13 - Version .52
	New, improved decompile option: Trace Decompile - default
		The original is now known as a Linear Decompile and will be
		used if a Trace Decompile fails
	- Fixed: "ASL A" was output as simply "ASL"
	- Fixed: All 16kb games were starting at $8000. Now decides to start
		at $8000 or $C000 depending on the Reset Vector - default.
	- New Option: Force 16kb games to start at $8000 or $C000
	- New option - Irq vector not used
	- Numerous descriptions added to the help section
	- Made sure Linear Decompile will not misalign at vectors
	- Removed pointless "% Before Decimal Numbers in Header" option
	- Fixed many small bugs
	- Improved header cleaning tool

July 04	- Version .5 released
	- Bytes before the first label/vector are now listed as ".db".
		Works even if "Use Labels" isn't checked.
	- Fixed: ROL A opsize was set wrong.
		(Used mainly by double-check code,
		 probably had no effect on output)
	- Fixed: Branch comments were listing the relative distance
		as 2 less than the actual
	- Define Byte is now ".db" by default

July 01	- Version .47 released
	- Fixed: CPY Absolute was missing, now added.
	- New "Analyse" button reviews game information by header
	- New feature: Clean dirty headers
	- All graphics functions moved to "Graphics" tab
	- You can now set the maximum number of graphic pages to extract
	- Some bugs with color settings fixed
	- BVC/BVS bug fixed

June 25 - Version .46 released

	- New Option: Colon After Label - Default
	- Fixed a problem with JMP commands when using "JMP HERE"
	- "Comment Code" is now default
	- Fixed: "Comment Code" now works. -.-
		(Notes PPU/SPR/VRAM/Sound registers, Vector Table)
	- Comments are no longer automatically added after branch op
	- Fixed: "ROR,A" is now "ROR A"
	- Fixed: Opcode TSX was outputting "False"
	

June 22 - Version .45 released

	New option: Vector table as DB: Heads up, Gil_!
	New option: Add extra tabs only if working with simple text editor
		- No longer added by default

June 20 - Version .4 released

	* Fixed a major bug introduced in .3 where all games with only 1 page
		of PRG data displayed every line as a label. Doh!
	* Fixed - Zero Page Indexed with X or Y ops had ) after the operand
	* Fixed - Opcode $05 (ORA Zero Page Direct) now appears correctly
	* New preview output style section - visually set spacing to your liking
	* LBL_START is now LBL_vRST
	* New option: Branch to labels - default
	* New option: Vectors as labels  (vNMI, vBRK, vRST) - default
	* New option: Include Data with Op Hex Value
		- Default, but only works if Include Op Value is checked
	* Fixed - Unknown op was displaying in the op value section twice
	* Fixed some bugs with JSR/JMP/Branching/Labels
	* Labels on Seperate Lines is now set by default
	

June 10 - Version .3 released
	
	*** New Name for the Program ***
		
		== NES DeCompose ==
	
		Isn't that just spiffy-keen?
		Aren't you EXITED!?
				
		Of course you are!
	
	* New option: Select the text for "Define Byte" (unknown op)
		- Now defaults to "DB", instead of "[?]"
	* New option: Header as DB - Just list the bytes of the header
		- Set to default
	* New option: Asterix before labels ("other" options tab)
		- Was added by default, compilers probably don't like this.
	* New option: Labels and code on seperate lines - default
	* Labels are now listed in the order they occur instead of the order
		they were found.
	* Speed boost! - Rewriting the label code made the writing time
		noticeably shorter.

June 6 - Version .2 released.
	
	* Every non-embedded chr page can now be extracted.
	* Graphics can now be reinserted into a game - page 1 only
		(For kicks, try inserting one game's graphics into another -
		Exite Bike into SMB1, for example)
	* Two pre-selected palettes available
	* New option: Bitmaps can now have a dividing line between each tile.
	* New option: Addresses can now be listed in 4, 6 or 8 digits.
	* New option: "Special Address for Graphics" can extract part of
		The Legend of Zelda graphics.

May 25 - Version .15 released. Essentially a rebuild of the features in version .14 after I lost the code past .02. O_o There may be a small jump in speed.

May 21 - Version .14 - Beta status. 
	
	CHR graphics can now be extracted! (First 8kb block only, to bmp)
	Revamped the input/ouput name interface
	Entering a non-existant path or file no longer causes a crash
	Comment on CHR pages fixed
	Corrected - "LSR,A" now reads "LSR A"
	Corrected - "ROL,A" now reads "ROL A"

May 12 (Noon) - Verson .02

	Fixed a bug in the output file name.
	New option - Select comment symbol -- ;,~,',// or custom.
	Comment symbols now default to ;
	New option - Select label prefix -- LBL_, LBL., LABEL, LABEL.
		or custom.
	New option - Tab space comments.
	New option - Copy directory and file name upon load (Selecting
		C:\NES\Games\Gamename.NES will place
		C:\NES\Games\Gamename.txt in the output slot.
	New Option - Insert a blank line after JMP

May 12 (Early AM) - Version .01 released! Alpha status.

----

Send me an email!

Deciheximal
Blazarsoft
www.stardotgeek.com
marble@centurytel.net
----

Thanks:

bbitmaster
DahrkDiaz
Gavin
Gil_
Memblers
Ultima4701
zero_soul

To make this program and text file, some information was copied directly from:

Nes Tech Document
Nes Header 2.0 by VmprHntrD
Bigass NES Mapper List