sm64

A Super Mario 64 decompilation
Log | Files | Refs | README | LICENSE

intro_scene.inc.c (3369B)


      1 // intro_scene.inc.c
      2 
      3 void spawn_child_obj_relative(struct Object *parent, s16 xOffset, s16 yOffset, s16 zOffset,
      4                               s16 pitchOffset, s16 yawOffset, s16 rollOffset,
      5                               s16 forwardVel, s32 model, const BehaviorScript *behavior) {
      6     struct Object *obj = spawn_object(parent, model, behavior);
      7 
      8     obj->header.gfx.animInfo.animFrame = random_float() * 6.0f;
      9     obj->oEndBirdUnk104 = sCutsceneVars[9].point[0];
     10 
     11     sCutsceneVars[9].point[0] += 1.0f;
     12 
     13     obj->oPosX += xOffset;
     14     obj->oPosY += yOffset;
     15 
     16     if (gCutsceneTimer > 700) {
     17         obj->oPosY += -150.0f;
     18     }
     19 
     20     obj->oPosZ += zOffset;
     21     obj->oMoveAnglePitch += pitchOffset;
     22     obj->oMoveAngleYaw += yawOffset;
     23     obj->oMoveAngleRoll += rollOffset;
     24     obj->oForwardVel = forwardVel;
     25 }
     26 
     27 void bhv_intro_scene_loop(void) {
     28     UNUSED struct Object *obj;
     29 
     30     if (gCutsceneObjSpawn != 0) {
     31         o->oPosX = gCamera->pos[0];
     32         o->oPosY = gCamera->pos[1];
     33         o->oPosZ = gCamera->pos[2];
     34 
     35         o->oMoveAnglePitch = 0;
     36         o->oMoveAngleYaw = 0;
     37 
     38         switch (gCutsceneObjSpawn) {
     39             case 6:
     40                 obj = spawn_object(o, MODEL_LAKITU, bhvBeginningLakitu);
     41                 break;
     42 
     43             case 5:
     44                 obj = spawn_object(o, MODEL_PEACH, bhvBeginningPeach);
     45                 break;
     46 
     47             case 7:
     48                 spawn_child_obj_relative(
     49                     o, 0, 205, 500, 0x1000, 0x6000, -0x1E00, 25, MODEL_BIRDS, bhvEndBirds1);
     50                 spawn_child_obj_relative(
     51                     o, 0, 205, 800, 0x1800, 0x6000, -0x1400, 35, MODEL_BIRDS, bhvEndBirds1);
     52                 spawn_child_obj_relative(
     53                     o, -100, 300, 500, 0x800, 0x6000, 0, 25, MODEL_BIRDS, bhvEndBirds1);
     54                 spawn_child_obj_relative(
     55                     o, 100, -200, 800, 0, 0x4000, 0x1400, 45, MODEL_BIRDS, bhvEndBirds1);
     56                 spawn_child_obj_relative(
     57                     o, -80, 300, 350, 0x1800, 0x5000, 0xA00, 35, MODEL_BIRDS, bhvEndBirds1);
     58                 spawn_child_obj_relative(
     59                     o, -300, 300, 500, 0x800, 0x6000, 0x2800, 25, MODEL_BIRDS, bhvEndBirds1);
     60                 spawn_child_obj_relative(
     61                     o, -400, -200, 800, 0, 0x4000, -0x1400, 45, MODEL_BIRDS, bhvEndBirds1);
     62                 break;
     63 
     64             case 9:
     65                 spawn_child_obj_relative(
     66                     o, 50, 205, 500, 0x1000, 0x6000, 0, 35, MODEL_BIRDS, bhvEndBirds1);
     67                 spawn_child_obj_relative(
     68                     o, 0, 285, 800, 0x1800, 0x6000, 0, 35, MODEL_BIRDS, bhvEndBirds1);
     69                 break;
     70 
     71             case 8:
     72                 spawn_child_obj_relative(
     73                     o, -100, -100, -700, 0, 0, -0xF00, 25, MODEL_BIRDS, bhvEndBirds2);
     74                 spawn_child_obj_relative(
     75                     o, -250, 255, -200, 0, 0, -0x1400, 25, MODEL_BIRDS, bhvEndBirds2);
     76                 spawn_child_obj_relative(
     77                     o, -100, 155, -600, 0, 0, -0x500, 35, MODEL_BIRDS, bhvEndBirds2);
     78                 spawn_child_obj_relative(
     79                     o, 250, 200, -1200, 0, 0, -0x700, 25, MODEL_BIRDS, bhvEndBirds2);
     80                 spawn_child_obj_relative(
     81                     o, -250, 255, -700, 0, 0, 0, 25, MODEL_BIRDS, bhvEndBirds2);
     82                 break;
     83         }
     84 
     85         gCutsceneObjSpawn = 0;
     86     }
     87 }