Disclaimer |
The author is NOT responsible for any damage caused to you computer by this program,
the usage of it, etc. or any damage caused to your tiny brain while trying to understand it. This program in no way encourages piracy and the utilities in the program are
intended only for those who have themselves legitimately created archival copies of their own games.
</Obligatory Legal Bullshit>
|
Version History |
Version 1.0 | 6/23/08 |
Getting started. It took over 3 weeks to do this, but only 3 days of that was spent on dis/assembly. Most of the time put in was learning and implimenting the goddamn API stuff.
|
Features |
You might recall the half-assed disassembler I wrote in VB6 before (part of Renegade). This one is all C and Win32 API. Hopefully, it's the last one I feel the need to write for MIPS.
Current Features:
- Dis/assemble 3 MIPs languages
- ASM Searcher
- Header view (PS2 ELFs and N64 ROMs)
- Valid XHTML 1.1 readme. ;-)
Possible To-Do List:
Known Issues:
|
General Notes |
My disassembler is sort of a Win32 style Niew. You'll notice you can edit hex/asm and the opposite changes accordingly. A couple of notes...
- ALL values entered are expected to be Hexadecimal.
- I tried to make this as true to each language as I could, but good documentation is hard to come by sometimes.
- Edit ASM/hex/address(go to) by doubleclicking or using a shortcut key (see below).
|
Keyboard Shortcuts |
Key(s) | Function |
F5/CTRL+G | Go To (You can also doubleclick any address box) |
F3 | Edit hex. Press again to move over to ASM. Shades of Niew. :) |
Immediates/Jump Targets |
Jumps and other opcodes where you use a value are fairly forgiving on syntax of the value.
Some Examples:
JAL 00000060
J 60
JAL $60
J 0x60
BEQ $V0,$A1,0x00000068
BNE $V1,$S1,68
ADDIU $V0,$V0,00FF
ADDIU $V0,$V0,FF
ADDIU $V0,$V0,$00FF
ADDIU $V0,$V0,$FF
ADDIU $V0,$V0,0x00FF
|
Registers |
Registers are another thing I tried to make flexible.
Some Examples:
ADDIU $V0,$zero,00FF
ADDIU $V0,zero,00FF
ADDIU $V0,R0,00FF
ADDIU $v0,R0,00FF
ADDIU V0,R0,00FF
ADDIU R3,R0,00FF
ADDIU 3,R0,00FF
LUI $K1,3F80
MTC1 K1,F2
|
ASM Search Info |
If you ever used Renegade, you might remember it having some useful (and probably buggy) R4300i search options. This is basically an expansion on that type of searching.
- ALL values input are assumed hex!
Search Types:
- References to a 32-Bit Value - Looks for LUI $*,XXXX and another op with the lower half of the address.
- LI 16-Bit Value - Finds ADDI/ADDIU/DADDI/DADDIU/ORI ops which load an immediate to a reg ($reg,$zero,value).
- SLTI/SLTIU 16-Bit Value - Finds SLTI/U ops whose entered value matches the entered one.
- ADD/OR 16-Bit Value - Finds ADDI/ADDIU/DADDI/DADDIU/ORI ops which add/or an immediate to any reg ($reg,$reg,value).
- AND 16-Bit Value - Finds ANDI ops whith an immediate matching the entered one ($reg,$reg,value).
- J/JAL Address - Pretty self-explanatory.
- 32-Bit Value - Your basic Known Value search.
- 32-Bit Value AND Mask - Known Value search, with a twist. The file is searched for values that (value AND mask) == entered value.
|
|