The first commit

This commit is contained in:
Banjo Kazooie
2022-07-15 17:09:41 -05:00
commit dd13d34074
1087 changed files with 391897 additions and 0 deletions

1472
src/cutscenes/code_0.c Normal file

File diff suppressed because it is too large Load Diff

687
src/cutscenes/code_60F0.c Normal file
View File

@@ -0,0 +1,687 @@
#include <ultra64.h>
#include "functions.h"
#include "variables.h"
extern void func_802E07E0(Actor *);
extern Actor* func_802E0738(ActorMarker *, Gfx **, Mtx**, Vtx **);
extern ActorInfo D_80366CD0;
extern ActorInfo D_8038E718;
extern ActorInfo D_8038E7A0;
extern ActorInfo D_8038E8A8;
/* .data */
ActorInfo D_8038DC90 =
{
0x017, 0x08E, 0x355,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 5.0f, 0
};
ActorInfo D_8038DCB4 =
{
0x01A, 0x091, 0x3BB,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038DCD8 =
{
0x019, 0x090, 0x3BB,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038DCFC =
{
0x018, 0x08F, 0x3B1,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 5.0f, 0
};
ActorInfo D_8038DD20 =
{
0x01B, 0x092, 0x35A,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 3.0f, 0
};
ActorInfo D_8038DD44 =
{
0x01C, 0x093, 0x3A6,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038DD68 =
{
0x01D, 0x094, 0x3A7,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038DD8C =
{
0x01E, 0x095, 0x3BB,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038DDB0 =
{
0x01F, 0x096, 0x3BB,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038DDD4 =
{
0x020, 0x097, 0x3BB,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038DDF8 =
{
0x021, 0x098, 0x3BB,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038DE1C =
{
0x022, 0x099, 0x3AA,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038DE40 =
{
0x023, 0x09A, 0x3AB,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038DE64 =
{
0x024, 0x09B, 0x354,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 3.0f, 0
};
ActorInfo D_8038DE88 =
{
0x025, 0x09C, 0x369,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.4f, 0
};
ActorInfo D_8038DEAC =
{
0x026, 0x09D, 0x353,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 4.0f, 0
};
ActorInfo D_8038DED0 =
{
0x027, 0x09E, 0x53D,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038DEF4 =
{
0x06F, 0x09F, 0x3BB,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038DF18 =
{
0x070, 0x0A0, 0x34D,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038DF3C =
{
0x071, 0x0A1, 0x3AC,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038DF60 =
{
0x073, 0x0A3, 0x3BB,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038DF84 =
{
0x074, 0x0A4, 0x433,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038DFA8 =
{
0x075, 0x0A5, 0x3ED,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038DFCC =
{
0x076, 0x0A6, 0x398,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.5f, 0
};
ActorInfo D_8038DFF0 =
{
0x077, 0x0A7, 0x473,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E014 =
{
0x078, 0x0A8, 0x474,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E038 =
{
0x079, 0x0A9, 0x454,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E05C =
{
0x07A, 0x0AA, 0x453,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E080 =
{
0x07B, 0x0AB, 0x452,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E0A4 =
{
0x07C, 0x0AC, 0x451,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E0C8 =
{
0x07D, 0x0AD, 0x3CA,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E0EC =
{
0x07E, 0x0AE, 0x450,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E110 =
{
0x07F, 0x0AF, 0x44F,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E134 =
{
0x080, 0x0B0, 0x387,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E158 =
{
0x081, 0x0B1, 0x388,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E17C =
{
0x082, 0x0B2, 0x347,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E1A0 =
{
0x084, 0x0B4, 0x35B,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E1C4 =
{
0x085, 0x0B5, 0x456,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E1E8 =
{
0x086, 0x0B6, 0x457,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E20C =
{
0x087, 0x0B7, 0x3BB,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E230 =
{
0x088, 0x0B8, 0x458,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E254 =
{
0x089, 0x0B9, 0x459,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E278 =
{
0x08A, 0x0BA, 0x3BB,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E29C =
{
0x08B, 0x0BB, 0x45B,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E2C0 =
{
0x08E, 0x0BE, 0x3BB,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E2E4 =
{
0x08F, 0x0BF, 0x3BB,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E308 =
{
0x090, 0x0C0, 0x460,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E32C =
{
0x091, 0x0C1, 0x467,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E350 =
{
0x092, 0x0C2, 0x468,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E374 =
{
0x093, 0x0C3, 0x469,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E398 =
{
0x136, 0x2ED, 0x340,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E3BC =
{
0x137, 0x2EE, 0x46A,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E3E0 =
{
0x138, 0x2EF, 0x35B,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E404 =
{
0x139, 0x2F0, 0x341,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E428 =
{
0x13A, 0x2F1, 0x46B,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E44C =
{
0x13B, 0x2F2, 0x340,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E470 =
{
0x13C, 0x2F3, 0x46D,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E494 =
{
0x143, 0x2FA, 0x46A,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E4B8 =
{
0x144, 0x2FB, 0x532,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E4DC =
{
0x145, 0x2FC, 0x3C6,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E500 =
{
0x146, 0x2FD, 0x3B0,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E524 =
{
0x147, 0x2FE, 0x3BB,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E548 =
{
0x148, 0x2FF, 0x461,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E56C =
{
0x149, 0x300, 0x479,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E590 =
{
0x14A, 0x301, 0x370,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E5B4 =
{
0x14B, 0x302, 0x47B,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E5D8 =
{
0x14C, 0x303, 0x3BB,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E5FC =
{
0x14D, 0x304, 0x3BB,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E620 =
{
0x14E, 0x305, 0x3BB,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E644 =
{
0x14F, 0x306, 0x3BB,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E668 =
{
0x150, 0x307, 0x3BB,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E68C =
{
0x151, 0x308, 0x3BB,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E6B0 =
{
0x152, 0x309, 0x3BB,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
ActorInfo D_8038E6D4 =
{
0x153, 0x30A, 0x3BB,
1, NULL,
NULL, func_802E07E0, func_802E0738,
0, 0, 0.0f, 0
};
void func_8038C4E0(void){
spawnableActorList_add(&D_8038DC90, actor_new, 0X40);
spawnableActorList_add(&D_8038DCFC, actor_new, 0X140);
spawnableActorList_add(&D_8038DCD8, actor_new, 0X2000);
spawnableActorList_add(&D_8038DCB4, actor_new, 0X2000);
spawnableActorList_add(&D_8038DD20, actor_new, 0X100);
spawnableActorList_add(&D_8038DD44, actor_new, 8);
spawnableActorList_add(&D_8038DD68, actor_new, 0X48);
spawnableActorList_add(&D_8038DD8C, actor_new, 0);
spawnableActorList_add(&D_8038DDB0, actor_new, 0);
spawnableActorList_add(&D_8038DDD4, actor_new, 0);
spawnableActorList_add(&D_8038DDF8, actor_new, 0);
spawnableActorList_add(&D_8038DE1C, actor_new, 0);
spawnableActorList_add(&D_8038DE40, actor_new, 0);
spawnableActorList_add(&D_8038DE64, actor_new, 0);
spawnableActorList_add(&D_8038DE88, actor_new, 0);
spawnableActorList_add(&D_8038DEAC, actor_new, 0);
spawnableActorList_add(&D_8038DED0, actor_new, 0X8648);
spawnableActorList_add(&D_8038DEF4, actor_new, 0);
spawnableActorList_add(&D_8038DF18, actor_new, 0);
spawnableActorList_add(&D_8038DF3C, actor_new, 0);
spawnableActorList_add(&D_8038DF60, actor_new, 0X2008);
spawnableActorList_add(&D_8038DF84, actor_new, 0);
spawnableActorList_add(&D_8038DFA8, actor_new, 0X148);
spawnableActorList_add(&D_8038DFCC, actor_new, 0);
spawnableActorList_add(&D_8038DFF0, actor_new, 0X8748);
spawnableActorList_add(&D_8038E014, actor_new, 0X140);
spawnableActorList_add(&D_8038E038, actor_new, 8);
spawnableActorList_add(&D_8038E05C, actor_new, 8);
spawnableActorList_add(&D_8038E080, actor_new, 8);
spawnableActorList_add(&D_8038E0A4, actor_new, 0X8608);
spawnableActorList_add(&D_8038E0C8, actor_new, 0);
spawnableActorList_add(&D_8038E0EC, actor_new, 0X8748);
spawnableActorList_add(&D_8038E110, actor_new, 0X3008);
spawnableActorList_add(&D_8038E134, actor_new, 0X140);
spawnableActorList_add(&D_8038E158, actor_new, 0X40);
spawnableActorList_add(&D_8038E17C, actor_new, 0X1000);
spawnableActorList_add(&D_8038E1A0, actor_new, 0X140);
spawnableActorList_add(&D_8038E1C4, actor_new, 8);
spawnableActorList_add(&D_8038E1E8, actor_new, 0X8608);
spawnableActorList_add(&D_8038E20C, actor_new, 0X8608);
spawnableActorList_add(&D_8038E230, actor_new, 0X40);
spawnableActorList_add(&D_8038E254, actor_new, 8);
spawnableActorList_add(&D_8038E278, actor_new, 0);
spawnableActorList_add(&D_8038E29C, actor_new, 0X100);
spawnableActorList_add(&D_8038E2C0, actor_new, 0);
spawnableActorList_add(&D_8038E2E4, actor_new, 0);
spawnableActorList_add(&D_8038E308, actor_new, 0X8608);
spawnableActorList_add(&D_8038E32C, actor_new, 0);
spawnableActorList_add(&D_8038E350, actor_new, 0X8608);
spawnableActorList_add(&D_8038E374, actor_new, 0X100);
spawnableActorList_add(&D_8038E398, actor_new, 0X1048);
spawnableActorList_add(&D_8038E3BC, actor_new, 0X100);
spawnableActorList_add(&D_8038E3E0, actor_new, 0X140);
spawnableActorList_add(&D_8038E404, actor_new, 0X40);
spawnableActorList_add(&D_8038E428, actor_new, 0X1000);
spawnableActorList_add(&D_8038E44C, actor_new, 0X40);
spawnableActorList_add(&D_8038E470, actor_new, 0X9608);
spawnableActorList_add(&D_8038E494, actor_new, 0X100);
spawnableActorList_add(&D_8038E4B8, actor_new, 0X40);
spawnableActorList_add(&D_8038E4DC, actor_new, 0X40);
spawnableActorList_add(&D_8038E500, actor_new, 0);
spawnableActorList_add(&D_8038E524, actor_new, 0X100);
spawnableActorList_add(&D_8038E548, actor_new, 0X9600);
spawnableActorList_add(&D_8038E56C, actor_new, 0);
spawnableActorList_add(&D_8038E590, actor_new, 0X8748);
spawnableActorList_add(&D_8038E5B4, actor_new, 0X8608);
spawnableActorList_add(&D_8038E5D8, actor_new, 0);
spawnableActorList_add(&D_8038E5FC, actor_new, 0);
spawnableActorList_add(&D_8038E620, actor_new, 0);
spawnableActorList_add(&D_8038E644, actor_new, 0);
spawnableActorList_add(&D_8038E668, actor_new, 0);
spawnableActorList_add(&D_8038E68C, actor_new, 0);
spawnableActorList_add(&D_8038E6B0, actor_new, 0);
spawnableActorList_add(&D_8038E6D4, actor_new, 0);
spawnableActorList_add(&D_80366CD0, actor_new, 0);
spawnableActorList_add(&D_8038E718, actor_new, 2);
spawnableActorList_add(&D_8038E7A0, actor_new, 0X8648);
spawnableActorList_add(&D_8038E8A8, actor_new, 2);
}

97
src/cutscenes/code_6730.c Normal file
View File

@@ -0,0 +1,97 @@
#include <ultra64.h>
#include "functions.h"
#include "variables.h"
typedef struct {
ParticleEmitter *unk0;
}ActorLocal_cutscenes_6730;
void func_8038CCA8(Actor *);
Actor* func_8038CBCC(ActorMarker *, Gfx **, Mtx**, Vtx **);
/* .data */
extern ActorAnimationInfo D_8038E700[] ={
{0x000, 0.0f},
{0x168, 10000.0f},
{0x168, 3.0f}
};
extern ActorInfo D_8038E718 = {
0x1F8, 0x1E8, 0x439,
1, D_8038E700,
func_8038CCA8, func_80326224, func_8038CBCC,
0, 0, 0.0f, 0
};
extern s32 D_8038E73C[3] = {0xff, 0xff, 0xff};
extern struct31s D_8038E748 = {
{0.1f, 0.3f},
{0.0f, 0.0f},
{0.0f, 0.01f},
{1.4f, 1.5f},
0.05f, 0.9f
};
extern struct41s D_8038E770 ={
{ {0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f} },
{ {0.0f, -200.0f, 0.0f}, {0.0f, -200.0f, 0.0f} }
};
/* .code */
void func_8038CB20(ParticleEmitter *pCtrl){
particleEmitter_setSprite(pCtrl, ASSET_713_SPRITE_SPARKLE_YELLOW);
func_802EFFA8(pCtrl, D_8038E73C);
func_802EF9E4(pCtrl, 230);
func_802EFE24(pCtrl, -600.0f, -600.0f,-600.0f, 600.0f, 600.0f, 600.0f);
particleEmitter_setVelocityAndAccelerationRanges(pCtrl, &D_8038E770);
func_802EFB98(pCtrl, &D_8038E748);
func_802EFA70(pCtrl, 4);
func_802F0D54(pCtrl);
}
Actor* func_8038CBCC(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){
Actor *actor = func_80325888(marker, gfx, mtx, vtx);
ActorLocal_cutscenes_6730 *local = (ActorLocal_cutscenes_6730 *)&actor->local;
f32 sp3C[3];
int i;
if(marker->unk14_21 && actor->state == 2){
for(i = 5; i < 0xF; i++){
if(randf() < 0.8){
func_8034A174(func_80329934(), i, sp3C);
particleEmitter_setPosition(local->unk0, sp3C);
particleEmitter_emitN(local->unk0, 1);
}
}
}
return actor;
}
void func_8038CCA8(Actor *this){
f32 sp24 = time_getDelta();
ActorLocal_cutscenes_6730 *local = (ActorLocal_cutscenes_6730 *)&this->local;
if(!this->unk16C_4){
this->unk16C_4 = TRUE;
animctrl_setSmoothTransition(this->animctrl, 0);
this->unk60 = this->yaw/4;
local->unk0 = partEmitList_pushNew(0xA0);
func_8038CB20(local->unk0);
}
switch(this->state){
case 1:
this->unk60 = MAX(0.0, this->unk60 - sp24);
if(0.0f == this->unk60){
func_80328AC8(this, 2);
actor_playAnimationOnce(this);
}
break;
case 2://L8038CDA4
if(actor_animationIsAt(this, 0.999f)){
marker_despawn(this->marker);
}
break;
}
}

106
src/cutscenes/code_69F0.c Normal file
View File

@@ -0,0 +1,106 @@
#include <ultra64.h>
#include "functions.h"
#include "variables.h"
typedef struct {
ParticleEmitter *unk0;
ParticleEmitter *unk4;
} ActorLocal_cutscenes_69F0;
extern void func_8038CF50(Actor *this);
/* .data */
ActorInfo D_8038E7A0 = {
0x211, 0x341, 0x45D,
1, NULL,
NULL, func_8038CF50, func_80325888,
0, 0xA000, 0.0f, 0
};
s32 D_8038E7C4[3] = {0xFF, 0xFF, 0xFF};
struct31s D_8038E7D0 = {
{0.7f, 0.9f},
{0.4f, 0.5f},
{0.0f, 0.01f},
{0.4f, 0.7f},
0.15f, 0.3f
};
struct42s D_8038E7F8 ={
{ {-10.0f, -10.0f, -10.0f}, {10.0f, 10.0f, 10.0f} },
{ {0.0f, 30.0f, 0.0f}, {0.0f, 30.0f, 0.0f} }
};
s32 D_8038E828[3] = {0xFF, 0xFF, 0xFF};
struct31s D_8038E834 = {
{0.05f, 0.1f},
{0.1f, 0.2f},
{0.0f, 0.01f},
{1.4f, 1.5f},
0.01f, 0.3f
};
struct42s D_8038E85C ={
{ {-5.0f, -5.0f, -5.0f}, {5.0f, 5.0f, 5.0f} },
{ {0.0f, 30.0f, 0.0f}, {0.0f, 30.0f, 0.0f} }
};
/* .code */
void func_8038CDE0(ParticleEmitter *pCtrl){
particleEmitter_setSprite(pCtrl, ASSET_45A_SPRITE_GREEN_GLOW);
func_802EFFA8(pCtrl, D_8038E7C4);
func_802EF9E4(pCtrl, 0xff);
func_802EFE24(pCtrl, -600.0f, -600.0f,-600.0f, 600.0f, 600.0f, 600.0f);
particleEmitter_setPositionAndVelocityRanges(pCtrl, &D_8038E7F8);
func_802EFB98(pCtrl, &D_8038E7D0);
func_802EFA78(pCtrl, 1);
func_802EFA70(pCtrl, 4);
func_802F0D54(pCtrl);
}
void func_8038CE98(ParticleEmitter *pCtrl){
particleEmitter_setSprite(pCtrl, ASSET_713_SPRITE_SPARKLE_YELLOW);
func_802EFFA8(pCtrl, D_8038E828);
func_802EF9E4(pCtrl, 0xff);
func_802EFE24(pCtrl, -600.0f, -600.0f,-600.0f, 600.0f, 600.0f, 600.0f);
particleEmitter_setPositionAndVelocityRanges(pCtrl, &D_8038E85C);
func_802EFB98(pCtrl, &D_8038E834);
func_802EFA78(pCtrl, 1);
func_802EFA70(pCtrl, 4);
func_802F0D54(pCtrl);
}
extern void func_8038CF50(Actor *this){
ActorLocal_cutscenes_69F0 *local = (ActorLocal_cutscenes_69F0 *) &this->local;
f32 sp40[3];
int i;
if(!this->unk16C_4){
this->unk16C_4 = TRUE;
local->unk0 = partEmitList_pushNew(6);
local->unk4 = partEmitList_pushNew(6);
func_8038CDE0(local->unk0);
func_8038CE98(local->unk4);
}//L8038CFBC
func_80343DEC(this);
if(this->marker->unk14_21){
for(i = 5; i < 6; i++){
if(randf() < 0.4){
func_8034A174(this->marker->unk44, i, sp40);
particleEmitter_setPosition(local->unk0, sp40);
particleEmitter_emitN(local->unk0, 1);
particleEmitter_setPosition(local->unk4, sp40);
particleEmitter_emitN(local->unk4, 1);
}
}
}//L8038D05C
}

98
src/cutscenes/code_6C90.c Normal file
View File

@@ -0,0 +1,98 @@
#include <ultra64.h>
#include "functions.h"
#include "variables.h"
typedef struct {
ParticleEmitter *unk0;
}ActorLocal_cutscenes_6C90;
void func_8038D218(Actor *);
Actor* func_8038D13C(ActorMarker *, Gfx **, Mtx**, Vtx **);
/* .data */
ActorAnimationInfo D_8038E890[] ={
{0x000, 0.0f},
{0x1F6, 10000.0f},
{0x1F6, 5.0f},
};
ActorInfo D_8038E8A8 = {
0x212, 0x342, 0x45F,
1, D_8038E890,
func_8038D218, func_80326224, func_8038D13C,
3000, 0, 0.0f, 0
};
s32 D_8038E8CC[3] = {0xff, 0xff, 0xff};
struct31s D_8038E8D8 = {
{0.6f, 0.6f},
{0.9f, 0.9f},
{0.0f, 0.01f},
{2.0f, 2.0f},
0.05f, 0.9f
};
struct41s D_8038E900 = {
{ {0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f}},
{ {0.0f, -30.0f, 0.0f}, {0.0f, -30.0f, 0.0f}}
};
/*.code */
void func_8038D080(ParticleEmitter *pCtrl){
particleEmitter_setSprite(pCtrl, ASSET_702_SPRITE_UNKNOWN);
particleEmitter_setStartingFrameRange(pCtrl, 3, 5);
func_802EFFA8(pCtrl, D_8038E8CC);
func_802EF9E4(pCtrl, 60);
func_802EFE24(pCtrl, -600.0f, -600.0f,-600.0f, 600.0f, 600.0f, 600.0f);
particleEmitter_setVelocityAndAccelerationRanges(pCtrl, &D_8038E900);
func_802EFB98(pCtrl, &D_8038E8D8);
func_802EFA70(pCtrl, 4);
func_802F0D54(pCtrl);
}
Actor* func_8038D13C(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx){
Actor *actor = func_80325888(marker, gfx, mtx, vtx);
ActorLocal_cutscenes_6C90 *local = (ActorLocal_cutscenes_6C90 *)&actor->local;
f32 sp3C[3];
int i;
if(marker->unk14_21 && actor->state == 2){
for(i = 5; i < 0x6; i++){
if(randf() < 0.8){
func_8034A174(func_80329934(), i, sp3C);
particleEmitter_setPosition(local->unk0, sp3C);
particleEmitter_emitN(local->unk0, 1);
}
}
}
return actor;
}
void func_8038D218(Actor *this){
f32 sp24 = time_getDelta();
ActorLocal_cutscenes_6C90 *local = (ActorLocal_cutscenes_6C90 *)&this->local;
if(!this->unk16C_4){
this->unk16C_4 = TRUE;
animctrl_setSmoothTransition(this->animctrl, 0);
this->unk60 = this->yaw/4;
local->unk0 = partEmitList_pushNew(0x100);
func_8038D080(local->unk0);
}
switch(this->state){
case 1:
this->unk60 = MAX(0.0, this->unk60 - sp24);
if(0.0f == this->unk60){
func_80328AC8(this, 2);
actor_playAnimationOnce(this);
}
break;
case 2://L8038CDA4
if(actor_animationIsAt(this, 0.999f)){
marker_despawn(this->marker);
}
break;
}
}