-----------------DOES NOT TURN OFF----------------------
alright imma give you a outline...
first obviously u need ps2dis opened. then drag the 1.6 update into ps2dis. itll say load from and address from.both are zero. change address from to 08800000. then go to an open spot in the game
NOTE:this means a place where it is all nops but still blue. ie i go to 08801800. ull see what i mean. to jump to 08801800 press g and then type 08801800, then enter.
okay now that u are there u actually start to joker. if u double click on 08801800 a box will pop up. at the bottom of it youll see command and it should be 'nop'... thats called mips. nop stands for no operation.
Note: for a joker to work it must have a controller address. which is the address the button value will be stored on. basically the address for the buttons. now ive seen 2 but actually found one myself. its 09a80230, ive also seen tonic using 09a8e1e4, i dont think it matters. correct me if im wrong. well anyways here is what u wanna fill into the first command box(note:if its on a diff line it goes into the next command box:
lui t0, $09a8 <----loads 09a8 into the first register
lui t1, $08d6 <----loads the first four of flashes address
lh t0, $e1e4(t0) <----loads the last half of the controller address into the first register(its now 09a80230
lw t2, $fa2c(t1) <----loads the second half of flash into register 1(its now
ori t3, zero, $8000 <----button value for square
bne t0, t3, $(t0 the jr ra address) <----if 09a80230(or 09a8e1e4) doesnt equal 00008000 then end the function
(skip a line because of branch delay)
lui t4, $4000 <----loads the modded value for flash into flash
sw t4, $fa2c(t1) <----stores it into the address
(skip another line)
jr ra <----end the function
okay now a little bit of MIPS. here are the definitions of the commands we used:
lui = load upper immediate, used to load the first four digits of a code
lw = load word, used to load the last four digits of a code
lh = load halfword, used to also load the last half digits but use the same register rather than using another register.
ori = or immediate, used to load many things ie, button values, last four digits onto a register etc.
bne = branch if not equal, used to tell the game something is not equal to something then end the function(the opposite is beq=branch if equal, then you branch to the modded value)
sw = store word, used to usaully store value hexes into the address(not sure if used for other things)
jr ra = honestly dont know but used to end a function. ill found out wwhat it means and will post it.
--------------------------TURNS OFF------------------------------
alright here is a joker that turns off upon release
lui t0, $08d6 <---- loads first four digits of flash into t0
lui t1, $09a8 <---- loads first four digits of controller address into t1
lw t2, $e1e4(t1) <---- loads second half of controller address into t1(BTW the full address is now in t2 not t1)
ori t3, zero, $8000 <---- loads squares button value
bne t2, t3, $to the original value <----- says if the controller address isnt equal to 8000(square) then go to the normal value and stay normal(kinda lol?)
(skip)
lw t4, $fa2c(t0) <---- loads last four digits of flash into t0
lui t5, $4000 <---- loads modded value into t5
sw t5, $fa2c(t0) <--- stores t5 into t0 in other words making the value 40000000
j $to the end of the function <--- jumps to the end to skip adding original value cause then it would just immediately turn off
(skip)
lui t6, $3f80 <--- loads normal value into t6
sw t6, $fa2c(t0) <--- stores value into flash
(skip)
jr ra <--- ends function
Hope i Helped and plz Rep+
feel free to ask any questions also notice how it doesnt add the normal value unless the contoller doesnt equal square. it just skips it and IF it does equal square then it skips adding the modded value and goes streight to the normal value
Bookmarks