summaryrefslogtreecommitdiff
path: root/src/spritetex.S
diff options
context:
space:
mode:
Diffstat (limited to 'src/spritetex.S')
-rwxr-xr-xsrc/spritetex.S2042
1 files changed, 1021 insertions, 1021 deletions
diff --git a/src/spritetex.S b/src/spritetex.S
index c636943..75e0256 100755
--- a/src/spritetex.S
+++ b/src/spritetex.S
@@ -1,869 +1,869 @@
-.extern sprintf
-.extern GenerateRandomNumber
-
-#ifndef __MWERKS__
-.set r0,0; .set r1,1; .set r2,2; .set r3,3; .set r4,4
-.set r5,5; .set r6,6; .set r7,7; .set r8,8; .set r9,9
-.set r10,10; .set r11,11; .set r12,12; .set r13,13; .set r14,14
-.set r15,15; .set r16,16; .set r17,17; .set r18,18; .set r19,19
-.set r20,20; .set r21,21; .set r22,22; .set r23,23; .set r24,24
-.set r25,25; .set r26,26; .set r27,27; .set r28,28; .set r29,29
-.set r30,30; .set r31,31; .set f0,0; .set f2,2; .set f3,3
-#endif
-
-.text
-.align 4
-.global GetTexFilenameForR5, TexFilenameBuffer, TexFormatString
-
-.set sp, 1
-
-GetTexFilenameForR5:
- # obj number should be put into r5
- # returned filename is in r5
- # this makes it easy to use with dRes_c::GetResource
-
- stwu sp, -0x20(sp)
- mflr r0
- stw r0, 0x24(sp)
- stw r3, 0x1C(sp)
- stw r4, 0x18(sp)
- stw r6, 0x14(sp)
- stw r7, 0x10(sp)
- stw r8, 0xC(sp)
- stw r9, 0x8(sp)
-
- lis r3, TexFilenameBuffer@h
- ori r3, r3, TexFilenameBuffer@l
-
- lis r4, TexFormatString@h
- ori r4, r4, TexFormatString@l
-
- crclr 4*cr1+eq
- bl sprintf
-
- lis r5, TexFilenameBuffer@h
- ori r5, r5, TexFilenameBuffer@l
-
- lwz r0, 0x24(sp)
- lwz r3, 0x1C(sp)
- lwz r4, 0x18(sp)
- lwz r6, 0x14(sp)
- lwz r7, 0x10(sp)
- lwz r8, 0xC(sp)
- lwz r9, 0x8(sp)
- mtlr r0
- addi sp, sp, 0x20
- blr
-
-
-.global TEX_YoshiEggSetColour
-TEX_YoshiEggSetColour:
-
- stwu sp, -0x30(sp)
- mflr r0
- stw r0, 0x24(sp)
- mr r9, r3
- stw r4, 0x18(sp)
- stw r5, 0x14(sp)
- stw r6, 0x10(sp)
- stw r7, 0x0C(sp)
-
- li r3, 10
- bl GenerateRandomNumber
- stw r3, 0x5F8(r9)
-
- lwz r0, 0x24(sp)
- mr r3, r9
- lwz r4, 0x18(sp)
- lwz r5, 0x14(sp)
- lwz r6, 0x10(sp)
- lwz r7, 0x0C(sp)
- mtlr r0
- addi sp, sp, 0x30
- blr
-
-
-.global TEX_YoshiEggSetBrres
-TEX_YoshiEggSetBrres:
-
- lwz r5, 0x5F8(r27)
- clrlwi r5, r5, 28
-
- cmpwi r5, 4
- blt YoshiEggOne
-
- cmpwi r5, 8
- blt YoshiEggTwo
-
- li r5, 2
- b GetTexFilenameForR5
-
-
-YoshiEggOne:
- li r5, 0
- b GetTexFilenameForR5
-
-YoshiEggTwo:
- li r5, 1
- b GetTexFilenameForR5
-
-
-
-.global TEX_YoshiEggSetFrame
-TEX_YoshiEggSetFrame:
-
- lwz r5, 0x5F8(r27)
- clrlwi r5, r5, 30
- blr
-
-
-.global TEX_YoshiEggEffect
-TEX_YoshiEggEffect:
-
- lwz r0, 0x5F8(r3)
- clrlwi r0, r0, 30
- blr
-
-
-.global TEX_YoshiSetColour
-TEX_YoshiSetColour:
-
- lwz r4, 0x5F8(r31)
- oris r4, r4, 1
- blr
-
-
-.global TEX_YoshiHack
-TEX_YoshiHack:
-
- stwu sp, -0x30(sp)
- mflr r0
- stw r0, 0x24(sp)
- stw r3, 0x1C(sp)
- stw r4, 0x18(sp)
- stw r5, 0x14(sp)
- stw r6, 0x10(sp)
- stw r7, 0x0C(sp)
- stw r8, 0x08(sp)
- stw r9, 0x04(sp)
-
- lwz r5, 0x24C(r31)
- clrlwi r5, r5, 28
-
- lis r3, TexFilenameBuffer@h
- ori r3, r3, TexFilenameBuffer@l
-
- lis r4, TexFormatString@h
- ori r4, r4, TexFormatString@l
-
- crclr 4*cr1+eq
- bl sprintf
-
- lis r5, TexFilenameBuffer@h
- ori r5, r5, TexFilenameBuffer@l
-
- lis r4, YoshiArc@h
- ori r4, r4, YoshiArc@l
-
- lwz r0, 0x24(sp)
- lwz r3, 0x1C(sp)
- lwz r6, 0x10(sp)
- lwz r7, 0x0C(sp)
- lwz r8, 0x08(sp)
- lwz r9, 0x04(sp)
- mtlr r0
- addi sp, sp, 0x30
- blr
-
-
-
-
-.global TEX_WoodBox
-TEX_WoodBox:
- lwz r5, 4(r30)
- srwi r5, r5, 24
- b GetTexFilenameForR5
-
-
-.global TEX_Bush
-TEX_Bush:
- srwi r5, r27, 28
- b GetTexFilenameForR5
-
-
-# The below was added by Tempus
-
-
-.global TEX_Goomba
-TEX_Goomba:
- lwz r5, 4(r3)
- srwi r5, r5, 24
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-.global TEX_BigGoomba
-TEX_BigGoomba:
- lwz r5, 4(r30)
- srwi r5, r5, 24
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-.global TEX_Barrel
-TEX_Barrel:
- lwz r5, 4(r30)
- srwi r5, r5, 24
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-.global TEX_Blooper
-TEX_Blooper:
- lwz r5, 4(r30)
- srwi r5, r5, 24
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-.global TEX_BigBlock
-TEX_BigBlock:
- lwz r5, 4(r28)
- srwi r5, r5, 24
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-.global TEX_Thwomp
-TEX_Thwomp:
- lwz r5, 4(r29)
- srwi r5, r5, 24
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-.global TEX_GiantBuzzy
-TEX_GiantBuzzy:
- lwz r5, 4(r29)
- srwi r5, r5, 24
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-.global TEX_Buzzy
-TEX_Buzzy:
- lwz r5, 4(r29)
- srwi r5, r5, 24
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-.global TEX_BuzzyShell
-TEX_BuzzyShell:
- lwz r5, 4(r3)
- srwi r5, r5, 24
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-.global TEX_SpikeTop
-TEX_SpikeTop:
- lwz r5, 4(r29)
- srwi r5, r5, 24
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-.global TEX_Spiny
-TEX_Spiny:
- lwz r5, 4(r30)
- srwi r5, r5, 24
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-.global TEX_SpinyShell
-TEX_SpinyShell:
- lwz r5, 4(r3)
- srwi r5, r5, 24
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-.global TEX_SpringBlock
-TEX_SpringBlock:
- lwz r5, 4(r30)
- srwi r5, r5, 24
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-.global TEX_Coaster
-TEX_Coaster:
- lwz r5, 4(r3)
- srwi r5, r5, 24
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-.global TEX_Koopa
-TEX_Koopa:
- lwz r5, 4(r29)
- srwi r5, r5, 24
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-.global TEX_Gabon
-TEX_Gabon:
- lwz r5, 4(r29)
- srwi r5, r5, 24
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-.global TEX_Gabon_Spike
-TEX_Gabon_Spike:
- andis. r4, r4, 0xFFF0
- blr
-
-.global TEX_GabonRock
-TEX_GabonRock:
- lwz r5, 4(r28)
- srwi r5, r5, 24
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-.global TEX_Podoboo
-TEX_Podoboo:
- lwz r5, 4(r31)
- srwi r5, r5, 24
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-.global TEX_Switch
-TEX_Switch:
- lwz r5, 4(r29)
- srwi r5, r5, 16
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-.global TEX_WiggleShroom
-TEX_WiggleShroom:
- lwz r5, -0x520(r3)
- # This sprite is pretty complex
- # The register with THIS is r29
- # before the loading function,
- # it passes it into r3, and then mr's
- # it into r30. r3 is then overwritten.
- # Then, it puts r31 into r5, r30 partly
- # into r3 and partly into r4. Why?
- # So, the possibilities for THIS are
- # r30, r3, and r4, no? In the next function,
- # r30 is stored over before our getFile, as
- # are r29/r28.
-
- srwi r5, r5, 24
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-.global TEX_Bramball
-TEX_Bramball:
- lwz r5, 4(r29)
- srwi r5, r5, 24
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-.global TEX_Monty
-TEX_Monty:
- lwz r5, 4(r29)
- srwi r5, r5, 24
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-.global TEX_ChainChomp
-TEX_ChainChomp:
- lwz r5, 4(r29)
- srwi r5, r5, 24
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-.global TEX_Manta
-TEX_Manta:
- lwz r5, 4(r28)
- srwi r5, r5, 24
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-.global TEX_Parabeetle
-TEX_Parabeetle:
- lwz r5, 4(r29)
- srwi r5, r5, 24
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-.global TEX_Bomb
-TEX_Bomb:
- lwz r5, 4(r29)
- srwi r5, r5, 24
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-.global TEX_ParaBomb
-TEX_ParaBomb:
- lwz r5, 4(r29)
- srwi r5, r5, 24
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-.global TEX_CheepA
-TEX_CheepA:
- lwz r5, 4(r27)
- srwi r5, r5, 20
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-.global TEX_CheepB
-TEX_CheepB:
- lwz r5, 4(r28)
- srwi r5, r5, 20
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-.global TEX_CheepC
-TEX_CheepC:
- lwz r5, 4(r28)
- srwi r5, r5, 20
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-.global TEX_CheepChomp
-TEX_CheepChomp:
- lwz r5, 4(r29)
- srwi r5, r5, 24
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-.global TEX_BigBoo
-TEX_BigBoo:
- lwz r5, 4(r27)
- srwi r5, r5, 24
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-.global TEX_Boo
-TEX_Boo:
- lwz r5, 4(r30)
- srwi r5, r5, 24
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-.global TEX_Midway
-TEX_Midway:
- lwz r5, 4(r29)
- srwi r5, r5, 24
- andi. r5, r5, 0xFF
- b GetTexFilenameForR5
-
-
-.global TEX_Goal
-TEX_Goal:
- lwz r5, 4(r30)
- srwi r5, r5, 24
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-.global TEX_StretchMush
-TEX_StretchMush:
- lwz r5, 4(r30)
- srwi r5, r5, 24
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-.global TEX_BlockSlide
-TEX_BlockSlide:
- lwz r5, 4(r28)
- srwi r5, r5, 24
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-.global TEX_Spinner
-TEX_Spinner:
- lwz r5, 4(r30)
- srwi r5, r5, 24
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-.global TEX_Platforms
-TEX_Platforms:
-
- li r5, 1
- b GetTexFilenameForR5
-# cmpwi r0, 9
-# blt ReplacePlatforms
-#
-# lwzx r5, r5, r0
-# blr
-
-
-ReplacePlatforms:
-
- lwz r5, 4(r29)
- srwi r5, r5, 4
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-.global TEX_Platform_ShifterH
-TEX_Platform_ShifterH:
-
- stw r5, 0x504(r30)
- lwz r5, 4(r30)
- stw r5, 0x3D8(r30)
- blr
-
-.global TEX_Platform_ShifterF
-TEX_Platform_ShifterF:
-
- stw r4, 0x504(r30)
- lwz r4, 4(r30)
- stw r4, 0x3D8(r30)
- blr
-
-.global TEX_Platform_ShifterL
-TEX_Platform_ShifterL:
-
- stw r5, 0x504(r28)
- lwz r5, 4(r28)
- stw r5, 0x3D8(r28)
- blr
-
-.global TEX_Platform_ShifterR
-TEX_Platform_ShifterR:
-
- stw r4, 0x504(r31)
- lwz r4, 4(r31)
- stw r4, 0x3D8(r31)
- blr
-
-.global TEX_Platform_ShifterS
-TEX_Platform_ShifterS:
-
- stw r30, 0x4C4(r27)
- lwz r30, 4(r27)
- stw r30, 0x398(r27)
- blr
-
-.global TEX_Platform_ShifterK
-TEX_Platform_ShifterK:
-
- stw r4, 0x5A4(r27)
- lwz r4, 4(r27)
- stw r4, 0x478(r27)
- blr
-
-.global TEX_Platform_ShifterW
-TEX_Platform_ShifterW:
-
- stw r0, 0x504(r29)
- lwz r0, 4(r29)
- stw r0, 0x3D8(r29)
- blr
-
-.global TEX_Platform_ShifterSL
-TEX_Platform_ShifterSL:
-
- stw r4, 0x504(r29)
- lwz r4, 4(r29)
- stw r4, 0x3D8(r29)
- blr
-
-
-
-
-.global TEX_PokeyA
-TEX_PokeyA:
- lwz r5, 4(r30)
- srwi r5, r5, 24
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-.global TEX_PokeyB
-TEX_PokeyB:
- lwz r5, 4(r29)
- srwi r5, r5, 24
- andi. r5, r5, 0xF
-
- b GetTexFilenameForR5
-
-
-.global TEX_PokeySnowman
-TEX_PokeySnowman:
-
- lwz r10, 4(r30)
- srwi r10, r10, 24
- andi. r10, r10, 0xF
-
- cmpwi r10, 0x2
- bne SnowmanPokey
-
- lwz r10, 4(r30)
- # r10 is the current height
- andi. r10, r10, 0xF
-
- # Find it
- lis r11, SnowmanTable@h
- ori r11, r11, SnowmanTable@l
- slwi r10, r10, 2 # size *= 4 (size of float)
- lfsx f0, r11, r10 # get it from the array
-
- blr
-
-
-SnowmanPokey:
-
- lfs f0, 0x54(r31)
- blr
-
-
-
-
-.global TEX_PokeySnowmanPosF
-TEX_PokeySnowmanPosF:
-
- lwz r10, 4(r31)
- andi. r10, r10, 0xF
-
- lis r11, SnowmanTable@h
- ori r11, r11, SnowmanTable@l
- slwi r10, r10, 2 # size *= 4 (size of float)
- lfsx f2, r11, r10 # get it from the array
-
- fmuls f0, f0, f2
- stfs f0, 0xB0(r30)
- blr
-
-.global TEX_PokeySnowmanPosE
-TEX_PokeySnowmanPosE:
-
- lwz r10, 4(r31)
- andi. r10, r10, 0xF
-
- lis r11, SnowmanTable@h
- ori r11, r11, SnowmanTable@l
- slwi r10, r10, 2 # size *= 4 (size of float)
- lfsx f2, r11, r10 # get it from the array
-
- fmuls f31, f31, f2
- stfs f31, 0xB0(r29)
- blr
-
-.global TEX_PokeySnowmanPosD
-TEX_PokeySnowmanPosD:
-
- lwz r10, 4(r31)
- andi. r10, r10, 0xF
-
- lis r11, SnowmanTable@h
- ori r11, r11, SnowmanTable@l
- slwi r10, r10, 2 # size *= 4 (size of float)
- lfsx f2, r11, r10 # get it from the array
-
- fmuls f1, f1, f2
- stfs f1, 0xB0(r30)
- blr
-
-
-.global TEX_PokeySnowmanPosC
-TEX_PokeySnowmanPosC:
-
- lwz r10, 4(r31)
- andi. r10, r10, 0xF
-
- lis r11, SnowmanTable@h
- ori r11, r11, SnowmanTable@l
- slwi r10, r10, 2 # size *= 4 (size of float)
- lfsx f2, r11, r10 # get it from the array
-
- fmuls f0, f0, f2
- stfs f0, 0xB0(r31)
- blr
-
-
-.global TEX_PokeySnowmanPosB
-TEX_PokeySnowmanPosB:
-
- lwz r10, 4(r31)
- andi. r10, r10, 0xF
-
- lis r11, SnowmanTable@h
- ori r11, r11, SnowmanTable@l
- slwi r10, r10, 2 # size *= 4 (size of float)
- lfsx f0, r11, r10 # get it from the array
-
- fmuls f1, f1, f0
- stfs f1, 0x18(r1)
- blr
-
-
-
-.global TEX_PokeySnowmanPosA
-TEX_PokeySnowmanPosA:
-
- lwz r10, 4(r31)
- andi. r10, r10, 0xF
-
- lis r11, SnowmanTable@h
- ori r11, r11, SnowmanTable@l
- slwi r10, r10, 2 # size *= 4 (size of float)
- lfsx f0, r11, r10 # get it from the array
-
- fmuls f3, f3, f0
- stfs f3, 0x168(r31)
- blr
-
-
-.global TEX_PokeySnowmanPos
-TEX_PokeySnowmanPos:
-
- mr r3, r30
-
- lwz r10, 4(r30)
- andi. r10, r10, 0xF
-
- lis r11, SnowmanTable@h
- ori r11, r11, SnowmanTable@l
- slwi r10, r10, 2 # size *= 4 (size of float)
- lfsx f0, r11, r10 # get it from the array
-
- lis r5, AddAmount@h
- ori r5, r5, AddAmount@l
- slwi r6, r6, 2 # size *= 4 (size of float)
- lfsx f3, r5, r6 # get it from the array
-
- lfs f2, 0xB0(r30)
- fmuls f3, f3, f0
- fmuls f3, f3, f0
- fmuls f3, f3, f0
- fsubs f2, f2, f3
- stfs f2, 0xB0(r30)
-
- blr
-
-SnowmanPokeyPos:
-
- fsubs f0, f0, f31
- fsubs f0, f0, f31
- fsubs f1, f1, f31
- fsubs f1, f1, f31
-
-
- lfs f2, 8(r1)
- fadds f2, f2, f31
- stfs f2, 8(r1)
- blr
-
-
-.global TEX_PokeyC
-TEX_PokeyC:
-
- lwz r5, 4(r30)
- andis. r5, r5, 0xFFF0
- or r5, r5, r31
- or r5, r5, r0
-
- lwz r0, 0x524(r30)
- slwi r0, r0, 8
- or r5, r5, r0
-
- blr
-
-
-.global TEX_PokeyNoSand
-TEX_PokeyNoSand:
- cmpwi r3, 0x20
- blr
-
-
-
-.global TEX_CloudBounce
-TEX_CloudBounce:
- lwz r5, 4(r28)
- srwi r5, r5, 24
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-.global TEX_SpikeBall
-TEX_SpikeBall:
- lwz r5, 4(r30)
- srwi r5, r5, 24
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-.global TEX_Huckit
-TEX_Huckit:
- lwz r5, 4(r29)
- srwi r5, r5, 24
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-.global TEX_HuckitBalls
-TEX_HuckitBalls:
- lwz r5, 4(r30)
- srwi r5, r5, 24
- andi. r5, r5, 0xF
- b GetTexFilenameForR5
-
-
-
-
-
-.global HammerTime
-HammerTime:
- lwz r8, 4(r31)
+.extern sprintf
+.extern GenerateRandomNumber
+
+#ifndef __MWERKS__
+.set r0,0; .set r1,1; .set r2,2; .set r3,3; .set r4,4
+.set r5,5; .set r6,6; .set r7,7; .set r8,8; .set r9,9
+.set r10,10; .set r11,11; .set r12,12; .set r13,13; .set r14,14
+.set r15,15; .set r16,16; .set r17,17; .set r18,18; .set r19,19
+.set r20,20; .set r21,21; .set r22,22; .set r23,23; .set r24,24
+.set r25,25; .set r26,26; .set r27,27; .set r28,28; .set r29,29
+.set r30,30; .set r31,31; .set f0,0; .set f2,2; .set f3,3
+#endif
+
+.text
+.align 4
+.global GetTexFilenameForR5, TexFilenameBuffer, TexFormatString
+
+.set sp, 1
+
+GetTexFilenameForR5:
+ # obj number should be put into r5
+ # returned filename is in r5
+ # this makes it easy to use with dRes_c::GetResource
+
+ stwu sp, -0x20(sp)
+ mflr r0
+ stw r0, 0x24(sp)
+ stw r3, 0x1C(sp)
+ stw r4, 0x18(sp)
+ stw r6, 0x14(sp)
+ stw r7, 0x10(sp)
+ stw r8, 0xC(sp)
+ stw r9, 0x8(sp)
+
+ lis r3, TexFilenameBuffer@h
+ ori r3, r3, TexFilenameBuffer@l
+
+ lis r4, TexFormatString@h
+ ori r4, r4, TexFormatString@l
+
+ crclr 4*cr1+eq
+ bl sprintf
+
+ lis r5, TexFilenameBuffer@h
+ ori r5, r5, TexFilenameBuffer@l
+
+ lwz r0, 0x24(sp)
+ lwz r3, 0x1C(sp)
+ lwz r4, 0x18(sp)
+ lwz r6, 0x14(sp)
+ lwz r7, 0x10(sp)
+ lwz r8, 0xC(sp)
+ lwz r9, 0x8(sp)
+ mtlr r0
+ addi sp, sp, 0x20
+ blr
+
+
+.global TEX_YoshiEggSetColour
+TEX_YoshiEggSetColour:
+
+ stwu sp, -0x30(sp)
+ mflr r0
+ stw r0, 0x24(sp)
+ mr r9, r3
+ stw r4, 0x18(sp)
+ stw r5, 0x14(sp)
+ stw r6, 0x10(sp)
+ stw r7, 0x0C(sp)
+
+ li r3, 10
+ bl GenerateRandomNumber
+ stw r3, 0x5F8(r9)
+
+ lwz r0, 0x24(sp)
+ mr r3, r9
+ lwz r4, 0x18(sp)
+ lwz r5, 0x14(sp)
+ lwz r6, 0x10(sp)
+ lwz r7, 0x0C(sp)
+ mtlr r0
+ addi sp, sp, 0x30
+ blr
+
+
+.global TEX_YoshiEggSetBrres
+TEX_YoshiEggSetBrres:
+
+ lwz r5, 0x5F8(r27)
+ clrlwi r5, r5, 28
+
+ cmpwi r5, 4
+ blt YoshiEggOne
+
+ cmpwi r5, 8
+ blt YoshiEggTwo
+
+ li r5, 2
+ b GetTexFilenameForR5
+
+
+YoshiEggOne:
+ li r5, 0
+ b GetTexFilenameForR5
+
+YoshiEggTwo:
+ li r5, 1
+ b GetTexFilenameForR5
+
+
+
+.global TEX_YoshiEggSetFrame
+TEX_YoshiEggSetFrame:
+
+ lwz r5, 0x5F8(r27)
+ clrlwi r5, r5, 30
+ blr
+
+
+.global TEX_YoshiEggEffect
+TEX_YoshiEggEffect:
+
+ lwz r0, 0x5F8(r3)
+ clrlwi r0, r0, 30
+ blr
+
+
+.global TEX_YoshiSetColour
+TEX_YoshiSetColour:
+
+ lwz r4, 0x5F8(r31)
+ oris r4, r4, 1
+ blr
+
+
+.global TEX_YoshiHack
+TEX_YoshiHack:
+
+ stwu sp, -0x30(sp)
+ mflr r0
+ stw r0, 0x24(sp)
+ stw r3, 0x1C(sp)
+ stw r4, 0x18(sp)
+ stw r5, 0x14(sp)
+ stw r6, 0x10(sp)
+ stw r7, 0x0C(sp)
+ stw r8, 0x08(sp)
+ stw r9, 0x04(sp)
+
+ lwz r5, 0x24C(r31)
+ clrlwi r5, r5, 28
+
+ lis r3, TexFilenameBuffer@h
+ ori r3, r3, TexFilenameBuffer@l
+
+ lis r4, TexFormatString@h
+ ori r4, r4, TexFormatString@l
+
+ crclr 4*cr1+eq
+ bl sprintf
+
+ lis r5, TexFilenameBuffer@h
+ ori r5, r5, TexFilenameBuffer@l
+
+ lis r4, YoshiArc@h
+ ori r4, r4, YoshiArc@l
+
+ lwz r0, 0x24(sp)
+ lwz r3, 0x1C(sp)
+ lwz r6, 0x10(sp)
+ lwz r7, 0x0C(sp)
+ lwz r8, 0x08(sp)
+ lwz r9, 0x04(sp)
+ mtlr r0
+ addi sp, sp, 0x30
+ blr
+
+
+
+
+.global TEX_WoodBox
+TEX_WoodBox:
+ lwz r5, 4(r30)
+ srwi r5, r5, 24
+ b GetTexFilenameForR5
+
+
+.global TEX_Bush
+TEX_Bush:
+ srwi r5, r27, 28
+ b GetTexFilenameForR5
+
+
+# The below was added by Tempus
+
+
+.global TEX_Goomba
+TEX_Goomba:
+ lwz r5, 4(r3)
+ srwi r5, r5, 24
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+.global TEX_BigGoomba
+TEX_BigGoomba:
+ lwz r5, 4(r30)
+ srwi r5, r5, 24
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+.global TEX_Barrel
+TEX_Barrel:
+ lwz r5, 4(r30)
+ srwi r5, r5, 24
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+.global TEX_Blooper
+TEX_Blooper:
+ lwz r5, 4(r30)
+ srwi r5, r5, 24
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+.global TEX_BigBlock
+TEX_BigBlock:
+ lwz r5, 4(r28)
+ srwi r5, r5, 24
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+.global TEX_Thwomp
+TEX_Thwomp:
+ lwz r5, 4(r29)
+ srwi r5, r5, 24
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+.global TEX_GiantBuzzy
+TEX_GiantBuzzy:
+ lwz r5, 4(r29)
+ srwi r5, r5, 24
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+.global TEX_Buzzy
+TEX_Buzzy:
+ lwz r5, 4(r29)
+ srwi r5, r5, 24
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+.global TEX_BuzzyShell
+TEX_BuzzyShell:
+ lwz r5, 4(r3)
+ srwi r5, r5, 24
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+.global TEX_SpikeTop
+TEX_SpikeTop:
+ lwz r5, 4(r29)
+ srwi r5, r5, 24
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+.global TEX_Spiny
+TEX_Spiny:
+ lwz r5, 4(r30)
+ srwi r5, r5, 24
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+.global TEX_SpinyShell
+TEX_SpinyShell:
+ lwz r5, 4(r3)
+ srwi r5, r5, 24
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+.global TEX_SpringBlock
+TEX_SpringBlock:
+ lwz r5, 4(r30)
+ srwi r5, r5, 24
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+.global TEX_Coaster
+TEX_Coaster:
+ lwz r5, 4(r3)
+ srwi r5, r5, 24
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+.global TEX_Koopa
+TEX_Koopa:
+ lwz r5, 4(r29)
+ srwi r5, r5, 24
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+.global TEX_Gabon
+TEX_Gabon:
+ lwz r5, 4(r29)
+ srwi r5, r5, 24
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+.global TEX_Gabon_Spike
+TEX_Gabon_Spike:
+ andis. r4, r4, 0xFFF0
+ blr
+
+.global TEX_GabonRock
+TEX_GabonRock:
+ lwz r5, 4(r28)
+ srwi r5, r5, 24
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+.global TEX_Podoboo
+TEX_Podoboo:
+ lwz r5, 4(r31)
+ srwi r5, r5, 24
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+.global TEX_Switch
+TEX_Switch:
+ lwz r5, 4(r29)
+ srwi r5, r5, 16
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+.global TEX_WiggleShroom
+TEX_WiggleShroom:
+ lwz r5, -0x520(r3)
+ # This sprite is pretty complex
+ # The register with THIS is r29
+ # before the loading function,
+ # it passes it into r3, and then mr's
+ # it into r30. r3 is then overwritten.
+ # Then, it puts r31 into r5, r30 partly
+ # into r3 and partly into r4. Why?
+ # So, the possibilities for THIS are
+ # r30, r3, and r4, no? In the next function,
+ # r30 is stored over before our getFile, as
+ # are r29/r28.
+
+ srwi r5, r5, 24
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+.global TEX_Bramball
+TEX_Bramball:
+ lwz r5, 4(r29)
+ srwi r5, r5, 24
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+.global TEX_Monty
+TEX_Monty:
+ lwz r5, 4(r29)
+ srwi r5, r5, 24
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+.global TEX_ChainChomp
+TEX_ChainChomp:
+ lwz r5, 4(r29)
+ srwi r5, r5, 24
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+.global TEX_Manta
+TEX_Manta:
+ lwz r5, 4(r28)
+ srwi r5, r5, 24
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+.global TEX_Parabeetle
+TEX_Parabeetle:
+ lwz r5, 4(r29)
+ srwi r5, r5, 24
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+.global TEX_Bomb
+TEX_Bomb:
+ lwz r5, 4(r29)
+ srwi r5, r5, 24
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+.global TEX_ParaBomb
+TEX_ParaBomb:
+ lwz r5, 4(r29)
+ srwi r5, r5, 24
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+.global TEX_CheepA
+TEX_CheepA:
+ lwz r5, 4(r27)
+ srwi r5, r5, 20
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+.global TEX_CheepB
+TEX_CheepB:
+ lwz r5, 4(r28)
+ srwi r5, r5, 20
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+.global TEX_CheepC
+TEX_CheepC:
+ lwz r5, 4(r28)
+ srwi r5, r5, 20
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+.global TEX_CheepChomp
+TEX_CheepChomp:
+ lwz r5, 4(r29)
+ srwi r5, r5, 24
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+.global TEX_BigBoo
+TEX_BigBoo:
+ lwz r5, 4(r27)
+ srwi r5, r5, 24
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+.global TEX_Boo
+TEX_Boo:
+ lwz r5, 4(r30)
+ srwi r5, r5, 24
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+.global TEX_Midway
+TEX_Midway:
+ lwz r5, 4(r29)
+ srwi r5, r5, 24
+ andi. r5, r5, 0xFF
+ b GetTexFilenameForR5
+
+
+.global TEX_Goal
+TEX_Goal:
+ lwz r5, 4(r30)
+ srwi r5, r5, 24
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+.global TEX_StretchMush
+TEX_StretchMush:
+ lwz r5, 4(r30)
+ srwi r5, r5, 24
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+.global TEX_BlockSlide
+TEX_BlockSlide:
+ lwz r5, 4(r28)
+ srwi r5, r5, 24
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+.global TEX_Spinner
+TEX_Spinner:
+ lwz r5, 4(r30)
+ srwi r5, r5, 24
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+.global TEX_Platforms
+TEX_Platforms:
+
+ li r5, 1
+ b GetTexFilenameForR5
+# cmpwi r0, 9
+# blt ReplacePlatforms
+#
+# lwzx r5, r5, r0
+# blr
+
+
+ReplacePlatforms:
+
+ lwz r5, 4(r29)
+ srwi r5, r5, 4
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+.global TEX_Platform_ShifterH
+TEX_Platform_ShifterH:
+
+ stw r5, 0x504(r30)
+ lwz r5, 4(r30)
+ stw r5, 0x3D8(r30)
+ blr
+
+.global TEX_Platform_ShifterF
+TEX_Platform_ShifterF:
+
+ stw r4, 0x504(r30)
+ lwz r4, 4(r30)
+ stw r4, 0x3D8(r30)
+ blr
+
+.global TEX_Platform_ShifterL
+TEX_Platform_ShifterL:
+
+ stw r5, 0x504(r28)
+ lwz r5, 4(r28)
+ stw r5, 0x3D8(r28)
+ blr
+
+.global TEX_Platform_ShifterR
+TEX_Platform_ShifterR:
+
+ stw r4, 0x504(r31)
+ lwz r4, 4(r31)
+ stw r4, 0x3D8(r31)
+ blr
+
+.global TEX_Platform_ShifterS
+TEX_Platform_ShifterS:
+
+ stw r30, 0x4C4(r27)
+ lwz r30, 4(r27)
+ stw r30, 0x398(r27)
+ blr
+
+.global TEX_Platform_ShifterK
+TEX_Platform_ShifterK:
+
+ stw r4, 0x5A4(r27)
+ lwz r4, 4(r27)
+ stw r4, 0x478(r27)
+ blr
+
+.global TEX_Platform_ShifterW
+TEX_Platform_ShifterW:
+
+ stw r0, 0x504(r29)
+ lwz r0, 4(r29)
+ stw r0, 0x3D8(r29)
+ blr
+
+.global TEX_Platform_ShifterSL
+TEX_Platform_ShifterSL:
+
+ stw r4, 0x504(r29)
+ lwz r4, 4(r29)
+ stw r4, 0x3D8(r29)
+ blr
+
+
+
+
+.global TEX_PokeyA
+TEX_PokeyA:
+ lwz r5, 4(r30)
+ srwi r5, r5, 24
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+.global TEX_PokeyB
+TEX_PokeyB:
+ lwz r5, 4(r29)
+ srwi r5, r5, 24
+ andi. r5, r5, 0xF
+
+ b GetTexFilenameForR5
+
+
+.global TEX_PokeySnowman
+TEX_PokeySnowman:
+
+ lwz r10, 4(r30)
+ srwi r10, r10, 24
+ andi. r10, r10, 0xF
+
+ cmpwi r10, 0x2
+ bne SnowmanPokey
+
+ lwz r10, 4(r30)
+ # r10 is the current height
+ andi. r10, r10, 0xF
+
+ # Find it
+ lis r11, SnowmanTable@h
+ ori r11, r11, SnowmanTable@l
+ slwi r10, r10, 2 # size *= 4 (size of float)
+ lfsx f0, r11, r10 # get it from the array
+
+ blr
+
+
+SnowmanPokey:
+
+ lfs f0, 0x54(r31)
+ blr
+
+
+
+
+.global TEX_PokeySnowmanPosF
+TEX_PokeySnowmanPosF:
+
+ lwz r10, 4(r31)
+ andi. r10, r10, 0xF
+
+ lis r11, SnowmanTable@h
+ ori r11, r11, SnowmanTable@l
+ slwi r10, r10, 2 # size *= 4 (size of float)
+ lfsx f2, r11, r10 # get it from the array
+
+ fmuls f0, f0, f2
+ stfs f0, 0xB0(r30)
+ blr
+
+.global TEX_PokeySnowmanPosE
+TEX_PokeySnowmanPosE:
+
+ lwz r10, 4(r31)
+ andi. r10, r10, 0xF
+
+ lis r11, SnowmanTable@h
+ ori r11, r11, SnowmanTable@l
+ slwi r10, r10, 2 # size *= 4 (size of float)
+ lfsx f2, r11, r10 # get it from the array
+
+ fmuls f31, f31, f2
+ stfs f31, 0xB0(r29)
+ blr
+
+.global TEX_PokeySnowmanPosD
+TEX_PokeySnowmanPosD:
+
+ lwz r10, 4(r31)
+ andi. r10, r10, 0xF
+
+ lis r11, SnowmanTable@h
+ ori r11, r11, SnowmanTable@l
+ slwi r10, r10, 2 # size *= 4 (size of float)
+ lfsx f2, r11, r10 # get it from the array
+
+ fmuls f1, f1, f2
+ stfs f1, 0xB0(r30)
+ blr
+
+
+.global TEX_PokeySnowmanPosC
+TEX_PokeySnowmanPosC:
+
+ lwz r10, 4(r31)
+ andi. r10, r10, 0xF
+
+ lis r11, SnowmanTable@h
+ ori r11, r11, SnowmanTable@l
+ slwi r10, r10, 2 # size *= 4 (size of float)
+ lfsx f2, r11, r10 # get it from the array
+
+ fmuls f0, f0, f2
+ stfs f0, 0xB0(r31)
+ blr
+
+
+.global TEX_PokeySnowmanPosB
+TEX_PokeySnowmanPosB:
+
+ lwz r10, 4(r31)
+ andi. r10, r10, 0xF
+
+ lis r11, SnowmanTable@h
+ ori r11, r11, SnowmanTable@l
+ slwi r10, r10, 2 # size *= 4 (size of float)
+ lfsx f0, r11, r10 # get it from the array
+
+ fmuls f1, f1, f0
+ stfs f1, 0x18(r1)
+ blr
+
+
+
+.global TEX_PokeySnowmanPosA
+TEX_PokeySnowmanPosA:
+
+ lwz r10, 4(r31)
+ andi. r10, r10, 0xF
+
+ lis r11, SnowmanTable@h
+ ori r11, r11, SnowmanTable@l
+ slwi r10, r10, 2 # size *= 4 (size of float)
+ lfsx f0, r11, r10 # get it from the array
+
+ fmuls f3, f3, f0
+ stfs f3, 0x168(r31)
+ blr
+
+
+.global TEX_PokeySnowmanPos
+TEX_PokeySnowmanPos:
+
+ mr r3, r30
+
+ lwz r10, 4(r30)
+ andi. r10, r10, 0xF
+
+ lis r11, SnowmanTable@h
+ ori r11, r11, SnowmanTable@l
+ slwi r10, r10, 2 # size *= 4 (size of float)
+ lfsx f0, r11, r10 # get it from the array
+
+ lis r5, AddAmount@h
+ ori r5, r5, AddAmount@l
+ slwi r6, r6, 2 # size *= 4 (size of float)
+ lfsx f3, r5, r6 # get it from the array
+
+ lfs f2, 0xB0(r30)
+ fmuls f3, f3, f0
+ fmuls f3, f3, f0
+ fmuls f3, f3, f0
+ fsubs f2, f2, f3
+ stfs f2, 0xB0(r30)
+
+ blr
+
+SnowmanPokeyPos:
+
+ fsubs f0, f0, f31
+ fsubs f0, f0, f31
+ fsubs f1, f1, f31
+ fsubs f1, f1, f31
+
+
+ lfs f2, 8(r1)
+ fadds f2, f2, f31
+ stfs f2, 8(r1)
+ blr
+
+
+.global TEX_PokeyC
+TEX_PokeyC:
+
+ lwz r5, 4(r30)
+ andis. r5, r5, 0xFFF0
+ or r5, r5, r31
+ or r5, r5, r0
+
+ lwz r0, 0x524(r30)
+ slwi r0, r0, 8
+ or r5, r5, r0
+
+ blr
+
+
+.global TEX_PokeyNoSand
+TEX_PokeyNoSand:
+ cmpwi r3, 0x20
+ blr
+
+
+
+.global TEX_CloudBounce
+TEX_CloudBounce:
+ lwz r5, 4(r28)
+ srwi r5, r5, 24
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+.global TEX_SpikeBall
+TEX_SpikeBall:
+ lwz r5, 4(r30)
+ srwi r5, r5, 24
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+.global TEX_Huckit
+TEX_Huckit:
+ lwz r5, 4(r29)
+ srwi r5, r5, 24
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+.global TEX_HuckitBalls
+TEX_HuckitBalls:
+ lwz r5, 4(r30)
+ srwi r5, r5, 24
+ andi. r5, r5, 0xF
+ b GetTexFilenameForR5
+
+
+
+
+
+.global HammerTime
+HammerTime:
+ lwz r8, 4(r31)
srwi r8, r8, 8
andi. r8, r8, 0xF
cmpwi r8, 1
- beq ThrowBobomb
+ beq ThrowBobomb
cmpwi r8, 2
- beq ThrowGoomba
+ beq ThrowGoomba
cmpwi r8, 3
- beq ThrowSpiny
+ beq ThrowSpiny
cmpwi r8, 4
- beq ThrowCoin
+ beq ThrowCoin
cmpwi r8, 5
- beq ThrowLemmyBall
-
- blr
-
+ beq ThrowLemmyBall
+
+ blr
+
ThrowBobomb:
li r3, 133
@@ -883,37 +883,37 @@ ThrowSpiny:
ThrowCoin:
li r3, 10
- mflr r8
+ mflr r8
mr r9, r5
- bl GenerateRandomNumber
+ bl GenerateRandomNumber
mr r5, r9
- mtlr r8
- cmpwi r3, 1
- beq ThrowItem
-
+ mtlr r8
+ cmpwi r3, 1
+ beq ThrowItem
+
li r3, 0x193
li r4, 0
li r6, 0
li r7, 0
blr
-
-ThrowItem:
+
+ThrowItem:
li r3, 6
- mflr r8
+ mflr r8
mr r9, r5
- bl GenerateRandomNumber
+ bl GenerateRandomNumber
mtlr r8
mr r5, r9
- li r4, 0
+ li r4, 0
- mr r4, r3
- li r3, 0x3C
+ mr r4, r3
+ li r3, 0x3C
li r6, 0
li r7, 0
- blr
-
+ blr
+
ThrowLemmyBall:
li r3, 0x232
@@ -921,156 +921,156 @@ ThrowLemmyBall:
blr
-
-
-.global HammerLaunch
-HammerLaunch:
- mr r3, r30
- # r31 is the new actor currently
- # r30 is self, all others are volatile
-
- lwz r5, 4(r30)
- lwz r8, 0x348(r30)
-
- srwi r5, r5, 8
- andi. r5, r5, 0xF
-
- cmpwi r5, 0
- beqlr
-
- lis r7, LaunchAngle@h
- ori r7, r7, LaunchAngle@l
-
-# lfs f0, 0(r7)
-# stfs f0, 0xDC(r31)
-# stfs f0, 0xE0(r31)
-# stfs f0, 0xE4(r31)
-
- # Nybble 11 is for y right now
- li r6, 0
- slwi r6, r6, 2 # size *= 4 (size of float)
- lfsx f0, r7, r6 # get it from the array
-
- stfs f0, 0xEC(r31)
-
- cmpwi r5, 5
- beq LemmyLaunch
-
- li r6, 1
- slwi r6, r6, 2 # size *= 4 (size of float)
-
- cmpwi r8, 0
- bne FacingLeft
-
- # Nybble 12 is for x right now
- lfsx f0, r7, r6 # get it from the array
-
- stfs f0, 0xE8(r31)
-
- blr
-
-
-FacingLeft:
-
- lis r7, LaunchAngleLeft@h
- ori r7, r7, LaunchAngleLeft@l
-
- # Nybble 12 is for x right now
- lfsx f0, r7, r6 # get it from the array
-
- stfs f0, 0xE8(r31)
- li r7, 270
- sth r7, 0x102(r31)
-
- blr
-
-
-LemmyLaunch:
-
- li r6, 2
- slwi r6, r6, 2 # size *= 4 (size of float)
-
- cmpwi r8, 0
- bne FacingLeft
-
- # Nybble 12 is for x right now
- lfsx f0, r7, r6 # get it from the array
-
- stfs f0, 0xE8(r31)
- blr
-
-
-.global HammerSpin
-HammerSpin:
-# sth r3, 0x100(r31)
- blr
-
-
-
-
-.data
-TexFilenameBuffer:
- .long 0,0,0,0
-
-TexFormatString:
- .string "g3d/t%02d.brres"
-
-ConvertFloat:
- .word 0x43300000,0x0,0x43300000,0x80000000
-
-.align 4
-
-SnowmanTable:
- .float 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5
-
-AddAmount:
- .float 32.0
-
-LaunchAngle:
- .float 4.0, 2.5, 1.5
-
-LaunchAngleLeft:
- .float -4.0, -2.5, -1.5
-
-
-
-.align 4
-
-YoshiArc:
- .string "Y_TexGreen"
-.align 4
-
-Y_TexGreen:
- .string "Y_TexGreen"
-.align 4
-Y_TexRed:
- .string "Y_TexRed"
-.align 4
-Y_TexYellow:
- .string "Y_TexYellow"
-.align 4
-Y_TexBlue:
- .string "Y_TexBlue"
-.align 4
-Y_TexPurple:
- .string "Y_TexPurple"
-.align 4
-Y_TexOrange:
- .string "Y_TexOrange"
-.align 4
-Y_TexSkyBlue:
- .string "Y_TexSkyBlue"
-.align 4
-Y_TexBlack:
- .string "Y_TexBlack"
-.align 4
-Y_TexWhite:
- .string "Y_TexWhite"
-.align 4
-
-YoshiStrings:
- .long Y_TexGreen, Y_TexRed, Y_TexYellow, Y_TexBlue, Y_TexPurple, Y_TexOrange, Y_TexSkyBlue, Y_TexBlack, Y_TexWhite
-
-.align 4
-
-
+
+
+.global HammerLaunch
+HammerLaunch:
+ mr r3, r30
+ # r31 is the new actor currently
+ # r30 is self, all others are volatile
+
+ lwz r5, 4(r30)
+ lwz r8, 0x348(r30)
+
+ srwi r5, r5, 8
+ andi. r5, r5, 0xF
+
+ cmpwi r5, 0
+ beqlr
+
+ lis r7, LaunchAngle@h
+ ori r7, r7, LaunchAngle@l
+
+# lfs f0, 0(r7)
+# stfs f0, 0xDC(r31)
+# stfs f0, 0xE0(r31)
+# stfs f0, 0xE4(r31)
+
+ # Nybble 11 is for y right now
+ li r6, 0
+ slwi r6, r6, 2 # size *= 4 (size of float)
+ lfsx f0, r7, r6 # get it from the array
+
+ stfs f0, 0xEC(r31)
+
+ cmpwi r5, 5
+ beq LemmyLaunch
+
+ li r6, 1
+ slwi r6, r6, 2 # size *= 4 (size of float)
+
+ cmpwi r8, 0
+ bne FacingLeft
+
+ # Nybble 12 is for x right now
+ lfsx f0, r7, r6 # get it from the array
+
+ stfs f0, 0xE8(r31)
+
+ blr
+
+
+FacingLeft:
+
+ lis r7, LaunchAngleLeft@h
+ ori r7, r7, LaunchAngleLeft@l
+
+ # Nybble 12 is for x right now
+ lfsx f0, r7, r6 # get it from the array
+
+ stfs f0, 0xE8(r31)
+ li r7, 270
+ sth r7, 0x102(r31)
+
+ blr
+
+
+LemmyLaunch:
+
+ li r6, 2
+ slwi r6, r6, 2 # size *= 4 (size of float)
+
+ cmpwi r8, 0
+ bne FacingLeft
+
+ # Nybble 12 is for x right now
+ lfsx f0, r7, r6 # get it from the array
+
+ stfs f0, 0xE8(r31)
+ blr
+
+
+.global HammerSpin
+HammerSpin:
+# sth r3, 0x100(r31)
+ blr
+
+
+
+
+.data
+TexFilenameBuffer:
+ .long 0,0,0,0
+
+TexFormatString:
+ .string "g3d/t%02d.brres"
+
+ConvertFloat:
+ .word 0x43300000,0x0,0x43300000,0x80000000
+
+.align 4
+
+SnowmanTable:
+ .float 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5
+
+AddAmount:
+ .float 32.0
+
+LaunchAngle:
+ .float 4.0, 2.5, 1.5
+
+LaunchAngleLeft:
+ .float -4.0, -2.5, -1.5
+
+
+
+.align 4
+
+YoshiArc:
+ .string "Y_TexGreen"
+.align 4
+
+Y_TexGreen:
+ .string "Y_TexGreen"
+.align 4
+Y_TexRed:
+ .string "Y_TexRed"
+.align 4
+Y_TexYellow:
+ .string "Y_TexYellow"
+.align 4
+Y_TexBlue:
+ .string "Y_TexBlue"
+.align 4
+Y_TexPurple:
+ .string "Y_TexPurple"
+.align 4
+Y_TexOrange:
+ .string "Y_TexOrange"
+.align 4
+Y_TexSkyBlue:
+ .string "Y_TexSkyBlue"
+.align 4
+Y_TexBlack:
+ .string "Y_TexBlack"
+.align 4
+Y_TexWhite:
+ .string "Y_TexWhite"
+.align 4
+
+YoshiStrings:
+ .long Y_TexGreen, Y_TexRed, Y_TexYellow, Y_TexBlue, Y_TexPurple, Y_TexOrange, Y_TexSkyBlue, Y_TexBlack, Y_TexWhite
+
+.align 4
+
+