I mean is if you press the joker button value and the code will activate after 5 seconds, etc...
PSPAR:
MIPS Assembly:
Example:
Controller Address
0x0143DDF0 - Fake Addressing
0x09C3DDF0 - Real Addressing
Button Value
0x0200(R) 0x4000(X) = 0x4200 - Button Value
-0x0200(R) - 0x4000(X) - 0x0001 = 0xBDFF - Negative Button Value
nop Address(Timer)
0x00003FFC - Fake Addressing
0x08803FFC - Real Addressing
Timer Value
0x0003(3 Seconds) x 0x0044 = 0x00CC(3 seconds)
Code
0x08E32BF0 - Real Addressing
Example: PSPAR
Example: MIPS Assembly
PSPAR:
- Code:
_C0 Joker (Timer)
# Brian-1337-
_N 0xAZZZZZZZ 0xYYYYXXXX \\ 0xZZZZZZZ = Controller Address | 0xYYYY = Negative Button Value - 0x01 / 0xXXXX = Button Value
_N 0x1ZZZZZZZ 0x00000000 \\ 0xZZZZZZZ = nop Address(Timer)
_N 0xD2000000 0x00000000 \\ Terminate 0xA
_N 0x9ZZZZZZZ 0xYYYYXXXX \\ 0xZZZZZZZ = Controller Address | 0xYYYY = Negative Button Value - 0x01 / 0xXXXX = Button Value
_N 0xDA000000 0xZZZZZZZZ \\ 0xZZZZZZZ = nop Address(Timer)
_N 0xD4000000 0x00000001 \\ Time Adder
_N 0xD7000000 0xZZZZZZZZ \\ 0xZZZZZZZ = nop Address(Timer)
_N 0xD2000000 0x00000000 \\ Terminate 0x9
_N 0x8ZZZZZZZ 0x0000YYYY \\ 0xZZZZZZZ = nop Address(Timer) | 0xYYYY = Timer Value (Note: 0x44 is equivalent of 1 second)
_N \\ Code(s) to Activate
_N 0xD2000000 0x00000000 \\ Terminate = 0x4
MIPS Assembly:
- Code:
Joker (Timer)
# Brian-1337-
lui t0, $ZZZZ \\ 0xZZZZ = First Half Controller Address
lh t0, $ZZZZ(t0) \\ 0xZZZZ = Second Half Controller Address
andi t0, t0, $YYYY \\ 0xYYYY = Button Value
ori t1, zero, $XXXX \\ 0xXXXX = Button Value
beq t1, t0, $ZZZZZZZZ \\ 0xZZZZZZZZ = Branch to (bne t1, t0, $ZZZZZZZZ) / Terminate
lui t2, $ZZZZ \\ 0xZZZZ = First Half nop Address(Timer)
sh zero, $ZZZZ(t2) \\ 0xZZZZ = Second Half nop Address
bne t1, t0, $ZZZZZZZZ \\ 0xZZZZZZZZ = Branch to (sltiu t3, t4, $YYYY) / Terminate
lh t4, $ZZZZ(t2) \\ 0xZZZZ = Second Half nop Address(Timer)
addiu t3, t4, $0001 \\ Time Adder
sh t3, $ZZZZ(t2) \\ 0xZZZZ = Second Half nop Address(Timer)
sltiu t3, t4, $YYYY \\ 0xYYYY = Timer Value (Note: 0x44 is equivalent of 1 second)
bne t3, zero, $ZZZZZZZZ \\ 0xZZZZZZZZ = Branch to (jr ra) / Terminate
nop
\\ Codes to Activate (Subroutine)
jr ra
nop
Example:
Controller Address
0x0143DDF0 - Fake Addressing
0x09C3DDF0 - Real Addressing
Button Value
0x0200(R) 0x4000(X) = 0x4200 - Button Value
-0x0200(R) - 0x4000(X) - 0x0001 = 0xBDFF - Negative Button Value
nop Address(Timer)
0x00003FFC - Fake Addressing
0x08803FFC - Real Addressing
Timer Value
0x0003(3 Seconds) x 0x0044 = 0x00CC(3 seconds)
Code
- Code:
_C0 Suicide
_N 0x00632BF0 0x00000000
0x08E32BF0 - Real Addressing
Example: PSPAR
- Code:
_C0 Suicide (R+X - 3 Seconds)
# Brian-1337-
_N 0xA143DDF0 0xBDFF4200 \\ 0x143DDF0 = Controller Address | 0xBDFF = Negative Button Value - 0x01 / 0x4200 = Button Value
_N 0x10003FFC 0x00000000 \\ 0x0003FFC = nop Address(Timer)
_N 0xD2000000 0x00000000 \\ Terminate 0xA
_N 0x9143DDF0 0xBDFF4200 \\ 0x143DDF0 = Controller Address | 0xBDFF = Negative Button Value - 0x01 / 0x4200 = Button Value
_N 0xDA000000 0x00003FFC \\ 0x0003FFC = nop Address(Timer)
_N 0xD4000000 0x00000001 \\ Time Adder
_N 0xD7000000 0x00003FFC \\ 0x0003FFC = nop Address(Timer)
_N 0xD2000000 0x00000000 \\ Terminate 0x9
_N 0x80003FFC 0x000000CC \\ 0x0003FFC = nop Address(Timer) | 0x00CC = Timer Value (Note: 0x44 is equivalent of 1 second)
_N 0x00632BF0 0x00000000 \\ Code(s) to Activate
_N 0xD2000000 0x00000000 \\ Terminate = 0x4
Example: MIPS Assembly
- Code:
Suicide (R+X - 3 Seconds)
# Brian-1337-
0x08801000 : lui t0, $09C4 \\ 0x09C4 = First Half Controller Address
0x08801004 : lh t0, $DDF0(t0) \\ 0xDDF0 = Second Half Controller Address
0x08801008 : andi t0, t0, $4200 \\ 0x4200 = Button Value
0x0880100C : ori t1, zero, $4200 \\ 0x4200 = Button Value
0x08801010 : beq t1, t0, $0880101C \\ 0x0880101C = Branch to (bne t1, t0, $0880102C) / Terminate
0x08801014 : lui t2, $0880 \\ 0x0880 = First Half nop Address(Timer)
0x08801018 : sh zero, $3FFC(t2) \\ 0x3FFC = Second Half nop Address
0x0880101C : bne t1, t0, $0880102C \\ 0x0880102C = Branch to (sltiu t3, t4, $00CC) / Terminate
0x08801020 : lh t4, $3FFC(t2) \\ 0x3FFC = Second Half nop Address(Timer)
0x08801024 : addiu t3, t4, $0001 \\ Time Adder
0x08801028 : sh t3, $3FFC(t2) \\ 0x3FFC = Second Half nop Address(Timer)
0x0880102C : sltiu t3, t4, $00CC \\ 0x00CC = Timer Value (Note: 0x44 is equivalent of 1 second)
0x08801030 : bne t3, zero, $08801040 \\ 0x08801040 = Branch to (jr ra) / Terminate
0x08801034 : nop
0x08801038 : lui t0, $08E3 \\ 0x08E3 = First Half Code Address / Code(s) to Activate
0x0880103C : sw zero, $2BF0(t0) \\ 0x2BF0 = Second Half Code Address / Code(s) to Activate
0x08801040 : jr ra
0x08801044 : nop
Last edited by Brian-1337- on Wed Jun 20, 2012 7:37 pm; edited 2 times in total