mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2025-10-30 08:01:01 +00:00
Un-hardcoded vanilla trajectories
This commit is contained in:
parent
72584d5552
commit
ef63435bc1
20 changed files with 346 additions and 71 deletions
|
|
@ -2,7 +2,7 @@ import os
|
||||||
|
|
||||||
usf_types = ['u8', 'u16', 'u32', 'u64', 's8', 's16', 's32', 's64', 'f32']
|
usf_types = ['u8', 'u16', 'u32', 'u64', 's8', 's16', 's32', 's64', 'f32']
|
||||||
vec3_types = ['Vec3s', 'Vec3f']
|
vec3_types = ['Vec3s', 'Vec3f']
|
||||||
typedef_pointers = ['BehaviorScript', 'ObjectAnimPointer', 'Collision', 'LevelScript']
|
typedef_pointers = ['BehaviorScript', 'ObjectAnimPointer', 'Collision', 'LevelScript', 'Trajectory']
|
||||||
|
|
||||||
exclude_structs = [
|
exclude_structs = [
|
||||||
'SPTask',
|
'SPTask',
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,39 @@
|
||||||
--- @field public terrainType integer
|
--- @field public terrainType integer
|
||||||
--- @field public warpNodes ObjectWarpNode
|
--- @field public warpNodes ObjectWarpNode
|
||||||
|
|
||||||
|
--- @class BehaviorTrajectories
|
||||||
|
--- @field public BowlingBallBob2Trajectory Pointer_Trajectory
|
||||||
|
--- @field public BowlingBallBobTrajectory Pointer_Trajectory
|
||||||
|
--- @field public BowlingBallTtmTrajectory Pointer_Trajectory
|
||||||
|
--- @field public KoopaBobTrajectory Pointer_Trajectory
|
||||||
|
--- @field public KoopaThiTrajectory Pointer_Trajectory
|
||||||
|
--- @field public Mips10Trajectory Pointer_Trajectory
|
||||||
|
--- @field public Mips2Trajectory Pointer_Trajectory
|
||||||
|
--- @field public Mips3Trajectory Pointer_Trajectory
|
||||||
|
--- @field public Mips4Trajectory Pointer_Trajectory
|
||||||
|
--- @field public Mips5Trajectory Pointer_Trajectory
|
||||||
|
--- @field public Mips6Trajectory Pointer_Trajectory
|
||||||
|
--- @field public Mips7Trajectory Pointer_Trajectory
|
||||||
|
--- @field public Mips8Trajectory Pointer_Trajectory
|
||||||
|
--- @field public Mips9Trajectory Pointer_Trajectory
|
||||||
|
--- @field public MipsTrajectory Pointer_Trajectory
|
||||||
|
--- @field public PlatformBitfsTrajectory Pointer_Trajectory
|
||||||
|
--- @field public PlatformCcmTrajectory Pointer_Trajectory
|
||||||
|
--- @field public PlatformHmcTrajectory Pointer_Trajectory
|
||||||
|
--- @field public PlatformLll2Trajectory Pointer_Trajectory
|
||||||
|
--- @field public PlatformLllTrajectory Pointer_Trajectory
|
||||||
|
--- @field public PlatformRr2Trajectory Pointer_Trajectory
|
||||||
|
--- @field public PlatformRr3Trajectory Pointer_Trajectory
|
||||||
|
--- @field public PlatformRr4Trajectory Pointer_Trajectory
|
||||||
|
--- @field public PlatformRrTrajectory Pointer_Trajectory
|
||||||
|
--- @field public RacingPenguinTrajectory Pointer_Trajectory
|
||||||
|
--- @field public SnowmanHeadTrajectory Pointer_Trajectory
|
||||||
|
--- @field public Unagi2Trajectory Pointer_Trajectory
|
||||||
|
--- @field public UnagiTrajectory Pointer_Trajectory
|
||||||
|
|
||||||
|
--- @class BehaviorValues
|
||||||
|
--- @field public trajectories BehaviorTrajectories
|
||||||
|
|
||||||
--- @class BullyCollisionData
|
--- @class BullyCollisionData
|
||||||
--- @field public conversionRatio number
|
--- @field public conversionRatio number
|
||||||
--- @field public posX number
|
--- @field public posX number
|
||||||
|
|
@ -1565,6 +1598,7 @@
|
||||||
--- @field public z integer
|
--- @field public z integer
|
||||||
|
|
||||||
--- @class Pointer_integer
|
--- @class Pointer_integer
|
||||||
|
--- @class Pointer_Trajectory
|
||||||
--- @class Pointer_ObjectAnimPointer
|
--- @class Pointer_ObjectAnimPointer
|
||||||
--- @class Pointer_Collision
|
--- @class Pointer_Collision
|
||||||
--- @class Pointer_BehaviorScript
|
--- @class Pointer_BehaviorScript
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,14 @@ The `gGlobalObjectCollisionData` table contains references to object collision d
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
## [gLevelValues](#gLevelValues)
|
## [gLevelValues](#gLevelValues)
|
||||||
`gLevelValues`'s fields are listed in [LevelValue](structs.md#LevelValue).
|
`gLevelValues`'s fields are listed in [LevelValues](structs.md#LevelValues).
|
||||||
|
|
||||||
|
[:arrow_up_small:](#)
|
||||||
|
|
||||||
|
<br />
|
||||||
|
|
||||||
|
## [gBehaviorValues](#gBehaviorValues)
|
||||||
|
`gBehaviorValues`'s fields are listed in [BehaviorValues](structs.md#BehaviorValues).
|
||||||
|
|
||||||
[:arrow_up_small:](#)
|
[:arrow_up_small:](#)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,8 @@
|
||||||
- [AnimInfo](#AnimInfo)
|
- [AnimInfo](#AnimInfo)
|
||||||
- [Animation](#Animation)
|
- [Animation](#Animation)
|
||||||
- [Area](#Area)
|
- [Area](#Area)
|
||||||
|
- [BehaviorTrajectories](#BehaviorTrajectories)
|
||||||
|
- [BehaviorValues](#BehaviorValues)
|
||||||
- [BullyCollisionData](#BullyCollisionData)
|
- [BullyCollisionData](#BullyCollisionData)
|
||||||
- [Camera](#Camera)
|
- [Camera](#Camera)
|
||||||
- [CameraFOVStatus](#CameraFOVStatus)
|
- [CameraFOVStatus](#CameraFOVStatus)
|
||||||
|
|
@ -129,6 +131,53 @@
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
|
## [BehaviorTrajectories](#BehaviorTrajectories)
|
||||||
|
|
||||||
|
| Field | Type | Access |
|
||||||
|
| ----- | ---- | ------ |
|
||||||
|
| BowlingBallBob2Trajectory | `Pointer` <`Trajectory`> | read-only |
|
||||||
|
| BowlingBallBobTrajectory | `Pointer` <`Trajectory`> | read-only |
|
||||||
|
| BowlingBallTtmTrajectory | `Pointer` <`Trajectory`> | read-only |
|
||||||
|
| KoopaBobTrajectory | `Pointer` <`Trajectory`> | read-only |
|
||||||
|
| KoopaThiTrajectory | `Pointer` <`Trajectory`> | read-only |
|
||||||
|
| Mips10Trajectory | `Pointer` <`Trajectory`> | read-only |
|
||||||
|
| Mips2Trajectory | `Pointer` <`Trajectory`> | read-only |
|
||||||
|
| Mips3Trajectory | `Pointer` <`Trajectory`> | read-only |
|
||||||
|
| Mips4Trajectory | `Pointer` <`Trajectory`> | read-only |
|
||||||
|
| Mips5Trajectory | `Pointer` <`Trajectory`> | read-only |
|
||||||
|
| Mips6Trajectory | `Pointer` <`Trajectory`> | read-only |
|
||||||
|
| Mips7Trajectory | `Pointer` <`Trajectory`> | read-only |
|
||||||
|
| Mips8Trajectory | `Pointer` <`Trajectory`> | read-only |
|
||||||
|
| Mips9Trajectory | `Pointer` <`Trajectory`> | read-only |
|
||||||
|
| MipsTrajectory | `Pointer` <`Trajectory`> | read-only |
|
||||||
|
| PlatformBitfsTrajectory | `Pointer` <`Trajectory`> | read-only |
|
||||||
|
| PlatformCcmTrajectory | `Pointer` <`Trajectory`> | read-only |
|
||||||
|
| PlatformHmcTrajectory | `Pointer` <`Trajectory`> | read-only |
|
||||||
|
| PlatformLll2Trajectory | `Pointer` <`Trajectory`> | read-only |
|
||||||
|
| PlatformLllTrajectory | `Pointer` <`Trajectory`> | read-only |
|
||||||
|
| PlatformRr2Trajectory | `Pointer` <`Trajectory`> | read-only |
|
||||||
|
| PlatformRr3Trajectory | `Pointer` <`Trajectory`> | read-only |
|
||||||
|
| PlatformRr4Trajectory | `Pointer` <`Trajectory`> | read-only |
|
||||||
|
| PlatformRrTrajectory | `Pointer` <`Trajectory`> | read-only |
|
||||||
|
| RacingPenguinTrajectory | `Pointer` <`Trajectory`> | read-only |
|
||||||
|
| SnowmanHeadTrajectory | `Pointer` <`Trajectory`> | read-only |
|
||||||
|
| Unagi2Trajectory | `Pointer` <`Trajectory`> | read-only |
|
||||||
|
| UnagiTrajectory | `Pointer` <`Trajectory`> | read-only |
|
||||||
|
|
||||||
|
[:arrow_up_small:](#)
|
||||||
|
|
||||||
|
<br />
|
||||||
|
|
||||||
|
## [BehaviorValues](#BehaviorValues)
|
||||||
|
|
||||||
|
| Field | Type | Access |
|
||||||
|
| ----- | ---- | ------ |
|
||||||
|
| trajectories | [BehaviorTrajectories](structs.md#BehaviorTrajectories) | read-only |
|
||||||
|
|
||||||
|
[:arrow_up_small:](#)
|
||||||
|
|
||||||
|
<br />
|
||||||
|
|
||||||
## [BullyCollisionData](#BullyCollisionData)
|
## [BullyCollisionData](#BullyCollisionData)
|
||||||
|
|
||||||
| Field | Type | Access |
|
| Field | Type | Access |
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// 0x07078EF8 - 0x07078F2C
|
// 0x07078EF8 - 0x07078F2C
|
||||||
static const Trajectory inside_castle_seg7_trajectory_mips_0[] = {
|
const Trajectory inside_castle_seg7_trajectory_mips_0[] = {
|
||||||
TRAJECTORY_POS(0, /*pos*/ -1831, -1177, -1178),
|
TRAJECTORY_POS(0, /*pos*/ -1831, -1177, -1178),
|
||||||
TRAJECTORY_POS(1, /*pos*/ -1810, -1177, 284),
|
TRAJECTORY_POS(1, /*pos*/ -1810, -1177, 284),
|
||||||
TRAJECTORY_POS(2, /*pos*/ -2210, -1192, 715),
|
TRAJECTORY_POS(2, /*pos*/ -2210, -1192, 715),
|
||||||
|
|
@ -10,7 +10,7 @@ static const Trajectory inside_castle_seg7_trajectory_mips_0[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
// 0x07078F2C - 0x07078F68
|
// 0x07078F2C - 0x07078F68
|
||||||
static const Trajectory inside_castle_seg7_trajectory_mips_1[] = {
|
const Trajectory inside_castle_seg7_trajectory_mips_1[] = {
|
||||||
TRAJECTORY_POS(0, /*pos*/ -3674, -1379, -962),
|
TRAJECTORY_POS(0, /*pos*/ -3674, -1379, -962),
|
||||||
TRAJECTORY_POS(1, /*pos*/ -3813, -1279, -41),
|
TRAJECTORY_POS(1, /*pos*/ -3813, -1279, -41),
|
||||||
TRAJECTORY_POS(2, /*pos*/ -3628, -1279, 755),
|
TRAJECTORY_POS(2, /*pos*/ -3628, -1279, 755),
|
||||||
|
|
@ -22,14 +22,14 @@ static const Trajectory inside_castle_seg7_trajectory_mips_1[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
// 0x07078F68 - 0x07078F7C
|
// 0x07078F68 - 0x07078F7C
|
||||||
static const Trajectory inside_castle_seg7_trajectory_mips_2[] = {
|
const Trajectory inside_castle_seg7_trajectory_mips_2[] = {
|
||||||
TRAJECTORY_POS(0, /*pos*/ -1463, -1210, -2231),
|
TRAJECTORY_POS(0, /*pos*/ -1463, -1210, -2231),
|
||||||
TRAJECTORY_POS(1, /*pos*/ -1515, -1279, -3094),
|
TRAJECTORY_POS(1, /*pos*/ -1515, -1279, -3094),
|
||||||
TRAJECTORY_END(),
|
TRAJECTORY_END(),
|
||||||
};
|
};
|
||||||
|
|
||||||
// 0x07078F7C - 0x07078FA8
|
// 0x07078F7C - 0x07078FA8
|
||||||
static const Trajectory inside_castle_seg7_trajectory_mips_3[] = {
|
const Trajectory inside_castle_seg7_trajectory_mips_3[] = {
|
||||||
TRAJECTORY_POS(0, /*pos*/ -2019, -1279, -3077),
|
TRAJECTORY_POS(0, /*pos*/ -2019, -1279, -3077),
|
||||||
TRAJECTORY_POS(1, /*pos*/ -2559, -1279, -3043),
|
TRAJECTORY_POS(1, /*pos*/ -2559, -1279, -3043),
|
||||||
TRAJECTORY_POS(2, /*pos*/ -2957, -1279, -2747),
|
TRAJECTORY_POS(2, /*pos*/ -2957, -1279, -2747),
|
||||||
|
|
@ -39,7 +39,7 @@ static const Trajectory inside_castle_seg7_trajectory_mips_3[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
// 0x07078FA8 - 0x07078FD4
|
// 0x07078FA8 - 0x07078FD4
|
||||||
static const Trajectory inside_castle_seg7_trajectory_mips_4[] = {
|
const Trajectory inside_castle_seg7_trajectory_mips_4[] = {
|
||||||
TRAJECTORY_POS(0, /*pos*/ -3005, -1197, -1874),
|
TRAJECTORY_POS(0, /*pos*/ -3005, -1197, -1874),
|
||||||
TRAJECTORY_POS(1, /*pos*/ -2967, -1279, -2582),
|
TRAJECTORY_POS(1, /*pos*/ -2967, -1279, -2582),
|
||||||
TRAJECTORY_POS(2, /*pos*/ -2559, -1279, -3043),
|
TRAJECTORY_POS(2, /*pos*/ -2559, -1279, -3043),
|
||||||
|
|
@ -49,14 +49,14 @@ static const Trajectory inside_castle_seg7_trajectory_mips_4[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
// 0x07078FD4 - 0x07078FE8
|
// 0x07078FD4 - 0x07078FE8
|
||||||
static const Trajectory inside_castle_seg7_trajectory_mips_5[] = {
|
const Trajectory inside_castle_seg7_trajectory_mips_5[] = {
|
||||||
TRAJECTORY_POS(0, /*pos*/ -1387, -1254, -2541),
|
TRAJECTORY_POS(0, /*pos*/ -1387, -1254, -2541),
|
||||||
TRAJECTORY_POS(1, /*pos*/ -1541, -1177, -1446),
|
TRAJECTORY_POS(1, /*pos*/ -1541, -1177, -1446),
|
||||||
TRAJECTORY_END(),
|
TRAJECTORY_END(),
|
||||||
};
|
};
|
||||||
|
|
||||||
// 0x07078FE8 - 0x07079004
|
// 0x07078FE8 - 0x07079004
|
||||||
static const Trajectory inside_castle_seg7_trajectory_mips_6[] = {
|
const Trajectory inside_castle_seg7_trajectory_mips_6[] = {
|
||||||
TRAJECTORY_POS(0, /*pos*/ -894, -1223, -1421),
|
TRAJECTORY_POS(0, /*pos*/ -894, -1223, -1421),
|
||||||
TRAJECTORY_POS(1, /*pos*/ -306, -1279, -1601),
|
TRAJECTORY_POS(1, /*pos*/ -306, -1279, -1601),
|
||||||
TRAJECTORY_POS(2, /*pos*/ -192, -1279, -2196),
|
TRAJECTORY_POS(2, /*pos*/ -192, -1279, -2196),
|
||||||
|
|
@ -64,7 +64,7 @@ static const Trajectory inside_castle_seg7_trajectory_mips_6[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
// 0x07079004 - 0x07079020
|
// 0x07079004 - 0x07079020
|
||||||
static const Trajectory inside_castle_seg7_trajectory_mips_7[] = {
|
const Trajectory inside_castle_seg7_trajectory_mips_7[] = {
|
||||||
TRAJECTORY_POS(0, /*pos*/ -187, -1279, -1662),
|
TRAJECTORY_POS(0, /*pos*/ -187, -1279, -1662),
|
||||||
TRAJECTORY_POS(1, /*pos*/ -805, -1238, -1406),
|
TRAJECTORY_POS(1, /*pos*/ -805, -1238, -1406),
|
||||||
TRAJECTORY_POS(2, /*pos*/ -1549, -1177, -1446),
|
TRAJECTORY_POS(2, /*pos*/ -1549, -1177, -1446),
|
||||||
|
|
@ -72,7 +72,7 @@ static const Trajectory inside_castle_seg7_trajectory_mips_7[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
// 0x07079020 - 0x07079044
|
// 0x07079020 - 0x07079044
|
||||||
static const Trajectory inside_castle_seg7_trajectory_mips_8[] = {
|
const Trajectory inside_castle_seg7_trajectory_mips_8[] = {
|
||||||
TRAJECTORY_POS(0, /*pos*/ -1092, -1279, -3188),
|
TRAJECTORY_POS(0, /*pos*/ -1092, -1279, -3188),
|
||||||
TRAJECTORY_POS(1, /*pos*/ -593, -1279, -3175),
|
TRAJECTORY_POS(1, /*pos*/ -593, -1279, -3175),
|
||||||
TRAJECTORY_POS(2, /*pos*/ -200, -1279, -2940),
|
TRAJECTORY_POS(2, /*pos*/ -200, -1279, -2940),
|
||||||
|
|
@ -81,19 +81,10 @@ static const Trajectory inside_castle_seg7_trajectory_mips_8[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
// 0x07079044 - 0x07079068
|
// 0x07079044 - 0x07079068
|
||||||
static const Trajectory inside_castle_seg7_trajectory_mips_9[] = {
|
const Trajectory inside_castle_seg7_trajectory_mips_9[] = {
|
||||||
TRAJECTORY_POS(0, /*pos*/ -214, -1279, -2432),
|
TRAJECTORY_POS(0, /*pos*/ -214, -1279, -2432),
|
||||||
TRAJECTORY_POS(1, /*pos*/ -160, -1283, -2900),
|
TRAJECTORY_POS(1, /*pos*/ -160, -1283, -2900),
|
||||||
TRAJECTORY_POS(2, /*pos*/ -640, -1283, -3220),
|
TRAJECTORY_POS(2, /*pos*/ -640, -1283, -3220),
|
||||||
TRAJECTORY_POS(3, /*pos*/ -1469, -1279, -3108),
|
TRAJECTORY_POS(3, /*pos*/ -1469, -1279, -3108),
|
||||||
TRAJECTORY_END(),
|
TRAJECTORY_END(),
|
||||||
};
|
};
|
||||||
|
|
||||||
// 0x07079068 - 0x07079090
|
|
||||||
const Trajectory *const inside_castle_seg7_trajectory_mips[] = {
|
|
||||||
inside_castle_seg7_trajectory_mips_0, inside_castle_seg7_trajectory_mips_1,
|
|
||||||
inside_castle_seg7_trajectory_mips_2, inside_castle_seg7_trajectory_mips_3,
|
|
||||||
inside_castle_seg7_trajectory_mips_4, inside_castle_seg7_trajectory_mips_5,
|
|
||||||
inside_castle_seg7_trajectory_mips_6, inside_castle_seg7_trajectory_mips_7,
|
|
||||||
inside_castle_seg7_trajectory_mips_8, inside_castle_seg7_trajectory_mips_9,
|
|
||||||
};
|
|
||||||
|
|
|
||||||
|
|
@ -147,9 +147,18 @@ extern const u8 inside_castle_seg7_area_3_rooms[];
|
||||||
extern const Collision inside_castle_seg7_collision_floor_trap[];
|
extern const Collision inside_castle_seg7_collision_floor_trap[];
|
||||||
extern const Collision inside_castle_seg7_collision_star_door[];
|
extern const Collision inside_castle_seg7_collision_star_door[];
|
||||||
extern const Collision inside_castle_seg7_collision_water_level_pillar[];
|
extern const Collision inside_castle_seg7_collision_water_level_pillar[];
|
||||||
extern const Trajectory *const inside_castle_seg7_trajectory_mips[];
|
|
||||||
extern const struct MovtexQuadCollection inside_castle_movtex_green_room_water[];
|
extern const struct MovtexQuadCollection inside_castle_movtex_green_room_water[];
|
||||||
extern const struct MovtexQuadCollection inside_castle_movtex_moat_water[];
|
extern const struct MovtexQuadCollection inside_castle_movtex_moat_water[];
|
||||||
|
extern const Trajectory inside_castle_seg7_trajectory_mips_0[];
|
||||||
|
extern const Trajectory inside_castle_seg7_trajectory_mips_1[];
|
||||||
|
extern const Trajectory inside_castle_seg7_trajectory_mips_2[];
|
||||||
|
extern const Trajectory inside_castle_seg7_trajectory_mips_3[];
|
||||||
|
extern const Trajectory inside_castle_seg7_trajectory_mips_4[];
|
||||||
|
extern const Trajectory inside_castle_seg7_trajectory_mips_5[];
|
||||||
|
extern const Trajectory inside_castle_seg7_trajectory_mips_6[];
|
||||||
|
extern const Trajectory inside_castle_seg7_trajectory_mips_7[];
|
||||||
|
extern const Trajectory inside_castle_seg7_trajectory_mips_8[];
|
||||||
|
extern const Trajectory inside_castle_seg7_trajectory_mips_9[];
|
||||||
|
|
||||||
// script
|
// script
|
||||||
extern const LevelScript level_castle_inside_entry[];
|
extern const LevelScript level_castle_inside_entry[];
|
||||||
|
|
|
||||||
|
|
@ -55,15 +55,15 @@ void bowling_ball_set_hitbox(void) {
|
||||||
void bowling_ball_set_waypoints(void) {
|
void bowling_ball_set_waypoints(void) {
|
||||||
switch (o->oBehParams2ndByte) {
|
switch (o->oBehParams2ndByte) {
|
||||||
case BBALL_BP_STYPE_BOB_UPPER:
|
case BBALL_BP_STYPE_BOB_UPPER:
|
||||||
o->oPathedStartWaypoint = segmented_to_virtual(bob_seg7_metal_ball_path0);
|
o->oPathedStartWaypoint = segmented_to_virtual(gBehaviorValues.trajectories.BowlingBallBobTrajectory);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case BBALL_BP_STYPE_TTM:
|
case BBALL_BP_STYPE_TTM:
|
||||||
o->oPathedStartWaypoint = segmented_to_virtual(ttm_seg7_trajectory_070170A0);
|
o->oPathedStartWaypoint = segmented_to_virtual(gBehaviorValues.trajectories.BowlingBallTtmTrajectory);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case BBALL_BP_STYPE_BOB_LOWER:
|
case BBALL_BP_STYPE_BOB_LOWER:
|
||||||
o->oPathedStartWaypoint = segmented_to_virtual(bob_seg7_metal_ball_path1);
|
o->oPathedStartWaypoint = segmented_to_virtual(gBehaviorValues.trajectories.BowlingBallBob2Trajectory);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case BBALL_BP_STYPE_THI_LARGE:
|
case BBALL_BP_STYPE_THI_LARGE:
|
||||||
|
|
|
||||||
|
|
@ -53,16 +53,14 @@ static u8 sKoopaShelledAttackHandlers[] = {
|
||||||
struct KoopaTheQuickProperties {
|
struct KoopaTheQuickProperties {
|
||||||
s16 initText;
|
s16 initText;
|
||||||
s16 winText;
|
s16 winText;
|
||||||
void const *path;
|
|
||||||
Vec3s starPos;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Properties for the BoB race and the THI race.
|
* Properties for the BoB race and the THI race.
|
||||||
*/
|
*/
|
||||||
static struct KoopaTheQuickProperties sKoopaTheQuickProperties[] = {
|
static struct KoopaTheQuickProperties sKoopaTheQuickProperties[] = {
|
||||||
{ DIALOG_005, DIALOG_007, bob_seg7_trajectory_koopa, { 3030, 4500, -4600 } },
|
{ DIALOG_005, DIALOG_007 },
|
||||||
{ DIALOG_009, DIALOG_031, thi_seg7_trajectory_koopa, { 7100, -1300, -6000 } }
|
{ DIALOG_009, DIALOG_031 }
|
||||||
};
|
};
|
||||||
|
|
||||||
static u32 koopaPathedStartWaypoint = 0;
|
static u32 koopaPathedStartWaypoint = 0;
|
||||||
|
|
@ -70,14 +68,18 @@ static u32 koopaPathedPrevWaypoint = 0;
|
||||||
static u32 koopaShotFromCannon = 0;
|
static u32 koopaShotFromCannon = 0;
|
||||||
|
|
||||||
static void bhv_koopa_the_quick_on_received_post(UNUSED u8 fromLocalIndex) {
|
static void bhv_koopa_the_quick_on_received_post(UNUSED u8 fromLocalIndex) {
|
||||||
void* path = segmented_to_virtual(sKoopaTheQuickProperties[o->oKoopaTheQuickRaceIndex].path);
|
void* path = (o->oKoopaTheQuickRaceIndex == 0)
|
||||||
|
? (void*) gBehaviorValues.trajectories.KoopaBobTrajectory
|
||||||
|
: (void*) gBehaviorValues.trajectories.KoopaThiTrajectory;
|
||||||
o->oPathedStartWaypoint = (struct Waypoint*)path + koopaPathedStartWaypoint;
|
o->oPathedStartWaypoint = (struct Waypoint*)path + koopaPathedStartWaypoint;
|
||||||
o->oPathedPrevWaypoint = (struct Waypoint*)path + koopaPathedPrevWaypoint;
|
o->oPathedPrevWaypoint = (struct Waypoint*)path + koopaPathedPrevWaypoint;
|
||||||
gMarioShotFromCannon = koopaShotFromCannon;
|
gMarioShotFromCannon = koopaShotFromCannon;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void bhv_koopa_the_quick_on_sent_pre(void) {
|
static void bhv_koopa_the_quick_on_sent_pre(void) {
|
||||||
void* path = segmented_to_virtual(sKoopaTheQuickProperties[o->oKoopaTheQuickRaceIndex].path);
|
void* path = (o->oKoopaTheQuickRaceIndex == 0)
|
||||||
|
? (void*) gBehaviorValues.trajectories.KoopaBobTrajectory
|
||||||
|
: (void*) gBehaviorValues.trajectories.KoopaThiTrajectory;
|
||||||
koopaPathedStartWaypoint = ((void*)o->oPathedStartWaypoint - path) / sizeof(struct Waypoint*);
|
koopaPathedStartWaypoint = ((void*)o->oPathedStartWaypoint - path) / sizeof(struct Waypoint*);
|
||||||
koopaPathedPrevWaypoint = ((void*)o->oPathedPrevWaypoint - path) / sizeof(struct Waypoint*);
|
koopaPathedPrevWaypoint = ((void*)o->oPathedPrevWaypoint - path) / sizeof(struct Waypoint*);
|
||||||
koopaShotFromCannon = gMarioShotFromCannon;
|
koopaShotFromCannon = gMarioShotFromCannon;
|
||||||
|
|
@ -638,8 +640,9 @@ static void koopa_the_quick_act_show_init_text(void) {
|
||||||
o->oForwardVel = 0.0f;
|
o->oForwardVel = 0.0f;
|
||||||
|
|
||||||
o->parentObj = cur_obj_nearest_object_with_behavior(bhvKoopaRaceEndpoint);
|
o->parentObj = cur_obj_nearest_object_with_behavior(bhvKoopaRaceEndpoint);
|
||||||
o->oPathedStartWaypoint = o->oPathedPrevWaypoint =
|
o->oPathedStartWaypoint = o->oPathedPrevWaypoint = (o->oKoopaTheQuickRaceIndex == 0)
|
||||||
segmented_to_virtual(sKoopaTheQuickProperties[o->oKoopaTheQuickRaceIndex].path);
|
? (struct Waypoint*) gBehaviorValues.trajectories.KoopaBobTrajectory
|
||||||
|
: (struct Waypoint*) gBehaviorValues.trajectories.KoopaThiTrajectory;
|
||||||
|
|
||||||
o->oKoopaTurningAwayFromWall = FALSE;
|
o->oKoopaTurningAwayFromWall = FALSE;
|
||||||
o->oFlags |= OBJ_FLAG_ACTIVE_FROM_AFAR;
|
o->oFlags |= OBJ_FLAG_ACTIVE_FROM_AFAR;
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,19 @@
|
||||||
* Behavior for MIPS (everyone's favorite yellow rabbit).
|
* Behavior for MIPS (everyone's favorite yellow rabbit).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
static const Trajectory** sMipsPaths[] = {
|
||||||
|
&gBehaviorValues.trajectories.MipsTrajectory,
|
||||||
|
&gBehaviorValues.trajectories.Mips2Trajectory,
|
||||||
|
&gBehaviorValues.trajectories.Mips3Trajectory,
|
||||||
|
&gBehaviorValues.trajectories.Mips4Trajectory,
|
||||||
|
&gBehaviorValues.trajectories.Mips5Trajectory,
|
||||||
|
&gBehaviorValues.trajectories.Mips6Trajectory,
|
||||||
|
&gBehaviorValues.trajectories.Mips7Trajectory,
|
||||||
|
&gBehaviorValues.trajectories.Mips8Trajectory,
|
||||||
|
&gBehaviorValues.trajectories.Mips9Trajectory,
|
||||||
|
&gBehaviorValues.trajectories.Mips10Trajectory,
|
||||||
|
};
|
||||||
|
|
||||||
static u32 mipsPrevHeldState = 0;
|
static u32 mipsPrevHeldState = 0;
|
||||||
|
|
||||||
static void bhv_mips_on_received_pre(UNUSED u8 fromLocalIndex) {
|
static void bhv_mips_on_received_pre(UNUSED u8 fromLocalIndex) {
|
||||||
|
|
@ -77,16 +90,13 @@ s16 bhv_mips_find_furthest_waypoint_to_mario(void) {
|
||||||
s16 furthestWaypointIndex = -1;
|
s16 furthestWaypointIndex = -1;
|
||||||
f32 furthestWaypointDistance = -10000.0f;
|
f32 furthestWaypointDistance = -10000.0f;
|
||||||
f32 distanceToMario;
|
f32 distanceToMario;
|
||||||
struct Waypoint **pathBase;
|
|
||||||
struct Waypoint *waypoint;
|
struct Waypoint *waypoint;
|
||||||
|
|
||||||
pathBase = segmented_to_virtual(&inside_castle_seg7_trajectory_mips);
|
|
||||||
|
|
||||||
struct Object* player = nearest_player_to_object(o);
|
struct Object* player = nearest_player_to_object(o);
|
||||||
|
|
||||||
// For each waypoint in MIPS path...
|
// For each waypoint in MIPS path...
|
||||||
for (i = 0; i < 10; i++) {
|
for (i = 0; i < 10; i++) {
|
||||||
waypoint = segmented_to_virtual(pathBase[i]);
|
waypoint = segmented_to_virtual(*sMipsPaths[i]);
|
||||||
x = waypoint->pos[0];
|
x = waypoint->pos[0];
|
||||||
y = waypoint->pos[1];
|
y = waypoint->pos[1];
|
||||||
z = waypoint->pos[2];
|
z = waypoint->pos[2];
|
||||||
|
|
@ -136,12 +146,12 @@ void bhv_mips_act_wait_for_nearby_mario(void) {
|
||||||
void bhv_mips_act_follow_path(void) {
|
void bhv_mips_act_follow_path(void) {
|
||||||
s16 collisionFlags = 0;
|
s16 collisionFlags = 0;
|
||||||
s32 followStatus = 0;
|
s32 followStatus = 0;
|
||||||
struct Waypoint **pathBase;
|
struct Waypoint ***pathBase;
|
||||||
struct Waypoint *waypoint;
|
struct Waypoint *waypoint;
|
||||||
|
|
||||||
// Retrieve current waypoint.
|
// Retrieve current waypoint.
|
||||||
pathBase = segmented_to_virtual(&inside_castle_seg7_trajectory_mips);
|
pathBase = segmented_to_virtual(sMipsPaths);
|
||||||
waypoint = segmented_to_virtual(*(pathBase + o->oMipsStartWaypointIndex));
|
waypoint = segmented_to_virtual(*(*pathBase + o->oMipsStartWaypointIndex));
|
||||||
|
|
||||||
// Set start waypoint and follow the path from there.
|
// Set start waypoint and follow the path from there.
|
||||||
o->oPathedStartWaypoint = waypoint;
|
o->oPathedStartWaypoint = waypoint;
|
||||||
|
|
|
||||||
|
|
@ -18,10 +18,16 @@ static void const *sPlatformOnTrackCollisionModels[] = {
|
||||||
/**
|
/**
|
||||||
* Paths for the different instances of these platforms.
|
* Paths for the different instances of these platforms.
|
||||||
*/
|
*/
|
||||||
static void const *sPlatformOnTrackPaths[] = {
|
static const Trajectory** sPlatformOnTrackPaths[] = {
|
||||||
rr_seg7_trajectory_0702EC3C, rr_seg7_trajectory_0702ECC0, ccm_seg7_trajectory_0701669C,
|
&gBehaviorValues.trajectories.PlatformRrTrajectory,
|
||||||
bitfs_seg7_trajectory_070159AC, hmc_seg7_trajectory_0702B86C, lll_seg7_trajectory_0702856C,
|
&gBehaviorValues.trajectories.PlatformRr2Trajectory,
|
||||||
lll_seg7_trajectory_07028660, rr_seg7_trajectory_0702ED9C, rr_seg7_trajectory_0702EEE0,
|
&gBehaviorValues.trajectories.PlatformCcmTrajectory,
|
||||||
|
&gBehaviorValues.trajectories.PlatformBitfsTrajectory,
|
||||||
|
&gBehaviorValues.trajectories.PlatformHmcTrajectory,
|
||||||
|
&gBehaviorValues.trajectories.PlatformLllTrajectory,
|
||||||
|
&gBehaviorValues.trajectories.PlatformLll2Trajectory,
|
||||||
|
&gBehaviorValues.trajectories.PlatformRr3Trajectory,
|
||||||
|
&gBehaviorValues.trajectories.PlatformRr4Trajectory,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -90,7 +96,7 @@ void bhv_platform_on_track_init(void) {
|
||||||
o->collisionData =
|
o->collisionData =
|
||||||
segmented_to_virtual(sPlatformOnTrackCollisionModels[o->oPlatformOnTrackType]);
|
segmented_to_virtual(sPlatformOnTrackCollisionModels[o->oPlatformOnTrackType]);
|
||||||
|
|
||||||
o->oPlatformOnTrackStartWaypoint = segmented_to_virtual(sPlatformOnTrackPaths[pathIndex]);
|
o->oPlatformOnTrackStartWaypoint = segmented_to_virtual(*sPlatformOnTrackPaths[pathIndex]);
|
||||||
|
|
||||||
o->oPlatformOnTrackIsNotHMC = pathIndex - 4;
|
o->oPlatformOnTrackIsNotHMC = pathIndex - 4;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,13 +13,13 @@ static u32 penguinPathedStartWaypoint = 0;
|
||||||
static u32 penguinPathedPrevWaypoint = 0;
|
static u32 penguinPathedPrevWaypoint = 0;
|
||||||
|
|
||||||
static void bhv_racing_penguin_the_quick_on_received_post(UNUSED u8 fromLocalIndex) {
|
static void bhv_racing_penguin_the_quick_on_received_post(UNUSED u8 fromLocalIndex) {
|
||||||
void* path = segmented_to_virtual(ccm_seg7_trajectory_penguin_race);
|
void* path = segmented_to_virtual(gBehaviorValues.trajectories.RacingPenguinTrajectory);
|
||||||
o->oPathedStartWaypoint = (struct Waypoint*)path + penguinPathedStartWaypoint;
|
o->oPathedStartWaypoint = (struct Waypoint*)path + penguinPathedStartWaypoint;
|
||||||
o->oPathedPrevWaypoint = (struct Waypoint*)path + penguinPathedPrevWaypoint;
|
o->oPathedPrevWaypoint = (struct Waypoint*)path + penguinPathedPrevWaypoint;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void bhv_racing_penguin_the_quick_on_sent_pre(void) {
|
static void bhv_racing_penguin_the_quick_on_sent_pre(void) {
|
||||||
void* path = segmented_to_virtual(ccm_seg7_trajectory_penguin_race);
|
void* path = segmented_to_virtual(gBehaviorValues.trajectories.RacingPenguinTrajectory);
|
||||||
penguinPathedStartWaypoint = ((void*)o->oPathedStartWaypoint - path) / sizeof(struct Waypoint*);
|
penguinPathedStartWaypoint = ((void*)o->oPathedStartWaypoint - path) / sizeof(struct Waypoint*);
|
||||||
penguinPathedPrevWaypoint = ((void*)o->oPathedPrevWaypoint - path) / sizeof(struct Waypoint*);
|
penguinPathedPrevWaypoint = ((void*)o->oPathedPrevWaypoint - path) / sizeof(struct Waypoint*);
|
||||||
}
|
}
|
||||||
|
|
@ -105,7 +105,7 @@ static void racing_penguin_act_show_init_text(void) {
|
||||||
child->parentObj = o;
|
child->parentObj = o;
|
||||||
|
|
||||||
o->oPathedStartWaypoint = o->oPathedPrevWaypoint =
|
o->oPathedStartWaypoint = o->oPathedPrevWaypoint =
|
||||||
segmented_to_virtual(ccm_seg7_trajectory_penguin_race);
|
segmented_to_virtual(gBehaviorValues.trajectories.RacingPenguinTrajectory);
|
||||||
o->oPathedPrevWaypointFlags = 0;
|
o->oPathedPrevWaypointFlags = 0;
|
||||||
|
|
||||||
o->oAction = RACING_PENGUIN_ACT_PREPARE_FOR_RACE;
|
o->oAction = RACING_PENGUIN_ACT_PREPARE_FOR_RACE;
|
||||||
|
|
@ -141,7 +141,7 @@ static void racing_penguin_act_race(void) {
|
||||||
child = cur_obj_nearest_object_with_behavior(bhvPenguinRaceShortcutCheck);
|
child = cur_obj_nearest_object_with_behavior(bhvPenguinRaceShortcutCheck);
|
||||||
child->parentObj = o;
|
child->parentObj = o;
|
||||||
|
|
||||||
o->oPathedStartWaypoint = o->oPathedPrevWaypoint = segmented_to_virtual(ccm_seg7_trajectory_penguin_race);
|
o->oPathedStartWaypoint = o->oPathedPrevWaypoint = segmented_to_virtual(gBehaviorValues.trajectories.RacingPenguinTrajectory);
|
||||||
o->oPathedPrevWaypointFlags = 0;
|
o->oPathedPrevWaypointFlags = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,7 @@ void snowmans_bottom_act_1(void) {
|
||||||
s32 sp20 = 0;
|
s32 sp20 = 0;
|
||||||
UNUSED s16 sp1E;
|
UNUSED s16 sp1E;
|
||||||
|
|
||||||
o->oPathedStartWaypoint = segmented_to_virtual(&ccm_seg7_trajectory_snowman);
|
o->oPathedStartWaypoint = segmented_to_virtual(gBehaviorValues.trajectories.SnowmanHeadTrajectory);
|
||||||
sp26 = object_step_without_floor_orient();
|
sp26 = object_step_without_floor_orient();
|
||||||
sp20 = cur_obj_follow_path(sp20);
|
sp20 = cur_obj_follow_path(sp20);
|
||||||
o->oSnowmansBottomUnkF8 = o->oPathedTargetYaw;
|
o->oSnowmansBottomUnkF8 = o->oPathedTargetYaw;
|
||||||
|
|
|
||||||
|
|
@ -14,14 +14,14 @@ struct ObjectHitbox sUnagiHitbox = {
|
||||||
|
|
||||||
void bhv_unagi_init(void) {
|
void bhv_unagi_init(void) {
|
||||||
if (o->oBehParams2ndByte != 1) {
|
if (o->oBehParams2ndByte != 1) {
|
||||||
o->oPathedStartWaypoint = segmented_to_virtual(jrb_seg7_trajectory_unagi_1);
|
o->oPathedStartWaypoint = segmented_to_virtual(gBehaviorValues.trajectories.UnagiTrajectory);
|
||||||
if (o->oBehParams2ndByte == 0) {
|
if (o->oBehParams2ndByte == 0) {
|
||||||
o->oFaceAnglePitch = -7600;
|
o->oFaceAnglePitch = -7600;
|
||||||
} else {
|
} else {
|
||||||
o->oAction = 1;
|
o->oAction = 1;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
o->oPathedStartWaypoint = segmented_to_virtual(jrb_seg7_trajectory_unagi_2);
|
o->oPathedStartWaypoint = segmented_to_virtual(gBehaviorValues.trajectories.Unagi2Trajectory);
|
||||||
o->oAction = 3;
|
o->oAction = 3;
|
||||||
o->oAnimState = 1;
|
o->oAnimState = 1;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,42 @@
|
||||||
#include "hardcoded.h"
|
#include "hardcoded.h"
|
||||||
|
|
||||||
|
#include "levels/bbh/header.h"
|
||||||
|
#include "levels/bitdw/header.h"
|
||||||
|
#include "levels/bitfs/header.h"
|
||||||
|
#include "levels/bits/header.h"
|
||||||
|
#include "levels/bob/header.h"
|
||||||
|
#include "levels/bowser_1/header.h"
|
||||||
|
#include "levels/bowser_2/header.h"
|
||||||
|
#include "levels/bowser_2/header.h"
|
||||||
|
#include "levels/bowser_3/header.h"
|
||||||
|
#include "levels/bowser_3/header.h"
|
||||||
|
#include "levels/castle_courtyard/header.h"
|
||||||
|
#include "levels/castle_grounds/header.h"
|
||||||
|
#include "levels/castle_inside/header.h"
|
||||||
|
#include "levels/ccm/header.h"
|
||||||
|
#include "levels/cotmc/header.h"
|
||||||
|
#include "levels/ddd/header.h"
|
||||||
|
#include "levels/hmc/header.h"
|
||||||
|
#include "levels/jrb/header.h"
|
||||||
|
#include "levels/lll/header.h"
|
||||||
|
#include "levels/pss/header.h"
|
||||||
|
#include "levels/rr/header.h"
|
||||||
|
#include "levels/sa/header.h"
|
||||||
|
#include "levels/sl/header.h"
|
||||||
|
#include "levels/ssl/header.h"
|
||||||
|
#include "levels/thi/header.h"
|
||||||
|
#include "levels/totwc/header.h"
|
||||||
|
#include "levels/ttc/header.h"
|
||||||
|
#include "levels/ttm/header.h"
|
||||||
|
#include "levels/vcutm/header.h"
|
||||||
|
#include "levels/wdw/header.h"
|
||||||
|
#include "levels/wf/header.h"
|
||||||
|
#include "levels/wmotr/header.h"
|
||||||
|
|
||||||
|
////////////
|
||||||
|
// Levels //
|
||||||
|
////////////
|
||||||
|
|
||||||
struct LevelValues gLevelValues = {
|
struct LevelValues gLevelValues = {
|
||||||
.entryLevel = LEVEL_CASTLE_GROUNDS,
|
.entryLevel = LEVEL_CASTLE_GROUNDS,
|
||||||
.starPositions = {
|
.starPositions = {
|
||||||
|
|
@ -35,3 +72,40 @@ struct LevelValues gLevelValues = {
|
||||||
.JetstreamRingStarPos = { 3400.0f, -3200.0f, -500.0f },
|
.JetstreamRingStarPos = { 3400.0f, -3200.0f, -500.0f },
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
///////////////
|
||||||
|
// Behaviors //
|
||||||
|
///////////////
|
||||||
|
|
||||||
|
struct BehaviorValues gBehaviorValues = {
|
||||||
|
.trajectories = {
|
||||||
|
.KoopaBobTrajectory = bob_seg7_trajectory_koopa,
|
||||||
|
.KoopaThiTrajectory = thi_seg7_trajectory_koopa,
|
||||||
|
.UnagiTrajectory = jrb_seg7_trajectory_unagi_1,
|
||||||
|
.Unagi2Trajectory = jrb_seg7_trajectory_unagi_2,
|
||||||
|
.SnowmanHeadTrajectory = ccm_seg7_trajectory_snowman,
|
||||||
|
.RacingPenguinTrajectory = ccm_seg7_trajectory_penguin_race,
|
||||||
|
.BowlingBallBobTrajectory = bob_seg7_metal_ball_path0,
|
||||||
|
.BowlingBallBob2Trajectory = bob_seg7_metal_ball_path1,
|
||||||
|
.BowlingBallTtmTrajectory = ttm_seg7_trajectory_070170A0,
|
||||||
|
.MipsTrajectory = inside_castle_seg7_trajectory_mips_0,
|
||||||
|
.Mips2Trajectory = inside_castle_seg7_trajectory_mips_1,
|
||||||
|
.Mips3Trajectory = inside_castle_seg7_trajectory_mips_2,
|
||||||
|
.Mips4Trajectory = inside_castle_seg7_trajectory_mips_3,
|
||||||
|
.Mips5Trajectory = inside_castle_seg7_trajectory_mips_4,
|
||||||
|
.Mips6Trajectory = inside_castle_seg7_trajectory_mips_5,
|
||||||
|
.Mips7Trajectory = inside_castle_seg7_trajectory_mips_6,
|
||||||
|
.Mips8Trajectory = inside_castle_seg7_trajectory_mips_7,
|
||||||
|
.Mips9Trajectory = inside_castle_seg7_trajectory_mips_8,
|
||||||
|
.Mips10Trajectory = inside_castle_seg7_trajectory_mips_9,
|
||||||
|
.PlatformRrTrajectory = rr_seg7_trajectory_0702EC3C,
|
||||||
|
.PlatformRr2Trajectory = rr_seg7_trajectory_0702ECC0,
|
||||||
|
.PlatformRr3Trajectory = rr_seg7_trajectory_0702ED9C,
|
||||||
|
.PlatformRr4Trajectory = rr_seg7_trajectory_0702EEE0,
|
||||||
|
.PlatformCcmTrajectory = ccm_seg7_trajectory_0701669C,
|
||||||
|
.PlatformBitfsTrajectory = bitfs_seg7_trajectory_070159AC,
|
||||||
|
.PlatformHmcTrajectory = hmc_seg7_trajectory_0702B86C,
|
||||||
|
.PlatformLllTrajectory = lll_seg7_trajectory_0702856C,
|
||||||
|
.PlatformLll2Trajectory = lll_seg7_trajectory_07028660,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,10 @@
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
#include "level_table.h"
|
#include "level_table.h"
|
||||||
|
|
||||||
|
////////////
|
||||||
|
// Levels //
|
||||||
|
////////////
|
||||||
|
|
||||||
struct StarPositions {
|
struct StarPositions {
|
||||||
Vec3f KoopaBobStarPos;
|
Vec3f KoopaBobStarPos;
|
||||||
Vec3f KoopaThiStarPos;
|
Vec3f KoopaThiStarPos;
|
||||||
|
|
@ -38,4 +42,45 @@ struct LevelValues {
|
||||||
|
|
||||||
extern struct LevelValues gLevelValues;
|
extern struct LevelValues gLevelValues;
|
||||||
|
|
||||||
|
///////////////
|
||||||
|
// Behaviors //
|
||||||
|
///////////////
|
||||||
|
|
||||||
|
struct BehaviorTrajectories {
|
||||||
|
const Trajectory* KoopaBobTrajectory;
|
||||||
|
const Trajectory* KoopaThiTrajectory;
|
||||||
|
const Trajectory* UnagiTrajectory;
|
||||||
|
const Trajectory* Unagi2Trajectory;
|
||||||
|
const Trajectory* SnowmanHeadTrajectory;
|
||||||
|
const Trajectory* RacingPenguinTrajectory;
|
||||||
|
const Trajectory* BowlingBallBobTrajectory;
|
||||||
|
const Trajectory* BowlingBallBob2Trajectory;
|
||||||
|
const Trajectory* BowlingBallTtmTrajectory;
|
||||||
|
const Trajectory* MipsTrajectory;
|
||||||
|
const Trajectory* Mips2Trajectory;
|
||||||
|
const Trajectory* Mips3Trajectory;
|
||||||
|
const Trajectory* Mips4Trajectory;
|
||||||
|
const Trajectory* Mips5Trajectory;
|
||||||
|
const Trajectory* Mips6Trajectory;
|
||||||
|
const Trajectory* Mips7Trajectory;
|
||||||
|
const Trajectory* Mips8Trajectory;
|
||||||
|
const Trajectory* Mips9Trajectory;
|
||||||
|
const Trajectory* Mips10Trajectory;
|
||||||
|
const Trajectory* PlatformRrTrajectory;
|
||||||
|
const Trajectory* PlatformRr2Trajectory;
|
||||||
|
const Trajectory* PlatformRr3Trajectory;
|
||||||
|
const Trajectory* PlatformRr4Trajectory;
|
||||||
|
const Trajectory* PlatformCcmTrajectory;
|
||||||
|
const Trajectory* PlatformBitfsTrajectory;
|
||||||
|
const Trajectory* PlatformHmcTrajectory;
|
||||||
|
const Trajectory* PlatformLllTrajectory;
|
||||||
|
const Trajectory* PlatformLll2Trajectory;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct BehaviorValues {
|
||||||
|
struct BehaviorTrajectories trajectories;
|
||||||
|
};
|
||||||
|
|
||||||
|
extern struct BehaviorValues gBehaviorValues;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -75,9 +75,6 @@ s16 sPrevCheckMarioRoom = 0;
|
||||||
*/
|
*/
|
||||||
s8 sYoshiDead = FALSE;
|
s8 sYoshiDead = FALSE;
|
||||||
|
|
||||||
extern void *ccm_seg7_trajectory_snowman;
|
|
||||||
extern void *inside_castle_seg7_trajectory_mips;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Resets yoshi as spawned/despawned upon new file select.
|
* Resets yoshi as spawned/despawned upon new file select.
|
||||||
* Possibly a function with stubbed code.
|
* Possibly a function with stubbed code.
|
||||||
|
|
|
||||||
|
|
@ -361,22 +361,23 @@ static int smlua__get_field(lua_State* L) {
|
||||||
|
|
||||||
u8* p = ((u8*)(intptr_t)pointer) + data->valueOffset;
|
u8* p = ((u8*)(intptr_t)pointer) + data->valueOffset;
|
||||||
switch (data->valueType) {
|
switch (data->valueType) {
|
||||||
case LVT_BOOL: lua_pushboolean(L, *(u8* )p); break;
|
case LVT_BOOL: lua_pushboolean(L, *(u8* )p); break;
|
||||||
case LVT_U8: lua_pushinteger(L, *(u8* )p); break;
|
case LVT_U8: lua_pushinteger(L, *(u8* )p); break;
|
||||||
case LVT_U16: lua_pushinteger(L, *(u16*)p); break;
|
case LVT_U16: lua_pushinteger(L, *(u16*)p); break;
|
||||||
case LVT_U32: lua_pushinteger(L, *(u32*)p); break;
|
case LVT_U32: lua_pushinteger(L, *(u32*)p); break;
|
||||||
case LVT_S8: lua_pushinteger(L, *(s8* )p); break;
|
case LVT_S8: lua_pushinteger(L, *(s8* )p); break;
|
||||||
case LVT_S16: lua_pushinteger(L, *(s16*)p); break;
|
case LVT_S16: lua_pushinteger(L, *(s16*)p); break;
|
||||||
case LVT_S32: lua_pushinteger(L, *(s32*)p); break;
|
case LVT_S32: lua_pushinteger(L, *(s32*)p); break;
|
||||||
case LVT_F32: lua_pushnumber( L, *(f32*)p); break;
|
case LVT_F32: lua_pushnumber( L, *(f32*)p); break;
|
||||||
case LVT_COBJECT: smlua_push_object(L, data->lot, p); break;
|
case LVT_COBJECT: smlua_push_object(L, data->lot, p); break;
|
||||||
case LVT_COBJECT_P: smlua_push_object(L, data->lot, *(u8**)p); break;
|
case LVT_COBJECT_P: smlua_push_object(L, data->lot, *(u8**)p); break;
|
||||||
case LVT_STRING: lua_pushstring(L, (char*)p); break;
|
case LVT_STRING: lua_pushstring(L, (char*)p); break;
|
||||||
case LVT_STRING_P: lua_pushstring(L, *(char**)p); break;
|
case LVT_STRING_P: lua_pushstring(L, *(char**)p); break;
|
||||||
case LVT_BEHAVIORSCRIPT: lua_pushinteger(L, *(s32*)p); break;
|
case LVT_BEHAVIORSCRIPT: lua_pushinteger(L, *(s32*)p); break;
|
||||||
case LVT_OBJECTANIMPOINTER: lua_pushinteger(L, *(s32*)p); break;
|
case LVT_OBJECTANIMPOINTER: lua_pushinteger(L, *(s32*)p); break;
|
||||||
case LVT_COLLISION: lua_pushinteger(L, *(s32*)p); break;
|
case LVT_COLLISION: lua_pushinteger(L, *(s32*)p); break;
|
||||||
case LVT_LEVELSCRIPT: lua_pushinteger(L, *(s32*)p); break;
|
case LVT_LEVELSCRIPT: lua_pushinteger(L, *(s32*)p); break;
|
||||||
|
case LVT_TRAJECTORY: lua_pushinteger(L, *(s16*)p); break;
|
||||||
|
|
||||||
// pointers
|
// pointers
|
||||||
case LVT_U8_P:
|
case LVT_U8_P:
|
||||||
|
|
@ -390,6 +391,7 @@ static int smlua__get_field(lua_State* L) {
|
||||||
case LVT_OBJECTANIMPOINTER_P:
|
case LVT_OBJECTANIMPOINTER_P:
|
||||||
case LVT_COLLISION_P:
|
case LVT_COLLISION_P:
|
||||||
case LVT_LEVELSCRIPT_P:
|
case LVT_LEVELSCRIPT_P:
|
||||||
|
case LVT_TRAJECTORY_P:
|
||||||
smlua_push_pointer(L, data->valueType, *(u8**)p);
|
smlua_push_pointer(L, data->valueType, *(u8**)p);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
@ -571,6 +573,11 @@ void smlua_cobject_init_globals(void) {
|
||||||
lua_setglobal(L, "gLevelValues");
|
lua_setglobal(L, "gLevelValues");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
smlua_push_object(L, LOT_BEHAVIORVALUES, &gBehaviorValues);
|
||||||
|
lua_setglobal(L, "gBehaviorValues");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void smlua_cobject_init_per_file_globals(char* path) {
|
void smlua_cobject_init_per_file_globals(char* path) {
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,8 @@ enum LuaValueType {
|
||||||
LVT_COLLISION_P,
|
LVT_COLLISION_P,
|
||||||
LVT_LEVELSCRIPT,
|
LVT_LEVELSCRIPT,
|
||||||
LVT_LEVELSCRIPT_P,
|
LVT_LEVELSCRIPT_P,
|
||||||
|
LVT_TRAJECTORY,
|
||||||
|
LVT_TRAJECTORY_P,
|
||||||
LVT_LUAFUNCTION,
|
LVT_LUAFUNCTION,
|
||||||
LVT_POINTER,
|
LVT_POINTER,
|
||||||
LVT_MAX,
|
LVT_MAX,
|
||||||
|
|
|
||||||
|
|
@ -72,6 +72,43 @@ static struct LuaObjectField sAreaFields[LUA_AREA_FIELD_COUNT] = {
|
||||||
// { "whirlpools", LOT_???, offsetof(struct Area, whirlpools), false, LOT_??? }, <--- UNIMPLEMENTED
|
// { "whirlpools", LOT_???, offsetof(struct Area, whirlpools), false, LOT_??? }, <--- UNIMPLEMENTED
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define LUA_BEHAVIOR_TRAJECTORIES_FIELD_COUNT 28
|
||||||
|
static struct LuaObjectField sBehaviorTrajectoriesFields[LUA_BEHAVIOR_TRAJECTORIES_FIELD_COUNT] = {
|
||||||
|
{ "BowlingBallBob2Trajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, BowlingBallBob2Trajectory), true, LOT_POINTER },
|
||||||
|
{ "BowlingBallBobTrajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, BowlingBallBobTrajectory), true, LOT_POINTER },
|
||||||
|
{ "BowlingBallTtmTrajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, BowlingBallTtmTrajectory), true, LOT_POINTER },
|
||||||
|
{ "KoopaBobTrajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, KoopaBobTrajectory), true, LOT_POINTER },
|
||||||
|
{ "KoopaThiTrajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, KoopaThiTrajectory), true, LOT_POINTER },
|
||||||
|
{ "Mips10Trajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, Mips10Trajectory), true, LOT_POINTER },
|
||||||
|
{ "Mips2Trajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, Mips2Trajectory), true, LOT_POINTER },
|
||||||
|
{ "Mips3Trajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, Mips3Trajectory), true, LOT_POINTER },
|
||||||
|
{ "Mips4Trajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, Mips4Trajectory), true, LOT_POINTER },
|
||||||
|
{ "Mips5Trajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, Mips5Trajectory), true, LOT_POINTER },
|
||||||
|
{ "Mips6Trajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, Mips6Trajectory), true, LOT_POINTER },
|
||||||
|
{ "Mips7Trajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, Mips7Trajectory), true, LOT_POINTER },
|
||||||
|
{ "Mips8Trajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, Mips8Trajectory), true, LOT_POINTER },
|
||||||
|
{ "Mips9Trajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, Mips9Trajectory), true, LOT_POINTER },
|
||||||
|
{ "MipsTrajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, MipsTrajectory), true, LOT_POINTER },
|
||||||
|
{ "PlatformBitfsTrajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, PlatformBitfsTrajectory), true, LOT_POINTER },
|
||||||
|
{ "PlatformCcmTrajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, PlatformCcmTrajectory), true, LOT_POINTER },
|
||||||
|
{ "PlatformHmcTrajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, PlatformHmcTrajectory), true, LOT_POINTER },
|
||||||
|
{ "PlatformLll2Trajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, PlatformLll2Trajectory), true, LOT_POINTER },
|
||||||
|
{ "PlatformLllTrajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, PlatformLllTrajectory), true, LOT_POINTER },
|
||||||
|
{ "PlatformRr2Trajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, PlatformRr2Trajectory), true, LOT_POINTER },
|
||||||
|
{ "PlatformRr3Trajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, PlatformRr3Trajectory), true, LOT_POINTER },
|
||||||
|
{ "PlatformRr4Trajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, PlatformRr4Trajectory), true, LOT_POINTER },
|
||||||
|
{ "PlatformRrTrajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, PlatformRrTrajectory), true, LOT_POINTER },
|
||||||
|
{ "RacingPenguinTrajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, RacingPenguinTrajectory), true, LOT_POINTER },
|
||||||
|
{ "SnowmanHeadTrajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, SnowmanHeadTrajectory), true, LOT_POINTER },
|
||||||
|
{ "Unagi2Trajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, Unagi2Trajectory), true, LOT_POINTER },
|
||||||
|
{ "UnagiTrajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, UnagiTrajectory), true, LOT_POINTER },
|
||||||
|
};
|
||||||
|
|
||||||
|
#define LUA_BEHAVIOR_VALUES_FIELD_COUNT 1
|
||||||
|
static struct LuaObjectField sBehaviorValuesFields[LUA_BEHAVIOR_VALUES_FIELD_COUNT] = {
|
||||||
|
{ "trajectories", LVT_COBJECT, offsetof(struct BehaviorValues, trajectories), true, LOT_BEHAVIORTRAJECTORIES },
|
||||||
|
};
|
||||||
|
|
||||||
#define LUA_BULLY_COLLISION_DATA_FIELD_COUNT 6
|
#define LUA_BULLY_COLLISION_DATA_FIELD_COUNT 6
|
||||||
static struct LuaObjectField sBullyCollisionDataFields[LUA_BULLY_COLLISION_DATA_FIELD_COUNT] = {
|
static struct LuaObjectField sBullyCollisionDataFields[LUA_BULLY_COLLISION_DATA_FIELD_COUNT] = {
|
||||||
{ "conversionRatio", LVT_F32, offsetof(struct BullyCollisionData, conversionRatio), false, LOT_NONE },
|
{ "conversionRatio", LVT_F32, offsetof(struct BullyCollisionData, conversionRatio), false, LOT_NONE },
|
||||||
|
|
@ -1735,6 +1772,8 @@ struct LuaObjectTable sLuaObjectAutogenTable[LOT_AUTOGEN_MAX - LOT_AUTOGEN_MIN]
|
||||||
{ LOT_ANIMINFO, sAnimInfoFields, LUA_ANIM_INFO_FIELD_COUNT },
|
{ LOT_ANIMINFO, sAnimInfoFields, LUA_ANIM_INFO_FIELD_COUNT },
|
||||||
{ LOT_ANIMATION, sAnimationFields, LUA_ANIMATION_FIELD_COUNT },
|
{ LOT_ANIMATION, sAnimationFields, LUA_ANIMATION_FIELD_COUNT },
|
||||||
{ LOT_AREA, sAreaFields, LUA_AREA_FIELD_COUNT },
|
{ LOT_AREA, sAreaFields, LUA_AREA_FIELD_COUNT },
|
||||||
|
{ LOT_BEHAVIORTRAJECTORIES, sBehaviorTrajectoriesFields, LUA_BEHAVIOR_TRAJECTORIES_FIELD_COUNT },
|
||||||
|
{ LOT_BEHAVIORVALUES, sBehaviorValuesFields, LUA_BEHAVIOR_VALUES_FIELD_COUNT },
|
||||||
{ LOT_BULLYCOLLISIONDATA, sBullyCollisionDataFields, LUA_BULLY_COLLISION_DATA_FIELD_COUNT },
|
{ LOT_BULLYCOLLISIONDATA, sBullyCollisionDataFields, LUA_BULLY_COLLISION_DATA_FIELD_COUNT },
|
||||||
{ LOT_CAMERA, sCameraFields, LUA_CAMERA_FIELD_COUNT },
|
{ LOT_CAMERA, sCameraFields, LUA_CAMERA_FIELD_COUNT },
|
||||||
{ LOT_CAMERAFOVSTATUS, sCameraFOVStatusFields, LUA_CAMERA_FOVSTATUS_FIELD_COUNT },
|
{ LOT_CAMERAFOVSTATUS, sCameraFOVStatusFields, LUA_CAMERA_FOVSTATUS_FIELD_COUNT },
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,8 @@ enum LuaObjectAutogenType {
|
||||||
LOT_ANIMINFO,
|
LOT_ANIMINFO,
|
||||||
LOT_ANIMATION,
|
LOT_ANIMATION,
|
||||||
LOT_AREA,
|
LOT_AREA,
|
||||||
|
LOT_BEHAVIORTRAJECTORIES,
|
||||||
|
LOT_BEHAVIORVALUES,
|
||||||
LOT_BULLYCOLLISIONDATA,
|
LOT_BULLYCOLLISIONDATA,
|
||||||
LOT_CAMERA,
|
LOT_CAMERA,
|
||||||
LOT_CAMERAFOVSTATUS,
|
LOT_CAMERAFOVSTATUS,
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue