---------> BETA RELEASE <---------

Update 0.1:
- Added Export to .C functionality

Update 0.1b:
- Added code output custom formatting
  * Use '-' to have no formatting
  * Use '0' to 'F' (hex) for code formatting

Update 0.1c:
- Miscellaneous updates
- Updated supported commands

Update 0.1d:
- Added color view
- Added "setreg"
- Updated supported commands

Update CD v2.3.1:
- Added newer assembler
- Added newer disassembler
- Added Emulator
- Updated supported commands

Official CheatersLounge Product Copyright 
Written by - Gtlcpimp

This is a nifty program I designed in Visual Basics 6.0, so you may
need the vb6 runtime files installed onto your computer if you don't
have vb6 in order for it to function properly.

Notes:

The disassembler is still under construction. What it will disassemble
gets disassembled 100% flawlessly and instantly. However not everything
is supported by the disassembler. Float commands, for example, will be
recognized but not disassembled properly. The "goto" and "call" commands
utilize label markers. Any label marker can be placed by typing in the
name of the label followed by a colon.
For example:


label:

goto label
call label
xbranchx xx, xx, :label // (xbranchx <- Any branching command / arguments)
jal :label
j :label

The goto command will branch or jump to the label's address. The branch
contains no compare (beq zero, zero, $xxxx), and automatically clear
the next line with what is considered "no operation" (sll zero, zero, 0).
The call command will jump and link the label's address, same rules apply
as the goto command only instead of being a branch / jump, it is a jump
and link.


Currently supported miscellaneous commands:

address
setaddr
setaddress
goto
call
hexcode
setreg

Comments:

// Single Line Comment
/*
	Multi-Line Comment
*/

Establishing the address:

address $000c0000
setaddr $000c0000
setaddress $000c0000

All of the address commands set the address of the function data below the
line of the address command to that address starting point. For example:

address $000c0000
nop
nop
address $00100000
nop

Will return:

200c0000 00000000
200c0004 00000000
20100000 00000000


The hexcode command is used for unknown data, or data you want to inject into
the function (or basically where ever you want).

hexcode $12345678


The setreg command will establish a value into a register. This can allow you
to set the address of a label, or miscellaneous value (hex or decimal) into
the register. This command consumes two lines of code, and outputs the load
upper immediate command followed by the or immediate command.

Examples:
setreg v0, :label
setreg v0, $12345678
setreg v0, 100

Output:
lui v0, $1234
ori v0, v0, $5678


The color view is simply to make viewing the source a bit easier. It is very
buggy, and can be disabled in the menu (View -> Color View).


Currently Supported MIPS Commands (All registers are supported):

nop
sll
srl
sra
sllv
srlv
srav
j
jr
jal
jalr
syscall
sync
mult
multu
div
divu
add
addu
sub
subu
and
or
xor
slt
sltu
dadd
daddu
dsub
dsubu
addi
addiu
slti
sltiu
andi
ori
xori
lui
daddi
daddiu
lq
sq
lb
lh
lw
lbu
lhu
lwu
sb
sh
sw
ld
lwc1
swc1
sd
mtc0
mfc0
mtc1
mfc1
add.s
sub.s
mul.s
div.s
sqrt.s
abs.s
mov.s
neg.s
cvt.w.s
cvt.s.w
beq
bne
bnel
beql
bltz
blez
bgtz
bgez
bgezal
sync.p

