Docuement FP/ma/snowy.c (based on XBox debug strings).
This commit is contained in:
@@ -2056,7 +2056,7 @@ segments:
|
|||||||
# # - [0x1080020, c, code_1FF0] #DONE
|
# # - [0x1080020, c, code_1FF0] #DONE
|
||||||
# # - [0x1080380, c, ch/boggy2] #DONE
|
# # - [0x1080380, c, ch/boggy2] #DONE
|
||||||
# # - [0x1081E30, c, ch/bearcub] #DONE
|
# # - [0x1081E30, c, ch/bearcub] #DONE
|
||||||
# # - [0x1082430, c, sirslushgame] #DONE
|
# # - [0x1082430, c, ma/snowy] #DONE
|
||||||
# # - [0x1082600, c, ma/snowbutton] #DONE
|
# # - [0x1082600, c, ma/snowbutton] #DONE
|
||||||
# # - [0x10827A0, c, ma/slalom] #DONE
|
# # - [0x10827A0, c, ma/slalom] #DONE
|
||||||
# # - [0x1083CF0, c, ch/twinkly]
|
# # - [0x1083CF0, c, ch/twinkly]
|
||||||
@@ -2083,7 +2083,7 @@ segments:
|
|||||||
# # - [0x1089880, .data, code_1FF0]
|
# # - [0x1089880, .data, code_1FF0]
|
||||||
# # - [0x10898C0, .data, ch/boggy2]
|
# # - [0x10898C0, .data, ch/boggy2]
|
||||||
# # - [0x1089A30, .data, ch/bearcub]
|
# # - [0x1089A30, .data, ch/bearcub]
|
||||||
# # - [0x1089AF0, .data, sirslushgame]
|
# # - [0x1089AF0, .data, ma/snowy]
|
||||||
# # - [0x1089B00, .data, ma/snowbutton]
|
# # - [0x1089B00, .data, ma/snowbutton]
|
||||||
# # - [0x1089B10, .data, ma/slalom]
|
# # - [0x1089B10, .data, ma/slalom]
|
||||||
# # - [0x1089B90, .data, ch/twinkly]
|
# # - [0x1089B90, .data, ch/twinkly]
|
||||||
@@ -2118,7 +2118,7 @@ segments:
|
|||||||
# # - [0x108AB40, .rodata, ch/xmastreeeggtoll]
|
# # - [0x108AB40, .rodata, ch/xmastreeeggtoll]
|
||||||
# # - [0x108AB50, .bss, bss_pad]
|
# # - [0x108AB50, .bss, bss_pad]
|
||||||
# # - [0x108AB50, .bss, ch/boggy2]
|
# # - [0x108AB50, .bss, ch/boggy2]
|
||||||
# # - [0x108AB50, .bss, sirslushgame]
|
# # - [0x108AB50, .bss, ma/snowy]
|
||||||
# # - [0x108AB50, .bss, ma/snowbutton]
|
# # - [0x108AB50, .bss, ma/snowbutton]
|
||||||
# # - [0x108AB50, .bss, ma/slalom]
|
# # - [0x108AB50, .bss, ma/slalom]
|
||||||
# # - [0x108AB50, .bss, ch/xmastreestar]
|
# # - [0x108AB50, .bss, ch/xmastreestar]
|
||||||
|
@@ -2054,7 +2054,7 @@ segments:
|
|||||||
- [0x1080020, c, code_1FF0]
|
- [0x1080020, c, code_1FF0]
|
||||||
- [0x1080380, c, ch/boggy2]
|
- [0x1080380, c, ch/boggy2]
|
||||||
- [0x1081E30, c, ch/bearcub]
|
- [0x1081E30, c, ch/bearcub]
|
||||||
- [0x1082430, c, sirslushgame]
|
- [0x1082430, c, ma/snowy]
|
||||||
- [0x1082600, c, ma/snowbutton]
|
- [0x1082600, c, ma/snowbutton]
|
||||||
- [0x10827A0, c, ma/slalom]
|
- [0x10827A0, c, ma/slalom]
|
||||||
- [0x1083CF0, c, ch/twinkly]
|
- [0x1083CF0, c, ch/twinkly]
|
||||||
@@ -2081,7 +2081,7 @@ segments:
|
|||||||
- [0x1089880, .data, code_1FF0]
|
- [0x1089880, .data, code_1FF0]
|
||||||
- [0x10898C0, .data, ch/boggy2]
|
- [0x10898C0, .data, ch/boggy2]
|
||||||
- [0x1089A30, .data, ch/bearcub]
|
- [0x1089A30, .data, ch/bearcub]
|
||||||
- [0x1089AF0, .data, sirslushgame]
|
- [0x1089AF0, .data, ma/snowy]
|
||||||
- [0x1089B00, .data, ma/snowbutton]
|
- [0x1089B00, .data, ma/snowbutton]
|
||||||
- [0x1089B10, .data, ma/slalom]
|
- [0x1089B10, .data, ma/slalom]
|
||||||
- [0x1089B90, .data, ch/twinkly]
|
- [0x1089B90, .data, ch/twinkly]
|
||||||
@@ -2116,7 +2116,7 @@ segments:
|
|||||||
- [0x108AB40, .rodata, ch/xmastreeeggtoll]
|
- [0x108AB40, .rodata, ch/xmastreeeggtoll]
|
||||||
- [0x108AB50, .bss, bss_pad]
|
- [0x108AB50, .bss, bss_pad]
|
||||||
- [0x108AB50, .bss, ch/boggy2]
|
- [0x108AB50, .bss, ch/boggy2]
|
||||||
- [0x108AB50, .bss, sirslushgame]
|
- [0x108AB50, .bss, ma/snowy]
|
||||||
- [0x108AB50, .bss, ma/snowbutton]
|
- [0x108AB50, .bss, ma/snowbutton]
|
||||||
- [0x108AB50, .bss, ma/slalom]
|
- [0x108AB50, .bss, ma/slalom]
|
||||||
- [0x108AB50, .bss, ch/xmastreestar]
|
- [0x108AB50, .bss, ch/xmastreestar]
|
||||||
|
89
src/FP/ma/snowy.c
Normal file
89
src/FP/ma/snowy.c
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
#include <ultra64.h>
|
||||||
|
#include "functions.h"
|
||||||
|
#include "variables.h"
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
MA_SNOWY_STATE_0_NONE,
|
||||||
|
MA_SNOWY_STATE_1_ACTIVE,
|
||||||
|
MA_SNOWY_STATE_2_WIN,
|
||||||
|
MA_SNOWY_STATE_3_DONE
|
||||||
|
} MaSnowyState;
|
||||||
|
|
||||||
|
f32 D_80391EB0[3] = {-625.0f, 8840.0f, -111.0f};
|
||||||
|
|
||||||
|
/* .bss */
|
||||||
|
static struct {
|
||||||
|
u8 state;
|
||||||
|
s32 remaining;
|
||||||
|
s32 total;
|
||||||
|
s32 delay;
|
||||||
|
f32 spawn_pos[3];
|
||||||
|
u8 jiggySpawnerExists;
|
||||||
|
} Me;
|
||||||
|
|
||||||
|
/* .code */
|
||||||
|
void maSnowy_init(void){
|
||||||
|
if( map_get() != MAP_27_FP_FREEZEEZY_PEAK
|
||||||
|
|| jiggyscore_isCollected(JIGGY_31_FP_SIR_SLUSH)
|
||||||
|
|| jiggyscore_isSpawned(JIGGY_31_FP_SIR_SLUSH)
|
||||||
|
){
|
||||||
|
Me.state = MA_SNOWY_STATE_0_NONE;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Me.jiggySpawnerExists = 0;
|
||||||
|
if(nodeProp_findPositionFromActorId(0x128, Me.spawn_pos)){
|
||||||
|
Me.jiggySpawnerExists = 1;
|
||||||
|
}
|
||||||
|
Me.state = MA_SNOWY_STATE_1_ACTIVE;
|
||||||
|
Me.remaining = 0;
|
||||||
|
Me.total = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void maSnowy_end(void){}
|
||||||
|
|
||||||
|
void maSnowy_update(void){
|
||||||
|
switch(Me.state){
|
||||||
|
case MA_SNOWY_STATE_0_NONE:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MA_SNOWY_STATE_1_ACTIVE:
|
||||||
|
if(Me.remaining) break;
|
||||||
|
if(!Me.total) break;
|
||||||
|
|
||||||
|
Me.state = MA_SNOWY_STATE_2_WIN;
|
||||||
|
Me.delay = 0;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MA_SNOWY_STATE_2_WIN:
|
||||||
|
if(Me.delay >= 75){
|
||||||
|
if(Me.jiggySpawnerExists){
|
||||||
|
func_802BAFE4(0x12);
|
||||||
|
jiggy_spawn(JIGGY_31_FP_SIR_SLUSH, Me.spawn_pos);
|
||||||
|
__spawnQueue_add_4((GenFunction_4)spawnQueue_actor_f32, ACTOR_4C_STEAM,
|
||||||
|
reinterpret_cast(s32, Me.spawn_pos[0]),
|
||||||
|
reinterpret_cast(s32, Me.spawn_pos[1]),
|
||||||
|
reinterpret_cast(s32, Me.spawn_pos[2])
|
||||||
|
);
|
||||||
|
}
|
||||||
|
// * WARNING * :masnowy.c: Jigsaw 49 CANNOT find it's bootup marker point
|
||||||
|
Me.state = MA_SNOWY_STATE_3_DONE;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
Me.delay++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MA_SNOWY_STATE_3_DONE:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void maSnowy_decRemaining(void){
|
||||||
|
Me.remaining--;
|
||||||
|
}
|
||||||
|
|
||||||
|
void maSnowy_incTotal(void){
|
||||||
|
Me.total++;
|
||||||
|
Me.remaining++;
|
||||||
|
}
|
@@ -1,82 +0,0 @@
|
|||||||
#include <ultra64.h>
|
|
||||||
#include "functions.h"
|
|
||||||
#include "variables.h"
|
|
||||||
|
|
||||||
|
|
||||||
f32 D_80391EB0[3] = {-625.0f, 8840.0f, -111.0f};
|
|
||||||
/* .bss */
|
|
||||||
struct {
|
|
||||||
u8 state;
|
|
||||||
s32 remaining;
|
|
||||||
s32 total;
|
|
||||||
s32 unkC;
|
|
||||||
f32 spawn_pos[3];
|
|
||||||
u8 unk1C;
|
|
||||||
} D_80392F30;
|
|
||||||
|
|
||||||
/* .code */
|
|
||||||
void fp_sirslushgame_init(void){
|
|
||||||
if( map_get() != MAP_27_FP_FREEZEEZY_PEAK
|
|
||||||
|| jiggyscore_isCollected(JIGGY_31_FP_SIR_SLUSH)
|
|
||||||
|| jiggyscore_isSpawned(JIGGY_31_FP_SIR_SLUSH)
|
|
||||||
){
|
|
||||||
D_80392F30.state = 0;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
D_80392F30.unk1C = 0;
|
|
||||||
if(nodeProp_findPositionFromActorId(0x128, D_80392F30.spawn_pos)){
|
|
||||||
D_80392F30.unk1C = 1;
|
|
||||||
}
|
|
||||||
D_80392F30.state = 1;
|
|
||||||
D_80392F30.remaining = 0;
|
|
||||||
D_80392F30.total = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void fp_sirslushgame_end(void){}
|
|
||||||
|
|
||||||
void fp_sirslushgame_update(void){
|
|
||||||
switch(D_80392F30.state){
|
|
||||||
case 0:
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 1://L8038A8CC
|
|
||||||
if(D_80392F30.remaining) break;
|
|
||||||
if(!D_80392F30.total) break;
|
|
||||||
|
|
||||||
D_80392F30.state = 2;
|
|
||||||
D_80392F30.unkC = 0;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 2://L8038A8F4
|
|
||||||
if(D_80392F30.unkC >= 0x4b){
|
|
||||||
|
|
||||||
if(D_80392F30.unk1C){
|
|
||||||
func_802BAFE4(0x12);
|
|
||||||
jiggy_spawn(JIGGY_31_FP_SIR_SLUSH, D_80392F30.spawn_pos);
|
|
||||||
__spawnQueue_add_4((GenFunction_4)spawnQueue_actor_f32, ACTOR_4C_STEAM,
|
|
||||||
reinterpret_cast(s32, D_80392F30.spawn_pos[0]),
|
|
||||||
reinterpret_cast(s32, D_80392F30.spawn_pos[1]),
|
|
||||||
reinterpret_cast(s32, D_80392F30.spawn_pos[2])
|
|
||||||
);
|
|
||||||
}
|
|
||||||
D_80392F30.state = 3;
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
D_80392F30.unkC++;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 3://L8038A96C
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void fp_sirslushgame_decRemaining(void){
|
|
||||||
D_80392F30.remaining--;
|
|
||||||
}
|
|
||||||
|
|
||||||
void fp_sirslushgame_incTotal(void){
|
|
||||||
D_80392F30.total++;
|
|
||||||
D_80392F30.remaining++;
|
|
||||||
}
|
|
@@ -187,7 +187,7 @@ void __chSnowman_deathCallback(ActorMarker *marker, ActorMarker *other_marker){
|
|||||||
|
|
||||||
__spawnQueue_add_1((GenFunction_1)__chSnowman_spawnHat, (s32)actor->marker);
|
__spawnQueue_add_1((GenFunction_1)__chSnowman_spawnHat, (s32)actor->marker);
|
||||||
if(map_get() == MAP_27_FP_FREEZEEZY_PEAK)
|
if(map_get() == MAP_27_FP_FREEZEEZY_PEAK)
|
||||||
fp_sirslushgame_decRemaining();
|
maSnowy_decRemaining();
|
||||||
__chSnowman_spawnSnowballParticles(actor->position, 0xC);
|
__chSnowman_spawnSnowballParticles(actor->position, 0xC);
|
||||||
marker_despawn(actor->marker);
|
marker_despawn(actor->marker);
|
||||||
}
|
}
|
||||||
@@ -224,7 +224,7 @@ void chSnowman_update(Actor *this){
|
|||||||
func_8032BC18(this);
|
func_8032BC18(this);
|
||||||
if(map_get() == MAP_27_FP_FREEZEEZY_PEAK){
|
if(map_get() == MAP_27_FP_FREEZEEZY_PEAK){
|
||||||
local->unk0 = actorArray_findActorFromActorId(0x336)->marker;
|
local->unk0 = actorArray_findActorFromActorId(0x336)->marker;
|
||||||
fp_sirslushgame_incTotal();
|
maSnowy_incTotal();
|
||||||
}
|
}
|
||||||
}//L802E21D8
|
}//L802E21D8
|
||||||
if(map_get() == MAP_27_FP_FREEZEEZY_PEAK){
|
if(map_get() == MAP_27_FP_FREEZEEZY_PEAK){
|
||||||
|
@@ -300,21 +300,21 @@ void func_80322D94(s32 arg0, s32 arg1){ return; }
|
|||||||
void __overlay_fp_draw(Gfx **gfx, Mtx **mtx, Vtx **vtx){ return; }
|
void __overlay_fp_draw(Gfx **gfx, Mtx **mtx, Vtx **vtx){ return; }
|
||||||
|
|
||||||
void __overlay_fp_release(void){
|
void __overlay_fp_release(void){
|
||||||
fp_sirslushgame_end();
|
maSnowy_end();
|
||||||
maSnowButton_end();
|
maSnowButton_end();
|
||||||
maSlalom_end();
|
maSlalom_end();
|
||||||
func_8039195C();
|
func_8039195C();
|
||||||
}
|
}
|
||||||
|
|
||||||
void overlay_fp_init(void){
|
void overlay_fp_init(void){
|
||||||
fp_sirslushgame_init();
|
maSnowy_init();
|
||||||
maSnowButton_init();
|
maSnowButton_init();
|
||||||
maSlalom_init();
|
maSlalom_init();
|
||||||
func_803918C0();
|
func_803918C0();
|
||||||
}
|
}
|
||||||
|
|
||||||
void __overlay_fp_update(void){
|
void __overlay_fp_update(void){
|
||||||
fp_sirslushgame_update();
|
maSnowy_update();
|
||||||
maSnowButton_update();
|
maSnowButton_update();
|
||||||
maSlalom_update();
|
maSlalom_update();
|
||||||
func_80391994();
|
func_80391994();
|
||||||
|
Reference in New Issue
Block a user