diff --git a/decompressed.pal.yaml b/decompressed.pal.yaml index c96ff6d9..3d580939 100644 --- a/decompressed.pal.yaml +++ b/decompressed.pal.yaml @@ -2056,7 +2056,7 @@ segments: # # - [0x1080020, c, code_1FF0] #DONE # # - [0x1080380, c, ch/boggy2] #DONE # # - [0x1081E30, c, ch/bearcub] #DONE -# # - [0x1082430, c, sirslushgame] #DONE +# # - [0x1082430, c, ma/snowy] #DONE # # - [0x1082600, c, ma/snowbutton] #DONE # # - [0x10827A0, c, ma/slalom] #DONE # # - [0x1083CF0, c, ch/twinkly] @@ -2083,7 +2083,7 @@ segments: # # - [0x1089880, .data, code_1FF0] # # - [0x10898C0, .data, ch/boggy2] # # - [0x1089A30, .data, ch/bearcub] -# # - [0x1089AF0, .data, sirslushgame] +# # - [0x1089AF0, .data, ma/snowy] # # - [0x1089B00, .data, ma/snowbutton] # # - [0x1089B10, .data, ma/slalom] # # - [0x1089B90, .data, ch/twinkly] @@ -2118,7 +2118,7 @@ segments: # # - [0x108AB40, .rodata, ch/xmastreeeggtoll] # # - [0x108AB50, .bss, bss_pad] # # - [0x108AB50, .bss, ch/boggy2] -# # - [0x108AB50, .bss, sirslushgame] +# # - [0x108AB50, .bss, ma/snowy] # # - [0x108AB50, .bss, ma/snowbutton] # # - [0x108AB50, .bss, ma/slalom] # # - [0x108AB50, .bss, ch/xmastreestar] diff --git a/decompressed.us.v10.yaml b/decompressed.us.v10.yaml index accff655..e9339ce3 100644 --- a/decompressed.us.v10.yaml +++ b/decompressed.us.v10.yaml @@ -2054,7 +2054,7 @@ segments: - [0x1080020, c, code_1FF0] - [0x1080380, c, ch/boggy2] - [0x1081E30, c, ch/bearcub] - - [0x1082430, c, sirslushgame] + - [0x1082430, c, ma/snowy] - [0x1082600, c, ma/snowbutton] - [0x10827A0, c, ma/slalom] - [0x1083CF0, c, ch/twinkly] @@ -2081,7 +2081,7 @@ segments: - [0x1089880, .data, code_1FF0] - [0x10898C0, .data, ch/boggy2] - [0x1089A30, .data, ch/bearcub] - - [0x1089AF0, .data, sirslushgame] + - [0x1089AF0, .data, ma/snowy] - [0x1089B00, .data, ma/snowbutton] - [0x1089B10, .data, ma/slalom] - [0x1089B90, .data, ch/twinkly] @@ -2116,7 +2116,7 @@ segments: - [0x108AB40, .rodata, ch/xmastreeeggtoll] - [0x108AB50, .bss, bss_pad] - [0x108AB50, .bss, ch/boggy2] - - [0x108AB50, .bss, sirslushgame] + - [0x108AB50, .bss, ma/snowy] - [0x108AB50, .bss, ma/snowbutton] - [0x108AB50, .bss, ma/slalom] - [0x108AB50, .bss, ch/xmastreestar] diff --git a/src/FP/ma/snowy.c b/src/FP/ma/snowy.c new file mode 100644 index 00000000..c49d6c43 --- /dev/null +++ b/src/FP/ma/snowy.c @@ -0,0 +1,89 @@ +#include +#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++; +} diff --git a/src/FP/sirslushgame.c b/src/FP/sirslushgame.c deleted file mode 100644 index cc57a49a..00000000 --- a/src/FP/sirslushgame.c +++ /dev/null @@ -1,82 +0,0 @@ -#include -#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++; -} diff --git a/src/core2/ch/snowman.c b/src/core2/ch/snowman.c index 66aad14b..44d85f78 100644 --- a/src/core2/ch/snowman.c +++ b/src/core2/ch/snowman.c @@ -187,7 +187,7 @@ void __chSnowman_deathCallback(ActorMarker *marker, ActorMarker *other_marker){ __spawnQueue_add_1((GenFunction_1)__chSnowman_spawnHat, (s32)actor->marker); if(map_get() == MAP_27_FP_FREEZEEZY_PEAK) - fp_sirslushgame_decRemaining(); + maSnowy_decRemaining(); __chSnowman_spawnSnowballParticles(actor->position, 0xC); marker_despawn(actor->marker); } @@ -224,7 +224,7 @@ void chSnowman_update(Actor *this){ func_8032BC18(this); if(map_get() == MAP_27_FP_FREEZEEZY_PEAK){ local->unk0 = actorArray_findActorFromActorId(0x336)->marker; - fp_sirslushgame_incTotal(); + maSnowy_incTotal(); } }//L802E21D8 if(map_get() == MAP_27_FP_FREEZEEZY_PEAK){ diff --git a/src/core2/code_9B990.c b/src/core2/code_9B990.c index 9051a3bf..5512d954 100644 --- a/src/core2/code_9B990.c +++ b/src/core2/code_9B990.c @@ -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_release(void){ - fp_sirslushgame_end(); + maSnowy_end(); maSnowButton_end(); maSlalom_end(); func_8039195C(); } void overlay_fp_init(void){ - fp_sirslushgame_init(); + maSnowy_init(); maSnowButton_init(); maSlalom_init(); func_803918C0(); } void __overlay_fp_update(void){ - fp_sirslushgame_update(); + maSnowy_update(); maSnowButton_update(); maSlalom_update(); func_80391994();