SinsOfApathy
Smash Journeyman
- Joined
- Feb 24, 2015
- Messages
- 474
- NNID
- Psion312
Gonna use this post as sort of a scratchpad when I get time to do stuff. That way, people cause also look into it and contribute as they see fit.
Action State Table: 803C7788
Action State Table: 803C7788
Code:
Flags:
0x340111 - Grounded Special N 127 & 129
0x3C0111 - Grounded Special N 128
0x340511 - Aerial Special N 12A & 12C
0x3C0511 - Aerial Special N 12B
0x340212 - Grounded Special S 12D, 12E, 12F
0x340612 - Aerial Special S 130, 131, 131
Yes, there's two instances of 135.
0x340213 - ? 133, 135, 136
0x340613 - ? 134, 135, 137, 138
0x72 for Smash Taunt
Code:
Flag meanings:
ABCDEF
A - 3 indicates an attack possibly. It's 7 for Fox's Taunt stuff.
B - 2 for taunt, 4 for attack start/stop states and C for intermediate.
C - 0 for 127 - 138, 1 for 13A - 13E.
D - 1 for grounded, 5 for aerial Special N. 0, 2, 4, 6 for other states.
E - 1 for all but the Taunt?
F - Increments 1 - 4. Probably Special Direction. N, S, D, U ordering, I think
800E5F28 - Does quite a bit, calls 8000B1CC (Load Article, seen in several characters with projectiles), loads the projectile itself. Called every frame the gun is drawn, so seems to be the "major" function.
800E608C - Grounded, Loads ActionState, printfs a "ftToSpecialNFox::Caution!!!\n" message if r3 = 0
800E61A8 - Aerial, Loads ActionState, printfs a "ftToSpecialNFox::Caution!!!\n" message if r3 = 0
There's refs to these function in some type of address table at 803C15FC, 803C1650, 803C1680, and 803C16D4.
800E62A4 - 800E65BC - Fox's Action State 127-129 & 12D, grounded SpecialN, refs 800E5F28
800E667C - 800E69BC - Action State 12A - 12C & 12E, Aerial SpecialN, refs 800E5F28
800E5CB0 - 800E5E38 - All related to firing the projectile
800E5E90 handles holstering the gun.
800E5EBC handles despawning the gun if you die with it out (Seen when falling and hitting the blastzone.)
800E608C - Grounded, Loads ActionState, printfs a "ftToSpecialNFox::Caution!!!\n" message if r3 = 0
800E61A8 - Aerial, Loads ActionState, printfs a "ftToSpecialNFox::Caution!!!\n" message if r3 = 0
There's refs to these function in some type of address table at 803C15FC, 803C1650, 803C1680, and 803C16D4.
800E62A4 - 800E65BC - Fox's Action State 127-129 & 12D, grounded SpecialN, refs 800E5F28
800E667C - 800E69BC - Action State 12A - 12C & 12E, Aerial SpecialN, refs 800E5F28
800E5CB0 - 800E5E38 - All related to firing the projectile
800E5E90 handles holstering the gun.
800E5EBC handles despawning the gun if you die with it out (Seen when falling and hitting the blastzone.)
Only triggers when you do the spin, kneel with Smash Taunt.
Action States 141 - 146 have it as the next Action State function pointer.
801E2B80 and 801E2C34 are related to grCorneria based on printfs.
Branches reference 800E5C7C, which calls 801E2AF4 (The function just above 801E2B80)
Action States 141 - 146 have it as the next Action State function pointer.
Code:
.text1:800E5B18 mfspr r0, LR # Move from sprg,
.text1:800E5B1C stw r0, arg_4(r1) # Store Word
.text1:800E5B20 stwu r1, -0x20(r1) # Store Word with Update
.text1:800E5B24 stw r31, 0x20+var_4(r1) # Store Word
.text1:800E5B28 mr r31, r3 # Move Register
.text1:800E5B2C stw r30, 0x20+var_8(r1) # Store Word
.text1:800E5B30 lwz r30, 0x2C(r3) # Load Word and Zero
.text1:800E5B34 lbz r3, 0x2210(r30) # Load Byte and Zero
.text1:800E5B38 extrwi. r0, r3, 1,27 # Extract and Right Justify Immediate
.text1:800E5B3C beq loc_800E5B54 # Branch if equal
.text1:800E5B40 li r0, 0 # Load Immediate
.text1:800E5B44 insrwi r3, r0, 1,27 # Insert from Right Immediate
.text1:800E5B48 stb r3, 0x2210(r30) # Store Byte
.text1:800E5B4C li r0, 1 # Load Immediate
.text1:800E5B50 b loc_800E5B58 # Branch
.text1:800E5B54 # ---------------------------------------------------------------------------
.text1:800E5B54
.text1:800E5B54 loc_800E5B54: # CODE XREF: Char_Fox_141to146_Taunt+24j
.text1:800E5B54 li r0, 0 # Load Immediate
.text1:800E5B58
.text1:800E5B58 loc_800E5B58: # CODE XREF: Char_Fox_141to146_Taunt+38j
.text1:800E5B58 cmpwi r0, 0 # Compare Word Immediate
.text1:800E5B5C beq loc_800E5BB0 # Branch if equal
.text1:800E5B60 lwz r0, 4(r30) # Load Word and Zero
.text1:800E5B64 cmpwi r0, 0x16 # Compare Word Immediate
.text1:800E5B68 beq SmashTauntEasterEgg2 # Branch if equal
.text1:800E5B6C bge loc_800E5BB0 # Branch if greater than or equal
.text1:800E5B70 cmpwi r0, 1 # Compare Word Immediate
.text1:800E5B74 beq SmashTauntEasterEgg # Branch if equal
.text1:800E5B78 b loc_800E5BB0 # Branch
.text1:800E5B7C # ---------------------------------------------------------------------------
.text1:800E5B7C
.text1:800E5B7C SmashTauntEasterEgg: # CODE XREF: Char_Fox_141to146_Taunt+5Cj
.text1:800E5B7C bl Stage_Corneria_SmashTaunt1 # Branch to 801E2B80
.text1:800E5B80 cmpwi r3, 0 # Compare Word Immediate
.text1:800E5B84 beq loc_800E5BB0 # Branch if equal
.text1:800E5B88 lis r3, Char_Fox_SmashTaunt@h # Load Immediate Shifted
.text1:800E5B8C addi r0, r3, Char_Fox_SmashTaunt@l # Add Immediate
.text1:800E5B90 stw r0, 0x21E0(r30) # Store Word
.text1:800E5B94 b loc_800E5BB0 # Branch
.text1:800E5B98 # ---------------------------------------------------------------------------
.text1:800E5B98
.text1:800E5B98 SmashTauntEasterEgg2: # CODE XREF: Char_Fox_141to146_Taunt+50j
.text1:800E5B98 bl Stage_Corneria_SmashTaunt2 # Branch to 801E2C34
.text1:800E5B9C cmpwi r3, 0 # Compare Word Immediate
.text1:800E5BA0 beq loc_800E5BB0 # Branch if equal
.text1:800E5BA4 lis r3, Char_Fox_SmashTaunt@h # Load Immediate Shifted
.text1:800E5BA8 addi r0, r3, Char_Fox_SmashTaunt@l # Add Immediate
.text1:800E5BAC stw r0, 0x21E0(r30) # Store Word
.text1:800E5BB0
.text1:800E5BB0 loc_800E5BB0: # CODE XREF: Char_Fox_141to146_Taunt+44j
.text1:800E5BB0 # Char_Fox_141to146_Taunt+54j ...
.text1:800E5BB0 mr r3, r31 # Move Register
.text1:800E5BB4 bl sub_8006F238 # Branch
.text1:800E5BB8 cmpwi r3, 0 # Compare Word Immediate
.text1:800E5BBC bne loc_800E5C20 # Branch if not equal
.text1:800E5BC0 lwz r3, 0x2344(r30) # Load Word and Zero
.text1:800E5BC4 addi r0, r3, 1 # Add Immediate
.text1:800E5BC8 stw r0, 0x2344(r30) # Store Word
.text1:800E5BCC lwz r5, 0x2344(r30) # Load Word and Zero
.text1:800E5BD0 cmpwi r5, 3 # Compare Word Immediate
.text1:800E5BD4 blt loc_800E5BE4 # Branch if less than
.text1:800E5BD8 mr r3, r31 # Move Register
.text1:800E5BDC bl sub_8008A324 # Branch
.text1:800E5BE0 b loc_800E5C20 # Branch
.text1:800E5BE4 # ---------------------------------------------------------------------------
.text1:800E5BE4
.text1:800E5BE4 loc_800E5BE4: # CODE XREF: Char_Fox_141to146_Taunt+BCj
.text1:800E5BE4 lwz r4, 0x2340(r30) # Load Word and Zero
.text1:800E5BE8 lis r3, unk_803C7DD0@h # Load Immediate Shifted
.text1:800E5BEC lfs f1, -0x6798(r2) # Load Floating-Point Single-Precision
.text1:800E5BF0 addi r0, r3, unk_803C7DD0@l # Add Immediate
.text1:800E5BF4 mulli r3, r4, 0xC # Multiply Low Immediate
.text1:800E5BF8 fmr f3, f1 # Floating-Point Move Register
.text1:800E5BFC lfs f2, -0x6794(r2) # Load Floating-Point Single-Precision
.text1:800E5C00 add r3, r0, r3 # Add
.text1:800E5C04 slwi r0, r5, 2 # Shift Left Immediate
.text1:800E5C08 add r3, r3, r0 # Add
.text1:800E5C0C lwz r4, 0(r3) # Load Word and Zero
.text1:800E5C10 addi r3, r31, 0 # Add Immediate
.text1:800E5C14 li r5, 0 # Load Immediate
.text1:800E5C18 li r6, 0 # Load Immediate
.text1:800E5C1C bl Chars_ActionState_Load # Branch
.text1:800E5C20
.text1:800E5C20 loc_800E5C20: # CODE XREF: Char_Fox_141to146_Taunt+A4j
.text1:800E5C20 # Char_Fox_141to146_Taunt+C8j
.text1:800E5C20 lwz r0, 0x20+arg_4(r1) # Load Word and Zero
.text1:800E5C24 lwz r31, 0x20+var_4(r1) # Load Word and Zero
.text1:800E5C28 lwz r30, 0x20+var_8(r1) # Load Word and Zero
.text1:800E5C2C addi r1, r1, 0x20 # Add Immediate
.text1:800E5C30 mtspr LR, r0 # Move to sprg,
.text1:800E5C34 blr # Branch unconditionally
801E2B80 and 801E2C34 are related to grCorneria based on printfs.
Code:
.text1:800E5C7C mfspr r0, LR # Write LR to r0 for BLR
.text1:800E5C80 stw r0, 4(r1) # Set r0 to LR+4 for addr after branch
.text1:800E5C84 stwu r1, -24(r1) # Make room on the stack for 24 bytes
.text1:800E5C88 stw r31, 20(r1) # Alloc 20 bytes on the stack for local var
.text1:800E5C8C lwz r31, 44(r3) # Move r3 (param) + 44 onto r31
.text1:800E5C90 bl Stage_Corneria_SmashTaunt_Major # Branch to 801E2AF4
.text1:800E5C94 li r0, 0 # Set r0 to 0
.text1:800E5C98 stw r0, 0x21E0(r31) # r31 = r0 + 0x21E0
.text1:800E5C9C lwz r0, 28(r1) # Pop 28 bytes into r0
.text1:800E5CA0 lwz r31, 20(r1) # Pop 20 bytes into r31
.text1:800E5CA4 addi r1, r1, 24 # Add 24 bytes to free stack alloc
.text1:800E5CA8 mtspr LR, r0 # Puts r0 back in LR
.text1:800E5CAC blr # Branch unconditionally
Branches reference 800E5C7C, which calls 801E2AF4 (The function just above 801E2B80)
Last edited: