Portable Amiga 68k Hunk File Disassembler.
This disassembler was tested against the Amiga game Civilization (ECS) and Lightwave for FPU support.
It attempts to convert library calls into a more readable format. For example:
jsr (-552,a6)
will be converted tojsr (_LVOOpenLibrary,a6)
when it can identify that a6 holds the ExecBase.- It can also detect calls to DiskFont, Dos, Graphics, and Intuition library calls.
There is also some JumpTable detection but its far from perfect. You will likely need to create a config file and use the Relative16 option.
PC = Program Counter
d8 = Signed 8bit value
d16 = Signed 16bit value
d32 = Signed 32bit value
An = Ax Register
Dn = Dx Register
Xn = Ax/Dx Register.[W/L] with Scale
xxx = Address
data = 32bit Data value
- Dn
- An
- ( An )
- ( An )+
- -( An )
- ( d16 , An )
- ( d16 , PC )
- ( d8 , An , Xn )
- ( d8 , PC , Xn )
- ( bd , An , Xn )
- ( bd , PC , Xn )
- ( [ bd , An ] , Xn , od )
- ( [ bd , PC ] , Xn , od )
- ( [ bd , An , Xn ] , od )
- ( [ bd , PC , Xn ] , od )
- ( xxx ).w
- ( xxx ).l
# <data>
Please be aware of the following:
- The movec opcode is missing.
- There are no MMU opcode handling.
Integer Opcodes (Currently Supported)
- Abcd
- Add
- Adda
- Addi
- Addq
- Addx
- And
- Andi
- Asl
- Asr
- Bcc
- BChg
- BClr
- Bcs
- Beq
- Bge
- BGnd
- Bgt
- Bhi
- Bkpt
- Ble
- Bls
- Blt
- Bmi
- Bne
- Bpl
- Bra
- BSet
- Bsr
- BTst
- Bvc
- Bvs
- Callm
- Chk
- Chk2
- Clr
- Cmp
- Cmp2
- Cmpa
- Cmpi
- Cmpm
- DBcc
- DBcs
- DBeq
- DBf
- DBge
- DBgt
- DBhi
- DBle
- DBls
- DBlt
- DBmi
- DBne
- DBpl
- DBt
- DBvc
- DBvs
- Divs
- Divsl
- Divu
- Eor
- Eori
- Exg
- Ext
- Extb
- Illegal
- Jmp
- Jsr
- Lea
- Link
- LPStop
- Lsl
- Lsr
- Move
- Move16
- Movea
- Movem
- Movep
- Moveq
- Moves
- Muls
- Mulu
- Nbcd
- Neg
- Negx
- Nop
- Not
- Or
- Ori
- Pack
- Pea
- Reset
- Rol
- Ror
- Roxl
- Roxr
- Rtd
- Rte
- Rtm
- Rtr
- Rts
- Sbcd
- Scc
- Scs
- Seq
- Sf
- Sge
- Sgt
- Shi
- Sle
- Sls
- Slt
- Smi
- Sne
- Spl
- St
- Sub
- Suba
- Subi
- Subq
- Subx
- Svc
- Svs
- Tas
- Swap
- Trap
- Trapcc
- Trapcs
- Trapeq
- Trapf
- Trapge
- Trapgt
- Traphi
- Traple
- Trapls
- Traplt
- Trapmi
- Trapne
- Trappl
- Trapt
- Trapv
- Trapvc
- Trapvs
- Tst
- Unlk
- Unpk
FPU Opcodes (Currently Supported)
- FAbs
- FACos
- FAdd
- FASin
- FATan
- FATanh
- FBeq
- FBf
- FBge
- FBgl
- FBgle
- FBgt
- FBle
- FBlt
- FBne
- FBnge
- FBngl
- FBngle
- FBngt
- FBoge
- FBogl
- FBogt
- FBole
- FBolt
- FBor
- FBseq
- FBsne
- FBst
- FBt
- FBueq
- FBuge
- FBugt
- FBule
- FBult
- FBun
- FCmp
- FCos
- FCosh
- FDAbs
- FDAdd
- FDDiv
- FDiv
- FDMove
- FDMul
- FDNeg
- FDSqrt
- FDSub
- FEtox
- FEtoxm1
- FGetexp
- FGetman
- FInt
- FIntrz
- FLog2
- FLog10
- FLogn
- FLognp1
- FMod
- FMove
- FMovecr
- FMovem (Partially implemented)
- FMul
- FNeg
- FNop
- FRem
- FRestore
- FSAbs
- FSAdd
- FScale
- FSDiv
- FSeq
- FSf
- FSge
- FSgl
- FSgldiv
- FSgle
- FSglmul
- FSgt
- FSin
- FSincos
- FSinh
- FSle
- FSlt
- FSMove
- FSMul
- FSne
- FSNeg
- FSnge
- FSngl
- FSngle
- FSngt
- FSnle
- FSnlt
- FSoge
- FSogl
- FSogt
- FSole
- FSolt
- FSor
- FSqrt
- FSseq
- FSsne
- FSSqrt
- FSst
- FSSub
- FSt
- FSub
- FSueq
- FSuge
- FSugt
- FSule
- FSult
- FSun
- FTan
- FTanh
- FTentox
- FTst
- FTwotox
Again, only what is needed has been implemented, so it's a little limited. The original Civ game did not include Symbol, DRel32, and Relloc32Short, but when I assembled the disassembled source with vasm, those hunks were used.
Hunks Supported:
- HUNK_CODE (3E9)
- HUNK_DATA (3EA)
- HUNK_BSS (3EB)
- HUNK_RELOC32 (3EC)
- HUNK_SYMBOL (3F0)
- HUNK_DEBUG (3F1) [Skipping]
- HUNK_END (3F2)
- HUNK_HEADER (3F3)
- HUNK_DREL32 (3F7)
- HUNK_RELOC32SHORT (3FC)