mirror of
https://github.com/SAT-R/sa2.git
synced 2026-10-28 09:43:38 +00:00
Cleanup/Documentation Round 1 (#79)
* Rename PlayerCharacterIdleAnims to gPlayerCharacterIdleAnims * Match sub_8011B88. Remove player_callbacks_0.s * Simplify gBgAffineRegs. sub_8003914 (Lines 163,167) shows this way is probably more correct * General cleanup * Avoid using apostrophes in ASM comments, b/c of VS's syntax highlighting * Shorten Enemy and IA initialization proc names * Create_ -> CreateEntity_ * Remove a few asm incbins
This commit is contained in:
1 parent
360b9c2f1b
commit
88ee2b2928
110 files changed
+947
-940
No files matched your search
+2
-2
@@ -4,8 +4,8 @@
|
||||
.syntax unified
|
||||
.arm
|
||||
|
||||
thumb_func_start initSprite_Enemy_Balloon
|
||||
initSprite_Enemy_Balloon: @ 0x0805849C
|
||||
thumb_func_start CreateEntity_Balloon
|
||||
CreateEntity_Balloon: @ 0x0805849C
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
.syntax unified
|
||||
.arm
|
||||
|
||||
thumb_func_start initSprite_Enemy_BulletBuzzer
|
||||
initSprite_Enemy_BulletBuzzer: @ 0x0805971C
|
||||
thumb_func_start CreateEntity_BulletBuzzer
|
||||
CreateEntity_BulletBuzzer: @ 0x0805971C
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
|
||||
+2
-2
@@ -4,8 +4,8 @@
|
||||
.syntax unified
|
||||
.arm
|
||||
|
||||
thumb_func_start initSprite_Enemy_Buzzer
|
||||
initSprite_Enemy_Buzzer: @ 0x08052F94
|
||||
thumb_func_start CreateEntity_Buzzer
|
||||
CreateEntity_Buzzer: @ 0x08052F94
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
|
||||
+2
-2
@@ -4,8 +4,8 @@
|
||||
.syntax unified
|
||||
.arm
|
||||
|
||||
thumb_func_start initSprite_Enemy_Circus
|
||||
initSprite_Enemy_Circus: @ 0x080557F0
|
||||
thumb_func_start CreateEntity_Circus
|
||||
CreateEntity_Circus: @ 0x080557F0
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
|
||||
+2
-2
@@ -4,8 +4,8 @@
|
||||
.syntax unified
|
||||
.arm
|
||||
|
||||
thumb_func_start initSprite_Enemy_Flickey
|
||||
initSprite_Enemy_Flickey: @ 0x08058920
|
||||
thumb_func_start CreateEntity_Flickey
|
||||
CreateEntity_Flickey: @ 0x08058920
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
|
||||
@@ -10,8 +10,8 @@ gUnknown_080D8F50:
|
||||
.syntax unified
|
||||
.arm
|
||||
|
||||
thumb_func_start initSprite_Enemy_GejiGeji
|
||||
initSprite_Enemy_GejiGeji: @ 0x08057D84
|
||||
thumb_func_start CreateEntity_GejiGeji
|
||||
CreateEntity_GejiGeji: @ 0x08057D84
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
|
||||
+2
-2
@@ -4,8 +4,8 @@
|
||||
.syntax unified
|
||||
.arm
|
||||
|
||||
thumb_func_start initSprite_Enemy_Gohla
|
||||
initSprite_Enemy_Gohla: @ 0x08051788
|
||||
thumb_func_start CreateEntity_Gohla
|
||||
CreateEntity_Gohla: @ 0x08051788
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
.syntax unified
|
||||
.arm
|
||||
|
||||
thumb_func_start initSprite_Enemy_Hammerhead
|
||||
initSprite_Enemy_Hammerhead: @ 0x08056BF8
|
||||
thumb_func_start CreateEntity_Hammerhead
|
||||
CreateEntity_Hammerhead: @ 0x08056BF8
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
|
||||
+2
-2
@@ -4,8 +4,8 @@
|
||||
.syntax unified
|
||||
.arm
|
||||
|
||||
thumb_func_start initSprite_Enemy_Kiki
|
||||
initSprite_Enemy_Kiki: @ 0x08053784
|
||||
thumb_func_start CreateEntity_Kiki
|
||||
CreateEntity_Kiki: @ 0x08053784
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
|
||||
+2
-2
@@ -15,8 +15,8 @@ gUnknown_080D8F38:
|
||||
.syntax unified
|
||||
.arm
|
||||
|
||||
thumb_func_start initSprite_Enemy_Koura
|
||||
initSprite_Enemy_Koura: @ 0x08054068
|
||||
thumb_func_start CreateEntity_Koura
|
||||
CreateEntity_Koura: @ 0x08054068
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
|
||||
@@ -12,8 +12,8 @@ gUnknown_080D8F30:
|
||||
.syntax unified
|
||||
.arm
|
||||
|
||||
thumb_func_start initSprite_Enemy_Kubinaga
|
||||
initSprite_Enemy_Kubinaga: @ 0x08052288
|
||||
thumb_func_start CreateEntity_Kubinaga
|
||||
CreateEntity_Kubinaga: @ 0x08052288
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
.syntax unified
|
||||
.arm
|
||||
|
||||
thumb_func_start initSprite_Enemy_KuraKura
|
||||
initSprite_Enemy_KuraKura: @ 0x08051E3C
|
||||
thumb_func_start CreateEntity_KuraKura
|
||||
CreateEntity_KuraKura: @ 0x08051E3C
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
|
||||
+2
-2
@@ -4,8 +4,8 @@
|
||||
.syntax unified
|
||||
.arm
|
||||
|
||||
thumb_func_start initSprite_Enemy_Kyura
|
||||
initSprite_Enemy_Kyura: @ 0x080593B4
|
||||
thumb_func_start CreateEntity_Kyura
|
||||
CreateEntity_Kyura: @ 0x080593B4
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
|
||||
+2
-2
@@ -4,8 +4,8 @@
|
||||
.syntax unified
|
||||
.arm
|
||||
|
||||
thumb_func_start initSprite_Enemy_Madillo
|
||||
initSprite_Enemy_Madillo: @ 0x08055EDC
|
||||
thumb_func_start CreateEntity_Madillo
|
||||
CreateEntity_Madillo: @ 0x08055EDC
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
|
||||
+2
-2
@@ -4,8 +4,8 @@
|
||||
.syntax unified
|
||||
.arm
|
||||
|
||||
thumb_func_start initSprite_Enemy_Mon
|
||||
initSprite_Enemy_Mon: @ 0x08051214
|
||||
thumb_func_start CreateEntity_Mon
|
||||
CreateEntity_Mon: @ 0x08051214
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
|
||||
+2
-2
@@ -4,8 +4,8 @@
|
||||
.syntax unified
|
||||
.arm
|
||||
|
||||
thumb_func_start initSprite_Enemy_Mouse
|
||||
initSprite_Enemy_Mouse: @ 0x080571B4
|
||||
thumb_func_start CreateEntity_Mouse
|
||||
CreateEntity_Mouse: @ 0x080571B4
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
|
||||
+2
-2
@@ -4,8 +4,8 @@
|
||||
.syntax unified
|
||||
.arm
|
||||
|
||||
thumb_func_start initSprite_Enemy_Pen
|
||||
initSprite_Enemy_Pen: @ 0x08057854
|
||||
thumb_func_start CreateEntity_Pen
|
||||
CreateEntity_Pen: @ 0x08057854
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
.syntax unified
|
||||
.arm
|
||||
|
||||
thumb_func_start initSprite_Enemy_PikoPiko
|
||||
initSprite_Enemy_PikoPiko: @ 0x080554C0
|
||||
thumb_func_start CreateEntity_PikoPiko
|
||||
CreateEntity_PikoPiko: @ 0x080554C0
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
|
||||
+2
-2
@@ -4,8 +4,8 @@
|
||||
.syntax unified
|
||||
.arm
|
||||
|
||||
thumb_func_start initSprite_Enemy_Star
|
||||
initSprite_Enemy_Star: @ 0x08059C9C
|
||||
thumb_func_start CreateEntity_Star
|
||||
CreateEntity_Star: @ 0x08059C9C
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
|
||||
+2
-2
@@ -4,8 +4,8 @@
|
||||
.syntax unified
|
||||
.arm
|
||||
|
||||
thumb_func_start initSprite_Enemy_Straw
|
||||
initSprite_Enemy_Straw: @ 0x08056684
|
||||
thumb_func_start CreateEntity_Straw
|
||||
CreateEntity_Straw: @ 0x08056684
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
|
||||
+2
-2
@@ -4,8 +4,8 @@
|
||||
.syntax unified
|
||||
.arm
|
||||
|
||||
thumb_func_start initSprite_Enemy_Yado
|
||||
initSprite_Enemy_Yado: @ 0x08054E0C
|
||||
thumb_func_start CreateEntity_Yado
|
||||
CreateEntity_Yado: @ 0x08054E0C
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
|
||||
+22
-22
@@ -11,8 +11,8 @@ gUnknown_080D650C:
|
||||
gUnknown_080D661C:
|
||||
.incbin "baserom.gba", 0x000D661C, 0x110
|
||||
|
||||
.global PlayerCharacterIdleAnims
|
||||
PlayerCharacterIdleAnims: @ 0x080D672C
|
||||
.global gPlayerCharacterIdleAnims
|
||||
gPlayerCharacterIdleAnims: @ 0x080D672C
|
||||
.2byte 0, 91, 182, 273, 364
|
||||
|
||||
.global gUnknown_080D6736
|
||||
@@ -702,7 +702,7 @@ _0801D788:
|
||||
muls r2, r6, r2
|
||||
asrs r2, r2, #5
|
||||
ands r2, r7
|
||||
ldr r0, _0801D7F4 @ =gUnknown_080D5C04
|
||||
ldr r0, _0801D7F4 @ =gUnknown_080D5C02+2
|
||||
adds r1, r1, r0
|
||||
ldrb r0, [r1]
|
||||
muls r0, r6, r0
|
||||
@@ -732,7 +732,7 @@ _0801D7E4: .4byte gBgScrollRegs
|
||||
_0801D7E8: .4byte gFlags
|
||||
_0801D7EC: .4byte gUnknown_080D5C02
|
||||
_0801D7F0: .4byte gBgPalette
|
||||
_0801D7F4: .4byte gUnknown_080D5C04
|
||||
_0801D7F4: .4byte gUnknown_080D5C02+2
|
||||
_0801D7F8:
|
||||
movs r2, #0
|
||||
ldr r0, _0801D860 @ =gBgScrollRegs
|
||||
@@ -6888,7 +6888,7 @@ _08020710: .4byte gGameMode
|
||||
_08020714:
|
||||
mov r0, ip
|
||||
ldrb r1, [r0, #0xa]
|
||||
ldr r2, _080207CC @ =PlayerCharacterIdleAnims
|
||||
ldr r2, _080207CC @ =gPlayerCharacterIdleAnims
|
||||
mov sl, r2
|
||||
ldr r2, _080207D0 @ =gMultiplayerCharacters
|
||||
ldr r3, _080207D4 @ =IWRAM_START + 0x56
|
||||
@@ -6983,7 +6983,7 @@ _080207BA:
|
||||
movs r0, #0
|
||||
b _08020962
|
||||
.align 2, 0
|
||||
_080207CC: .4byte PlayerCharacterIdleAnims
|
||||
_080207CC: .4byte gPlayerCharacterIdleAnims
|
||||
_080207D0: .4byte gMultiplayerCharacters
|
||||
_080207D4: .4byte IWRAM_START + 0x56
|
||||
_080207D8:
|
||||
@@ -7484,7 +7484,7 @@ _08020BA0:
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
lsls r0, r0, #1
|
||||
ldr r4, _08020C60 @ =PlayerCharacterIdleAnims
|
||||
ldr r4, _08020C60 @ =gPlayerCharacterIdleAnims
|
||||
adds r0, r0, r4
|
||||
ldrb r0, [r0]
|
||||
subs r1, r1, r0
|
||||
@@ -7572,7 +7572,7 @@ _08020C44:
|
||||
.align 2, 0
|
||||
_08020C58: .4byte gMultiplayerCharacters
|
||||
_08020C5C: .4byte IWRAM_START + 0x56
|
||||
_08020C60: .4byte PlayerCharacterIdleAnims
|
||||
_08020C60: .4byte gPlayerCharacterIdleAnims
|
||||
_08020C64:
|
||||
adds r0, r7, #1
|
||||
lsls r0, r0, #0x18
|
||||
@@ -8123,7 +8123,7 @@ _08021094:
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
lsls r0, r0, #1
|
||||
ldr r4, _08021154 @ =PlayerCharacterIdleAnims
|
||||
ldr r4, _08021154 @ =gPlayerCharacterIdleAnims
|
||||
adds r0, r0, r4
|
||||
ldrb r0, [r0]
|
||||
subs r1, r1, r0
|
||||
@@ -8211,7 +8211,7 @@ _08021138:
|
||||
.align 2, 0
|
||||
_0802114C: .4byte gMultiplayerCharacters
|
||||
_08021150: .4byte IWRAM_START + 0x56
|
||||
_08021154: .4byte PlayerCharacterIdleAnims
|
||||
_08021154: .4byte gPlayerCharacterIdleAnims
|
||||
_08021158:
|
||||
adds r0, r7, #1
|
||||
lsls r0, r0, #0x18
|
||||
@@ -15281,7 +15281,7 @@ sub_80246DC: @ 0x080246DC
|
||||
mov ip, r1
|
||||
ldrh r2, [r1]
|
||||
mov sl, r2
|
||||
ldr r1, _0802476C @ =PlayerCharacterIdleAnims
|
||||
ldr r1, _0802476C @ =gPlayerCharacterIdleAnims
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x85
|
||||
ldrb r0, [r0]
|
||||
@@ -15329,7 +15329,7 @@ sub_80246DC: @ 0x080246DC
|
||||
strb r0, [r4, #0x17]
|
||||
b _0802485C
|
||||
.align 2, 0
|
||||
_0802476C: .4byte PlayerCharacterIdleAnims
|
||||
_0802476C: .4byte gPlayerCharacterIdleAnims
|
||||
_08024770:
|
||||
movs r1, #0x12
|
||||
ldrsh r0, [r4, r1]
|
||||
@@ -15503,7 +15503,7 @@ sub_802486C: @ 0x0802486C
|
||||
ldrsh r0, [r2, r1]
|
||||
cmp r0, #0x4f
|
||||
bgt _080248C6
|
||||
ldr r0, _0802490C @ =PlayerCharacterIdleAnims
|
||||
ldr r0, _0802490C @ =gPlayerCharacterIdleAnims
|
||||
adds r1, r3, #0
|
||||
adds r1, #0x85
|
||||
ldrb r1, [r1]
|
||||
@@ -15551,7 +15551,7 @@ _080248FC:
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_08024908: .4byte gUnknown_080D6736
|
||||
_0802490C: .4byte PlayerCharacterIdleAnims
|
||||
_0802490C: .4byte gPlayerCharacterIdleAnims
|
||||
_08024910: .4byte _08024914
|
||||
_08024914: @ jump table
|
||||
.4byte _080249E8 @ case 0
|
||||
@@ -15608,7 +15608,7 @@ _08024914: @ jump table
|
||||
.4byte _08024A10 @ case 51
|
||||
.4byte _08024A10 @ case 52
|
||||
_080249E8:
|
||||
ldr r1, _08024A2C @ =PlayerCharacterIdleAnims
|
||||
ldr r1, _08024A2C @ =gPlayerCharacterIdleAnims
|
||||
adds r0, r3, #0
|
||||
adds r0, #0x85
|
||||
ldrb r0, [r0]
|
||||
@@ -15645,7 +15645,7 @@ _08024A20:
|
||||
movs r0, #0x80
|
||||
b _08024A32
|
||||
.align 2, 0
|
||||
_08024A2C: .4byte PlayerCharacterIdleAnims
|
||||
_08024A2C: .4byte gPlayerCharacterIdleAnims
|
||||
_08024A30:
|
||||
movs r0, #8
|
||||
_08024A32:
|
||||
@@ -16067,7 +16067,7 @@ _08024D02:
|
||||
mov r8, r2
|
||||
cmp r0, #5
|
||||
bne _08024D6C
|
||||
ldr r1, _08024DB4 @ =PlayerCharacterIdleAnims
|
||||
ldr r1, _08024DB4 @ =gPlayerCharacterIdleAnims
|
||||
adds r0, r7, #0
|
||||
adds r0, #0x85
|
||||
ldrb r0, [r0]
|
||||
@@ -16113,7 +16113,7 @@ _08024DA4: .4byte gUnknown_03005590
|
||||
_08024DA8: .4byte gMultiSioSend
|
||||
_08024DAC: .4byte gMultiplayerPlayerTasks
|
||||
_08024DB0: .4byte 0x04000128
|
||||
_08024DB4: .4byte PlayerCharacterIdleAnims
|
||||
_08024DB4: .4byte gPlayerCharacterIdleAnims
|
||||
_08024DB8: .4byte gRingCount
|
||||
_08024DBC:
|
||||
ldrh r1, [r4, #8]
|
||||
@@ -16444,7 +16444,7 @@ _08025028:
|
||||
adds r0, #2
|
||||
ldrh r2, [r0]
|
||||
mov ip, r2
|
||||
ldr r1, _080250B0 @ =PlayerCharacterIdleAnims
|
||||
ldr r1, _080250B0 @ =gPlayerCharacterIdleAnims
|
||||
movs r0, #0
|
||||
ldrsb r0, [r7, r0]
|
||||
lsls r0, r0, #1
|
||||
@@ -16510,7 +16510,7 @@ _0802506E:
|
||||
lsls r0, r0, #8
|
||||
b _080250BC
|
||||
.align 2, 0
|
||||
_080250B0: .4byte PlayerCharacterIdleAnims
|
||||
_080250B0: .4byte gPlayerCharacterIdleAnims
|
||||
_080250B4: .4byte gUnknown_030054B8
|
||||
_080250B8:
|
||||
movs r0, #0x80
|
||||
@@ -16627,7 +16627,7 @@ _08025180:
|
||||
adds r0, #2
|
||||
ldrh r2, [r0]
|
||||
mov r8, r2
|
||||
ldr r1, _080251F4 @ =PlayerCharacterIdleAnims
|
||||
ldr r1, _080251F4 @ =gPlayerCharacterIdleAnims
|
||||
movs r0, #0
|
||||
ldrsb r0, [r7, r0]
|
||||
lsls r0, r0, #1
|
||||
@@ -16677,7 +16677,7 @@ _080251DE:
|
||||
lsrs r0, r0, #0x18
|
||||
b _08025208
|
||||
.align 2, 0
|
||||
_080251F4: .4byte PlayerCharacterIdleAnims
|
||||
_080251F4: .4byte gPlayerCharacterIdleAnims
|
||||
_080251F8:
|
||||
movs r0, #1
|
||||
mov r1, sl
|
||||
|
||||
@@ -102,7 +102,7 @@ _0801CCA8:
|
||||
lsls r2, r2, #0x10
|
||||
mov sl, r2
|
||||
movs r6, #0xff
|
||||
ldr r3, _0801CD64 @ =gUnknown_080D5B22
|
||||
ldr r3, _0801CD64 @ =gUnknown_080D5B20+2
|
||||
mov ip, r3
|
||||
_0801CCB6:
|
||||
lsls r2, r4, #2
|
||||
@@ -110,7 +110,7 @@ _0801CCB6:
|
||||
adds r3, r7, r2
|
||||
lsls r1, r4, #1
|
||||
adds r1, r1, r4
|
||||
ldr r7, _0801CD68 @ =gUnknown_080D5B21
|
||||
ldr r7, _0801CD68 @ =gUnknown_080D5B20+1
|
||||
adds r0, r1, r7
|
||||
ldrb r0, [r0]
|
||||
mov r7, r8
|
||||
@@ -194,8 +194,8 @@ _0801CD4C:
|
||||
.align 2, 0
|
||||
_0801CD5C: .4byte IWRAM_START + 0x408
|
||||
_0801CD60: .4byte gUnknown_080D5B20
|
||||
_0801CD64: .4byte gUnknown_080D5B22
|
||||
_0801CD68: .4byte gUnknown_080D5B21
|
||||
_0801CD64: .4byte gUnknown_080D5B20+2
|
||||
_0801CD68: .4byte gUnknown_080D5B20+1
|
||||
_0801CD6C: .4byte gNumHBlankCallbacks
|
||||
_0801CD70: .4byte gHBlankCallbacks
|
||||
_0801CD74: .4byte sub_801E454
|
||||
|
||||
@@ -826,7 +826,7 @@ _08015C0E:
|
||||
ldrsh r0, [r2, r1]
|
||||
cmp r0, #0x4f
|
||||
bgt _08015C76
|
||||
ldr r1, _08015CD4 @ =PlayerCharacterIdleAnims
|
||||
ldr r1, _08015CD4 @ =gPlayerCharacterIdleAnims
|
||||
adds r0, r6, #0
|
||||
adds r0, #0x85
|
||||
ldrb r0, [r0]
|
||||
@@ -880,7 +880,7 @@ _08015CC4: .4byte sub_8015FF0
|
||||
_08015CC8: .4byte gUnknown_080D6736
|
||||
_08015CCC: .4byte IWRAM_START + 0x100
|
||||
_08015CD0: .4byte IWRAM_START + 0x102
|
||||
_08015CD4: .4byte PlayerCharacterIdleAnims
|
||||
_08015CD4: .4byte gPlayerCharacterIdleAnims
|
||||
_08015CD8: .4byte IWRAM_START + 0x104
|
||||
_08015CDC: .4byte IWRAM_START + 0x106
|
||||
_08015CE0: .4byte IWRAM_START + 0x10A
|
||||
|
||||
@@ -1,150 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section .rodata
|
||||
|
||||
.global gUnknown_080D5518
|
||||
gUnknown_080D5518:
|
||||
.2byte 15, 16, 3
|
||||
.2byte 16, 17, 1
|
||||
.2byte 16, 51, 3
|
||||
.2byte 0
|
||||
|
||||
.text
|
||||
.syntax unified
|
||||
.arm
|
||||
|
||||
thumb_func_start sub_8011B88
|
||||
sub_8011B88: @ 0x08011B88
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sb
|
||||
mov r6, r8
|
||||
push {r6, r7}
|
||||
sub sp, #8
|
||||
adds r3, r0, #0
|
||||
lsls r2, r2, #0x10
|
||||
lsrs r2, r2, #0x10
|
||||
mov r8, r2
|
||||
ldr r0, _08011BA8 @ =gGameMode
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #2
|
||||
bls _08011BAC
|
||||
movs r0, #0
|
||||
b _08011C7E
|
||||
.align 2, 0
|
||||
_08011BA8: .4byte gGameMode
|
||||
_08011BAC:
|
||||
lsls r0, r3, #0x10
|
||||
asrs r0, r0, #0x10
|
||||
lsls r1, r1, #0x10
|
||||
asrs r1, r1, #0x10
|
||||
ldr r4, _08011BF0 @ =gPlayer
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x60
|
||||
movs r3, #0
|
||||
ldrsb r3, [r2, r3]
|
||||
ldr r2, _08011BF4 @ =sub_801F214
|
||||
str r2, [sp]
|
||||
ldr r2, _08011BF8 @ =sub_801F550
|
||||
str r2, [sp, #4]
|
||||
movs r2, #0xe8
|
||||
bl sub_801F15C
|
||||
mov sb, r0
|
||||
ldrh r1, [r0, #6]
|
||||
movs r0, #0xc0
|
||||
lsls r0, r0, #0x12
|
||||
adds r7, r1, r0
|
||||
mov r0, r8
|
||||
cmp r0, #0
|
||||
bne _08011BFC
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x68
|
||||
ldrh r0, [r0]
|
||||
strh r0, [r7, #0x16]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x6a
|
||||
ldrh r0, [r0]
|
||||
strh r0, [r7, #0x18]
|
||||
b _08011C44
|
||||
.align 2, 0
|
||||
_08011BF0: .4byte gPlayer
|
||||
_08011BF4: .4byte sub_801F214
|
||||
_08011BF8: .4byte sub_801F550
|
||||
_08011BFC:
|
||||
mov r1, r8
|
||||
cmp r1, #0
|
||||
blt _08011C44
|
||||
cmp r1, #2
|
||||
bgt _08011C44
|
||||
ldr r1, _08011C8C @ =gUnknown_080D6736
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x64
|
||||
movs r3, #0
|
||||
ldrsh r0, [r2, r3]
|
||||
lsls r0, r0, #2
|
||||
adds r0, r0, r1
|
||||
ldrh r3, [r0]
|
||||
strh r3, [r7, #0x16]
|
||||
movs r5, #0
|
||||
ldrsh r0, [r2, r5]
|
||||
lsls r0, r0, #2
|
||||
adds r1, #2
|
||||
adds r0, r0, r1
|
||||
ldrh r0, [r0]
|
||||
strh r0, [r7, #0x18]
|
||||
movs r1, #0
|
||||
ldrsh r0, [r2, r1]
|
||||
cmp r0, #0x4f
|
||||
bgt _08011C44
|
||||
ldr r1, _08011C90 @ =PlayerCharacterIdleAnims
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x85
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r1
|
||||
ldrh r0, [r0]
|
||||
adds r0, r3, r0
|
||||
strh r0, [r7, #0x16]
|
||||
_08011C44:
|
||||
adds r6, r7, #0
|
||||
adds r6, #0x1c
|
||||
ldr r5, _08011C94 @ =gUnknown_080D5518
|
||||
mov r3, r8
|
||||
lsls r4, r3, #1
|
||||
add r4, r8
|
||||
lsls r4, r4, #1
|
||||
adds r0, r4, r5
|
||||
ldrh r0, [r0]
|
||||
bl VramMalloc
|
||||
str r0, [r6, #4]
|
||||
adds r0, r5, #2
|
||||
adds r0, r4, r0
|
||||
ldrh r0, [r0]
|
||||
strh r0, [r6, #0xa]
|
||||
adds r5, #4
|
||||
adds r4, r4, r5
|
||||
ldrh r1, [r4]
|
||||
adds r0, r7, #0
|
||||
adds r0, #0x3c
|
||||
strb r1, [r0]
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #2
|
||||
strh r0, [r6, #0x1a]
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #6
|
||||
str r0, [r6, #0x10]
|
||||
mov r0, sb
|
||||
_08011C7E:
|
||||
add sp, #8
|
||||
pop {r3, r4}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
pop {r4, r5, r6, r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_08011C8C: .4byte gUnknown_080D6736
|
||||
_08011C90: .4byte PlayerCharacterIdleAnims
|
||||
_08011C94: .4byte gUnknown_080D5518
|
||||
@@ -215,7 +215,7 @@ _08016188:
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #1
|
||||
strh r0, [r4, #0x3c]
|
||||
ldr r2, _08016204 @ =PlayerCharacterIdleAnims
|
||||
ldr r2, _08016204 @ =gPlayerCharacterIdleAnims
|
||||
ldr r1, _08016208 @ =gMultiplayerCharacters
|
||||
ldrb r0, [r7]
|
||||
adds r0, r0, r1
|
||||
@@ -243,7 +243,7 @@ _08016188:
|
||||
str r0, [r4, #0x10]
|
||||
b _08016214
|
||||
.align 2, 0
|
||||
_08016204: .4byte PlayerCharacterIdleAnims
|
||||
_08016204: .4byte gPlayerCharacterIdleAnims
|
||||
_08016208: .4byte gMultiplayerCharacters
|
||||
_0801620C: .4byte 0x04000128
|
||||
_08016210:
|
||||
@@ -702,7 +702,7 @@ _08016576:
|
||||
adds r0, r7, #0
|
||||
adds r0, #0x6a
|
||||
strh r3, [r0]
|
||||
ldr r1, _080165CC @ =PlayerCharacterIdleAnims
|
||||
ldr r1, _080165CC @ =gPlayerCharacterIdleAnims
|
||||
ldrb r0, [r5]
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r1
|
||||
@@ -721,7 +721,7 @@ _080165BC: .4byte PlayerCB_8025318
|
||||
_080165C0: .4byte 0xFFBFFFFF
|
||||
_080165C4: .4byte gGameMode
|
||||
_080165C8: .4byte gUnknown_030053E8
|
||||
_080165CC: .4byte PlayerCharacterIdleAnims
|
||||
_080165CC: .4byte gPlayerCharacterIdleAnims
|
||||
_080165D0:
|
||||
mov r0, r8
|
||||
ldrh r3, [r0, #6]
|
||||
@@ -865,7 +865,7 @@ _080166E8: .4byte gVramGraphicsCopyQueueIndex
|
||||
_080166EC: .4byte gGameMode
|
||||
_080166F0:
|
||||
movs r2, #3
|
||||
ldr r3, _0801688C @ =PlayerCharacterIdleAnims
|
||||
ldr r3, _0801688C @ =gPlayerCharacterIdleAnims
|
||||
movs r4, #6
|
||||
ldrsh r0, [r3, r4]
|
||||
ldrh r1, [r6, #0xa]
|
||||
@@ -1078,7 +1078,7 @@ _08016880:
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_0801688C: .4byte PlayerCharacterIdleAnims
|
||||
_0801688C: .4byte gPlayerCharacterIdleAnims
|
||||
_08016890: .4byte gCamera
|
||||
_08016894: .4byte gGameMode
|
||||
_08016898: .4byte gUnknown_030054B4
|
||||
|
||||
+158
-158
@@ -117,143 +117,143 @@ gSpritePosData_enemies:
|
||||
|
||||
.global gSpriteInits_Interactables @ 080D4E1C
|
||||
gSpriteInits_Interactables:
|
||||
.4byte initSprite_Interactable_Toggle_PlayerLayer
|
||||
.4byte initSprite_Interactable_Toggle_PlayerLayer
|
||||
.4byte initSprite_Interactable_Platform
|
||||
.4byte initSprite_Interactable_Spring_Normal_Up
|
||||
.4byte initSprite_Interactable_Spring_Normal_Down
|
||||
.4byte initSprite_Interactable_Spring_Normal_Right
|
||||
.4byte initSprite_Interactable_Spring_Normal_Left
|
||||
.4byte initSprite_Interactable_Spring_Big_UpLeft
|
||||
.4byte initSprite_Interactable_Spring_Big_UpRight
|
||||
.4byte initSprite_Interactable_Spring_Big_DownRight
|
||||
.4byte initSprite_Interactable_Spring_Big_DownLeft
|
||||
.4byte initSprite_Interactable_Spring_Small_UpRight
|
||||
.4byte initSprite_Interactable_Spring_Small_UpLeft
|
||||
.4byte initSprite_Interactable_CommonThinPlatform
|
||||
.4byte initSprite_Interactable_Decoration
|
||||
.4byte initSprite_Interactable_Ramp
|
||||
.4byte initSprite_Interactable_Booster
|
||||
.4byte initSprite_Interactable_InclineRamp @ The one at the end of Leaf Forest Act 1 (also in LF Act 2 and Sky Canyon Act 2)
|
||||
.4byte initSprite_Interactable_BouncySpring
|
||||
.4byte initSprite_Interactable_019
|
||||
.4byte initSprite_Interactable_RotatingHandle
|
||||
.4byte initSprite_Interactable_gappedLoop_Start
|
||||
.4byte initSprite_Interactable_gappedLoop_End
|
||||
.4byte CreateEntity_Toggle_PlayerLayer
|
||||
.4byte CreateEntity_Toggle_PlayerLayer
|
||||
.4byte CreateEntity_Platform
|
||||
.4byte CreateEntity_Spring_Normal_Up
|
||||
.4byte CreateEntity_Spring_Normal_Down
|
||||
.4byte CreateEntity_Spring_Normal_Right
|
||||
.4byte CreateEntity_Spring_Normal_Left
|
||||
.4byte CreateEntity_Spring_Big_UpLeft
|
||||
.4byte CreateEntity_Spring_Big_UpRight
|
||||
.4byte CreateEntity_Spring_Big_DownRight
|
||||
.4byte CreateEntity_Spring_Big_DownLeft
|
||||
.4byte CreateEntity_Spring_Small_UpRight
|
||||
.4byte CreateEntity_Spring_Small_UpLeft
|
||||
.4byte CreateEntity_CommonThinPlatform
|
||||
.4byte CreateEntity_Decoration
|
||||
.4byte CreateEntity_Ramp
|
||||
.4byte CreateEntity_Booster
|
||||
.4byte CreateEntity_InclineRamp @ The one at the end of Leaf Forest Act 1 (also in LF Act 2 and Sky Canyon Act 2)
|
||||
.4byte CreateEntity_BouncySpring
|
||||
.4byte CreateEntity_019
|
||||
.4byte CreateEntity_RotatingHandle
|
||||
.4byte CreateEntity_GappedLoop_Start
|
||||
.4byte CreateEntity_GappedLoop_End
|
||||
|
||||
.4byte initSprite_Interactable_Spikes_Up
|
||||
.4byte initSprite_Interactable_Spikes_Down
|
||||
.4byte initSprite_Interactable_Spikes_LeftRight @ Left
|
||||
.4byte initSprite_Interactable_Spikes_LeftRight @ Right
|
||||
.4byte initSprite_Interactable_Spikes_HidingUp
|
||||
.4byte initSprite_Interactable_Spikes_HidingDown
|
||||
.4byte CreateEntity_Spikes_Up
|
||||
.4byte CreateEntity_Spikes_Down
|
||||
.4byte CreateEntity_Spikes_LeftRight @ Left
|
||||
.4byte CreateEntity_Spikes_LeftRight @ Right
|
||||
.4byte CreateEntity_Spikes_HidingUp
|
||||
.4byte CreateEntity_Spikes_HidingDown
|
||||
|
||||
.4byte initSprite_Interactable_Corkscrew_Start
|
||||
.4byte initSprite_Interactable_Corkscrew_End
|
||||
.4byte initSprite_Interactable_BouncyBar
|
||||
.4byte initSprite_Interactable_GrindRail_Start
|
||||
.4byte initSprite_Interactable_GrindRail_StartAir @ Enables not only from air, but when running on water aswell.
|
||||
.4byte initSprite_Interactable_GrindRail_EndGround
|
||||
.4byte initSprite_Interactable_GrindRail_End_ForcedJump
|
||||
.4byte initSprite_Interactable_GrindRail_EndAlternate
|
||||
.4byte initSprite_Interactable_GrindRail_EndAir
|
||||
.4byte initSprite_Interactable_GrindRail_EndGround_Left
|
||||
.4byte initSprite_Interactable_GrindRail_EndAir_Left
|
||||
.4byte initSprite_Interactable_Corkscrew3D_Start
|
||||
.4byte initSprite_Interactable_Corkscrew3D_End
|
||||
.4byte initSprite_Interactable_StageGoal
|
||||
.4byte initSprite_Interactable_Checkpoint
|
||||
.4byte initSprite_Interactable_044 @ Used at layer transitions on three-quarter-type loops
|
||||
.4byte initSprite_Interactable_Toggle_Checkpoint
|
||||
.4byte initSprite_Interactable_Toggle_StageGoal
|
||||
.4byte initSprite_Interactable_WindUpStick @ Character rotates a bit around it, then shoots up/down
|
||||
.4byte initSprite_Interactable048
|
||||
.4byte initSprite_Interactable_HookRail_Start
|
||||
.4byte initSprite_Interactable_HookRail_End
|
||||
.4byte initSprite_InteractableWindmill
|
||||
.4byte initSprite_InteractableTurnAroundBar
|
||||
.4byte initSprite_Interactable_HotCrater_Crane
|
||||
.4byte initSprite_Interactable_DashRing
|
||||
.4byte initSprite_Interactable_FloatingSpring_Up
|
||||
.4byte initSprite_Interactable_MusicPlant_Note_Sphere
|
||||
.4byte initSprite_Interactable_MusicPlant_Note_Block
|
||||
.4byte initSprite_Interactable_MusicPlant_GuitarString
|
||||
.4byte initSprite_Interactable_MusicPlant_Keyboard_Vertical
|
||||
.4byte initSprite_Interactable_MusicPlant_Keyboard_Horizontal_PushLeft
|
||||
.4byte initSprite_Interactable_MusicPlant_Keyboard_Horizontal_PushRight
|
||||
.4byte initSprite_Interactable_MusicPlant_GermanFlute
|
||||
.4byte initSprite_Interactable_MusicPlant_FrenchHorn_Entry
|
||||
.4byte initSprite_Interactable_MusicPlant_PipeInstrument_Entry
|
||||
.4byte initSprite_Interactable_IceParadise_SlowingSnow
|
||||
.4byte initSprite_Interactable_IceParadise_FunnelSphere
|
||||
.4byte initSprite_Interactable_IceParadise_HalfPipe_End @ Like in SA1 Neo Green Hill
|
||||
.4byte initSprite_Interactable_IceParadise_HalfPipe_Start @ Like in SA1 Neo Green Hill
|
||||
.4byte initSprite_Interactable069
|
||||
.4byte initSprite_InteractableTecBaseNoteBlock
|
||||
.4byte initSprite_Interactable_044
|
||||
.4byte initSprite_Interactable_ClearPipe_Start
|
||||
.4byte initSprite_Interactable_ClearPipe_End
|
||||
.4byte initSprite_InteractableTecBaseLightBridge @ Techno Base - Loud Digital Path
|
||||
.4byte initSprite_Interactable075_0
|
||||
.4byte initSprite_Interactable075_1
|
||||
.4byte initSprite_Interactable075_2 @ Techno Base - Box Platform (Launch player up)
|
||||
.4byte initSprite_Interactable078
|
||||
.4byte initSprite_Interactable079
|
||||
.4byte initSprite_Interactable080
|
||||
.4byte initSprite_Interactable_Platform_Square
|
||||
.4byte initSprite_Interactable_SkyCanyon_GiantPropeller
|
||||
.4byte initSprite_Interactable_IceParadise_SlidyIce
|
||||
.4byte initSprite_Interactable_SkyCanyon_SmallSpinnyWindmill
|
||||
.4byte initSprite_Interactable085
|
||||
.4byte initSprite_Interactable_SkyCanyon_Whirlwind_0
|
||||
.4byte initSprite_Interactable_SkyCanyon_SmallPropeller_Left
|
||||
.4byte initSprite_Interactable_SkyCanyon_SmallPropeller_Right
|
||||
.4byte initSprite_Interactable_SkyCanyon_SmallPropeller_Left_Periodic
|
||||
.4byte initSprite_Interactable_SkyCanyon_SmallPropeller_Right_Periodic
|
||||
.4byte initSprite_EggUtopia_Launcher_Left_GDown
|
||||
.4byte initSprite_EggUtopia_Launcher_Right_GDown
|
||||
.4byte initSprite_InteractableCannon
|
||||
.4byte initSprite_Interactable094
|
||||
.4byte initSprite_Interactable095
|
||||
.4byte initSprite_Interactable_FlyingHandle
|
||||
.4byte initSprite_InteractableSpeedingPlatform
|
||||
.4byte initSprite_Interactable_Toggle_Gravity__Down
|
||||
.4byte initSprite_Interactable_Toggle_Gravity__Up
|
||||
.4byte initSprite_Interactable_Toggle_Gravity__Toggle
|
||||
.4byte initSprite_EggUtopia_Launcher_Left_GUp
|
||||
.4byte initSprite_EggUtopia_Launcher_Right_GUp @ Egg Utopia "Launcher" (like in Manias Flying Battery)
|
||||
.4byte initSprite_Interactable_SpecialRing
|
||||
.4byte initSprite_Interactable_SkyCanyon_Whirlwind_1
|
||||
.4byte initSprite_Interactable105
|
||||
.4byte CreateEntity_Corkscrew_Start
|
||||
.4byte CreateEntity_Corkscrew_End
|
||||
.4byte CreateEntity_BouncyBar
|
||||
.4byte CreateEntity_GrindRail_Start
|
||||
.4byte CreateEntity_GrindRail_StartAir @ Enables not only from air, but when running on water aswell.
|
||||
.4byte CreateEntity_GrindRail_EndGround
|
||||
.4byte CreateEntity_GrindRail_End_ForcedJump
|
||||
.4byte CreateEntity_GrindRail_EndAlternate
|
||||
.4byte CreateEntity_GrindRail_EndAir
|
||||
.4byte CreateEntity_GrindRail_EndGround_Left
|
||||
.4byte CreateEntity_GrindRail_EndAir_Left
|
||||
.4byte CreateEntity_Corkscrew3D_Start
|
||||
.4byte CreateEntity_Corkscrew3D_End
|
||||
.4byte CreateEntity_StageGoal
|
||||
.4byte CreateEntity_Checkpoint
|
||||
.4byte CreateEntity_044 @ Used at layer transitions on three-quarter-type loops
|
||||
.4byte CreateEntity_Toggle_Checkpoint
|
||||
.4byte CreateEntity_Toggle_StageGoal
|
||||
.4byte CreateEntity_WindUpStick @ Character rotates a bit around it, then shoots up/down
|
||||
.4byte CreateEntity_048
|
||||
.4byte CreateEntity_HookRail_Start
|
||||
.4byte CreateEntity_HookRail_End
|
||||
.4byte CreateEntity_Windmill
|
||||
.4byte CreateEntity_TurnAroundBar
|
||||
.4byte CreateEntity_Crane
|
||||
.4byte CreateEntity_DashRing
|
||||
.4byte CreateEntity_FloatingSpring_Up
|
||||
.4byte CreateEntity_Note_Sphere
|
||||
.4byte CreateEntity_Note_Block
|
||||
.4byte CreateEntity_GuitarString
|
||||
.4byte CreateEntity_Keyboard_Vertical
|
||||
.4byte CreateEntity_Keyboard_Horizontal_PushLeft
|
||||
.4byte CreateEntity_Keyboard_Horizontal_PushRight
|
||||
.4byte CreateEntity_GermanFlute
|
||||
.4byte CreateEntity_FrenchHorn_Entry
|
||||
.4byte CreateEntity_PipeInstrument_Entry
|
||||
.4byte CreateEntity_SlowingSnow
|
||||
.4byte CreateEntity_FunnelSphere
|
||||
.4byte CreateEntity_HalfPipe_End @ Like in SA1 Neo Green Hill
|
||||
.4byte CreateEntity_HalfPipe_Start @ Like in SA1 Neo Green Hill
|
||||
.4byte CreateEntity_069
|
||||
.4byte CreateEntity_NoteBlock
|
||||
.4byte CreateEntity_044
|
||||
.4byte CreateEntity_ClearPipe_Start
|
||||
.4byte CreateEntity_ClearPipe_End
|
||||
.4byte CreateEntity_LightBridge @ Techno Base - Loud Digital Path
|
||||
.4byte CreateEntity_075_0
|
||||
.4byte CreateEntity_075_1
|
||||
.4byte CreateEntity_075_2 @ Techno Base - Box Platform (Launch player up)
|
||||
.4byte CreateEntity_078
|
||||
.4byte CreateEntity_079
|
||||
.4byte CreateEntity_080
|
||||
.4byte CreateEntity_Platform_Square
|
||||
.4byte CreateEntity_GiantPropeller
|
||||
.4byte CreateEntity_SlidyIce
|
||||
.4byte CreateEntity_SmallSpinnyWindmill
|
||||
.4byte CreateEntity_085
|
||||
.4byte CreateEntity_Whirlwind_0
|
||||
.4byte CreateEntity_SmallPropeller_Left
|
||||
.4byte CreateEntity_SmallPropeller_Right
|
||||
.4byte CreateEntity_SmallPropeller_Left_Periodic
|
||||
.4byte CreateEntity_SmallPropeller_Right_Periodic
|
||||
.4byte CreateEntity_Launcher_Left_GDown
|
||||
.4byte CreateEntity_Launcher_Right_GDown
|
||||
.4byte CreateEntity_Cannon
|
||||
.4byte CreateEntity_094
|
||||
.4byte CreateEntity_095
|
||||
.4byte CreateEntity_FlyingHandle
|
||||
.4byte CreateEntity_SpeedingPlatform
|
||||
.4byte CreateEntity_Toggle_Gravity__Down
|
||||
.4byte CreateEntity_Toggle_Gravity__Up
|
||||
.4byte CreateEntity_Toggle_Gravity__Toggle
|
||||
.4byte CreateEntity_Launcher_Left_GUp
|
||||
.4byte CreateEntity_Launcher_Right_GUp @ Egg Utopia "Launcher" (like in Manias Flying Battery)
|
||||
.4byte CreateEntity_SpecialRing
|
||||
.4byte CreateEntity_Whirlwind_1
|
||||
.4byte CreateEntity_Interactable105
|
||||
|
||||
@ Enemy code
|
||||
@ TODO: Some names might be wrong?
|
||||
@ Should be in line with Encyclospeedia (mostly)
|
||||
.global gSpriteInits_Enemies
|
||||
gSpriteInits_Enemies:
|
||||
.4byte initSprite_Enemy_Mon
|
||||
.4byte initSprite_Enemy_Kiki
|
||||
.4byte initSprite_Enemy_Buzzer
|
||||
.4byte initSprite_Enemy_Gohla
|
||||
.4byte initSprite_Enemy_KuraKura
|
||||
.4byte initSprite_Enemy_Kubinaga
|
||||
.4byte initSprite_Enemy_PikoPiko
|
||||
.4byte initSprite_Enemy_Bell
|
||||
.4byte initSprite_Enemy_Yado
|
||||
.4byte initSprite_Enemy_Circus
|
||||
.4byte initSprite_Enemy_Koura
|
||||
.4byte initSprite_Enemy_Madillo
|
||||
.4byte initSprite_Enemy_Straw
|
||||
.4byte initSprite_Enemy_Hammerhead
|
||||
.4byte initSprite_Enemy_Spinner
|
||||
.4byte initSprite_Enemy_Mouse
|
||||
.4byte initSprite_Enemy_Pen
|
||||
.4byte initSprite_Enemy_GejiGeji
|
||||
.4byte initSprite_Enemy_Balloon
|
||||
.4byte initSprite_Enemy_Flickey
|
||||
.4byte initSprite_Enemy_Kyura
|
||||
.4byte initSprite_Enemy_Star
|
||||
.4byte initSprite_Enemy_BulletBuzzer
|
||||
.4byte CreateEntity_Mon
|
||||
.4byte CreateEntity_Kiki
|
||||
.4byte CreateEntity_Buzzer
|
||||
.4byte CreateEntity_Gohla
|
||||
.4byte CreateEntity_KuraKura
|
||||
.4byte CreateEntity_Kubinaga
|
||||
.4byte CreateEntity_PikoPiko
|
||||
.4byte CreateEntity_Bell
|
||||
.4byte CreateEntity_Yado
|
||||
.4byte CreateEntity_Circus
|
||||
.4byte CreateEntity_Koura
|
||||
.4byte CreateEntity_Madillo
|
||||
.4byte CreateEntity_Straw
|
||||
.4byte CreateEntity_Hammerhead
|
||||
.4byte CreateEntity_Spinner
|
||||
.4byte CreateEntity_Mouse
|
||||
.4byte CreateEntity_Pen
|
||||
.4byte CreateEntity_GejiGeji
|
||||
.4byte CreateEntity_Balloon
|
||||
.4byte CreateEntity_Flickey
|
||||
.4byte CreateEntity_Kyura
|
||||
.4byte CreateEntity_Star
|
||||
.4byte CreateEntity_BulletBuzzer
|
||||
|
||||
|
||||
.global gUnknown_080D5020
|
||||
@@ -263,35 +263,35 @@ gUnknown_080D5020:
|
||||
@; collect the rings interactables
|
||||
.global gUnknown_080D502C
|
||||
gUnknown_080D502C:
|
||||
.4byte initSprite_Interactable_Toggle_PlayerLayer
|
||||
.4byte initSprite_Interactable_Toggle_PlayerLayer
|
||||
.4byte initSprite_Interactable_Spring_Normal_Up
|
||||
.4byte initSprite_Interactable_Spring_Normal_Down
|
||||
.4byte initSprite_Interactable_Spring_Normal_Right
|
||||
.4byte initSprite_Interactable_Spring_Normal_Left
|
||||
.4byte initSprite_Interactable_Spring_Big_UpLeft
|
||||
.4byte initSprite_Interactable_Spring_Big_UpRight
|
||||
.4byte initSprite_Interactable_Spring_Big_DownLeft
|
||||
.4byte initSprite_Interactable_Spring_Big_DownRight
|
||||
.4byte initSprite_Interactable_Spring_Small_UpLeft
|
||||
.4byte initSprite_Interactable_Spring_Small_UpRight
|
||||
.4byte initSprite_Interactable_Ramp
|
||||
.4byte initSprite_Interactable_Spikes_Up
|
||||
.4byte initSprite_Interactable_Spikes_Up
|
||||
.4byte initSprite_Interactable_Spikes_Up
|
||||
.4byte initSprite_Interactable_Spikes_Up
|
||||
.4byte initSprite_Interactable_Spikes_Up
|
||||
.4byte initSprite_Interactable_Spikes_Up
|
||||
.4byte initSprite_Interactable_GrindRail_Start
|
||||
.4byte initSprite_Interactable_GrindRail_StartAir
|
||||
.4byte initSprite_Interactable_GrindRail_EndGround
|
||||
.4byte initSprite_Interactable_GrindRail_End_ForcedJump
|
||||
.4byte initSprite_Interactable_GrindRail_EndAlternate
|
||||
.4byte initSprite_Interactable_GrindRail_EndAir
|
||||
.4byte initSprite_Interactable_GrindRail_EndGround_Left
|
||||
.4byte initSprite_Interactable_GrindRail_EndAir_Left
|
||||
.4byte initSprite_Interactable_MysteryItemBox
|
||||
.4byte initSprite_8080368
|
||||
.4byte CreateEntity_Toggle_PlayerLayer
|
||||
.4byte CreateEntity_Toggle_PlayerLayer
|
||||
.4byte CreateEntity_Spring_Normal_Up
|
||||
.4byte CreateEntity_Spring_Normal_Down
|
||||
.4byte CreateEntity_Spring_Normal_Right
|
||||
.4byte CreateEntity_Spring_Normal_Left
|
||||
.4byte CreateEntity_Spring_Big_UpLeft
|
||||
.4byte CreateEntity_Spring_Big_UpRight
|
||||
.4byte CreateEntity_Spring_Big_DownLeft
|
||||
.4byte CreateEntity_Spring_Big_DownRight
|
||||
.4byte CreateEntity_Spring_Small_UpLeft
|
||||
.4byte CreateEntity_Spring_Small_UpRight
|
||||
.4byte CreateEntity_Ramp
|
||||
.4byte CreateEntity_Spikes_Up
|
||||
.4byte CreateEntity_Spikes_Up
|
||||
.4byte CreateEntity_Spikes_Up
|
||||
.4byte CreateEntity_Spikes_Up
|
||||
.4byte CreateEntity_Spikes_Up
|
||||
.4byte CreateEntity_Spikes_Up
|
||||
.4byte CreateEntity_GrindRail_Start
|
||||
.4byte CreateEntity_GrindRail_StartAir
|
||||
.4byte CreateEntity_GrindRail_EndGround
|
||||
.4byte CreateEntity_GrindRail_End_ForcedJump
|
||||
.4byte CreateEntity_GrindRail_EndAlternate
|
||||
.4byte CreateEntity_GrindRail_EndAir
|
||||
.4byte CreateEntity_GrindRail_EndGround_Left
|
||||
.4byte CreateEntity_GrindRail_EndAir_Left
|
||||
.4byte CreateEntity_MysteryItemBox
|
||||
.4byte CreateEntity_8080368
|
||||
|
||||
.global gSpriteTileInits_PreStageEntry
|
||||
gSpriteTileInits_PreStageEntry:
|
||||
|
||||
@@ -784,7 +784,7 @@ _080083C4:
|
||||
blt _0800841C
|
||||
_080083D2:
|
||||
ldrb r1, [r4, #0xa]
|
||||
ldr r3, _080084F8 @ =PlayerCharacterIdleAnims
|
||||
ldr r3, _080084F8 @ =gPlayerCharacterIdleAnims
|
||||
ldr r2, _080084FC @ =gMultiplayerCharacters
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x56
|
||||
@@ -944,7 +944,7 @@ _080084EE:
|
||||
adds r5, r4, r0
|
||||
b _08008642
|
||||
.align 2, 0
|
||||
_080084F8: .4byte PlayerCharacterIdleAnims
|
||||
_080084F8: .4byte gPlayerCharacterIdleAnims
|
||||
_080084FC: .4byte gMultiplayerCharacters
|
||||
_08008500: .4byte gCamera
|
||||
_08008504: .4byte gPlayer
|
||||
|
||||
+1
-1
@@ -38459,7 +38459,7 @@ _0804CD44: .4byte IWRAM_START + 0x94
|
||||
_0804CD48: .4byte IWRAM_START + 0xD0
|
||||
_0804CD4C: .4byte gUnknown_03005B4C
|
||||
|
||||
@; CreateTrueArea53IntroBoss - Used to suck up creme's mum
|
||||
@; CreateTrueArea53IntroBoss - Used when Vanilla gets captured
|
||||
thumb_func_start sub_804CD50
|
||||
sub_804CD50: @ 0x0804CD50
|
||||
push {r4, r5, r6, r7, lr}
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
255 0 255
|
||||
8 32 41
|
||||
49 57 24
|
||||
49 57 24
|
||||
49 57 24
|
||||
49 57 24
|
||||
49 57 24
|
||||
49 57 24
|
||||
49 57 24
|
||||
180 0 189
|
||||
0 164 255
|
||||
172 156 156
|
||||
148 189 82
|
||||
197 156 255
|
||||
255 106 41
|
||||
90 131 139
|
||||
@@ -0,0 +1,19 @@
|
||||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
205 172 0
|
||||
205 205 8
|
||||
205 164 65
|
||||
197 139 90
|
||||
205 24 148
|
||||
205 123 172
|
||||
205 197 197
|
||||
205 0 222
|
||||
0 82 8
|
||||
197 139 16
|
||||
197 49 74
|
||||
197 213 115
|
||||
197 24 148
|
||||
164 106 156
|
||||
180 156 180
|
||||
197 57 205
|
||||
@@ -0,0 +1,19 @@
|
||||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
0 98 115
|
||||
255 255 255
|
||||
255 180 57
|
||||
123 57 255
|
||||
90 16 180
|
||||
32 16 16
|
||||
205 238 255
|
||||
164 189 205
|
||||
98 115 156
|
||||
49 74 98
|
||||
65 0 123
|
||||
255 115 32
|
||||
222 65 0
|
||||
189 32 0
|
||||
131 32 0
|
||||
82 32 0
|
||||
@@ -42,7 +42,8 @@
|
||||
#define SA2_CHAR_ANIM_VARIANT_TRICK_SIDE_START 0
|
||||
#define SA2_CHAR_ANIM_VARIANT_TRICK_SIDE_EXECUTE 1
|
||||
#define SA2_CHAR_ANIM_VARIANT_TRICK_SIDE_PARTICLE_FX 2 // Sonic-only
|
||||
#define SA2_CHAR_ANIM_51 51
|
||||
#define SA2_CHAR_ANIM_51 51 // Sonic: Bound-Attack
|
||||
#define SA2_CHAR_ANIM_68 68
|
||||
#define SA2_CHAR_ANIM_70 70
|
||||
|
||||
#define SA2_ANIM_SONIC_IDLE 0
|
||||
|
||||
+1
-1
@@ -199,7 +199,7 @@ extern bool8 gExecSoundMain;
|
||||
extern u16 gDispCnt;
|
||||
extern u16 gWinRegs[6];
|
||||
extern struct BlendRegs gBldRegs;
|
||||
extern struct BgAffineRegs gBgAffineRegs;
|
||||
extern BgAffineReg gBgAffineRegs[2];
|
||||
extern u16 gObjPalette[OBJ_PLTT_SIZE / sizeof(u16)];
|
||||
extern u16 gBgPalette[BG_PLTT_SIZE / sizeof(u16)];
|
||||
extern u16 gBgCntRegs[4];
|
||||
|
||||
+1
-1
@@ -486,7 +486,7 @@ typedef struct {
|
||||
extern struct UNK_3005510 gUnknown_03005510[16];
|
||||
|
||||
// rodata
|
||||
extern const u16 PlayerCharacterIdleAnims[NUM_CHARACTERS];
|
||||
extern const u16 gPlayerCharacterIdleAnims[NUM_CHARACTERS];
|
||||
extern const u16 sAnimsGotThroughCharacterNames[5][3];
|
||||
extern const u16 gUnknown_080D715A[5][3];
|
||||
extern const u16 sAnimsGotThroughZoneAndActNames[11][3];
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
#define PLAYER_AIR_SPEED_MAX Q_24_8(15.0)
|
||||
|
||||
#define GET_CHARACTER_ANIM(player) \
|
||||
(player->unk68 - PlayerCharacterIdleAnims[player->character])
|
||||
(player->unk68 - gPlayerCharacterIdleAnims[player->character])
|
||||
|
||||
#define PLAYERFN_SET(proc) gPlayer.callback = proc;
|
||||
#define PLAYERFN_CALL(proc, player) proc(player);
|
||||
|
||||
+2
-20
@@ -177,20 +177,8 @@ struct BlendRegs {
|
||||
u16 bldY;
|
||||
};
|
||||
|
||||
struct BgAffineRegs {
|
||||
/* 0x00 */ u16 bg2pa;
|
||||
/* 0x02 */ u16 bg2pb;
|
||||
/* 0x04 */ u16 bg2pc;
|
||||
/* 0x06 */ u16 bg2pd;
|
||||
/* 0x08 */ u32 bg2x;
|
||||
/* 0x0C */ u32 bg2y;
|
||||
/* 0x10 */ u16 bg3pa;
|
||||
/* 0x12 */ u16 bg3pb;
|
||||
/* 0x14 */ u16 bg3pc;
|
||||
/* 0x16 */ u16 bg3pd;
|
||||
/* 0x18 */ u32 bg3x;
|
||||
/* 0x1C */ u32 bg3y;
|
||||
};
|
||||
// TODO: Should this be in a GBA-specific header file?
|
||||
#define NUM_AFFINE_BACKGROUNDS 2
|
||||
|
||||
// Values to be passed top the affine registers
|
||||
// (used by BG2/BG3 in affine screen modes)
|
||||
@@ -199,12 +187,6 @@ typedef struct {
|
||||
/* 0x08 */ u32 x, y;
|
||||
} BgAffineReg;
|
||||
|
||||
/*** TODO: Replace 'BgAffineRegs' with this! ***/
|
||||
// Should we introduce "#define NUM_AFFINE_BACKGROUNDS 2"?
|
||||
typedef struct {
|
||||
/* 0x00 */ BgAffineReg regs[2];
|
||||
} BgAffineRegs_Alt;
|
||||
|
||||
// TODO: Find better place for this
|
||||
typedef void (*HBlankFunc)(u8 vcount);
|
||||
typedef void (*IntrFunc)(void);
|
||||
|
||||
+1
-1
@@ -230,7 +230,7 @@ void sub_8004860(Sprite *, struct UNK_808D124_UNK180 *);
|
||||
void sub_8004E14(Sprite *, struct UNK_808D124_UNK180 *);
|
||||
|
||||
void sub_8003EE4(u16 p0, s16 p1, s16 p2, s16 p3, s16 p4, s16 p5, s16 p6,
|
||||
struct BgAffineRegs *affine);
|
||||
BgAffineReg *affine);
|
||||
|
||||
s32 sub_80036E0(Sprite *);
|
||||
void sub_8003914(Sprite *);
|
||||
|
||||
@@ -77,7 +77,6 @@ SECTIONS
|
||||
build/sa2/src/game/interactables_0/platform_thin.o(.text);
|
||||
build/sa2/src/game/interactables_0/slidy_ice.o(.text);
|
||||
build/sa2/asm/player_unknown_0.o(.text);
|
||||
build/sa2/asm/player_callbacks_0.o(.text);
|
||||
build/sa2/src/game/player_callbacks_0.o(.text);
|
||||
build/sa2/asm/player_actor.o(.text);
|
||||
build/sa2/asm/player_actions.o(.text);
|
||||
@@ -279,7 +278,6 @@ SECTIONS
|
||||
build/sa2/src/game/interactables_0/platform_square.o(.rodata);
|
||||
build/sa2/src/game/interactables_0/platform_thin.o(.rodata);
|
||||
build/sa2/asm/player_unknown_0.o(.rodata);
|
||||
build/sa2/asm/player_callbacks_0.o(.rodata);
|
||||
build/sa2/src/game/player_callbacks_0.o(.rodata);
|
||||
build/sa2/asm/player_actor.o(.rodata);
|
||||
build/sa2/asm/player_actions.o(.rodata);
|
||||
|
||||
@@ -155,19 +155,16 @@ void sub_8003914(Sprite *sprite)
|
||||
// gDispCnt 'Mode' is an int, not a bitfield!
|
||||
if ((bgId > 1) && (gDispCnt & (DISPCNT_MODE_1 | DISPCNT_MODE_2))) {
|
||||
// __sub_8003954
|
||||
BgAffineRegs_Alt *affineRegs;
|
||||
s32 affineX, affineY;
|
||||
s32 posX, posY;
|
||||
|
||||
posX = dims->offsetX - sprite->x;
|
||||
affineX = Mod(posX, 16);
|
||||
// TODO: Remove this cast after replacing 'BgAffineRegs'
|
||||
affineRegs = (BgAffineRegs_Alt *)&gBgAffineRegs;
|
||||
affineRegs->regs[bgId - 2].x = Q_24_8(affineX);
|
||||
gBgAffineRegs[bgId - 2].x = Q_24_8(affineX);
|
||||
|
||||
posY = dims->offsetY - sprite->y;
|
||||
affineY = Mod(posY, 8);
|
||||
affineRegs->regs[bgId - 2].y = Q_24_8(affineY);
|
||||
gBgAffineRegs[bgId - 2].y = Q_24_8(affineY);
|
||||
} else {
|
||||
// _080039A4
|
||||
s32 scrollX, scrollY;
|
||||
@@ -189,43 +186,43 @@ NONMATCH("asm/non_matching/sprite__sub_80039E4.inc", u32 sub_80039E4(void)) { }
|
||||
END_NONMATCH
|
||||
|
||||
void sub_8003EE4(u16 p0, s16 p1, s16 p2, s16 p3, s16 p4, s16 p5, s16 p6,
|
||||
struct BgAffineRegs *affine)
|
||||
BgAffineReg *affine)
|
||||
{
|
||||
affine->bg2pa = ((COS(p0) >> 6) * (s16)Div(0x10000, p1)) >> 8;
|
||||
affine->bg2pb = ((SIN(p0) >> 6) * (s16)Div(0x10000, p1)) >> 8;
|
||||
affine->bg2pc = ((-SIN(p0) >> 6) * (s16)Div(0x10000, p2)) >> 8;
|
||||
affine->bg2pd = ((COS(p0) >> 6) * (s16)Div(0x10000, p2)) >> 8;
|
||||
affine->pa = ((COS(p0) >> 6) * (s16)Div(0x10000, p1)) >> 8;
|
||||
affine->pb = ((SIN(p0) >> 6) * (s16)Div(0x10000, p1)) >> 8;
|
||||
affine->pc = ((-SIN(p0) >> 6) * (s16)Div(0x10000, p2)) >> 8;
|
||||
affine->pd = ((COS(p0) >> 6) * (s16)Div(0x10000, p2)) >> 8;
|
||||
|
||||
p5 *= -1;
|
||||
p6 *= -1;
|
||||
{
|
||||
// __sub_8003FA8
|
||||
s32 r1 = (s16)affine->bg2pa * p5;
|
||||
s32 r3 = (s16)affine->bg2pb * p6;
|
||||
s32 r1 = (s16)affine->pa * p5;
|
||||
s32 r3 = (s16)affine->pb * p6;
|
||||
r1 += r3;
|
||||
affine->bg2x = r1 + p3 * 256;
|
||||
affine->x = r1 + p3 * 256;
|
||||
}
|
||||
{
|
||||
// __sub_8003FBE
|
||||
s32 r1 = (s16)affine->bg2pc * p5;
|
||||
s32 r3 = (s16)affine->bg2pd * p6;
|
||||
s32 r1 = (s16)affine->pc * p5;
|
||||
s32 r3 = (s16)affine->pd * p6;
|
||||
r1 += r3;
|
||||
affine->bg2y = r1 + p4 * 256;
|
||||
affine->y = r1 + p4 * 256;
|
||||
}
|
||||
}
|
||||
|
||||
// https://decomp.me/scratch/oyiq8
|
||||
NONMATCH("asm/non_matching/sub_8004010.inc", u32 sub_8004010(void))
|
||||
{
|
||||
u8 bgIndex;
|
||||
u16 sp00[2];
|
||||
u8 r4;
|
||||
u32 sp08;
|
||||
u8 *spVramPtr;
|
||||
u16 bgSize_TxtOrAff;
|
||||
|
||||
for (bgIndex = 0; bgIndex < 4; bgIndex++) {
|
||||
|
||||
if ((gUnknown_03002280[bgIndex][1] == gUnknown_03002280[bgIndex][3])
|
||||
if ((gUnknown_03002280[bgIndex][0] == gUnknown_03002280[bgIndex][3])
|
||||
&& (gUnknown_03002280[bgIndex][2] == gUnknown_03002280[bgIndex][0]))
|
||||
continue;
|
||||
|
||||
@@ -237,12 +234,11 @@ NONMATCH("asm/non_matching/sub_8004010.inc", u32 sub_8004010(void))
|
||||
vramBgCtrl += target * 4;
|
||||
|
||||
r4 = gUnknown_03002280[bgIndex][1];
|
||||
sp08 = gUnknown_03002280[bgIndex][0];
|
||||
|
||||
if ((bgIndex > 1)
|
||||
&& (gDispCnt & (DISPCNT_MODE_2 | DISPCNT_MODE_1 | DISPCNT_MODE_0))) {
|
||||
// _0800408E
|
||||
spVramPtr = (u8 *)&vramBgCtrl[sp08];
|
||||
spVramPtr = (u8 *)&vramBgCtrl[gUnknown_03002280[bgIndex][0]];
|
||||
bgSize_TxtOrAff = 0x10 << (gBgCntRegs[bgIndex] >> 14);
|
||||
|
||||
if (gUnknown_03002280[bgIndex][3] == 0xFF) {
|
||||
@@ -254,7 +250,7 @@ NONMATCH("asm/non_matching/sub_8004010.inc", u32 sub_8004010(void))
|
||||
|
||||
value = ((gUnknown_03002280[bgIndex][3] - r4) * bgSize_TxtOrAff);
|
||||
DmaCopy16(3, &sp00, &spVramPtr[bgSize_TxtOrAff * r4],
|
||||
(((s32)(value + (value >> 31))) / 2));
|
||||
(((s32)(value + (value >> 31))) >> 1));
|
||||
} else {
|
||||
// _080040F8
|
||||
// u8 i2 = i + 1;
|
||||
@@ -264,8 +260,9 @@ NONMATCH("asm/non_matching/sub_8004010.inc", u32 sub_8004010(void))
|
||||
v |= v << 8;
|
||||
sp00[0] = v;
|
||||
|
||||
DmaCopy32(3, &sp00, &spVramPtr[bgIndex * r4],
|
||||
(s32)(bgIndex * 4 - sp08 + 1));
|
||||
DmaCopy32(
|
||||
3, &sp00, &spVramPtr[bgIndex * r4],
|
||||
(s32)(bgIndex * 4 - gUnknown_03002280[bgIndex][0] + 1));
|
||||
}
|
||||
}
|
||||
// then -> _0800422C
|
||||
|
||||
+17
-14
@@ -37,7 +37,7 @@ u8 gNumHBlankIntrs = 0;
|
||||
struct BlendRegs gBldRegs ALIGNED(8) = {};
|
||||
u8 gUnknown_030018F0 = 0;
|
||||
struct Task gEmptyTask ALIGNED(16) = {};
|
||||
struct BgAffineRegs gBgAffineRegs ALIGNED(8) = {};
|
||||
BgAffineReg gBgAffineRegs[NUM_AFFINE_BACKGROUNDS] ALIGNED(8) = {};
|
||||
u32 gVramHeapStartAddr = 0;
|
||||
u16 gUnknown_03001944 ALIGNED(4) = 0;
|
||||
u8 gUnknown_03001948 ALIGNED(4) = 0;
|
||||
@@ -228,18 +228,21 @@ void GameInit(void)
|
||||
DmaFill32(3, 0, gObjPalette, sizeof(gObjPalette));
|
||||
DmaFill32(3, 0, gBgPalette, sizeof(gBgPalette));
|
||||
|
||||
gBgAffineRegs.bg2pa = 0x100;
|
||||
gBgAffineRegs.bg2pb = 0;
|
||||
gBgAffineRegs.bg2pc = 0;
|
||||
gBgAffineRegs.bg2pd = 0x100;
|
||||
gBgAffineRegs.bg2x = 0;
|
||||
gBgAffineRegs.bg2y = 0;
|
||||
gBgAffineRegs.bg3pa = 0x100;
|
||||
gBgAffineRegs.bg3pb = 0;
|
||||
gBgAffineRegs.bg3pc = 0;
|
||||
gBgAffineRegs.bg3pd = 0x100;
|
||||
gBgAffineRegs.bg3x = 0;
|
||||
gBgAffineRegs.bg3y = 0;
|
||||
// BG2
|
||||
gBgAffineRegs[0].pa = 0x100;
|
||||
gBgAffineRegs[0].pb = 0;
|
||||
gBgAffineRegs[0].pc = 0;
|
||||
gBgAffineRegs[0].pd = 0x100;
|
||||
gBgAffineRegs[0].x = 0;
|
||||
gBgAffineRegs[0].y = 0;
|
||||
|
||||
// BG3
|
||||
gBgAffineRegs[1].pa = 0x100;
|
||||
gBgAffineRegs[1].pb = 0;
|
||||
gBgAffineRegs[1].pc = 0;
|
||||
gBgAffineRegs[1].pd = 0x100;
|
||||
gBgAffineRegs[1].x = 0;
|
||||
gBgAffineRegs[1].y = 0;
|
||||
|
||||
gUnknown_03001944 = 0;
|
||||
gUnknown_030017F0 = 0x100;
|
||||
@@ -444,7 +447,7 @@ static void UpdateScreenDma(void)
|
||||
}
|
||||
|
||||
gUnknown_030026F4 = 0xff;
|
||||
for (; j <= 3; j++) {
|
||||
for (; j < ARRAY_COUNT(spriteUpdateFuncs); j++) {
|
||||
if (spriteUpdateFuncs[j]() == 0) {
|
||||
gUnknown_030026F4 = j;
|
||||
break;
|
||||
|
||||
@@ -438,7 +438,7 @@ void sub_808E274(struct CharacterUnlockCutScene *scene)
|
||||
gBgScrollRegs[0][0] = 0;
|
||||
gBgScrollRegs[0][1] = 0;
|
||||
|
||||
sub_8003EE4(0, 0x100, 0x100, 0, 0, 0, 0, &gBgAffineRegs);
|
||||
sub_8003EE4(0, 0x100, 0x100, 0, 0, 0, 0, gBgAffineRegs);
|
||||
sub_808E35C(scene);
|
||||
|
||||
transition = &scene->unk100;
|
||||
@@ -514,7 +514,7 @@ void sub_808E424(void)
|
||||
}
|
||||
}
|
||||
|
||||
sub_8003EE4(0, 0x100, 0x100, 0, 0, 0, 0, &gBgAffineRegs);
|
||||
sub_8003EE4(0, 0x100, 0x100, 0, 0, 0, 0, gBgAffineRegs);
|
||||
if (NextTransitionFrame(&scene->unk100) == SCREEN_TRANSITION_COMPLETE) {
|
||||
scene->unk110 = 0;
|
||||
gCurTask->main = sub_808E4C8;
|
||||
@@ -533,7 +533,7 @@ void sub_808E4C8(void)
|
||||
}
|
||||
|
||||
scene = TaskGetStructPtr(gCurTask);
|
||||
sub_8003EE4(0, 0x100, 0x100, 0, 0, 0, 0, &gBgAffineRegs);
|
||||
sub_8003EE4(0, 0x100, 0x100, 0, 0, 0, 0, gBgAffineRegs);
|
||||
|
||||
if (scene->unk110++ > 0x154) {
|
||||
scene->unk110 = 0;
|
||||
@@ -579,7 +579,7 @@ void sub_808E6B0(void);
|
||||
void sub_808E63C(void)
|
||||
{
|
||||
struct CharacterUnlockCutScene *scene = TaskGetStructPtr(gCurTask);
|
||||
sub_8003EE4(0, 0x100, 0x100, 0, 0, 0, 0, &gBgAffineRegs);
|
||||
sub_8003EE4(0, 0x100, 0x100, 0, 0, 0, 0, gBgAffineRegs);
|
||||
|
||||
if (scene->unk110++ > 300) {
|
||||
struct TransitionState *transition;
|
||||
@@ -598,7 +598,7 @@ void sub_808E63C(void)
|
||||
void sub_808E6B0(void)
|
||||
{
|
||||
struct CharacterUnlockCutScene *scene = TaskGetStructPtr(gCurTask);
|
||||
sub_8003EE4(0, 0x100, 0x100, 0, 0, 0, 0, &gBgAffineRegs);
|
||||
sub_8003EE4(0, 0x100, 0x100, 0, 0, 0, 0, gBgAffineRegs);
|
||||
|
||||
if (NextTransitionFrame(&scene->unk100) == SCREEN_TRANSITION_COMPLETE) {
|
||||
if (gCurrentLevel >= gLoadedSaveGame->unlockedLevels[gSelectedCharacter]) {
|
||||
|
||||
@@ -22,8 +22,7 @@ static void sub_8054D20(void);
|
||||
|
||||
#define ANIM_BELL_TILES 20
|
||||
|
||||
void initSprite_Enemy_Bell(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
void CreateEntity_Bell(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY)
|
||||
{
|
||||
struct Task *t = TaskCreate(sub_8054BF4, sizeof(Sprite_Bell), 0x4080, 0,
|
||||
TaskDestructor_80095E8);
|
||||
|
||||
@@ -23,8 +23,8 @@ typedef struct {
|
||||
void Task_EnemySpinner(void);
|
||||
void TaskDestructor_80095E8(struct Task *);
|
||||
|
||||
void initSprite_Enemy_Spinner(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
void CreateEntity_Spinner(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
struct Task *t = TaskCreate(Task_EnemySpinner, sizeof(Sprite_Spinner), 0x4040, 0,
|
||||
TaskDestructor_80095E8);
|
||||
|
||||
+189
-59
@@ -70,7 +70,26 @@ void sub_801BDE0(void);
|
||||
void sub_801BE4C(void);
|
||||
void sub_801BEB8(void);
|
||||
void sub_801BF24(void);
|
||||
const VoidFn gUnknown_080D57DC[]
|
||||
|
||||
void sub_802C668(s32 *, s32 *);
|
||||
void sub_801E0A8(void);
|
||||
void sub_801E040(struct Task *);
|
||||
|
||||
struct Backgrounds {
|
||||
Background unk0;
|
||||
Background unk40;
|
||||
Background unk80;
|
||||
Background unkC0;
|
||||
};
|
||||
|
||||
extern struct Backgrounds gUnknown_03005850;
|
||||
extern const u32 *gUnknown_030059C8;
|
||||
|
||||
extern const Background gUnknown_080D5864[4];
|
||||
extern const CameraMain gUnknown_080D5A10[];
|
||||
extern const u32 *gUnknown_080D62D8[NUM_LEVEL_IDS];
|
||||
|
||||
const VoidFn gUnknown_080D57DC[NUM_LEVEL_IDS]
|
||||
= { sub_801AF14, sub_801B7BC, sub_801B83C, sub_801BF24, // Anti-Formatting
|
||||
sub_801B8A8, sub_801B914, sub_801B980, sub_801BF24, //
|
||||
sub_801AFA4, sub_801B03C, sub_801B9EC, sub_801BF24, //
|
||||
@@ -271,49 +290,182 @@ const CameraMain gUnknown_080D5A10[] = {
|
||||
sub_801C818, sub_801D534,
|
||||
};
|
||||
|
||||
asm(".global gUnknown_080D5A98\n"
|
||||
"gUnknown_080D5A98:\n"
|
||||
" .incbin \"baserom.gba\", 0x000D5A98, 0x88");
|
||||
const s8 gUnknown_080D5A98[NUM_LEVEL_IDS][4] = {
|
||||
{ 0x20, 0x20, 0x02, 0x1D }, //
|
||||
{ 0x20, 0x20, 0x02, 0x1D }, //
|
||||
{ 0x20, 0x20, 0x02, 0x1D }, //
|
||||
{ 0x20, 0x20, 0x02, 0x1D }, //
|
||||
{ 0x20, 0x40, 0x02, 0x1C }, //
|
||||
{ 0x20, 0x40, 0x02, 0x1C }, //
|
||||
{ 0x20, 0x40, 0x02, 0x1C }, //
|
||||
{ 0x20, 0x20, 0x02, 0x1D }, //
|
||||
{ 0x20, 0x20, 0x02, 0x1D }, //
|
||||
{ 0x20, 0x20, 0x02, 0x1D }, //
|
||||
{ 0x20, 0x20, 0x02, 0x1D }, //
|
||||
{ 0x20, 0x20, 0x02, 0x1D }, //
|
||||
{ 0x20, 0x40, 0x02, 0x1C }, //
|
||||
{ 0x20, 0x40, 0x02, 0x1C }, //
|
||||
{ 0x20, 0x20, 0x02, 0x1D }, //
|
||||
{ 0x20, 0x20, 0x02, 0x1D }, //
|
||||
{ 0x20, 0x20, 0x02, 0x1D }, //
|
||||
{ 0x20, 0x20, 0x02, 0x1D }, //
|
||||
{ 0x20, 0x20, 0x02, 0x1D }, //
|
||||
{ 0x20, 0x20, 0x02, 0x1D }, //
|
||||
{ 0x20, 0x40, 0x02, 0x1C }, //
|
||||
{ 0x40, 0x20, 0x02, 0x1C }, //
|
||||
{ 0x20, 0x20, 0x02, 0x1D }, //
|
||||
{ 0x20, 0x20, 0x02, 0x1D }, //
|
||||
{ 0x20, 0x20, 0x02, 0x1D }, //
|
||||
{ 0x20, 0x20, 0x02, 0x1C }, //
|
||||
{ 0x20, 0x20, 0x02, 0x1D }, //
|
||||
{ 0x20, 0x20, 0x02, 0x1D }, //
|
||||
{ 0x20, 0x20, 0x02, 0x1C }, //
|
||||
{ 0x20, 0x20, 0x02, 0x1D }, //
|
||||
{ 0x20, 0x20, 0x02, 0x1D }, //
|
||||
{ 0x20, 0x40, 0x02, 0x1C }, //
|
||||
{ 0x20, 0x20, 0x02, 0x1D }, //
|
||||
{ 0x40, 0x20, 0x02, 0x1C }, //
|
||||
};
|
||||
|
||||
const u8 gUnknown_080D5B20 = 14;
|
||||
const u8 gUnknown_080D5B21 = 0;
|
||||
const u8 gUnknown_080D5B20[] = {
|
||||
14, 0, 1, //
|
||||
22, 0, 3, //
|
||||
30, 0, 2, //
|
||||
38, 0, 1, //
|
||||
46, 0, 3, //
|
||||
62, 0, 1, //
|
||||
70, 0, 2, //
|
||||
86, 0, 1, //
|
||||
94, 0, 2, //
|
||||
126, 0, 1, //
|
||||
168, 1, 1, //
|
||||
174, 1, 2, //
|
||||
182, 2, 3, //
|
||||
198, 3, 4, //
|
||||
222, 4, 5, //
|
||||
255, 5, 6, //
|
||||
};
|
||||
|
||||
asm(" .global gUnknown_080D5B22\n"
|
||||
"gUnknown_080D5B22:\n"
|
||||
" .incbin \"baserom.gba\", 0x000D5B22, 0x2E");
|
||||
// Used by sub_801E498
|
||||
const u8 gUnknown_080D5B50[160] = {
|
||||
// 0-105
|
||||
10, 10, 10, //
|
||||
10, 10, 10, //
|
||||
10, 10, 10, //
|
||||
10, 10, 10, //
|
||||
10, 10, 10, //
|
||||
10, 10, 10, //
|
||||
10, 10, 10, //
|
||||
10, 10, 10, //
|
||||
10, 10, 10, //
|
||||
10, 10, 10, //
|
||||
10, 10, 10, //
|
||||
10, 10, 10, //
|
||||
10, 10, 10, //
|
||||
10, 10, 10, //
|
||||
10, 10, 10, //
|
||||
10, 10, 10, //
|
||||
10, 10, 10, //
|
||||
10, 10, 10, //
|
||||
10, 10, 10, //
|
||||
10, 10, 10, //
|
||||
10, 10, 10, //
|
||||
10, 10, 10, //
|
||||
10, 10, 10, //
|
||||
10, 10, 10, //
|
||||
10, 10, 10, //
|
||||
10, 10, 10, //
|
||||
10, 10, 10, //
|
||||
10, 10, 10, //
|
||||
10, 10, 10, //
|
||||
10, 10, 10, //
|
||||
10, 10, 10, //
|
||||
10, 10, 8, //
|
||||
8, 8, 8, //
|
||||
7, 7, 7, //
|
||||
7, 6, 6, //
|
||||
|
||||
asm(" .global gUnknown_080D5B50\n"
|
||||
"gUnknown_080D5B50:\n"
|
||||
" .incbin \"baserom.gba\", 0x000D5B50, 0xA0\n");
|
||||
// 106-159 | This data appears to be unused
|
||||
6, 6, 6, //
|
||||
6, 6, 6, //
|
||||
5, 5, 5, //
|
||||
5, 5, 5, //
|
||||
5, 5, 4, //
|
||||
4, 4, 4, //
|
||||
4, 4, 4, //
|
||||
4, 3, 3, //
|
||||
3, 3, 3, //
|
||||
3, 3, 3, //
|
||||
3, 3, 3, //
|
||||
3, 3, 3, //
|
||||
3, 3, 2, //
|
||||
2, 2, 2, //
|
||||
2, 2, 2, //
|
||||
2, 2, 2, //
|
||||
2, 2, 2, //
|
||||
2, 2, 2, //
|
||||
|
||||
asm(" .global gUnknown_080D5BF0\n"
|
||||
"gUnknown_080D5BF0:\n"
|
||||
" .incbin \"baserom.gba\", 0x000D5BF0, 0x12");
|
||||
// Maybe padding?
|
||||
0
|
||||
};
|
||||
|
||||
asm(" .global gUnknown_080D5C02\n"
|
||||
"gUnknown_080D5C02:\n"
|
||||
" .incbin \"baserom.gba\", 0x000D5C02, 0x2");
|
||||
const s16 gUnknown_080D5BF0[] = {
|
||||
Q_8_8(0.00), Q_8_8(0.25), Q_8_8(2.25), Q_8_8(2.50), Q_8_8(3.50),
|
||||
Q_8_8(3.625), Q_8_8(5.625), Q_8_8(5.75), Q_8_8(6.75),
|
||||
};
|
||||
|
||||
asm(" .global gUnknown_080D5C04\n"
|
||||
"gUnknown_080D5C04:\n"
|
||||
" .incbin \"baserom.gba\", 0x000D5C04, 0x5E");
|
||||
const u8 gUnknown_080D5C02[] = {
|
||||
0x1F, 0x00, 0x1F, //
|
||||
0x01, 0x07, 0x14, //
|
||||
0x01, 0x09, 0x14, //
|
||||
0x00, 0x0A, 0x13, //
|
||||
0x00, 0x0C, 0x13, //
|
||||
0x00, 0x0D, 0x12, //
|
||||
0x00, 0x0F, 0x12, //
|
||||
0x00, 0x10, 0x11, //
|
||||
0x00, 0x12, 0x10, //
|
||||
0x00, 0x13, 0x10, //
|
||||
0x00, 0x15, 0x0F, //
|
||||
0x00, 0x16, 0x0F, //
|
||||
0x00, 0x18, 0x0E, //
|
||||
0x00, 0x19, 0x0E, //
|
||||
0x00, 0x1B, 0x0D, //
|
||||
0x1F, 0x07, 0x00, //
|
||||
0x1F, 0x00, 0x00, //
|
||||
0x0F, 0x00, 0x1B, //
|
||||
0x0E, 0x00, 0x19, //
|
||||
0x0D, 0x01, 0x17, //
|
||||
0x0C, 0x01, 0x15, //
|
||||
0x0B, 0x02, 0x13, //
|
||||
0x0A, 0x02, 0x11, //
|
||||
0x08, 0x03, 0x0F, //
|
||||
0x07, 0x03, 0x0D, //
|
||||
0x06, 0x04, 0x0B, //
|
||||
0x05, 0x04, 0x09, //
|
||||
0x04, 0x05, 0x07, //
|
||||
0x03, 0x05, 0x05, //
|
||||
0x02, 0x06, 0x03, //
|
||||
0x01, 0x06, 0x01, //
|
||||
0x00, 0x07, 0x00, //
|
||||
};
|
||||
|
||||
asm(" .global gUnknown_080D5C62\n"
|
||||
"gUnknown_080D5C62:\n"
|
||||
" .incbin \"baserom.gba\", 0x000D5C62, 0x20");
|
||||
const s16 gUnknown_080D5C62[8][2] = {
|
||||
{ -Q_8_8(3.00), -Q_8_8(0.25) }, //
|
||||
{ -Q_8_8(1.50), +Q_8_8(0.00) }, //
|
||||
|
||||
asm(" .global gUnknown_080D5C82\n"
|
||||
"gUnknown_080D5C82:\n"
|
||||
" .incbin \"baserom.gba\", 0x000D5C82, 0x20");
|
||||
{ -Q_8_8(3.00), -Q_8_8(0.25) }, //
|
||||
{ -Q_8_8(1.00), -Q_8_8(0.0859375) }, //
|
||||
|
||||
asm(" .global gUnknown_080D5CA2\n"
|
||||
"gUnknown_080D5CA2:\n"
|
||||
" .incbin \"baserom.gba\", 0x000D5CA2, 0x20");
|
||||
{ -Q_8_8(3.00), -Q_8_8(0.25) }, //
|
||||
{ -Q_8_8(1.50), +Q_8_8(0.00) }, //
|
||||
|
||||
// Some palette
|
||||
asm(" .global gUnknown_080D5CC2\n"
|
||||
"gUnknown_080D5CC2:\n"
|
||||
" .incbin \"baserom.gba\", 0x000D5CC2, 0x22");
|
||||
{ -Q_8_8(3.00), -Q_8_8(0.25) }, //
|
||||
{ -Q_8_8(0.75), -Q_8_8(0.125) }, //
|
||||
|
||||
};
|
||||
const u16 gUnknown_080D5C82[16] = INCBIN_U16("graphics/080D5C82.gbapal");
|
||||
const u16 gUnknown_080D5CA2[16] = INCBIN_U16("graphics/080D5CA2.gbapal");
|
||||
const u16 gUnknown_080D5CC2[16] = INCBIN_U16("graphics/080D5CC2.gbapal");
|
||||
|
||||
void ApplyGameStageSettings(void)
|
||||
{
|
||||
@@ -361,12 +513,12 @@ void GameStageStart(void)
|
||||
gUnknown_030054A0 = gFrameCount;
|
||||
}
|
||||
|
||||
gCheckpointTime = 0;
|
||||
gCheckpointTime = ZONE_TIME_TO_INT(0, 0);
|
||||
|
||||
if (gGameMode != GAME_MODE_MULTI_PLAYER_COLLECT_RINGS) {
|
||||
gCourseTime = 0;
|
||||
gCourseTime = ZONE_TIME_TO_INT(0, 0);
|
||||
} else {
|
||||
gCourseTime = 0x2A30;
|
||||
gCourseTime = ZONE_TIME_TO_INT(3, 0);
|
||||
}
|
||||
|
||||
CreateGameStage();
|
||||
@@ -1308,28 +1460,6 @@ void sub_801BFFC(u16 level)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_802C668(s32 *, s32 *);
|
||||
void sub_801E0A8(void);
|
||||
void sub_801E040(struct Task *);
|
||||
|
||||
extern const s8 gUnknown_080D5A98[][4];
|
||||
|
||||
extern const u32 *gUnknown_080D62D8[];
|
||||
|
||||
extern const Background gUnknown_080D5864[4];
|
||||
|
||||
extern const CameraMain gUnknown_080D5A10[];
|
||||
|
||||
struct Backgrounds {
|
||||
Background unk0;
|
||||
Background unk40;
|
||||
Background unk80;
|
||||
Background unkC0;
|
||||
};
|
||||
|
||||
extern struct Backgrounds gUnknown_03005850;
|
||||
extern const u32 *gUnknown_030059C8;
|
||||
|
||||
void sub_801C068(u32 level)
|
||||
{
|
||||
s32 x;
|
||||
|
||||
@@ -76,8 +76,7 @@ void Task_Interactable_044(void)
|
||||
#undef sRight
|
||||
#undef sLeft
|
||||
|
||||
void initSprite_Interactable_044(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
void CreateEntity_044(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY)
|
||||
{
|
||||
struct Task *t
|
||||
= TaskCreate(Task_Interactable_044, sizeof(Sprite_IA044), 0x2010, 0, NULL);
|
||||
|
||||
@@ -124,8 +124,8 @@ static void Task_ClearPipe_End(void)
|
||||
}
|
||||
}
|
||||
|
||||
void initSprite_Interactable_ClearPipe_Start(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_ClearPipe_Start(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
struct Task *t
|
||||
= TaskCreate(Task_ClearPipe_Start, sizeof(Sprite_ClearPipe), 0x2010, 0, NULL);
|
||||
@@ -138,8 +138,8 @@ void initSprite_Interactable_ClearPipe_Start(MapEntity *me, u16 spriteRegionX,
|
||||
SET_MAP_ENTITY_INITIALIZED(me);
|
||||
}
|
||||
|
||||
void initSprite_Interactable_ClearPipe_End(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_ClearPipe_End(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
struct Task *t
|
||||
= TaskCreate(Task_ClearPipe_End, sizeof(Sprite_ClearPipe), 0x2010, 0, NULL);
|
||||
|
||||
@@ -17,14 +17,12 @@ typedef struct {
|
||||
#define RAIL_KIND_80 0x80
|
||||
|
||||
#define INITIALIZE_RAIL(type) \
|
||||
initSprite_Interactable_GrindRail(me, spriteRegionX, spriteRegionY, spriteY, type)
|
||||
CreateEntity_GrindRail(me, spriteRegionX, spriteRegionY, spriteY, type)
|
||||
#define INITIALIZE_RAIL_AIR(type) \
|
||||
initSprite_Interactable_GrindRail_Air(me, spriteRegionX, spriteRegionY, spriteY, \
|
||||
type)
|
||||
CreateEntity_GrindRail_Air(me, spriteRegionX, spriteRegionY, spriteY, type)
|
||||
|
||||
extern void initSprite_Interactable_GrindRail(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY,
|
||||
u8 railType);
|
||||
extern void CreateEntity_GrindRail(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY, u8 railType);
|
||||
|
||||
void Task_GrindRail(void);
|
||||
void sub_8010464(void);
|
||||
@@ -267,8 +265,8 @@ NONMATCH("asm/non_matching/Task_GrindRail_Air.inc", void Task_GrindRail_Air(void
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
void initSprite_Interactable_GrindRail(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY, u8 railType)
|
||||
void CreateEntity_GrindRail(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY, u8 railType)
|
||||
{
|
||||
#ifdef NON_MATCHING
|
||||
struct Task *t
|
||||
@@ -312,8 +310,8 @@ void initSprite_Interactable_GrindRail(MapEntity *me, u16 spriteRegionX,
|
||||
SET_MAP_ENTITY_INITIALIZED(me);
|
||||
}
|
||||
|
||||
void initSprite_Interactable_GrindRail_Air(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY, u8 railType)
|
||||
void CreateEntity_GrindRail_Air(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY, u8 railType)
|
||||
{
|
||||
#ifdef NON_MATCHING
|
||||
struct Task *t
|
||||
@@ -374,51 +372,51 @@ void sub_8010464(void)
|
||||
}
|
||||
}
|
||||
|
||||
void initSprite_Interactable_GrindRail_StartAir(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_GrindRail_StartAir(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
INITIALIZE_RAIL(2);
|
||||
}
|
||||
|
||||
void initSprite_Interactable_GrindRail_End_ForcedJump(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_GrindRail_End_ForcedJump(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
{
|
||||
INITIALIZE_RAIL(3);
|
||||
}
|
||||
|
||||
void initSprite_Interactable_GrindRail_Start(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_GrindRail_Start(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
INITIALIZE_RAIL(0);
|
||||
}
|
||||
|
||||
void initSprite_Interactable_GrindRail_EndGround(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_GrindRail_EndGround(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
{
|
||||
INITIALIZE_RAIL(1);
|
||||
}
|
||||
|
||||
void initSprite_Interactable_GrindRail_EndAir(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_GrindRail_EndAir(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
INITIALIZE_RAIL_AIR(2);
|
||||
}
|
||||
|
||||
void initSprite_Interactable_GrindRail_EndAir_Left(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_GrindRail_EndAir_Left(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
{
|
||||
INITIALIZE_RAIL_AIR(3);
|
||||
}
|
||||
|
||||
// Might be called "initSprite_Interactable_GrindRail_StartAir" instead?
|
||||
void initSprite_Interactable_GrindRail_EndAlternate(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
// Might be called "CreateEntity_GrindRail_StartAir" instead?
|
||||
void CreateEntity_GrindRail_EndAlternate(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
{
|
||||
INITIALIZE_RAIL_AIR(0);
|
||||
}
|
||||
|
||||
void initSprite_Interactable_GrindRail_EndGround_Left(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_GrindRail_EndGround_Left(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
{
|
||||
INITIALIZE_RAIL_AIR(1);
|
||||
}
|
||||
@@ -80,8 +80,8 @@ const AnimId sPlatformLevelAnims[38] = {
|
||||
[LEVEL_INDEX(9, ACT_2)] = SA2_ANIM_PLATFORM_LEA_FOR,
|
||||
};
|
||||
|
||||
void initSprite_Interactable_Platform(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_Platform(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
struct Task *t = TaskCreate(Task_800E89C, sizeof(Sprite_Platform), 0x2010, 0,
|
||||
TaskDestructor_800F19C);
|
||||
@@ -256,8 +256,7 @@ void Task_800E89C(void)
|
||||
}
|
||||
}
|
||||
|
||||
void initSprite_Interactable079(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
void CreateEntity_079(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY)
|
||||
{
|
||||
struct Task *t = TaskCreate(Task_800EC58, sizeof(Sprite_Platform), 0x2010, 0,
|
||||
TaskDestructor_800F19C);
|
||||
|
||||
@@ -39,8 +39,8 @@ static const u16 sAnimsPlatformSquare[9][3] = {
|
||||
{ 36, SA2_ANIM_PLATFORM_SQUARE_COMMON, 0 },
|
||||
};
|
||||
|
||||
void initSprite_Interactable_Platform_Square(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_Platform_Square(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
struct Task *t = TaskCreate(Task_Platform_Square, sizeof(Sprite_PlatformSquare),
|
||||
0x2010, 0, TaskDestructor_Platform_Square);
|
||||
|
||||
@@ -72,8 +72,8 @@ static const u16 sPlatformBreakAnimations[][6] = {
|
||||
};
|
||||
static const u16 unused = 0;
|
||||
|
||||
void initSprite_Interactable_CommonThinPlatform(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_CommonThinPlatform(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
struct Task *t
|
||||
= TaskCreate(Task_CommonPlatformThinMain, sizeof(Sprite_CommonThinPlatform),
|
||||
@@ -172,7 +172,7 @@ static void Task_CommonPlatformThinMain(void)
|
||||
break;
|
||||
case CHARACTER_SONIC:
|
||||
case CHARACTER_AMY: {
|
||||
unk68 -= PlayerCharacterIdleAnims[player->character];
|
||||
unk68 -= gPlayerCharacterIdleAnims[player->character];
|
||||
if (unk64 == 0x24 && unk68 == 0x33 && unk6A == 1
|
||||
&& player->speedAirY > 0) {
|
||||
player->moveState &= ~MOVESTATE_8;
|
||||
|
||||
@@ -14,16 +14,15 @@ typedef struct {
|
||||
/* 0x3C */ u16 unk3C;
|
||||
} Sprite_Ramp /* size 0x40 */;
|
||||
|
||||
static void Task_Interactable_Ramp(void);
|
||||
static void TaskDestructor_Interactable_Ramp(struct Task *);
|
||||
static void Task_Ramp(void);
|
||||
static void TaskDestructor_Ramp(struct Task *);
|
||||
|
||||
void initSprite_Interactable_Ramp(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
void CreateEntity_Ramp(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY)
|
||||
{
|
||||
u8 temp;
|
||||
s32 temp2;
|
||||
struct Task *t = TaskCreate(Task_Interactable_Ramp, sizeof(Sprite_Ramp), 0x2010, 0,
|
||||
TaskDestructor_Interactable_Ramp);
|
||||
struct Task *t
|
||||
= TaskCreate(Task_Ramp, sizeof(Sprite_Ramp), 0x2010, 0, TaskDestructor_Ramp);
|
||||
Sprite_Ramp *ramp = TaskGetStructPtr(t);
|
||||
Sprite *displayed = &ramp->displayed;
|
||||
|
||||
@@ -67,7 +66,7 @@ void initSprite_Interactable_Ramp(MapEntity *me, u16 spriteRegionX, u16 spriteRe
|
||||
sub_8004558(displayed);
|
||||
}
|
||||
|
||||
static void Task_Interactable_Ramp(void)
|
||||
static void Task_Ramp(void)
|
||||
{
|
||||
Player *player = &gPlayer;
|
||||
Sprite_Ramp *ramp = TaskGetStructPtr(gCurTask);
|
||||
@@ -182,7 +181,7 @@ static void Task_Interactable_Ramp(void)
|
||||
sub_80051E8(displayed);
|
||||
}
|
||||
|
||||
static void TaskDestructor_Interactable_Ramp(struct Task *t)
|
||||
static void TaskDestructor_Ramp(struct Task *t)
|
||||
{
|
||||
Sprite_Ramp *ramp = TaskGetStructPtr(t);
|
||||
VramFree(ramp->displayed.graphics.dest);
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#include "game/game.h"
|
||||
#include "game/entity.h"
|
||||
|
||||
extern void Task_Interactable_IceParadise_SlidyIce(void);
|
||||
extern void Task_SlidyIce(void);
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 x;
|
||||
@@ -21,7 +21,7 @@ typedef struct {
|
||||
/* 0x00 */ SpriteBase base;
|
||||
} Sprite_SlidyIce;
|
||||
|
||||
void Task_Interactable_IceParadise_SlidyIce(void)
|
||||
void Task_SlidyIce(void)
|
||||
{
|
||||
Sprite_SlidyIce *ice = TaskGetStructPtr(gCurTask);
|
||||
MapEntity_SlidyIce *me = (MapEntity_SlidyIce *)ice->base.me;
|
||||
@@ -58,11 +58,10 @@ void Task_Interactable_IceParadise_SlidyIce(void)
|
||||
}
|
||||
}
|
||||
|
||||
void initSprite_Interactable_IceParadise_SlidyIce(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_SlidyIce(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
struct Task *t
|
||||
= TaskCreate(Task_Interactable_IceParadise_SlidyIce, 0xC, 0x2010, 0, NULL);
|
||||
struct Task *t = TaskCreate(Task_SlidyIce, 0xC, 0x2010, 0, NULL);
|
||||
|
||||
Sprite_SlidyIce *ice = TaskGetStructPtr(t);
|
||||
ice->base.regionX = spriteRegionX;
|
||||
|
||||
@@ -31,14 +31,14 @@ typedef struct {
|
||||
#define NUM_SPRING_KINDS 3
|
||||
|
||||
#define INITIALIZE_SPRING(springType) \
|
||||
initSprite_Interactable_Spring(springType, me, spriteRegionX, spriteRegionY, param3)
|
||||
CreateEntity_Spring(springType, me, spriteRegionX, spriteRegionY, param3)
|
||||
|
||||
static void initSprite_Interactable_Spring(u8, MapEntity *, u16, u16, u8);
|
||||
static void Task_Interactable_Spring(void);
|
||||
static void CreateEntity_Spring(u8, MapEntity *, u16, u16, u8);
|
||||
static void Task_Spring(void);
|
||||
static void sub_800E3D0(void);
|
||||
static bool32 sub_800E490(Sprite *p0, MapEntity *me, Sprite_Spring *spring,
|
||||
Player *player);
|
||||
static void TaskDestructor_Interactable_Spring(struct Task *t);
|
||||
static void TaskDestructor_Spring(struct Task *t);
|
||||
|
||||
static const u16 sSpringAnimationData[NUM_SPRING_KINDS][SPRINGTYPE_COUNT][4] = {
|
||||
{
|
||||
@@ -88,13 +88,12 @@ static const u16 sSpring_MusicPlant_Soundeffects[5]
|
||||
= { SE_MUSIC_PLANT_SPRING_1, SE_MUSIC_PLANT_SPRING_2, SE_MUSIC_PLANT_SPRING_3,
|
||||
SE_MUSIC_PLANT_SPRING_4, MUS_DUMMY };
|
||||
|
||||
static void initSprite_Interactable_Spring(u8 springType, MapEntity *me,
|
||||
u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
static void CreateEntity_Spring(u8 springType, MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
{
|
||||
s16 springKind = SPRING_KIND_NORMAL;
|
||||
struct Task *t = TaskCreate(Task_Interactable_Spring, sizeof(Sprite_Spring), 0x2010,
|
||||
0, TaskDestructor_Interactable_Spring);
|
||||
struct Task *t = TaskCreate(Task_Spring, sizeof(Sprite_Spring), 0x2010, 0,
|
||||
TaskDestructor_Spring);
|
||||
Sprite_Spring *spring = TaskGetStructPtr(t);
|
||||
Sprite *displayed = &spring->displayed;
|
||||
|
||||
@@ -141,7 +140,7 @@ static void initSprite_Interactable_Spring(u8 springType, MapEntity *me,
|
||||
sub_8004558(displayed);
|
||||
}
|
||||
|
||||
static void Task_Interactable_Spring(void)
|
||||
static void Task_Spring(void)
|
||||
{
|
||||
Sprite_Spring *spring = TaskGetStructPtr(gCurTask);
|
||||
Sprite *displayed = &spring->displayed;
|
||||
@@ -183,7 +182,7 @@ static void sub_800E3D0(void)
|
||||
}
|
||||
|
||||
sub_8004558(displayed);
|
||||
gCurTask->main = Task_Interactable_Spring;
|
||||
gCurTask->main = Task_Spring;
|
||||
}
|
||||
|
||||
sub_80051E8(displayed);
|
||||
@@ -217,7 +216,7 @@ static bool32 sub_800E490(Sprite *displayed, MapEntity *me, Sprite_Spring *sprin
|
||||
}
|
||||
}
|
||||
|
||||
static void TaskDestructor_Interactable_Spring(struct Task *t)
|
||||
static void TaskDestructor_Spring(struct Task *t)
|
||||
{
|
||||
Sprite_Spring *spring = TaskGetStructPtr(t);
|
||||
if ((LEVEL_TO_ZONE(gCurrentLevel) != ZONE_3) || (spring->unk3D / 2 != 0)) {
|
||||
@@ -225,62 +224,62 @@ static void TaskDestructor_Interactable_Spring(struct Task *t)
|
||||
}
|
||||
}
|
||||
|
||||
void initSprite_Interactable_Spring_Big_DownLeft(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 param3)
|
||||
void CreateEntity_Spring_Big_DownLeft(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 param3)
|
||||
{
|
||||
INITIALIZE_SPRING(6);
|
||||
}
|
||||
|
||||
void initSprite_Interactable_Spring_Normal_Down(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 param3)
|
||||
void CreateEntity_Spring_Normal_Down(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 param3)
|
||||
{
|
||||
INITIALIZE_SPRING(SPRINGTYPE_NORMAL_DOWN);
|
||||
}
|
||||
|
||||
void initSprite_Interactable_Spring_Big_DownRight(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 param3)
|
||||
void CreateEntity_Spring_Big_DownRight(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 param3)
|
||||
{
|
||||
INITIALIZE_SPRING(7);
|
||||
}
|
||||
|
||||
void initSprite_Interactable_Spring_Normal_Left(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 param3)
|
||||
void CreateEntity_Spring_Normal_Left(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 param3)
|
||||
{
|
||||
INITIALIZE_SPRING(2);
|
||||
}
|
||||
|
||||
void initSprite_Interactable_Spring_Normal_Right(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 param3)
|
||||
void CreateEntity_Spring_Normal_Right(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 param3)
|
||||
{
|
||||
INITIALIZE_SPRING(3);
|
||||
}
|
||||
|
||||
void initSprite_Interactable_Spring_Big_UpLeft(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 param3)
|
||||
void CreateEntity_Spring_Big_UpLeft(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 param3)
|
||||
{
|
||||
INITIALIZE_SPRING(4);
|
||||
}
|
||||
|
||||
void initSprite_Interactable_Spring_Normal_Up(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 param3)
|
||||
void CreateEntity_Spring_Normal_Up(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 param3)
|
||||
{
|
||||
INITIALIZE_SPRING(SPRINGTYPE_NORMAL_UP);
|
||||
}
|
||||
|
||||
void initSprite_Interactable_Spring_Big_UpRight(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 param3)
|
||||
void CreateEntity_Spring_Big_UpRight(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 param3)
|
||||
{
|
||||
INITIALIZE_SPRING(5);
|
||||
}
|
||||
|
||||
void initSprite_Interactable_Spring_Small_UpLeft(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 param3)
|
||||
void CreateEntity_Spring_Small_UpLeft(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 param3)
|
||||
{
|
||||
INITIALIZE_SPRING(8);
|
||||
}
|
||||
|
||||
void initSprite_Interactable_Spring_Small_UpRight(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 param3)
|
||||
void CreateEntity_Spring_Small_UpRight(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 param3)
|
||||
{
|
||||
INITIALIZE_SPRING(9);
|
||||
}
|
||||
@@ -37,8 +37,7 @@ static void TaskDestructor_Interactable019(struct Task *);
|
||||
// @TODO: Replace with tile-count from the graphics data itself
|
||||
#define IA_019_NUM_TILES 32
|
||||
|
||||
void initSprite_Interactable_019(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
void CreateEntity_019(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY)
|
||||
{
|
||||
struct Task *t = TaskCreate(Task_Interactable_019, sizeof(Sprite_019), 0x2000, 0,
|
||||
TaskDestructor_Interactable019);
|
||||
|
||||
@@ -53,8 +53,8 @@ const TileInfo sBoosterAnimationData[2][6] = {
|
||||
if (gPlayer.speedGroundX < BOOSTER_SPEED) \
|
||||
gPlayer.speedGroundX = BOOSTER_SPEED;
|
||||
|
||||
void initSprite_Interactable_Booster(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
void CreateEntity_Booster(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
struct Task *t = TaskCreate(Task_Interactable_Booster, sizeof(Sprite_Booster),
|
||||
0x2000, 0, TaskDestructor_80095E8);
|
||||
|
||||
@@ -27,8 +27,8 @@ const s8 gUnknown_080D94EE[] = { -16, -18, -20 };
|
||||
|
||||
const s16 gUnknown_080D94F2[] = { -384, -384, -384 };
|
||||
|
||||
void initSprite_Interactable_BouncyBar(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_BouncyBar(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
Sprite *displayed;
|
||||
struct Task *t = TaskCreate(sub_806160C, 0x44, 0x2010, 0, TaskDestructor_80095E8);
|
||||
|
||||
@@ -54,8 +54,8 @@ static const u16 sAnimIdsCheckpoint[NUM_COURSE_ZONES + 1][2] = {
|
||||
[ZONE_7] = { SA2_ANIM_905, 0 }, [ZONE_FINAL] = { SA2_ANIM_899, 0 },
|
||||
};
|
||||
|
||||
void initSprite_Interactable_Checkpoint(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_Checkpoint(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
struct Task *t;
|
||||
Sprite_Checkpoint *chkPt;
|
||||
@@ -251,8 +251,8 @@ static void Task_Interactable_Toggle_Checkpoint(void)
|
||||
}
|
||||
}
|
||||
|
||||
void initSprite_Interactable_Toggle_Checkpoint(MapEntity *in_ia, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_Toggle_Checkpoint(MapEntity *in_ia, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
{
|
||||
if (gUnknown_030055B0 == 0) {
|
||||
struct Task *t = TaskCreate(Task_Interactable_Toggle_Checkpoint,
|
||||
|
||||
@@ -126,7 +126,7 @@ void sub_8060ED0(void)
|
||||
player->moveState |= MOVESTATE_4;
|
||||
m4aSongNumStart(SE_SPIN_ATTACK);
|
||||
} else if (!(player->moveState & MOVESTATE_4)) {
|
||||
player->unk68 = PlayerCharacterIdleAnims[player->character] + 68;
|
||||
player->unk68 = gPlayerCharacterIdleAnims[player->character] + SA2_CHAR_ANIM_68;
|
||||
player->unk6A = Div((idx - 282) & ONE_CYCLE, 94);
|
||||
}
|
||||
}
|
||||
@@ -240,13 +240,13 @@ void sub_8061228(void)
|
||||
player->moveState |= MOVESTATE_4;
|
||||
m4aSongNumStart(SE_SPIN_ATTACK);
|
||||
} else if (!(player->moveState & MOVESTATE_4)) {
|
||||
player->unk68 = PlayerCharacterIdleAnims[player->character] + 68;
|
||||
player->unk68 = gPlayerCharacterIdleAnims[player->character] + SA2_CHAR_ANIM_68;
|
||||
player->unk6A = Div((idx - 282) & ONE_CYCLE, 94);
|
||||
}
|
||||
}
|
||||
|
||||
void initSprite_Interactable_Corkscrew_Start(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_Corkscrew_Start(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
struct Task *t = TaskCreate(Task_8060D34, sizeof(Sprite_Corkscrew), 0x2000, 0, NULL);
|
||||
Sprite_Corkscrew *corkscrew = TaskGetStructPtr(t);
|
||||
@@ -261,8 +261,8 @@ void initSprite_Interactable_Corkscrew_Start(MapEntity *me, u16 spriteRegionX,
|
||||
corkscrew->unk10 = Q_24_8(4);
|
||||
}
|
||||
|
||||
void initSprite_Interactable_Corkscrew_End(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_Corkscrew_End(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
struct Task *t = TaskCreate(sub_8061088, sizeof(Sprite_Corkscrew), 0x2000, 0, NULL);
|
||||
Sprite_Corkscrew *corkscrew = TaskGetStructPtr(t);
|
||||
|
||||
@@ -130,7 +130,8 @@ void sub_8061AB0(void)
|
||||
player->moveState |= MOVESTATE_4;
|
||||
m4aSongNumStart(SE_SPIN_ATTACK);
|
||||
} else if (!(player->moveState & MOVESTATE_4)) {
|
||||
player->unk68 = PlayerCharacterIdleAnims[player->character] + 68;
|
||||
player->unk68
|
||||
= gPlayerCharacterIdleAnims[player->character] + SA2_CHAR_ANIM_68;
|
||||
player->unk6A = Div((idx - 282) & ONE_CYCLE, 94);
|
||||
}
|
||||
}
|
||||
@@ -248,7 +249,7 @@ void Task_8061DA4(void)
|
||||
player->moveState |= MOVESTATE_4;
|
||||
m4aSongNumStart(SE_SPIN_ATTACK);
|
||||
} else if (!(player->moveState & MOVESTATE_4)) {
|
||||
player->unk68 = PlayerCharacterIdleAnims[player->character] + 68;
|
||||
player->unk68 = gPlayerCharacterIdleAnims[player->character] + SA2_CHAR_ANIM_68;
|
||||
player->unk6A = Div((idx - 282) & ONE_CYCLE, 94);
|
||||
}
|
||||
}
|
||||
@@ -357,7 +358,8 @@ void Task_8062100(void)
|
||||
player->moveState |= MOVESTATE_4;
|
||||
m4aSongNumStart(SE_SPIN_ATTACK);
|
||||
} else if (!(player->moveState & MOVESTATE_4)) {
|
||||
player->unk68 = PlayerCharacterIdleAnims[player->character] + 68;
|
||||
player->unk68
|
||||
= gPlayerCharacterIdleAnims[player->character] + SA2_CHAR_ANIM_68;
|
||||
player->unk6A = Div((idx - 282) & ONE_CYCLE, 94);
|
||||
}
|
||||
}
|
||||
@@ -475,13 +477,13 @@ void Task_8062414(void)
|
||||
player->moveState |= MOVESTATE_4;
|
||||
m4aSongNumStart(SE_SPIN_ATTACK);
|
||||
} else if (!(player->moveState & MOVESTATE_4)) {
|
||||
player->unk68 = PlayerCharacterIdleAnims[player->character] + 68;
|
||||
player->unk68 = gPlayerCharacterIdleAnims[player->character] + SA2_CHAR_ANIM_68;
|
||||
player->unk6A = Div((idx - 282) & ONE_CYCLE, 94);
|
||||
}
|
||||
}
|
||||
|
||||
void initSprite_Interactable_Corkscrew3D_Start(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_Corkscrew3D_Start(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
struct Task *t
|
||||
= TaskCreate(Task_8061914, sizeof(Sprite_Corkscrew3D), 0x2000, 0, NULL);
|
||||
@@ -497,8 +499,8 @@ void initSprite_Interactable_Corkscrew3D_Start(MapEntity *me, u16 spriteRegionX,
|
||||
corkscrew->unkC = +Q_24_8(4);
|
||||
}
|
||||
|
||||
void initSprite_Interactable_Corkscrew3D_End(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_Corkscrew3D_End(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
struct Task *t
|
||||
= TaskCreate(Task_8061F60, sizeof(Sprite_Corkscrew3D), 0x2000, 0, NULL);
|
||||
|
||||
@@ -13,8 +13,8 @@ typedef struct {
|
||||
/* 0x0C */ Sprite displayed;
|
||||
} Sprite_Decoration;
|
||||
|
||||
void Task_Interactable_Decoration(void);
|
||||
void TaskDestructor_Interactable_Decoration(struct Task *);
|
||||
void Task_Decoration(void);
|
||||
void TaskDestructor_Decoration(struct Task *);
|
||||
|
||||
static const TileInfo sDecoTileAnimInfo[7] = {
|
||||
{ 2, SA2_ANIM_FLOWER_BLUE_SMALL, 0 },
|
||||
@@ -28,16 +28,15 @@ static const TileInfo sDecoTileAnimInfo[7] = {
|
||||
|
||||
#define decoId d.sData[0]
|
||||
|
||||
void initSprite_Interactable_Decoration(MapEntity *me, u16 regionX, u16 regionY,
|
||||
u8 spriteY)
|
||||
void CreateEntity_Decoration(MapEntity *me, u16 regionX, u16 regionY, u8 spriteY)
|
||||
{
|
||||
struct Task *t;
|
||||
Sprite_Decoration *decoBase;
|
||||
Sprite *deco;
|
||||
|
||||
if (me->decoId >= 0) {
|
||||
t = TaskCreate(Task_Interactable_Decoration, sizeof(Sprite_Decoration), 0x2010,
|
||||
0, TaskDestructor_Interactable_Decoration);
|
||||
t = TaskCreate(Task_Decoration, sizeof(Sprite_Decoration), 0x2010, 0,
|
||||
TaskDestructor_Decoration);
|
||||
decoBase = TaskGetStructPtr(t);
|
||||
deco = &decoBase->displayed;
|
||||
|
||||
@@ -68,7 +67,7 @@ void initSprite_Interactable_Decoration(MapEntity *me, u16 regionX, u16 regionY,
|
||||
}
|
||||
}
|
||||
|
||||
void Task_Interactable_Decoration(void)
|
||||
void Task_Decoration(void)
|
||||
{
|
||||
Sprite_Decoration *decoBase = TaskGetStructPtr(gCurTask);
|
||||
Sprite *deco = &decoBase->displayed;
|
||||
@@ -101,7 +100,7 @@ void Task_Interactable_Decoration(void)
|
||||
}
|
||||
|
||||
// InteractableDecorationOnDestroy
|
||||
void TaskDestructor_Interactable_Decoration(struct Task *t)
|
||||
void TaskDestructor_Decoration(struct Task *t)
|
||||
{
|
||||
Sprite_Decoration *deco = TaskGetStructPtr(t);
|
||||
VramFree(deco->displayed.graphics.dest);
|
||||
|
||||
@@ -179,8 +179,8 @@ static void Task_JumpSequenceReverse(void)
|
||||
}
|
||||
}
|
||||
|
||||
void initSprite_Interactable_gappedLoop_Start(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_GappedLoop_Start(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
struct Task *t = TaskCreate(Task_GappedLoopForwardsMain, sizeof(Sprite_GappedLoop),
|
||||
0x2000, 0, NULL);
|
||||
@@ -196,8 +196,8 @@ void initSprite_Interactable_gappedLoop_Start(MapEntity *me, u16 spriteRegionX,
|
||||
gappedLoop->unk10 = Q_24_8(TO_WORLD_POS(me->y, spriteRegionY) + 96);
|
||||
}
|
||||
|
||||
void initSprite_Interactable_gappedLoop_End(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_GappedLoop_End(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
struct Task *t = TaskCreate(Task_GappedLoopReverseMain, sizeof(Sprite_GappedLoop),
|
||||
0x2000, 0, NULL);
|
||||
|
||||
@@ -13,7 +13,7 @@ typedef struct {
|
||||
/* 0x00 */ SpriteBase base;
|
||||
} Sprite_InclineRamp;
|
||||
|
||||
static void Task_Interactable_InclineRamp(void)
|
||||
static void Task_InclineRamp(void)
|
||||
{
|
||||
Sprite_InclineRamp *ramp = TaskGetStructPtr(gCurTask);
|
||||
MapEntity *me = ramp->base.me;
|
||||
@@ -96,11 +96,11 @@ static void Task_Interactable_InclineRamp(void)
|
||||
}
|
||||
}
|
||||
|
||||
void initSprite_Interactable_InclineRamp(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 param3)
|
||||
void CreateEntity_InclineRamp(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 param3)
|
||||
{
|
||||
struct Task *t = TaskCreate(Task_Interactable_InclineRamp,
|
||||
sizeof(Sprite_InclineRamp), 0x2000, 0, NULL);
|
||||
struct Task *t
|
||||
= TaskCreate(Task_InclineRamp, sizeof(Sprite_InclineRamp), 0x2000, 0, NULL);
|
||||
Sprite_InclineRamp *ramp = TaskGetStructPtr(t);
|
||||
|
||||
// @BUG? (regionY gets set to regionX and vice versa)
|
||||
|
||||
@@ -24,8 +24,8 @@ static void sub_805EF90(void);
|
||||
static void sub_805EA94(void);
|
||||
static void sub_805ECA0(void);
|
||||
|
||||
void initSprite_Interactable_RotatingHandle(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_RotatingHandle(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
if (me->d.sData[0] >= 0) {
|
||||
struct Task *t
|
||||
|
||||
@@ -41,8 +41,8 @@ static bool32 sub_80609B4(Sprite *, MapEntity *, Sprite_Spikes *, Player *, u32
|
||||
static void TaskDestructor_8060CF4(struct Task *);
|
||||
static u32 sub_8060D08(Sprite *, s32 x, s32 y, Player *);
|
||||
|
||||
void initSprite_Interactable_Spikes_Up(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_Spikes_Up(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
struct Task *t = TaskCreate(sub_805F810, sizeof(Sprite_Spikes), 0x2000, 0, NULL);
|
||||
Sprite_Spikes *spikes = TaskGetStructPtr(t);
|
||||
@@ -82,8 +82,8 @@ void initSprite_Interactable_Spikes_Up(MapEntity *me, u16 spriteRegionX,
|
||||
sub_8004558(s);
|
||||
}
|
||||
|
||||
void initSprite_Interactable_Spikes_Down(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_Spikes_Down(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
struct Task *t = TaskCreate(sub_805F928, sizeof(Sprite_Spikes), 0x2000, 0, NULL);
|
||||
Sprite_Spikes *spikes = TaskGetStructPtr(t);
|
||||
@@ -204,8 +204,8 @@ static void sub_805F928(void)
|
||||
}
|
||||
}
|
||||
|
||||
void initSprite_Interactable_Spikes_LeftRight(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_Spikes_LeftRight(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
struct Task *t = TaskCreate(sub_805FBA0, sizeof(Sprite_Spikes), 0x2000, 0,
|
||||
TaskDestructor_8060CF4);
|
||||
@@ -385,8 +385,8 @@ static void sub_805FBA0(void)
|
||||
}
|
||||
}
|
||||
|
||||
void initSprite_Interactable_Spikes_HidingUp(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_Spikes_HidingUp(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
struct Task *t = TaskCreate(Task_805FF68, sizeof(Sprite_Spikes), 0x2000, 0,
|
||||
TaskDestructor_8060CF4);
|
||||
@@ -453,8 +453,8 @@ static void Task_805FF68(void)
|
||||
}
|
||||
}
|
||||
|
||||
void initSprite_Interactable_Spikes_HidingDown(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_Spikes_HidingDown(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
struct Task *t = TaskCreate(Task_806012C, sizeof(Sprite_Spikes), 0x2000, 0,
|
||||
TaskDestructor_8060CF4);
|
||||
|
||||
@@ -40,8 +40,8 @@ static const TileInfo gUnknown_080D94BC[3] = {
|
||||
{ 24, SA2_ANIM_603, 3 },
|
||||
};
|
||||
|
||||
void initSprite_Interactable_BouncySpring(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_BouncySpring(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
struct Task *t
|
||||
= TaskCreate(Task_Interactable_BouncySpring, sizeof(Sprite_BouncySpring), 0x2010,
|
||||
|
||||
@@ -30,8 +30,8 @@ static void StageGoalToggle_HandleMultiplayerFinish(void);
|
||||
|
||||
#define GOAL_LEVER_TILES 4
|
||||
|
||||
void initSprite_Interactable_StageGoal(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_StageGoal(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
struct Task *t = TaskCreate(Task_StageGoalMain, sizeof(Sprite_StageGoal), 0x2010, 0,
|
||||
TaskDestructor_8062E7C);
|
||||
@@ -303,8 +303,8 @@ static void sub_8062D44(void)
|
||||
}
|
||||
}
|
||||
|
||||
void initSprite_Interactable_Toggle_StageGoal(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_Toggle_StageGoal(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
struct Task *t = TaskCreate(Task_StageGoalToggleMain, sizeof(Sprite_StageGoalToggle),
|
||||
0x2010, 0, NULL);
|
||||
|
||||
@@ -61,8 +61,8 @@ static void Task_Interactable_Toggle_PlayerLayer(void)
|
||||
}
|
||||
}
|
||||
|
||||
void initSprite_Interactable_Toggle_PlayerLayer(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, UNUSED u8 spriteY)
|
||||
void CreateEntity_Toggle_PlayerLayer(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
UNUSED u8 spriteY)
|
||||
{
|
||||
struct Task *t = TaskCreate(Task_Interactable_Toggle_PlayerLayer,
|
||||
sizeof(Sprite_ChangePlayerLayer), 0x2000, 0, NULL);
|
||||
|
||||
@@ -18,8 +18,8 @@ typedef struct {
|
||||
BladePiece blades[16];
|
||||
} InteractableWindmill; /* size: 0x3FC */
|
||||
|
||||
static void TaskDestructor_InteractableWindmill(struct Task *);
|
||||
static void Task_InteractableWindmillMain(void);
|
||||
static void TaskDestructor_Windmill(struct Task *);
|
||||
static void Task_WindmillMain(void);
|
||||
|
||||
static const TileInfo sWindmillParts[] = {
|
||||
{ 4, SA2_ANIM_WIND_MILL_PART, 3 }, { 4, SA2_ANIM_WIND_MILL_PART, 2 },
|
||||
@@ -27,15 +27,14 @@ static const TileInfo sWindmillParts[] = {
|
||||
{ 4, SA2_ANIM_WIND_MILL_PART, 6 },
|
||||
};
|
||||
|
||||
void initSprite_InteractableWindmill(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
void CreateEntity_Windmill(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
u8 i, j;
|
||||
void *ramDests[4];
|
||||
Sprite *sprite;
|
||||
struct Task *t
|
||||
= TaskCreate(Task_InteractableWindmillMain, sizeof(InteractableWindmill), 0x2010,
|
||||
0, TaskDestructor_InteractableWindmill);
|
||||
struct Task *t = TaskCreate(Task_WindmillMain, sizeof(InteractableWindmill), 0x2010,
|
||||
0, TaskDestructor_Windmill);
|
||||
InteractableWindmill *windmill = TaskGetStructPtr(t);
|
||||
|
||||
sprite = &windmill->center;
|
||||
@@ -90,7 +89,7 @@ void initSprite_InteractableWindmill(MapEntity *me, u16 spriteRegionX, u16 sprit
|
||||
}
|
||||
}
|
||||
|
||||
static void Task_InteractableWindmillMain(void)
|
||||
static void Task_WindmillMain(void)
|
||||
{
|
||||
u8 i, j;
|
||||
struct UNK_808D124_UNK180 *transformConfig;
|
||||
@@ -146,7 +145,7 @@ static void Task_InteractableWindmillMain(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void TaskDestructor_InteractableWindmill(struct Task *t)
|
||||
static void TaskDestructor_Windmill(struct Task *t)
|
||||
{
|
||||
InteractableWindmill *windmill = TaskGetStructPtr(t);
|
||||
VramFree(windmill->center.graphics.dest);
|
||||
|
||||
@@ -26,8 +26,8 @@ static bool32 sub_80809B8(Sprite_IA105 *);
|
||||
static bool32 sub_8080A9C(Sprite_IA105 *);
|
||||
static void sub_8080AE4(Sprite_IA105 *);
|
||||
|
||||
void initSprite_Interactable105(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
void CreateEntity_Interactable105(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
struct Task *t = TaskCreate(Task_Interactable105, sizeof(Sprite_IA105), 0x1FF0, 0,
|
||||
TaskDestructor_Interactable105);
|
||||
|
||||
@@ -26,8 +26,7 @@ typedef struct {
|
||||
static void Task_Interactable094(void);
|
||||
static void TaskDestructor_Interactable094(struct Task *);
|
||||
|
||||
void initSprite_Interactable094(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
void CreateEntity_094(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY)
|
||||
{
|
||||
struct Task *t = TaskCreate(Task_Interactable094, sizeof(Sprite_IA94), 0x2010, 0,
|
||||
TaskDestructor_Interactable094);
|
||||
|
||||
@@ -27,8 +27,7 @@ static bool32 sub_807F120(Sprite_IA95 *);
|
||||
static void TaskDestructor_Interactable095(struct Task *);
|
||||
static void DestroyInteractable095(Sprite_IA95 *);
|
||||
|
||||
void initSprite_Interactable095(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
void CreateEntity_095(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY)
|
||||
{
|
||||
struct Task *t = TaskCreate(Task_Interactable095Main, sizeof(Sprite_IA95), 0x2010, 0,
|
||||
TaskDestructor_Interactable095);
|
||||
|
||||
@@ -39,8 +39,7 @@ static void sub_807E8E0(Sprite_Cannon *cannon);
|
||||
static void sub_807E7F8(void);
|
||||
static void sub_807E7B0(void);
|
||||
|
||||
void initSprite_InteractableCannon(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
void CreateEntity_Cannon(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY)
|
||||
{
|
||||
Sprite *sprite;
|
||||
struct Task *t = TaskCreate(Task_Interactable093, sizeof(Sprite_Cannon), 0x2010, 0,
|
||||
|
||||
@@ -31,8 +31,8 @@ typedef struct {
|
||||
s32 unk6C[3][2];
|
||||
} Sprite_FlyingHandle;
|
||||
|
||||
static void Task_Interactable_SkyCanyon_FlyingHandle(void);
|
||||
static void TaskDestructor_Interactable_SkyCanyon_FlyingHandle(struct Task *);
|
||||
static void Task_FlyingHandle(void);
|
||||
static void TaskDestructor_FlyingHandle(struct Task *);
|
||||
static void sub_807F8B4(Sprite_FlyingHandle *);
|
||||
static void sub_807F484(Sprite_FlyingHandle *);
|
||||
static void sub_807F798(Sprite_FlyingHandle *);
|
||||
@@ -49,14 +49,13 @@ static void sub_807F784(Sprite_FlyingHandle *);
|
||||
|
||||
#define FLYING_HANDLE_VRAM_TILES 25
|
||||
|
||||
void initSprite_Interactable_FlyingHandle(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_FlyingHandle(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
u32 i;
|
||||
Sprite *sprite;
|
||||
struct Task *t = TaskCreate(Task_Interactable_SkyCanyon_FlyingHandle,
|
||||
sizeof(Sprite_FlyingHandle), 0x2010, 0,
|
||||
TaskDestructor_Interactable_SkyCanyon_FlyingHandle);
|
||||
struct Task *t = TaskCreate(Task_FlyingHandle, sizeof(Sprite_FlyingHandle), 0x2010,
|
||||
0, TaskDestructor_FlyingHandle);
|
||||
Sprite_FlyingHandle *flyingHandle = TaskGetStructPtr(t);
|
||||
flyingHandle->unk68 = 0;
|
||||
flyingHandle->unk5C = 0;
|
||||
@@ -232,7 +231,7 @@ static bool32 IsPlayerTouching(Sprite_FlyingHandle *flyingHandle)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void Task_Interactable_SkyCanyon_FlyingHandle(void)
|
||||
static void Task_FlyingHandle(void)
|
||||
{
|
||||
Sprite_FlyingHandle *flyingHandle = TaskGetStructPtr(gCurTask);
|
||||
if (IS_MULTI_PLAYER) {
|
||||
@@ -271,7 +270,7 @@ static void sub_807F6F0(void)
|
||||
sub_807F5C0(flyingHandle);
|
||||
}
|
||||
|
||||
static void TaskDestructor_Interactable_SkyCanyon_FlyingHandle(struct Task *t)
|
||||
static void TaskDestructor_FlyingHandle(struct Task *t)
|
||||
{
|
||||
Sprite_FlyingHandle *flyingHandle = TaskGetStructPtr(t);
|
||||
VramFree(flyingHandle->sprite.graphics.dest);
|
||||
@@ -279,12 +278,12 @@ static void TaskDestructor_Interactable_SkyCanyon_FlyingHandle(struct Task *t)
|
||||
|
||||
static void sub_807F770(UNUSED Sprite_FlyingHandle *flyingHandle)
|
||||
{
|
||||
gCurTask->main = Task_Interactable_SkyCanyon_FlyingHandle;
|
||||
gCurTask->main = Task_FlyingHandle;
|
||||
}
|
||||
|
||||
static void sub_807F784(UNUSED Sprite_FlyingHandle *flyingHandle)
|
||||
{
|
||||
gCurTask->main = Task_Interactable_SkyCanyon_FlyingHandle;
|
||||
gCurTask->main = Task_FlyingHandle;
|
||||
}
|
||||
|
||||
static void sub_807F798(Sprite_FlyingHandle *flyingHandle)
|
||||
|
||||
@@ -33,7 +33,7 @@ typedef struct {
|
||||
/* 0x29 */ u8 spriteY;
|
||||
} Sprite_GravityToggle;
|
||||
|
||||
static void initSprite_Interactable098(MapEntity *, u16, u16, u8, u8);
|
||||
static void CreateEntity_Toggle_Gravity(MapEntity *, u16, u16, u8, u8);
|
||||
static void Task_80801F8(void);
|
||||
static void TaskDestructor_8080230(struct Task *);
|
||||
static void sub_8080234(Sprite_GravityToggle *);
|
||||
@@ -45,8 +45,8 @@ static void Task_8080318(void);
|
||||
#define GRAVITY_TOGGLE__UP 1
|
||||
#define GRAVITY_TOGGLE__TOGGLE 2
|
||||
|
||||
static void initSprite_Interactable098(MapEntity *in_ia, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY, u8 toggleKind)
|
||||
static void CreateEntity_Toggle_Gravity(MapEntity *in_ia, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY, u8 toggleKind)
|
||||
{
|
||||
struct Task *t = TaskCreate(Task_80801F8, 0x2C, 0x2010, 0, TaskDestructor_8080230);
|
||||
Sprite_GravityToggle *toggle = TaskGetStructPtr(t);
|
||||
@@ -162,25 +162,25 @@ void sub_808029C(Sprite_GravityToggle *toggle)
|
||||
TaskDestroy(gCurTask);
|
||||
}
|
||||
|
||||
void initSprite_Interactable_Toggle_Gravity__Down(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_Toggle_Gravity__Down(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
{
|
||||
initSprite_Interactable098(me, spriteRegionX, spriteRegionY, spriteY,
|
||||
GRAVITY_TOGGLE__DOWN);
|
||||
CreateEntity_Toggle_Gravity(me, spriteRegionX, spriteRegionY, spriteY,
|
||||
GRAVITY_TOGGLE__DOWN);
|
||||
}
|
||||
|
||||
void initSprite_Interactable_Toggle_Gravity__Up(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_Toggle_Gravity__Up(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
initSprite_Interactable098(me, spriteRegionX, spriteRegionY, spriteY,
|
||||
GRAVITY_TOGGLE__UP);
|
||||
CreateEntity_Toggle_Gravity(me, spriteRegionX, spriteRegionY, spriteY,
|
||||
GRAVITY_TOGGLE__UP);
|
||||
}
|
||||
|
||||
void initSprite_Interactable_Toggle_Gravity__Toggle(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_Toggle_Gravity__Toggle(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
{
|
||||
initSprite_Interactable098(me, spriteRegionX, spriteRegionY, spriteY,
|
||||
GRAVITY_TOGGLE__TOGGLE);
|
||||
CreateEntity_Toggle_Gravity(me, spriteRegionX, spriteRegionY, spriteY,
|
||||
GRAVITY_TOGGLE__TOGGLE);
|
||||
}
|
||||
|
||||
void Task_8080318(void)
|
||||
|
||||
@@ -76,8 +76,8 @@ static void SetTaskMain_807DE98(Sprite_EggUtopia_Launcher *unused);
|
||||
static void Task_807E16C(void);
|
||||
static bool16 sub_807E1C4(Sprite_EggUtopia_Launcher *launcher);
|
||||
|
||||
void initSprite_EggUtopia_Launcher(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY, u32 kind)
|
||||
void CreateEntity_Launcher(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY, u32 kind)
|
||||
{
|
||||
struct Task *t = TaskCreate(Task_807DE98, sizeof(Sprite_EggUtopia_Launcher), 0x2010,
|
||||
0, TaskDestructor_807DF38);
|
||||
@@ -449,32 +449,32 @@ static void sub_807E0D0(Sprite_EggUtopia_Launcher *launcher)
|
||||
launcher->unk60[0][1] = launcher->unk58;
|
||||
}
|
||||
|
||||
void initSprite_EggUtopia_Launcher_Left_GDown(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_Launcher_Left_GDown(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
{
|
||||
initSprite_EggUtopia_Launcher(me, spriteRegionX, spriteRegionY, spriteY,
|
||||
LAUNCHER_KIND(LAUN_DIR_LEFT, LAUN_GRAVITY_DOWN));
|
||||
CreateEntity_Launcher(me, spriteRegionX, spriteRegionY, spriteY,
|
||||
LAUNCHER_KIND(LAUN_DIR_LEFT, LAUN_GRAVITY_DOWN));
|
||||
}
|
||||
|
||||
void initSprite_EggUtopia_Launcher_Right_GDown(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_Launcher_Right_GDown(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
{
|
||||
initSprite_EggUtopia_Launcher(me, spriteRegionX, spriteRegionY, spriteY,
|
||||
LAUNCHER_KIND(LAUN_DIR_RIGHT, LAUN_GRAVITY_DOWN));
|
||||
CreateEntity_Launcher(me, spriteRegionX, spriteRegionY, spriteY,
|
||||
LAUNCHER_KIND(LAUN_DIR_RIGHT, LAUN_GRAVITY_DOWN));
|
||||
}
|
||||
|
||||
void initSprite_EggUtopia_Launcher_Left_GUp(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_Launcher_Left_GUp(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
initSprite_EggUtopia_Launcher(me, spriteRegionX, spriteRegionY, spriteY,
|
||||
LAUNCHER_KIND(LAUN_DIR_LEFT, LAUN_GRAVITY_UP));
|
||||
CreateEntity_Launcher(me, spriteRegionX, spriteRegionY, spriteY,
|
||||
LAUNCHER_KIND(LAUN_DIR_LEFT, LAUN_GRAVITY_UP));
|
||||
}
|
||||
|
||||
void initSprite_EggUtopia_Launcher_Right_GUp(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_Launcher_Right_GUp(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
initSprite_EggUtopia_Launcher(me, spriteRegionX, spriteRegionY, spriteY,
|
||||
LAUNCHER_KIND(LAUN_DIR_RIGHT, LAUN_GRAVITY_UP));
|
||||
CreateEntity_Launcher(me, spriteRegionX, spriteRegionY, spriteY,
|
||||
LAUNCHER_KIND(LAUN_DIR_RIGHT, LAUN_GRAVITY_UP));
|
||||
}
|
||||
|
||||
static void Task_807E16C(void)
|
||||
|
||||
@@ -46,8 +46,8 @@ static void sub_807FF20(void);
|
||||
static void sub_807FF88(Sprite_SpeedingPlatform *);
|
||||
static void sub_807FFB0(void);
|
||||
|
||||
void initSprite_InteractableSpeedingPlatform(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_SpeedingPlatform(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
u32 i;
|
||||
struct Task *t = TaskCreate(Task_Interactable097, sizeof(Sprite_SpeedingPlatform),
|
||||
|
||||
@@ -70,8 +70,7 @@ static void sub_8074604(Sprite_HCCrane *);
|
||||
|
||||
#define CRANE_MAX_ACCELERATION (Q_8_8(12))
|
||||
|
||||
void initSprite_Interactable_HotCrater_Crane(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_Crane(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY)
|
||||
{
|
||||
struct Task *t = TaskCreate(Task_8073AA8, sizeof(Sprite_HCCrane), 0x2010, 0,
|
||||
TaskDestructor_80743B8);
|
||||
|
||||
@@ -104,8 +104,8 @@ static const u16 sUnknown_080DFB90[DASH_RING__NUM_ORIENTATIONS][6] = {
|
||||
{ 0 }, { 0 }, { 0 }, { 0 }, { 0 }, { 0 }, { 0 }, { 0 },
|
||||
};
|
||||
|
||||
void initSprite_Interactable_DashRing(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_DashRing(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
u32 ringType = DASH_RING__TYPE_REGULAR;
|
||||
|
||||
|
||||
@@ -40,8 +40,8 @@ static bool32 sub_80751CC(Sprite_FloatingSpring *);
|
||||
static void sub_80752D8(void);
|
||||
static void sub_8075334(Sprite_FloatingSpring *);
|
||||
|
||||
void initSprite_Interactable_FloatingSpring_Up(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_FloatingSpring_Up(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
struct Task *t
|
||||
= TaskCreate(sub_80750A8, sizeof(Sprite_FloatingSpring), 0x2010, 0, sub_8075140);
|
||||
|
||||
@@ -56,8 +56,8 @@ static void sub_8072BB8(void);
|
||||
#define PLAYER_TOUCH_DIRECTION_FORWARDS 1
|
||||
#define PLAYER_TOUCH_DIRECTION_REVERSE 2
|
||||
|
||||
void initSprite_Interactable_HookRail(u32 triggerType, MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_HookRail(u32 triggerType, MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
{
|
||||
struct Task *t;
|
||||
Sprite_HookRail *hookRail;
|
||||
@@ -410,22 +410,21 @@ static void sub_8073280(Sprite_HookRail *hookRail)
|
||||
TaskDestroy(gCurTask);
|
||||
}
|
||||
|
||||
void initSprite_Interactable048(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
void CreateEntity_048(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY)
|
||||
{
|
||||
initSprite_Interactable_HookRail(0, me, spriteRegionX, spriteRegionY, spriteY);
|
||||
CreateEntity_HookRail(0, me, spriteRegionX, spriteRegionY, spriteY);
|
||||
}
|
||||
|
||||
void initSprite_Interactable_HookRail_Start(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_HookRail_Start(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
initSprite_Interactable_HookRail(1, me, spriteRegionX, spriteRegionY, spriteY);
|
||||
CreateEntity_HookRail(1, me, spriteRegionX, spriteRegionY, spriteY);
|
||||
}
|
||||
|
||||
void initSprite_Interactable_HookRail_End(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_HookRail_End(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
initSprite_Interactable_HookRail(2, me, spriteRegionX, spriteRegionY, spriteY);
|
||||
CreateEntity_HookRail(2, me, spriteRegionX, spriteRegionY, spriteY);
|
||||
}
|
||||
|
||||
static void sub_8073320(void)
|
||||
|
||||
@@ -26,8 +26,8 @@ static void sub_8073600(void);
|
||||
static void sub_80736E0(Sprite_TurnAroundBar *);
|
||||
static void sub_807371C(Sprite_TurnAroundBar *);
|
||||
|
||||
void initSprite_InteractableTurnAroundBar(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_TurnAroundBar(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
struct Task *t = TaskCreate(Task_TurnAroundBarMain, sizeof(Sprite_TurnAroundBar),
|
||||
0x2010, 0, TaskDestructor_InteractableTurnAroundBar);
|
||||
|
||||
@@ -33,8 +33,8 @@ static void sub_80729D8(Sprite_WindUpStick *);
|
||||
static u32 sub_8072A5C(Sprite_WindUpStick *);
|
||||
static void sub_8072AC0(Sprite_WindUpStick *);
|
||||
|
||||
void initSprite_Interactable_WindUpStick(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_WindUpStick(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
struct Task *t = TaskCreate(sub_8072998, 0x1C, 0x2010, 0, sub_80729D4);
|
||||
Sprite_WindUpStick *windUpStick = TaskGetStructPtr(t);
|
||||
|
||||
@@ -51,8 +51,7 @@ typedef struct {
|
||||
void Task_Interactable069(void);
|
||||
void TaskDestructor_Interactable069(struct Task *);
|
||||
|
||||
void initSprite_Interactable069(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
void CreateEntity_069(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY)
|
||||
{
|
||||
struct Task *t = TaskCreate(Task_Interactable069, 0x1C0, 0x2010, 0,
|
||||
TaskDestructor_Interactable069);
|
||||
|
||||
@@ -305,8 +305,8 @@ static void sub_8078594(Sprite_FunnelSphere *funnelSphere)
|
||||
TaskDestroy(gCurTask);
|
||||
}
|
||||
|
||||
void initSprite_Interactable_IceParadise_FunnelSphere(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_FunnelSphere(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
struct Task *t = TaskCreate(sub_8078414, 0x28, 0x2010, 0, sub_8078688);
|
||||
Sprite_FunnelSphere *funnelSphere = TaskGetStructPtr(t);
|
||||
|
||||
@@ -21,7 +21,7 @@ typedef struct {
|
||||
} Sprite_IceParadiseHalfPipe;
|
||||
|
||||
static void Task_HalfPipeMain(void);
|
||||
static void TaskDestructor_InteractableIceParadiseHalfPipe(struct Task *);
|
||||
static void TaskDestructor_HalfPipe(struct Task *);
|
||||
static bool32 sub_80789AC(Sprite_IceParadiseHalfPipe *);
|
||||
static void UpdatePlayerPosOnHalfPipe(Sprite_IceParadiseHalfPipe *, u16);
|
||||
static void EndHalfPipeSequence(Sprite_IceParadiseHalfPipe *);
|
||||
@@ -33,14 +33,11 @@ static void DestroyHalfPipe(Sprite_IceParadiseHalfPipe *);
|
||||
#define HALF_PIPE_DIRECTION_FORWARD 0
|
||||
#define HALF_PIPE_DIRECTION_REVERSE 1
|
||||
|
||||
static void initSprite_Interactable_IceParadise_HalfPipe(MapEntity *me,
|
||||
u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY,
|
||||
s32 direction)
|
||||
static void CreateEntity_HalfPipe(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY, s32 direction)
|
||||
{
|
||||
struct Task *t
|
||||
= TaskCreate(Task_HalfPipeMain, sizeof(Sprite_IceParadiseHalfPipe), 0x2010, 0,
|
||||
TaskDestructor_InteractableIceParadiseHalfPipe);
|
||||
struct Task *t = TaskCreate(Task_HalfPipeMain, sizeof(Sprite_IceParadiseHalfPipe),
|
||||
0x2010, 0, TaskDestructor_HalfPipe);
|
||||
Sprite_IceParadiseHalfPipe *halfPipe = TaskGetStructPtr(t);
|
||||
halfPipe->direction = direction;
|
||||
halfPipe->x = Q_24_8(spriteRegionX) + me->x * TILE_WIDTH;
|
||||
@@ -158,7 +155,7 @@ static void Task_HalfPipeMain(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void TaskDestructor_InteractableIceParadiseHalfPipe(struct Task *t)
|
||||
static void TaskDestructor_HalfPipe(struct Task *t)
|
||||
{
|
||||
// unused
|
||||
}
|
||||
@@ -234,16 +231,16 @@ static void DestroyHalfPipe(Sprite_IceParadiseHalfPipe *halfPipe)
|
||||
TaskDestroy(gCurTask);
|
||||
}
|
||||
|
||||
void initSprite_Interactable_IceParadise_HalfPipe_End(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_HalfPipe_End(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
initSprite_Interactable_IceParadise_HalfPipe(me, spriteRegionX, spriteRegionY,
|
||||
spriteY, HALF_PIPE_DIRECTION_REVERSE);
|
||||
CreateEntity_HalfPipe(me, spriteRegionX, spriteRegionY, spriteY,
|
||||
HALF_PIPE_DIRECTION_REVERSE);
|
||||
}
|
||||
|
||||
void initSprite_Interactable_IceParadise_HalfPipe_Start(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_HalfPipe_Start(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
initSprite_Interactable_IceParadise_HalfPipe(me, spriteRegionX, spriteRegionY,
|
||||
spriteY, HALF_PIPE_DIRECTION_FORWARD);
|
||||
CreateEntity_HalfPipe(me, spriteRegionX, spriteRegionY, spriteY,
|
||||
HALF_PIPE_DIRECTION_FORWARD);
|
||||
}
|
||||
@@ -29,16 +29,15 @@ typedef struct {
|
||||
/* 0x15 */ u8 spriteY;
|
||||
} Sprite_SlowingSnow; // size = 0x18
|
||||
|
||||
static void Task_Interactable_IceParadise_SlowingSnow(void);
|
||||
static void TaskDestructor_Interactable_IceParadise_SlowingSnow(struct Task *t);
|
||||
static void Task_SlowingSnow(void);
|
||||
static void TaskDestructor_SlowingSnow(struct Task *t);
|
||||
static bool32 ShouldDespawn(Sprite_SlowingSnow *);
|
||||
|
||||
void initSprite_Interactable_IceParadise_SlowingSnow(MapEntity *in_ia, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_SlowingSnow(MapEntity *in_ia, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
struct Task *t = TaskCreate(Task_Interactable_IceParadise_SlowingSnow,
|
||||
sizeof(Sprite_SlowingSnow), 0x2010, 0,
|
||||
TaskDestructor_Interactable_IceParadise_SlowingSnow);
|
||||
struct Task *t = TaskCreate(Task_SlowingSnow, sizeof(Sprite_SlowingSnow), 0x2010, 0,
|
||||
TaskDestructor_SlowingSnow);
|
||||
|
||||
Sprite_SlowingSnow *snow = TaskGetStructPtr(t);
|
||||
Interactable_SlowingSnow *me = (Interactable_SlowingSnow *)in_ia;
|
||||
@@ -77,7 +76,7 @@ static bool32 PlayerIsTouchingSnow(Sprite_SlowingSnow *snow)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void Task_Interactable_IceParadise_SlowingSnow(void)
|
||||
void Task_SlowingSnow(void)
|
||||
{
|
||||
Sprite_SlowingSnow *snow = TaskGetStructPtr(gCurTask);
|
||||
|
||||
@@ -93,7 +92,7 @@ void Task_Interactable_IceParadise_SlowingSnow(void)
|
||||
}
|
||||
}
|
||||
|
||||
void TaskDestructor_Interactable_IceParadise_SlowingSnow(struct Task *t) { }
|
||||
void TaskDestructor_SlowingSnow(struct Task *t) { }
|
||||
|
||||
static bool32 ShouldDespawn(Sprite_SlowingSnow *snow)
|
||||
{
|
||||
|
||||
@@ -34,9 +34,9 @@ static void sub_8076C88(Sprite_GermanFlute UNUSED *);
|
||||
static void sub_8076CC0(Sprite_GermanFlute UNUSED *);
|
||||
static void sub_8076CF4(Sprite_GermanFlute UNUSED *);
|
||||
static void sub_8076D08(Sprite_GermanFlute UNUSED *);
|
||||
static void Task_Interactable_MusicPlant_GermanFlute(void);
|
||||
static void Task_GermanFlute(void);
|
||||
static void Task_8076DE8(void);
|
||||
static void TaskDestructor_Interactable_MusicPlant_GermanFlute(struct Task *);
|
||||
static void TaskDestructor_GermanFlute(struct Task *);
|
||||
static void sub_8076E3C(Sprite_GermanFlute *);
|
||||
static bool32 sub_8076EAC(Sprite_GermanFlute *);
|
||||
static void sub_8076EF4(Sprite_GermanFlute *);
|
||||
@@ -255,7 +255,7 @@ static void sub_8076C88(Sprite_GermanFlute UNUSED *flute)
|
||||
gPlayer.speedAirX = 0;
|
||||
gPlayer.speedAirY = 0;
|
||||
|
||||
gCurTask->main = Task_Interactable_MusicPlant_GermanFlute;
|
||||
gCurTask->main = Task_GermanFlute;
|
||||
}
|
||||
|
||||
static void sub_8076CC0(Sprite_GermanFlute UNUSED *flute)
|
||||
@@ -265,26 +265,25 @@ static void sub_8076CC0(Sprite_GermanFlute UNUSED *flute)
|
||||
gPlayer.speedAirX = 0;
|
||||
gPlayer.speedAirY = 0;
|
||||
|
||||
gCurTask->main = Task_Interactable_MusicPlant_GermanFlute;
|
||||
gCurTask->main = Task_GermanFlute;
|
||||
}
|
||||
|
||||
static void sub_8076CF4(Sprite_GermanFlute UNUSED *flute)
|
||||
{
|
||||
gCurTask->main = Task_Interactable_MusicPlant_GermanFlute;
|
||||
gCurTask->main = Task_GermanFlute;
|
||||
}
|
||||
|
||||
static void sub_8076D08(Sprite_GermanFlute UNUSED *flute)
|
||||
{
|
||||
gPlayer.moveState &= ~MOVESTATE_400000;
|
||||
gCurTask->main = Task_Interactable_MusicPlant_GermanFlute;
|
||||
gCurTask->main = Task_GermanFlute;
|
||||
}
|
||||
|
||||
void initSprite_Interactable_MusicPlant_GermanFlute(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_GermanFlute(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
struct Task *t = TaskCreate(Task_Interactable_MusicPlant_GermanFlute,
|
||||
sizeof(Sprite_GermanFlute), 0x2010, 0,
|
||||
TaskDestructor_Interactable_MusicPlant_GermanFlute);
|
||||
struct Task *t = TaskCreate(Task_GermanFlute, sizeof(Sprite_GermanFlute), 0x2010, 0,
|
||||
TaskDestructor_GermanFlute);
|
||||
Sprite_GermanFlute *flute = TaskGetStructPtr(t);
|
||||
s32 posX, posY;
|
||||
|
||||
@@ -303,7 +302,7 @@ void initSprite_Interactable_MusicPlant_GermanFlute(MapEntity *me, u16 spriteReg
|
||||
SET_MAP_ENTITY_INITIALIZED(me);
|
||||
}
|
||||
|
||||
static void Task_Interactable_MusicPlant_GermanFlute(void)
|
||||
static void Task_GermanFlute(void)
|
||||
{
|
||||
Sprite_GermanFlute *flute = TaskGetStructPtr(gCurTask);
|
||||
if (sub_8076BE4(flute)) {
|
||||
@@ -331,7 +330,7 @@ static void Task_8076DE8(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void TaskDestructor_Interactable_MusicPlant_GermanFlute(struct Task *t) {};
|
||||
static void TaskDestructor_GermanFlute(struct Task *t) {};
|
||||
|
||||
static void sub_8076E3C(Sprite_GermanFlute *flute)
|
||||
{
|
||||
|
||||
@@ -30,8 +30,8 @@ typedef struct {
|
||||
/* 0x76 */ s16 unk76;
|
||||
} Sprite_GuitarString; /* size 0x78 */
|
||||
|
||||
extern void Task_Interactable_MusicPlant_GuitarString(void);
|
||||
extern void TaskDestructor_Interactable_MusicPlant_GuitarString(struct Task *);
|
||||
extern void Task_GuitarString(void);
|
||||
extern void TaskDestructor_GuitarString(struct Task *);
|
||||
extern void sub_8076114(Sprite_GuitarString *);
|
||||
extern bool32 sub_807618C(Sprite_GuitarString *);
|
||||
extern void sub_8076258(Sprite_GuitarString *);
|
||||
@@ -40,12 +40,11 @@ extern void sub_80762BC(Sprite_GuitarString *);
|
||||
extern void sub_80762E0(Sprite_GuitarString *);
|
||||
extern bool32 sub_8076320(Sprite_GuitarString *);
|
||||
|
||||
void initSprite_Interactable_MusicPlant_GuitarString(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_GuitarString(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
struct Task *t = TaskCreate(Task_Interactable_MusicPlant_GuitarString,
|
||||
sizeof(Sprite_GuitarString), 0x2010, 0,
|
||||
TaskDestructor_Interactable_MusicPlant_GuitarString);
|
||||
struct Task *t = TaskCreate(Task_GuitarString, sizeof(Sprite_GuitarString), 0x2010,
|
||||
0, TaskDestructor_GuitarString);
|
||||
Sprite_GuitarString *gs = TaskGetStructPtr(t);
|
||||
Sprite *s = &gs->s1;
|
||||
u16 i;
|
||||
@@ -259,7 +258,7 @@ bool32 sub_807618C(Sprite_GuitarString *gs)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void Task_Interactable_MusicPlant_GuitarString(void)
|
||||
void Task_GuitarString(void)
|
||||
{
|
||||
Sprite_GuitarString *gs = TaskGetStructPtr(gCurTask);
|
||||
|
||||
@@ -275,7 +274,7 @@ void Task_Interactable_MusicPlant_GuitarString(void)
|
||||
}
|
||||
}
|
||||
|
||||
void TaskDestructor_Interactable_MusicPlant_GuitarString(struct Task UNUSED *t) { }
|
||||
void TaskDestructor_GuitarString(struct Task UNUSED *t) { }
|
||||
|
||||
void sub_8076258(Sprite_GuitarString UNUSED *gs)
|
||||
{
|
||||
@@ -290,10 +289,7 @@ void sub_8076258(Sprite_GuitarString UNUSED *gs)
|
||||
gCurTask->main = sub_8076000;
|
||||
}
|
||||
|
||||
void sub_80762A8(Sprite_GuitarString UNUSED *gs)
|
||||
{
|
||||
gCurTask->main = Task_Interactable_MusicPlant_GuitarString;
|
||||
}
|
||||
void sub_80762A8(Sprite_GuitarString UNUSED *gs) { gCurTask->main = Task_GuitarString; }
|
||||
|
||||
void sub_80762BC(Sprite_GuitarString *gs)
|
||||
{
|
||||
|
||||
@@ -33,8 +33,8 @@ typedef struct {
|
||||
#define MUSIC_PLANT_KEYBOARD_TYPE_HORIZONTAL_LEFT 1
|
||||
#define MUSIC_PLANT_KEYBOARD_TYPE_HORIZONTAL_RIGHT 2
|
||||
|
||||
static void Task_Interactable_MusicPlant_Keyboard(void);
|
||||
static void TaskDestructor_Interactable_MusicPlant_Keyboard(struct Task *);
|
||||
static void Task_Keyboard(void);
|
||||
static void TaskDestructor_Keyboard(struct Task *);
|
||||
static bool32 sub_8076848(Sprite_Keyboard *);
|
||||
|
||||
static void DespawnKeyboard(Sprite_Keyboard *);
|
||||
@@ -52,12 +52,11 @@ const s16 sKeyboardAccelTechnoBase[3][2] = {
|
||||
{ Q_8_8(5.0), Q_8_8(8.0) },
|
||||
};
|
||||
|
||||
void initSprite_Interactable_MusicPlant_Keyboard(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY, u32 type)
|
||||
void CreateEntity_Keyboard(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY, u32 type)
|
||||
{
|
||||
struct Task *t
|
||||
= TaskCreate(Task_Interactable_MusicPlant_Keyboard, sizeof(Sprite_Keyboard),
|
||||
0x2010, 0, TaskDestructor_Interactable_MusicPlant_Keyboard);
|
||||
struct Task *t = TaskCreate(Task_Keyboard, sizeof(Sprite_Keyboard), 0x2010, 0,
|
||||
TaskDestructor_Keyboard);
|
||||
|
||||
Sprite_Keyboard *kb = TaskGetStructPtr(t);
|
||||
kb->kbType = type;
|
||||
@@ -259,7 +258,7 @@ static bool32 sub_8076780(Sprite_Keyboard *kb)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void Task_Interactable_MusicPlant_Keyboard(void)
|
||||
static void Task_Keyboard(void)
|
||||
{
|
||||
Sprite_Keyboard *kb = TaskGetStructPtr(gCurTask);
|
||||
if (sub_8076780(kb)) {
|
||||
@@ -271,7 +270,7 @@ static void Task_Interactable_MusicPlant_Keyboard(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void TaskDestructor_Interactable_MusicPlant_Keyboard(struct Task *UNUSED t) { }
|
||||
static void TaskDestructor_Keyboard(struct Task *UNUSED t) { }
|
||||
|
||||
static bool32 sub_8076848(Sprite_Keyboard *kb)
|
||||
{
|
||||
@@ -294,30 +293,23 @@ static void DespawnKeyboard(Sprite_Keyboard *kb)
|
||||
TaskDestroy(gCurTask);
|
||||
}
|
||||
|
||||
void initSprite_Interactable_MusicPlant_Keyboard_Vertical(MapEntity *me,
|
||||
u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_Keyboard_Vertical(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
initSprite_Interactable_MusicPlant_Keyboard(
|
||||
me, spriteRegionX, spriteRegionY, spriteY, MUSIC_PLANT_KEYBOARD_TYPE_VERTICAL);
|
||||
CreateEntity_Keyboard(me, spriteRegionX, spriteRegionY, spriteY,
|
||||
MUSIC_PLANT_KEYBOARD_TYPE_VERTICAL);
|
||||
}
|
||||
|
||||
void initSprite_Interactable_MusicPlant_Keyboard_Horizontal_PushLeft(MapEntity *me,
|
||||
u16 spriteRegionX,
|
||||
u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
void CreateEntity_Keyboard_Horizontal_PushLeft(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
{
|
||||
initSprite_Interactable_MusicPlant_Keyboard(
|
||||
me, spriteRegionX, spriteRegionY, spriteY,
|
||||
MUSIC_PLANT_KEYBOARD_TYPE_HORIZONTAL_LEFT);
|
||||
CreateEntity_Keyboard(me, spriteRegionX, spriteRegionY, spriteY,
|
||||
MUSIC_PLANT_KEYBOARD_TYPE_HORIZONTAL_LEFT);
|
||||
}
|
||||
|
||||
void initSprite_Interactable_MusicPlant_Keyboard_Horizontal_PushRight(MapEntity *me,
|
||||
u16 spriteRegionX,
|
||||
u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
void CreateEntity_Keyboard_Horizontal_PushRight(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
{
|
||||
initSprite_Interactable_MusicPlant_Keyboard(
|
||||
me, spriteRegionX, spriteRegionY, spriteY,
|
||||
MUSIC_PLANT_KEYBOARD_TYPE_HORIZONTAL_RIGHT);
|
||||
CreateEntity_Keyboard(me, spriteRegionX, spriteRegionY, spriteY,
|
||||
MUSIC_PLANT_KEYBOARD_TYPE_HORIZONTAL_RIGHT);
|
||||
}
|
||||
@@ -58,8 +58,8 @@ const u16 gUnknown_080DFC78[NUM_NOTE_BLOCK_TYPES + 1] = {
|
||||
SE_MUSIC_PLANT_GLOCKENSPIEL_6, MUS_DUMMY,
|
||||
};
|
||||
|
||||
void initSprite_Interactable_MusicPlant_Note_Block(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_Note_Block(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
struct Task *t = TaskCreate(Task_8075C6C, sizeof(Sprite_NoteBlock), 0x2010, 0,
|
||||
TaskDestructor_8075CC0);
|
||||
|
||||
@@ -26,7 +26,7 @@ typedef struct {
|
||||
/* 0x4B */ u8 unk4B;
|
||||
} Sprite_NoteSphere; /* size: 0x4C */
|
||||
|
||||
static void Task_Interactable_MusicPlant_Note_Sphere(void);
|
||||
static void Task_Note_Sphere(void);
|
||||
|
||||
static u8 NoteSphere_BouncePlayer(Sprite_NoteSphere *);
|
||||
static bool32 NoteSphere_IsPlayerColliding(Sprite_NoteSphere *);
|
||||
@@ -55,12 +55,11 @@ static const u16 sNoteSphereSfx[8] = {
|
||||
SE_MUSIC_PLANT_NOTES_7, SE_MUSIC_PLANT_NOTES_8,
|
||||
};
|
||||
|
||||
void initSprite_Interactable_MusicPlant_Note_Sphere(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_Note_Sphere(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
struct Task *t
|
||||
= TaskCreate(Task_Interactable_MusicPlant_Note_Sphere, sizeof(Sprite_NoteSphere),
|
||||
0x2010, 0, TaskDestructor_Interactable_MusicPlant_Note_Sphere);
|
||||
struct Task *t = TaskCreate(Task_Note_Sphere, sizeof(Sprite_NoteSphere), 0x2010, 0,
|
||||
TaskDestructor_Interactable_MusicPlant_Note_Sphere);
|
||||
Sprite_NoteSphere *note = TaskGetStructPtr(t);
|
||||
Sprite *s = ¬e->disp;
|
||||
note->unk44 = 0;
|
||||
@@ -112,7 +111,7 @@ static void Task_80754B8(void)
|
||||
case 6: {
|
||||
note->unk44 = 0;
|
||||
note->unk46 = 0;
|
||||
gCurTask->main = Task_Interactable_MusicPlant_Note_Sphere;
|
||||
gCurTask->main = Task_Note_Sphere;
|
||||
} break;
|
||||
}
|
||||
|
||||
@@ -201,7 +200,7 @@ static bool32 NoteSphere_IsPlayerColliding(Sprite_NoteSphere *note)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void Task_Interactable_MusicPlant_Note_Sphere(void)
|
||||
static void Task_Note_Sphere(void)
|
||||
{
|
||||
Sprite_NoteSphere *note = TaskGetStructPtr(gCurTask);
|
||||
|
||||
|
||||
@@ -187,10 +187,8 @@ void sub_8077994(Sprite_Pipe_Horn *pipe)
|
||||
TaskDestroy(gCurTask);
|
||||
}
|
||||
|
||||
void initSprite_Interactable_MusicPlant_PipeInstrument_Entry(MapEntity *me,
|
||||
u16 spriteRegionX,
|
||||
u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
void CreateEntity_PipeInstrument_Entry(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
{
|
||||
struct Task *t = TaskCreate(sub_80778AC, sizeof(Sprite_Pipe_Horn), 0x2010, 0,
|
||||
TaskDestructor_Pipe);
|
||||
@@ -366,9 +364,8 @@ void FrenchHorn_Despawn(Sprite_Pipe_Horn *horn)
|
||||
TaskDestroy(gCurTask);
|
||||
}
|
||||
|
||||
void initSprite_Interactable_MusicPlant_FrenchHorn_Entry(MapEntity *me,
|
||||
u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_FrenchHorn_Entry(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
struct Task *t = TaskCreate(Task_FrenchHorn_8077C04, sizeof(Sprite_Pipe_Horn),
|
||||
0x2010, 0, TaskDestructor_FrenchHorn);
|
||||
|
||||
@@ -45,8 +45,8 @@ static void Task_8080750(void);
|
||||
static void TaskDestructor_8080790(struct Task *t);
|
||||
static void Task_80807A4(void);
|
||||
|
||||
void initSprite_8080368(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
UNUSED u8 spriteY)
|
||||
void CreateEntity_8080368(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
UNUSED u8 spriteY)
|
||||
{
|
||||
s32 screenX, screenY;
|
||||
|
||||
|
||||
@@ -213,8 +213,7 @@ static void sub_807C614(void)
|
||||
}
|
||||
static void TaskDestructor_Interactable085(struct Task *);
|
||||
|
||||
void initSprite_Interactable085(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
void CreateEntity_085(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY, u8 spriteY)
|
||||
{
|
||||
struct Task *t = TaskCreate(Task_Interactable085, 0x4C, 0x2010, 0,
|
||||
TaskDestructor_Interactable085);
|
||||
|
||||
@@ -321,8 +321,8 @@ static void sub_807BA70(void)
|
||||
unk807->unk62++;
|
||||
}
|
||||
|
||||
void initSprite_Interactable_SkyCanyon_GiantPropeller(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_GiantPropeller(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
struct Task *t = TaskCreate(Task_GiantPropellerIdle, sizeof(Sprite_GiantPropeller),
|
||||
0x2010, 0, TaskDestructor_GiantPropeller);
|
||||
|
||||
@@ -75,10 +75,8 @@ void Task_IA_SmallPropeller_UpdateInFanRegion(void);
|
||||
void SetTaskMain_UpdateRegular(Sprite_SmallPropeller *unused);
|
||||
void DestroyTask_Interactable087(Sprite_SmallPropeller *);
|
||||
|
||||
static void initSprite_Interactable_SkyCanyon_SmallPropeller(MapEntity *me,
|
||||
u16 spriteRegionX,
|
||||
u16 spriteRegionY,
|
||||
u8 spriteY, u32 kind)
|
||||
static void CreateEntity_SmallPropeller(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY, u32 kind)
|
||||
{
|
||||
struct Task *t
|
||||
= TaskCreate(Task_IA_SmallPropeller_UpdateRegular, sizeof(Sprite_SmallPropeller),
|
||||
@@ -351,43 +349,32 @@ void DestroyTask_Interactable087(Sprite_SmallPropeller *prop)
|
||||
TaskDestroy(gCurTask);
|
||||
}
|
||||
|
||||
void initSprite_Interactable_SkyCanyon_SmallPropeller_Left(MapEntity *me,
|
||||
u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_SmallPropeller_Left(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
{
|
||||
initSprite_Interactable_SkyCanyon_SmallPropeller(
|
||||
me, spriteRegionX, spriteRegionY, spriteY,
|
||||
SKYCAN_PROPELLER_KIND(PROP_DIR_LEFT, FALSE));
|
||||
CreateEntity_SmallPropeller(me, spriteRegionX, spriteRegionY, spriteY,
|
||||
SKYCAN_PROPELLER_KIND(PROP_DIR_LEFT, FALSE));
|
||||
}
|
||||
|
||||
void initSprite_Interactable_SkyCanyon_SmallPropeller_Right(MapEntity *me,
|
||||
u16 spriteRegionX,
|
||||
u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
void CreateEntity_SmallPropeller_Right(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
{
|
||||
initSprite_Interactable_SkyCanyon_SmallPropeller(
|
||||
me, spriteRegionX, spriteRegionY, spriteY,
|
||||
SKYCAN_PROPELLER_KIND(PROP_DIR_RIGHT, FALSE));
|
||||
CreateEntity_SmallPropeller(me, spriteRegionX, spriteRegionY, spriteY,
|
||||
SKYCAN_PROPELLER_KIND(PROP_DIR_RIGHT, FALSE));
|
||||
}
|
||||
|
||||
void initSprite_Interactable_SkyCanyon_SmallPropeller_Left_Periodic(MapEntity *me,
|
||||
u16 spriteRegionX,
|
||||
u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
void CreateEntity_SmallPropeller_Left_Periodic(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
{
|
||||
initSprite_Interactable_SkyCanyon_SmallPropeller(
|
||||
me, spriteRegionX, spriteRegionY, spriteY,
|
||||
SKYCAN_PROPELLER_KIND(PROP_DIR_LEFT, TRUE));
|
||||
CreateEntity_SmallPropeller(me, spriteRegionX, spriteRegionY, spriteY,
|
||||
SKYCAN_PROPELLER_KIND(PROP_DIR_LEFT, TRUE));
|
||||
}
|
||||
|
||||
void initSprite_Interactable_SkyCanyon_SmallPropeller_Right_Periodic(MapEntity *me,
|
||||
u16 spriteRegionX,
|
||||
u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
void CreateEntity_SmallPropeller_Right_Periodic(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
{
|
||||
initSprite_Interactable_SkyCanyon_SmallPropeller(
|
||||
me, spriteRegionX, spriteRegionY, spriteY,
|
||||
SKYCAN_PROPELLER_KIND(PROP_DIR_RIGHT, TRUE));
|
||||
CreateEntity_SmallPropeller(me, spriteRegionX, spriteRegionY, spriteY,
|
||||
SKYCAN_PROPELLER_KIND(PROP_DIR_RIGHT, TRUE));
|
||||
}
|
||||
|
||||
void Task_IA_SmallPropeller_UpdateInFanRegion(void)
|
||||
|
||||
@@ -26,7 +26,7 @@ typedef struct {
|
||||
#define PLAYER_SPIN_DIAMETER 24
|
||||
#define ROTATE_SPEED 8
|
||||
|
||||
static void Task_Interactable_SkyCanyon_SmallSpinnyWindmill(void);
|
||||
static void Task_SmallSpinnyWindmill(void);
|
||||
static void TaskDestructor_Interactable_SkyCanyon_SmallSpinnyWindmill(struct Task *);
|
||||
static void SlowWindmillToStop(void);
|
||||
static void Task_RotateSequence(void);
|
||||
@@ -35,12 +35,11 @@ static void RenderWindmill(Sprite_SmallWindmill *);
|
||||
static void Despawn(Sprite_SmallWindmill *);
|
||||
static void ResetWindmill(Sprite_SmallWindmill *);
|
||||
|
||||
void initSprite_Interactable_SkyCanyon_SmallSpinnyWindmill(MapEntity *me,
|
||||
u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_SmallSpinnyWindmill(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
{
|
||||
struct Task *t
|
||||
= TaskCreate(Task_Interactable_SkyCanyon_SmallSpinnyWindmill, 0x48, 0x2010, 0,
|
||||
= TaskCreate(Task_SmallSpinnyWindmill, 0x48, 0x2010, 0,
|
||||
TaskDestructor_Interactable_SkyCanyon_SmallSpinnyWindmill);
|
||||
Sprite_SmallWindmill *windmill = TaskGetStructPtr(t);
|
||||
Sprite *sprite;
|
||||
@@ -251,7 +250,7 @@ static u32 GetPlayerTouchingAngle(Sprite_SmallWindmill *windmill)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void Task_Interactable_SkyCanyon_SmallSpinnyWindmill(void)
|
||||
static void Task_SmallSpinnyWindmill(void)
|
||||
{
|
||||
Sprite_SmallWindmill *windmill = TaskGetStructPtr(gCurTask);
|
||||
|
||||
@@ -316,7 +315,7 @@ static void ResetWindmill(Sprite_SmallWindmill *windmill)
|
||||
sprite->variant = 2;
|
||||
sprite->unk22 = 16;
|
||||
sub_8004558(sprite);
|
||||
gCurTask->main = Task_Interactable_SkyCanyon_SmallSpinnyWindmill;
|
||||
gCurTask->main = Task_SmallSpinnyWindmill;
|
||||
}
|
||||
|
||||
static void RenderWindmill(Sprite_SmallWindmill *windmill)
|
||||
|
||||
@@ -88,8 +88,8 @@ static const u8 gUnknown_080E0136[8] = { 0, 0, 0, 0, 1, 1, 1, 2 };
|
||||
|
||||
#define UNKNOWN_WHIRLWIND_THIRYTWO 32
|
||||
|
||||
void initSprite_Interactable_SkyCanyon_Whirlwind(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY, u32 kind)
|
||||
void CreateEntity_Whirlwind(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY, u32 kind)
|
||||
{
|
||||
struct Task *t = TaskCreate(Task_807D06C, sizeof(Sprite_IA86), 0x2010, 0,
|
||||
TaskDestructor_Interactable086);
|
||||
@@ -598,18 +598,16 @@ void sub_807D1BC(Sprite_IA86 *ia086)
|
||||
sub_807CCBC(ia086);
|
||||
}
|
||||
|
||||
void initSprite_Interactable_SkyCanyon_Whirlwind_0(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_Whirlwind_0(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
initSprite_Interactable_SkyCanyon_Whirlwind(me, spriteRegionX, spriteRegionY,
|
||||
spriteY, 0);
|
||||
CreateEntity_Whirlwind(me, spriteRegionX, spriteRegionY, spriteY, 0);
|
||||
}
|
||||
|
||||
void initSprite_Interactable_SkyCanyon_Whirlwind_1(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_Whirlwind_1(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
initSprite_Interactable_SkyCanyon_Whirlwind(me, spriteRegionX, spriteRegionY,
|
||||
spriteY, 1);
|
||||
CreateEntity_Whirlwind(me, spriteRegionX, spriteRegionY, spriteY, 1);
|
||||
}
|
||||
|
||||
void Task_807D268(void)
|
||||
|
||||
@@ -31,8 +31,8 @@ static void Task_80811BC(void);
|
||||
|
||||
extern void sub_80122DC(s32, s32);
|
||||
|
||||
void initSprite_Interactable_SpecialRing(MapEntity *me, u16 spriteRegionX,
|
||||
u16 spriteRegionY, u8 spriteY)
|
||||
void CreateEntity_SpecialRing(MapEntity *me, u16 spriteRegionX, u16 spriteRegionY,
|
||||
u8 spriteY)
|
||||
{
|
||||
if (IS_SINGLE_PLAYER) {
|
||||
struct Task *t
|
||||
|
||||
Loaded 100 of 110 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user