Difference between revisions of "Convert the Hivebrain 2005 disassembly to ASM68K"
From Sonic Retro
Scarred Sun (talk | contribs) |
Scarred Sun (talk | contribs) m (Text replacement - "</asm>" to "</syntaxhighlight>") |
||
Line 8: | Line 8: | ||
align macro | align macro | ||
cnop 0,\1 | cnop 0,\1 | ||
− | endm</ | + | endm</syntaxhighlight> |
Next edit the line below in '''build.bat:''' | Next edit the line below in '''build.bat:''' | ||
<pre>snasm68k.exe -emax 0 -p -o ae- s1comb.asm, s1built.bin</pre> | <pre>snasm68k.exe -emax 0 -p -o ae- s1comb.asm, s1built.bin</pre> | ||
Line 14: | Line 14: | ||
<pre>asm68k /o op+ /o os+ /o ow+ /o oz+ /o oaq+ /o osq+ /o omq+ /p /o ae- s1comb.asm, s1built.bin</pre> | <pre>asm68k /o op+ /o os+ /o ow+ /o oz+ /o oaq+ /o osq+ /o omq+ /p /o ae- s1comb.asm, s1built.bin</pre> | ||
And then in the source file itself replaced this incorrect line in '''SkipSecurity''': | And then in the source file itself replaced this incorrect line in '''SkipSecurity''': | ||
− | <asm> move a6,usp ; set usp to $0</ | + | <asm> move a6,usp ; set usp to $0</syntaxhighlight> |
With the proper: | With the proper: | ||
− | <asm> move.l a6,usp ; set usp to $0</ | + | <asm> move.l a6,usp ; set usp to $0</syntaxhighlight> |
Which results in a perfectly assembling rom, which assembles so quickly I can barely have time to see the window open. | Which results in a perfectly assembling rom, which assembles so quickly I can barely have time to see the window open. | ||
Line 22: | Line 22: | ||
In the source file, replace all instances of: | In the source file, replace all instances of: | ||
− | <asm>; include=</ | + | <asm>; include=</syntaxhighlight> |
With the proper: | With the proper: | ||
− | <asm> include "</ | + | <asm> include "</syntaxhighlight> |
Ensure that you replace all instances of: | Ensure that you replace all instances of: | ||
− | <asm>.asm</ | + | <asm>.asm</syntaxhighlight> |
With: | With: | ||
− | <asm>.asm"</ | + | <asm>.asm"</syntaxhighlight> |
As such, this entire line becomes unneeded in build.bat: | As such, this entire line becomes unneeded in build.bat: |
Revision as of 21:30, 20 December 2015
(Original guide by Puto)
This guide covers converting your split disassembly from SNASM68K (the assembler) to a better, faster assembler known as ASM68K. This tutorial is also necesary if you want to work on a 64-bit OS without restarting on a new split.
The only thing that SNASM68K has that ASM68K doesn't seem to support, is the "align" directive, as well as negative cnops. The align issue can be fixed with a simple macro that can be placed above StartOfRom: <asm> align macro
cnop 0,\1 endm</syntaxhighlight>
Next edit the line below in build.bat:
snasm68k.exe -emax 0 -p -o ae- s1comb.asm, s1built.bin
With this:
asm68k /o op+ /o os+ /o ow+ /o oz+ /o oaq+ /o osq+ /o omq+ /p /o ae- s1comb.asm, s1built.bin
And then in the source file itself replaced this incorrect line in SkipSecurity: <asm> move a6,usp ; set usp to $0</syntaxhighlight> With the proper: <asm> move.l a6,usp ; set usp to $0</syntaxhighlight> Which results in a perfectly assembling rom, which assembles so quickly I can barely have time to see the window open.
Better yet, since this supports long filenames, I can then replace the include.exe directives (in the format of ; include=xxx) with proper "include" directives, which allows me to completely skip the creation of s1comb.asm! This is very useful, because it means when you get a compiling error, you'll no longer have to check the line in s1comb.asm, and then track the location to sonic1.asm.
In the source file, replace all instances of: <asm>; include=</syntaxhighlight> With the proper: <asm> include "</syntaxhighlight>
Ensure that you replace all instances of: <asm>.asm</syntaxhighlight> With: <asm>.asm"</syntaxhighlight>
As such, this entire line becomes unneeded in build.bat:
include.exe sonic1.asm s1comb.asm
And the asm68k line can be changed to assemble sonic1.asm directly.
That's it! Enjoy a faster build of your hack.