Releases: Clownacy/clownassembler
v1.1.1.1
Note
clownassembler_asm68k.exe is the one that mimics asm68k's interface; clownassembler.exe has a custom, simpler interface that is incompatible.
Can assemble...
- The Sonic 1 Git disassembly
- SuperEgg's Sonic 2 Nick Arcade disassembly
- The Sonic 2 August 21st prototype disassembly
- The Sonic Spinball disassembly
- The Mean Bean Machine disassembly
- Vladikcomper's debugger and error handler (ASM68K version)
- Aurora Fields' Z80 macros
- The Puyo Puyo disassembly
Fixes
- 'ae+' and 'ae-' malfunctioning in the asm68k frontend.
v1.1.1
Note
clownassembler_asm68k.exe is the one that mimics asm68k's interface; clownassembler.exe has a custom, simpler interface that is incompatible.
Can assemble...
- The Sonic 1 Git disassembly
- SuperEgg's Sonic 2 Nick Arcade disassembly
- The Sonic 2 August 21st prototype disassembly
- The Sonic Spinball disassembly
- The Mean Bean Machine disassembly
- Vladikcomper's debugger and error handler (ASM68K version)
- Aurora Fields' Z80 macros
- The Puyo Puyo disassembly
Added features
PURGE.- Undefines a macro.
- Alternate operand syntax.
- (Label,pc,d0.w)
- (4,a0,d0.w)
Fixes
- Macros not being redefinable.
v1.1
Note
clownassembler_asm68k.exe is the one that mimics asm68k's interface; clownassembler.exe has a custom, simpler interface that is incompatible.
Added features
- Warnings about opcodes having a dot but no size now only print when pedantic warnings are enabled.
- Automatic even.
- Forces
DC,DCB,DS, andRSwhich are word- or longword-sized to begin at the next even address. - Enabled with
ae+.
- Forces
DSdirective.- Allocates spaces and fills it with 0s.
- Default arguments for the C++ interface.
Fixes
- Special macro arguments (like
\_) not always being substituted. - Functions like
DEFandSTRCMPreturning 1 instead of 0xFFFFFFFF. IF,ELSE,ENDC,ENDR, and similar keywords not being detected if they are hidden inside a short macro (declared withMACROSkeyword).MOVEnot being compatible with having a register list as either of its operands.INCBIN's start offset not being optional whilst a length is specified.- Non-string macro arguments not being converted to lowercase when case-insensitivity is enabled.
DCdirective range errors printing numbers as decimal rather than hexadecimal.- Special macro arguments not absorbing their trailing backslash.
- Got C++ interface wrapper working again.
- Macro arguments and string constants not all being applied in order from left to right.
- Previously, macro arguments were always applied first, even if string constants occurred before them.
- Fixed 'symbol redefined' errors for macro-local variables which use forward references.
v1.0.1
Note
clownassembler_asm68k.exe is the one that mimics asm68k's interface; clownassembler.exe has a custom, simpler interface that is incompatible.
Added features
- 'FILESIZE' function.
- Alternate opcodes from axm68k.
Fixes
- 'MACROS' not being able to create dangling if-statements.
- 'STRCMP' being treated as 'STRLEN'.
- '_' potentially containing trailing garbage data.
- 'SUBSTR' not allowing its end to be before its start.
- 'EQUS' not being able to use a string constant as its input.
v1.0
Read the full update report on my blog!
Note
clownassembler_asm68k.exe is the one that mimics asm68k's interface; clownassembler.exe has a custom, simpler interface that is incompatible.
Can assemble...
- The Sonic 1 Git disassembly
- SuperEgg's Sonic 2 Nick Arcade disassembly
- The Sonic 2 August 21st prototype disassembly
- The Sonic Spinball disassembly
- The Mean Bean Machine disassembly
- Vladikcomper's debugger and error handler (ASM68K version)
- Aurora Fields' Z80 macros
Added features
- Eliminated 1024-character line length limit.
- Comments in listing files.
EQU/SET/RSvalues in listing files.EQUSSUBSTR, andINSTR(string-processing).- Expansion of all macros in listing files (
/mcommand line option). - Forward-references to variables.
PUSHOandPOPO(push and pop options state).OPT(set options).- Escaped quotes within strings.
PUSHPandPOPP(push and pop string constants).- Custom option
wp+(enables pedantic warnings). SHIFT(removes a macro argument).MEXIT(prematurely terminates macro expansion).LOCAL(limits a symbol's visibility to the surrounding macro).- Alternative local label signifiers ('l+', 'l-', etc. options).
Fixes
- Listing files not showing
includedirectives. - Trailing white-space being included in macro arguments.
- Nested
REPTdirectives still not working. - Nested
WHILEdirectives not working. - Macros modifying the input of
REPTdirectives rather than their output. - Greatly improved the accuracy of inserting arguments into macro expansions.
NARGbeing a preprocessor constant instead of an assembler variable.NARGnever being 0.- Code overwritten using
ORGbeing reverted if the overwritten code contained a forward-reference. - 'and.w #1,sr',
or.b #1,ccr, and similar instructions failing to assemble.
v0.4
Note
clownassembler_asm68k.exe is the one that mimics asm68k's interface; clownassembler.exe has a custom, simpler interface that is incompatible.
Added features
- The
\_macro parameter specifier. - The
strcmpfunction.
Fixes
- Macro parameters sometimes not being substituted.
- Empty strings not being recognised as strings.
v0.3.1
Note
clownassembler_asm68k.exe is the one that mimics asm68k's interface; clownassembler.exe has a custom, simpler interface that is incompatible.
Added Features
- C++ wrapper, for easily integrating this assembler into other projects.
- Used by ClownMapEd.
Fixes
v0.3
Note
clownassembler_asm68k.exe is the one that mimics asm68k's interface; clownassembler.exe has a custom, simpler interface that is incompatible.
Added Features
- The '\@', '\#', and '\$' macro parameters.
- The OBJ and OBJEND directives.
- Passing RSRESET a parameter.
- The ORG directive.
- The FAIL directive.
- The DEF directive.
- The '/e' command line parameter, allowing constants to be defined.
- The 'label.w' and 'label.l' absolute address syntax.
- Misused instructions are automatically corrected to the appropriate instruction, instead of producing an error.
- The '/v' command line parameter, allowing local labels to be included in the symbol file.
- The 'w+' and 'w-' options, allowing warnings to be enabled and disabled.
Fixes
- Made RS, RSSET, and RSRESET behave accurately to asm68k.
- Fixed using constants for INCBIN parameters.
- Fixed asm68k-style frontend ignoring all options after the first one.
- Renamed '__RS' to '__rs' to match asm68k.
- Fixed broken dictionary logic which was causing symbols to be missing from the symbol file (#10).
- Fixed true 'ELSEIF' directives causing later conditions to be processed incorrectly (#9).
v0.2
clownassembler_asm68k.exe is the one that mimics asm68k's interface; clownassembler.exe has a custom interface that is incompatible.
Can assemble...
- The Sonic 1 Git disassembly
- SuperEgg's Sonic 2 Nick Arcade disassembly
- The Sonic 2 August 21st prototype disassembly
- The Sonic Spinball disassembly
Changes:
- Added support for nested macros.
- Fixed identifiers being mistaken for registers.
- Fixed uppercase Z80 hexadecimal numbers not being recognised
- Fixed integers that are too large being saturated instead of truncated.
- Fixed random crashes and nonsensical 'symbol undefined' errors (bugged dictionary).
- Added support for macros using their associated label using '\*' (this is needed by MainMemory's MapMacros).
- Fixed 'else' following 'elseif' being treated as always true.
- Fixed CNOP sometimes padding to the second-next boundary instead of the first-next.
v0.1
Initial release. Can assemble the Sonic 1 Git disassembly and SuperEgg's Sonic 2 Nick Arcade disassembly.
clownassembler_asm68k.exe is the one that mimics asm68k's interface; clownassembler.exe has a custom interface that is incompatible.