Portable Amiga 68k Hunk File Disassembler.
This disassembler was tested against the Amiga game Civilization (ECS) and Lightwave for FPU support plus lha.exe v2.15 for 020 Opcodes.
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 8-bit value
- d16 – Signed 16-bit value
- d32 – Signed 32-bit value
- An – Ax Register
- Dn – Dx Register
- Xn – Ax/Dx Register [W/L] with scale
- xxx – Address
- data – 32-bit data value
DnAn( 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>
Show CPU opcodes
- Abcd
- Add
- Adda
- Addi
- Addq
- Addx
- And
- Andi
- Asl
- Asr
- Bcc
- BChg
- BClr
- BFChg
- BFClr
- BFExts
- BFExtu
- BFFFO
- BFIns
- BFTst
- 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
- Movec
- 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
- Swap
- Tas
- Trap
- Trapcc
- Trapcs
- Trapeq
- Trapf
- Trapge
- Trapgt
- Traphi
- Traple
- Trapls
- Traplt
- Trapmi
- Trapne
- Trappl
- Trapt
- Trapv
- Trapvc
- Trapvs
- Tst
- Unlk
- Unpk
Show FPU opcodes
- 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.
Added my own custom FHR Container, for testing.
Hunks Supported
| Label | Hex ID | Dec ID | Description / Note |
|---|---|---|---|
HUNK_CODE |
0x03E9 |
1001 |
Code Section |
HUNK_DATA |
0x03EA |
1002 |
Data Section |
HUNK_BSS |
0x03EB |
1003 |
Bss Section |
HUNK_RELOC32 |
0x03EC |
1004 |
|
HUNK_SYMBOL |
0x03F0 |
1008 |
|
HUNK_DEBUG |
0x03F1 |
1009 |
skipping only |
HUNK_END |
0x03F2 |
1010 |
|
HUNK_HEADER |
0x03F3 |
1011 |
File Header |
HUNK_DREL32 |
0x03F7 |
1015 |
Same as HUNK_RELRELOC32 |
HUNK_RELOC32SHORT |
0x03FC |
1020 |
Same as HUNK_DREL32 |
HUNK_RELRELOC32 |
0x03FD |
1021 |
FHR Chunks Supported
| Label | ID | Description |
|---|---|---|
FHR_HEADER |
FHR\0 |
File Header |
FHR_COD0 |
COD\0 |
Code Section (Exe File) |
FHR_DAT0 |
DAT\0 |
Data Section (Exe File) |
FHR_BSS0 |
BSS\0 |
BSS Section (Exe File) |
FHR_END0 |
END\0 |
End of Section |