UnclePunch
Smash Ace
- Joined
- Nov 9, 2014
- Messages
- 673
You can change the amount of time for Nana to respawn by changing the codeline "386004B0" to any number where 3860XXXX is the number of frames in hexadecimal to wait.
Code:
$Nana Respawns After 20 Seconds [UnclePunch]
040d5378 60000000
C206A37C 00000024
7C7F1B78 887F221F
5460D7FF 41820108
5460EFFE 41820100
887F000C 3D808003
618C2330 7D8903A6
4E800421 3C80803B
6084CDE0 1C030003
7C640214 88030002
2C000000 408200D0
807F0894 3C80BF80
60840000 7C032000
40820014 386004B0
907F2354 38600000
907F0894 807F2354
3863FFFF 907F2354
2C030000 40820098
887F000C 388100C0
38A100D0 3D808016
618C7638 7D8903A6
4E800421 887F000C
388100C0 3D808003
618C2D80 7D8903A6
4E800421 3D808022
618C4A80 7D8903A6
4E800421 D02100C4
887F000C 388100C0
3D808003 618C2768
7D8903A6 4E800421
38600000 881F221F
50601F38 981F221F
7FC3F378 3D80800D
618C4FF4 7D8903A6
4E800421 38600001
881F221F 50601F38
981F221F 7FE3FB78
8803221F 00000000
Code:
.macro branchl reg, address
lis \reg, \address @h
ori \reg,\reg,\address @l
mtctr \reg
bctrl
.endm
.macro branch reg, address
lis \reg, \address @h
ori \reg,\reg,\address @l
mtctr \reg
bctr
.endm
.macro load reg, address
lis \reg, \address @h
ori \reg, \reg, \address @l
.endm
.macro loadf regf,reg,address
lis \reg, \address @h
ori \reg, \reg, \address @l
stw \reg,-0x4(sp)
lfs \regf,-0x4(sp)
.endm
.macro backup
stwu r1,-0x100(r1) # make space for 12 registers
stmw r20,8(r1) # push r20-r31 onto the stack
mflr r0
stw r0,0xFC(sp)
.endm
.macro restore
lwz r0,0xFC(sp)
mtlr r0
lmw r20,8(r1) # pop r20-r31 off the stack
addi r1,r1,0x100 # release the space
.endm
.macro intToFloat reg,reg2
xoris \reg,\reg,0x8000
lis r18,0x4330
lfd f16,-0x7470(rtoc) # load magic number
stw r18,0(r2)
stw \reg,4(r2)
lfd \reg2,0(r2)
fsubs \reg2,\reg2,f16
.endm
.set ActionStateChange,0x800693ac
.set HSD_Randi,0x80380580
.set HSD_Randf,0x80380528
.set Wait,0x8008a348
.set Fall,0x800cc730
.set entity,31
.set player,30
.set playerdata,31
mr r31,r3
lbz r3, 0x221F (playerdata)
#Check If Dead
rlwinm. r0, r3, 26, 31, 31
beq exit
#Check If Subchar
rlwinm r0, r3, 29, 31, 31
beq exit
#Check If Follower
lbz r3,0xC(playerdata) #get slot
branchl r12,0x80032330 #get external character ID
load r4,0x803bcde0 #pdLoadCommonData table
mulli r0, r3, 3 #struct length
add r3,r4,r0 #get characters entry
lbz r0, 0x2 (r3) #get subchar functionality
cmpwi r0,0x0 #if not a follower, exit
bne exit
#Check If Frame 1 of Follower Sleep
lwz r3,0x894(playerdata)
load r4,0xbf800000
cmpw r3,r4
bne EveryFrame
FrameOne:
li r3,1200 #20 seconds
stw r3,0x2354(playerdata)
li r3,0x0
stw r3,0x894(playerdata)
EveryFrame:
#Subtract Frame
lwz r3,0x2354(playerdata)
subi r3,r3,0x1
stw r3,0x2354(playerdata)
#Check If Timer is Up
cmpwi r3,0x0
bne exit
#Get Respawn Location
lbz r3,0xC(playerdata)
addi r4,sp,0xC0
addi r5,sp,0xD0
branchl r12,0x80167638
#Store Respawn Location
lbz r3,0xC(playerdata)
addi r4,sp,0xC0
branchl r12,0x80032d80
#Get Camera Top Limit
branchl r12,0x80224a80
#Store As Respawn Y
stfs f1,0xC4(sp)
#Store Coordinates
lbz r3,0xC(playerdata)
addi r4,sp,0xC0
branchl r12,0x80032768
#Temp Remove Follower Bit
li r3,0x0
lbz r0, 0x221F (playerdata)
rlwimi r0, r3, 3, 28, 28
stb r0, 0x221F (playerdata)
#Respawn Nana
mr r3,player
branchl r12,0x800d4ff4
#Set Follower Bit Back
li r3,0x1
lbz r0, 0x221F (playerdata)
rlwimi r0, r3, 3, 28, 28
stb r0, 0x221F (playerdata)
exit:
mr r3,r31
lbz r0, 0x221F (r3) #original codeline