ReSrc4 - MC680x0 Disassembler
Portable Amiga 68k Hunk File Disassembler.
This disassembler was tested against the Amiga game Civilization (ECS) and Lightwave for FPU support.
Features
Library Call Recognition
It attempts to convert library calls into a more readable format. For example:
jsr (-552,a6)
will be converted to jsr (_LVOOpenLibrary,a6)
when it can identify that a6 holds the ExecBase.
- It can also detect calls to DiskFont, Dos, Graphics, and Intuition library calls.
Jump Table Recognition
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.
Effective Address Modes
Modes
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
Supported
- 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>
Opcodes
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
Hunk file support
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)