Here's PM's stamina mode-------------------------------------------------------------------------------------------Stamina Full codes breakdown-------------------------------------------------------------------------------------------4A000000 90000000 #sets pointer address to 900000003A17F378 00FF0200 #checks if the byte at 9017F378 is not 02 (stamina mode flag)0477FB78 93DD0034040E14A4 9421FFE0046CF1B4 8064000404816090 8876006D0483B844 8803006D049559F0 8874000704947370 9801008C04816108 36A3FFFF04816588 38A5000104816088 3884000104816794 380300010405542C 80C40010047CBBB8 9803003404766828 981E0048 #sets all C2 code hooks and 04 ASM writes back to their original instructions3817F379 00FF0200 #end previous if and checks if the byte at 9017F378 is 02 (stamina mode flag)stamina mode corpse cleanup-------------------------------- 100%hook:8077FB78lis r12,0x901Cori r12,r12,0x4924 #loads stamina dead flags address into r12lwz r11,0x1C(r31) #(1)lwz r11,0x28(r11) #(2)cmplwi r11,0xFFFFble end #branches to end if the value in r11 is not an address (prevents crashing from trying to load from a nonexistant address)lwz r11,0x10(r11) #(3)cmplwi r11,0xFFFFble end #branches to end if the value in r11 is not an address (prevents crashing from trying to load from a nonexistant address)lbz r11,0x55(r11) #(1 2 3) loads player number ID into r11lbzx r6,r12,r11 #loads current player stamina dead flag bytecmpwi r30,0xBEbne co #branches to continue on if character action is not respawnstbx r7,r12,r11 #clears current player stamina dead flagcocmpwi r6,0x1Dbne end #checks if current player stamina dead flag was set and branches to end if notcmpwi r30,0x4Dbne end #branches to end if character is not lying down (allows for corpse juggling)li r30,0xBD #set current player action to deathendcmpwi r25,0x14bne ssdfc #branches to skip stamina dead flags clear if not beginning or end of matchstw r7,0(r12) #clears stamina dead flags for all playersssdfc:stw r30,52(r29) #original instruction at hooked addresshp # is max hp after respawn---------------------------------- 100%hook:800E14A4stwu r1,-32(r1) #original instruction at hooked addresslis r0,0x8120cmplw r21,r0bgt end #branch to end if r21 > 0x81200000 (r21 should be 0x43300000 when a character is respawning)cmplw r30,r0blt end #branch to end if r30 < 0x81200000 (sanity check to prevent loading from an invalid address)lbz r11,2(r30) #loads player number ID into r11mulli r11,r11,0x5C #multiplies PNID by offset to next player mem2 player data addresslis r12,0x9018ori r12,r12,0x0C1C #loads player 1 stamina address into r12lhzx r4,r12,r11 #loads current player stamina into r4 from player 1 stamina address + offset to current player mem2 player dataend: #the codehandler puts a branch back to the line after the instruction I hooked herestamina death doesn't subtract stocks------------------------------------------ 100%hook:80816108cmpwi r24,5bne end #branches to end if normal deathaddi r3,r3,1 #adds 1 to stock countend:subic. r21,r3,1 #original instruction at hooked addressexclude stamina deaths from KO tally----------------------------------------- 100%hook:80816588cmpwi r20,0beq end #branches to end if stamina deathaddi r5,r5,1 #adds 1 to KO tally (original instruction at hooked address)end: #the codehandler puts a branch back to the line after the instruction I hooked hereexclude stamina deaths from Fall tally------------------------------------------ 100%hook:80816088cmpwi r20,0beq end #branches to end if stamina deathaddi r4,r4,1 #adds 1 to fall tally (original instruction at hooked address)end: #the codehandler puts a branch back to the line after the instruction I hooked hereexclude stamina deaths from SD tally----------------------------------------- 100%hook: 80816794mr r0,r3 #copies current SD tally in r3 to new SD tally in r0cmpwi r20,0beq end #branches to end if stamina deathaddi r0,r3,1 #original instruction at hooked addressend: #the codehandler puts a branch back to the line after the instruction I hooked herestamina dead flag set------------------------ 100%hook:800E1588cmpwi r24,5bne end #branches to end if normal deathli r0,0x1D #loads stamina dead flag into r0lis r12,0x901Cori r12,r12,0x4924 #loads stamina dead flags address into r12lbz r11,1(r27) #loads player number ID into r11stbx r0,r12,r11 #stores stamina dead flag to stamina dead flag address + PNIDend:stwu r1,-112(r1) #original instruction at hooked addressstop stamina corpses from flashing red------------------------------------------- 100%hook:807CBBB8cmpwi r7,0beq end #branches to end if stamina death rather than some other cause of flashingstb r0,52(r3) #original instruction at hooked address (causes character to flash a color)end: #the codehandler puts a branch back to the line after the instruction I hooked hereno slowmo stamina deaths unless slow mode is on----------------------------------------------------- 100%hook:80766828lis r12,0x9018lbz r11,0xFFFFF37E(r12) #loads slow mode on/off flag at 9017F37E into r11cmpwi r11,1bne end #branches to end if slow mode is not onstb r0,72(r30) #original instruction at hooked address (causes slowmo)end: #the codehandler puts a branch back to the line after the instruction I hooked hereuse HP instead of % anywhere--------------------------------- 100%hook:806CF1B4lwz r3,4(r4) #original instruction at hooked addresscmpwi r0,0x12bne end #branches to end if r4 isn't pointing near the game mode address (r0 is always 12 when it is)srwi r3,r3,8slwi r3,r3,8ori r3,r3,0x28 #loads 0x28 (stamina mode) into the 4th byte of r3end: #the codehandler puts a branch back to the line after the instruction I hooked here04816090 38600000 #forces respawns in stamina for offstage KO's before HP is zero0483B844 38000000 #forces respawns in stamina for offstage KO's after HP is zero046DF124 48000018046DF0FC 60000000049559F0 38600040 #allows multiple stocks in stamina04947370 60000000 #allows stock icons to appear with the HP HUD046A5C78 38000000 #enables first page rules menu feaures046A8570 38000000 #enables second page rules menu feaures046DEB3C 48000008046DEDF0 4800000C #stops rules from resetting to infinite time0468F04C 38000000 #shifts rules bar text to the right (otherwise overlapped by stock/time count)0468F290 38000000 #enables normal rules bar instead of "brawl till you drop"04690754 38000000 #enables changing amount of stocks/time with the rules bar046A0350 3BA00064 #enables setting HP up to 9900469F3D4 3BC00064 #sets 990 as new highest cursor position on HP selection that can be saved0469F898 3BC00064 #allows HP selection tiles above 300 to appear0469FDD4 3BE00064 #sets 990 as new end point for HP selection tiles to not generate beyond040E5B94 38000000 #forces the normal results screen instead of finishes/missesstamina option enabler------------------------ 100%hook:8005542Ccmpwi r0,0beq skbzy #branch to set knockback blastzones yes if stage choice setting is choosecmpwi r0,1beq skbzn #branch to set knockback blastzones no if stage choice setting is randomcmpwi r0,2beq nkbzn #branch to normal knockback blastzones no if stage choice setting is turnscmpwi r0,3beq nkbzy #branch to normal knockback blastzones yes if stage choice setting is orderedcmpwi r0,4beq nkbzn #branch to normal knockback blastzones no if stage choice setting is loser's pickskbzy:li r12,0x0101 #sets flags for set knockback and blastzones onb end #unconditional branch to endskbzn:li r12,0x0102 #sets flags for set knockback and blastzones offb end #unconditional branch to endnkbzn:li r12,0x0202 #sets flags for normal knockback and blastzones offb end #unconditional branch to endnkbzy:li r12,0x0201 #sets flags for normal knockback and blastzones onend:sth r12,0x24(r3) #stores knockback & blastzone flags to 9017F384li r0,0 #sets stage choice to choose046873B0 38000000 #stops music from turning off on the SSS when stage choice is set to random or ordered3817F384 00FF0100 #checks for set knockback flag0485CCF8 8863006D #sets knockback to default stamina set knockback3817F385 00FF0200 #ends previous if and checks for normal knockback flag0485CCF8 38600000 #sets knockback to normal knockback046DF330 889A001F #sets back to default instruction that reads if fixed camera mode is on3817F366 FF000004 #check if stage choice is set to loser's pick046DF330 38800001 #turns on fixed camera modeE0000000 80008000 #full terminator, ends all ifs and sets base and pointer addresses back to 800000004A000000 90000000 #sets pointer address to 900000003A17F378 00FF0200 #checks if the byte at 9017F378 is not 02 (stamina mode flag)66000001 00000000 #skips next line if code execution is true3A17F385 FF000002 #ends previous if and checks if the byte at 9017F385 is not 02 (no blastzones flag)0472E8A4 D043000C0472E8A8 D023001004960F48 880300B404118E24 9421FE6004710230 9421FF90 #writes back the original instructions of all the C2 code addresses3817F379 00FF0200 #ends previous if and checks if the byte at 9017F378 is 02 (stamina mode flag)3817F384 FF000002 #checks if the byte at 9017F385 is 02 (no blastzones flag)XYWW prep-------------- 100%hook:8072E8A4lis r12,0x80B8ori r12,r12,0xA428lwz r12,0(r12)lwz r11,0x80(r12) #loads address of stage camera limits into r11lis r12,0x901Cori r12,r12,0x4900 #loads address of XYWW floats into r12lfs f21,0(r12) #loads float value of the difference between stage camera limit and wrap point for Y axis (CLWPD Y) into f21lfs f22,0x20(r12) #loads float value of the difference between stage camera limit and wrap point for Y axis for Norfair (SNB) into f22lfs f23,4(r12) #loads float value of the difference between stage camera limit and wrap point for X axis (CLWPD X) into f23lfs f17,0(r11) #loads floot coordinate of stage's left camera limit into f17lfs f18,4(r11) #loads floot coordinate of stage's right camera limit into f18lfs f19,8(r11) #loads floot coordinate of stage's top camera limit into f19lfs f20,0xC(r11) #loads floot coordinate of stage's bottom camera limit into f18fsubs f17,f17,f23 #subtracts CLWPD X from stage's left camera limit and stores the result in f17fadds f18,f18,f23 #adds CLWPD X to stage's left camera limit and stores the result in f18lis r11,0x9018lbz r11,0xF3B(r11)cmpwi r11,0xBbeq sin #loads stage ID into r11 and branches to stage is norfair if it's norfairfadds f19,f19,f21 #adds CLWPD Y to stage's top camera limit and stores the result in f19fsubs f20,f20,f21 #subtracts CLWPD Y from stage's bottom camera limit and stores the result in f20b sf #unconditional branch to store floatssin:fsubs f19,f19,f21 #subtracts CLWPD Y from stage's top camera limit and stores the result in f19fsubs f20,f20,f22 #subtracts SNB from stage's bottom camera limit and stores the result in f20sf:stfs f17,0x0C(r12) #stores float coordinate of stage's left wrap point to unused memory in mem2stfs f18,0x10(r12) #stores float coordinate of stage's right wrap point to unused memory in mem2stfs f19,0x14(r12) #stores float coordinate of stage's top wrap point to unused memory in mem2stfs f20,0x18(r12) #stores float coordinate of stage's bottom wrap point to unused memory in mem2X/Y world wrap------------------ 90%hook:8072E8A8stwu r1,-128(r1)stmw r2,8(r1) #creates a stack frame so I can freely use all registerslis r11,0x8000 #loads 0x80000000 into r11lwz r5,136(r3) #phantom wings stuffstfs f1,4(r4) #?????lis r6,0x901Cori r6,r6,0x4900 #loads address of XYWW floats into r6lfs f17,4(r4) #loads float coordinate of current player's Y position into f17lfs f18,0x14(r6) #loads float coordinate of stage's top wrap point into f18lfs f19,0x18(r6) #loads float coordinate of stage's bottom wrap point into f19lwz r17,4(r4) #loads float coordinate of current player's Y position into r17lwz r18,0x14(r6) #loads float coordinate of stage's top wrap point into r18lwz r19,0x18(r6) #loads float coordinate of stage's bottom wrap point into r19lfs f20,0(r4) #loads float coordinate of current player's X position into f20lfs f21,0x0C(r6) #loads float coordinate of stage's left wrap point into f21lfs f22,0x10(r6) #loads float coordinate of stage's right wrap point into f22lwz r20,0(r4) #loads float coordinate of current player's X position into r20lwz r21,0x0C(r6) #loads float coordinate of stage's left wrap point into r21lwz r22,0x10(r6) #loads float coordinate of stage's right wrap point into r22subis r29,r19,1cmplw r17,r29beq etcd #branches to end temp collision disable if current player has wrapped from stage's top wrap point to stage's bottom wrap pointsubis r29,r18,1cmplw r17,r29beq etcd #branches to end temp collision disable if current player has wrapped from stage's bottom wrap point to stage's top wrap pointsubis r29,r22,1cmplw r20,r29beq etcd #branches to end temp collision disable if current player has wrapped from stage's left wrap point to stage's right wrap pointsubis r29,r21,1cmplw r20,r29bne detcd #branches to don't end temp collision disable if current player has not wrapped from stage's right wrap point to stage's LWPetcd:addi r30,r6,0x28 #adds 0x28 to XYWW floats address in r6 to store TSCD AD flags address in r30lbz r24,8(r6) #loads player number ID from stamina flags area into r24stbx r15,r30,r24 #clears current player's TSCD currently wrapping flag (AD)detcd:li r7,7li r8,0lbz r9,188(r3)cmpwi r9,7bne- 0x0Cli r9,5stb r9,188(r3) #phantom wings stuff (part of the original x world wrap code, I don't know what it does)cmpwi r30,8bne end #branches to end if r30 isn't 8 (prevents crash)lwz r12,0x1C(r31) #(1)cmplw r12,r11blt end #sanity check, branches to end if r12 is not a valid addresslwz r12,0x28(r12) #(2)cmplw r12,r11blt end #sanity check, branches to end if r12 is not a valid addresslwz r27,0x10(r12)lbz r24,0x55(r27) #(1 2) loads player number ID into r24lwz r28,0x10(r27) #loads value that can identify what is wrapping into r28?cmplwi r28,0xFFFFbgt end #branches to end if value in r28 is greater than 0xFFFF to prevent items from wrappinglwz r26,-0xB4(r27) #loads current player damage integer into r26lis r11,0x9018ori r11,r11,0x0C1C #loads player 1 stamina address into r11mulli r25,r24,0x5C #multiplies PNID by mem2 per player data offset and stores result in r25lhzx r25,r11,r25 #loads current player stamina into r25 from player 1 stamina address + offset to current player mem2 player datacmpw r26,r25bge end #branches to end disallowing wrapping if current player's damage taken is >= to current player's max staminaaddi r11,r6,0x24 #loads stamina dead flags address into r11lbzx r25,r11,r24 #loads current player stamina dead flag byte into r25 from stamina dead flags address + PNIDcmpwi r25,0x1Dbeq end #branches to end if current player's stamina dead flag is set (appears to be redundant with above branch)lwz r12,0x7C(r31)lhz r11,0x06(r12) #loads current player previous action into r11lhz r12,0x3A(r12) #loads cureent player action into r12cmpwi r12,0xBCbeq end #branches to end if current action is drowning (if allowed you would drown forever)cmpwi r12,0xBEbeq end #branches to end if current action is respawn (if allowed you take wrap damage on respawn)cmpwi r12,0xC6beq end #branches to end if current action is eaten by summit fish (if allowed you're trapped in the fish)cmpwi r12,0xF1beq end #branches to end if current action is Kirby/MK uthrow (if allowed you take wrap damage and jump up through the stage)cmpwi r11,0x116beq end #branches to end if current action is final smash (some final smashes crash when wrapping)lwz r11,0x64(r31)lwz r11,-0xC(r11)lbz r11,0x3F(r11) #loads current player is grabbed/being thrown flag into r11cmpwi r11,1beq end #branches to end if current player is grabbed/thrown (prevents ganondorf/kirby/DDDK cheese)fcmpo cr0,f17,f18blt bwpc #branches to bottom wrap point check if current player's Y coordinate is less than the stage's top wrap pointli r10,0xAD #sets flag 0xAD in r10 indicating a wrap is in progresssubis r17,r19,1 #sets current player Y coordinate to bottom wrap point -0x10000 (adds about .5-1 in float)bwpc:fcmpo cr0,f17,f19bgt lwpc #branches to left wrap point check if current player's Y coordinate is greater than the stage's bottom wrap pointli r10,0xAD #sets flag 0xAD in r10 indicating a wrap is in progresssubis r17,r18,1 #sets current player Y coordinate to top wrap point -0x10000 (subtracts about .5-1 in float)lwpc:fcmpo cr0,f20,f21bgt rwpc #branches to right wrap point check if current player's X coordinate is greater than the stage's left wrap pointli r10,0xAD #sets flag 0xAD in r10 indicating a wrap is in progresssubis r20,r22,1 #sets current player X coordinate to right wrap point -0x10000 (subtracts about .5-1 in float)stb r7,188(r3)stb r8,117(r5) #phantom wings stuff (part of the original x world wrap code, I don't know what it does)rwpc:fcmpo cr0,f20,f22blt adc #branches to AD check if current player's X coordinate is less than the stage's right wrap pointli r10,0xAD #sets flag 0xAD in r10 indicating a wrap is in progresssubis r20,r21,1 #sets current player X coordinate to left wrap point -0x10000 (adds about .5-1 in float)stb r7,188(r3)stb r8,117(r5) #phantom wings stuff (part of the original x world wrap code, I don't know what it does)adccmpwi r10,0xADbne end #branches to end if a wrap is not in progressaddi r30,r6,0x30 #Loads WD AD flags address into r30lwz r12,8(r31)lwz r11,0x110(r12) #loads alternate character ID into r11cmpwi r11,0xFbne fs #branches to flag store if character isn't ice climberslhz r11,0xFC(r12) #loads popo or nana ID into r11cmpwi r11,1beq nwd #branches to no wrap damage if nanafs:stbx r10,r30,r24 #stores AD flag to WD AD flags address + PNIDnwd:subi r30,r30,4stbx r10,r30,r24 #stores AD flag to HI AD flags address + PNIDsubi r30,r30,4stbx r10,r30,r24 #stores AD flag to TSCD AD flags address + PNIDstb r24,8(r6)end:stw r17,16(r3) #stores current player Y coordinatestw r20,12(r3) #stores current player X coordinatelmw r2,8(r1) #reloads previous register values back from the stackaddi r1,r1,128 #sets stack pointer back to where it was before now that the space is free again04960F48 38000000 #disables offscreen magnifying glass141C4904 40A00000 #writes CLWPD X to 901C4904temp stage collision disable----------------------------- 100%hook:80118E24lis r11,0x8000 #loads 0x80000000 into r11cmplw r31,r11blt ac #branches to allow collision if value in r31 is not an addresslbz r0,0x55(r31) #loads player number ID into r0lis r12,0x901Cori r12,r12,0x4928 #loads TSCD AD flags address into r12lbzx r11,r12,r0 #loads current player's currently wrapping flag (AD) into r11 from TSCD AD flags address + PNIDcmpwi r11,0xADbne ac #branches to allow collision if current player's AD flag is not setlbz r11,-0x20(r12) #loads player number ID from stamina flags area into r11cmpw r11,r0bne ac #branches to allow collision if PNID's do not match (prevents accidentally disabling collision for the wrong player)blr #branches back to address in link register skipping the stage collision functionac:stwu r1,-416(r1) #original instruction at hooked address141C4900 41A00000 #writes CLWPD Y to 901C4900141C4920 42700000 #writes SNB to 901C4920temp hitbox interpolation disable----------------------------------- 100%hook:8076052Clis r7,0x8000 #loads 0x80000000 into r7lis r12,0x8138 #loads 0x81380000 into r11lwz r11,0xC8(r24) #(1)cmplw r11,r7blt endcmplw r11,r12bgt end #sanity checks, they branch to end if value in r11 is invalid as an addresslwz r11,0x1C(r11) #(2)cmplw r11,r7blt endcmplw r11,r12bgt end #sanity checks, they branch to end if value in r11 is invalid as an addresslwz r11,0x28(r11) #(3)cmplw r11,r7blt endcmplw r11,r12bgt end #sanity checks, they branch to end if value in r11 is invalid as an addresslwz r11,0x10(r11) #(4)cmplw r11,r7blt endcmplw r11,r12bgt end #sanity checks, they branch to end if value in r11 is invalid as an addresslbz r11,0x55(r11) #(1 2 3 4) loads player number ID into r11lis r12,0x901Cori r12,r12,0x492C #loads interpolation AD flags address into r12lbzx r7,r12,r11 #loads current player's currently wrapping flag (AD) into r7 from interpolation AD flags address + PNIDcmpwi r7,0xADblt end #branches to end if interpolation AD flag not setli r27,1 #loads 1 into r27 (if r27 is 1 hitboxes are not interpolated)addi r7,r7,1 #adds 1 to AD flagstbx r7,r12,r11 #stores incremented AD flag to interpolation AD flags address + PNIDcmpwi r7,0xB0blt end #branches to end if interpolation AD flag is not 0xBO yet (used as a timer to disable hitbox interpolation for 3 frames)stbx r15,r12,r11 #clears current player interpolation AD flagendcmplwi r27,1 #original instruction at hooked addresswrap damage--------------- 100%hook:8076802Clfs f1,148(r26) #original instruction at hooked addresslis r12,0x901Cori r12,r12,0x4930 #loads wrap damage AD flags address into r12lis r11,0x8100 #loads 0x81000000 into r11lwz r3,0x3C(r22) #(1)cmplw r3,r11blt end #sanity check to make sure value in r3 is an address in the 81 range branches to end if notlwz r3,0x1C(r3) #(2)cmplw r3,r11blt end #sanity check to make sure value in r3 is an address in the 81 range branches to end if notlwz r3,0x28(r3) #(3)cmplw r3,r11blt end #sanity check to make sure value in r3 is an address in the 81 range branches to end if notlwz r3,0x10(r3) #(4)cmplw r3,r11blt end #sanity check to make sure value in r3 is an address in the 81 range branches to end if notlbz r3,0x55(r3) #(1 2 3 4) loads player number ID into r3lbzx r11,r12,r3 #loads current player AD flag byte from wrap damage wrap damage AD flags address + PNIDcmpwi r11,0xADbne end #branches to end if current player wrap damage AD flag not setlfs f1,-0x2C(r12) #loads CLWPD X into r1 as wrap damage amount (5 in float)stbx r15,r12,r3 #clears current player's wrap damage AD flagend: #the codehandler puts a branch back to the line after the instruction I hooked hereE0000000 80008000 #full terminator, ends all ifs and sets base and pointer addresses back to 80000000