Releases: Clownacy/clownassembler
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
, andRS
which are word- or longword-sized to begin at the next even address. - Enabled with
ae+
.
- Forces
DS
directive.- Allocates spaces and fills it with 0s.
- Default arguments for the C++ interface.
Fixes
- Special macro arguments (like
\_
) not always being substituted. - Functions like
DEF
andSTRCMP
returning 1 instead of 0xFFFFFFFF. IF
,ELSE
,ENDC
,ENDR
, and similar keywords not being detected if they are hidden inside a short macro (declared withMACROS
keyword).MOVE
not 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.
DC
directive 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
/RS
values in listing files.EQUS
SUBSTR
, andINSTR
(string-processing).- Expansion of all macros in listing files (
/m
command line option). - Forward-references to variables.
PUSHO
andPOPO
(push and pop options state).OPT
(set options).- Escaped quotes within strings.
PUSHP
andPOPP
(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
include
directives. - Trailing white-space being included in macro arguments.
- Nested
REPT
directives still not working. - Nested
WHILE
directives not working. - Macros modifying the input of
REPT
directives rather than their output. - Greatly improved the accuracy of inserting arguments into macro expansions.
NARG
being a preprocessor constant instead of an assembler variable.NARG
never being 0.- Code overwritten using
ORG
being 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
strcmp
function.
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.