mirror of
https://github.com/zeldaret/oot
synced 2026-06-27 10:42:55 -04:00
Merge pull request #28 from Roman971/z_path.c
Rename/document some small files and Decompile z_path.c
This commit is contained in:
@@ -1,26 +0,0 @@
|
||||
#include <ultra64.h>
|
||||
#include <global.h>
|
||||
|
||||
GlobalContext* func_80026B00(void) {
|
||||
return D_80157DA0;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80026B00/func_80026B0C.s")
|
||||
|
||||
void func_80026C1C(u8* arg0) {
|
||||
arg0[0] = 0;
|
||||
arg0[1] = 0;
|
||||
arg0[2] = 0;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80026B00/func_80026C2C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80026B00/Effect_Add.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80026B00/func_80026E74.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80026B00/func_80026F70.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80026B00/func_8002709C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/code_80026B00/func_800271A8.s")
|
||||
@@ -0,0 +1,26 @@
|
||||
#include <ultra64.h>
|
||||
#include <global.h>
|
||||
|
||||
GlobalContext* func_80026B00(void) {
|
||||
return D_80157DA0;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_effect/func_80026B0C.s")
|
||||
|
||||
void func_80026C1C(u8* arg0) {
|
||||
arg0[0] = 0;
|
||||
arg0[1] = 0;
|
||||
arg0[2] = 0;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_effect/func_80026C2C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_effect/Effect_Add.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_effect/func_80026E74.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_effect/func_80026F70.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_effect/func_8002709C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_effect/func_800271A8.s")
|
||||
@@ -1,7 +1,7 @@
|
||||
#include <ultra64.h>
|
||||
#include <global.h>
|
||||
|
||||
u16 D_8011F3F0[60][9] = {
|
||||
u16 sReactionTextIds[60][9] = {
|
||||
{ 0x0000, 0x7124, 0x7127, 0x7126, 0x7125, 0x7127, 0x7124, 0x7125, 0x7127 },
|
||||
{ 0x0000, 0x7128, 0x7129, 0x7128, 0x7128, 0x7128, 0x7128, 0x712A, 0x712B },
|
||||
{ 0x0000, 0x7128, 0x712B, 0x7128, 0x7128, 0x7129, 0x7128, 0x712B, 0x7128 },
|
||||
@@ -64,7 +64,7 @@ u16 D_8011F3F0[60][9] = {
|
||||
{ 0x0000, 0x7104, 0x7105, 0x7107, 0x7105, 0x710C, 0x7105, 0x7107, 0x7107 },
|
||||
};
|
||||
|
||||
u16 func_8006C360(GlobalContext* globalCtx, u32 idx) {
|
||||
u8 mask = func_8008F080(globalCtx);
|
||||
return D_8011F3F0[idx][mask];
|
||||
u16 Text_GetFaceReaction(GlobalContext* globalCtx, u32 reactionSet) {
|
||||
u8 currentMask = func_8008F080(globalCtx);
|
||||
return sReactionTextIds[reactionSet][currentMask];
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
#include <ultra64.h>
|
||||
#include <global.h>
|
||||
|
||||
Path* Path_GetByIndex(GlobalContext* globalCtx, s16 index, s16 max) {
|
||||
Path* path;
|
||||
|
||||
if (index != max) {
|
||||
path = &globalCtx->setupPathList[index];
|
||||
} else {
|
||||
path = NULL;
|
||||
}
|
||||
|
||||
return path;
|
||||
}
|
||||
|
||||
f32 Path_OrientAndGetDistSq(Actor* actor, Path* path, s16 waypoint, s16* yaw) {
|
||||
f32 dx;
|
||||
f32 dz;
|
||||
Vec3s* pointPos;
|
||||
|
||||
if (path == NULL) {
|
||||
return -1.0;
|
||||
}
|
||||
|
||||
pointPos = SEGMENTED_TO_VIRTUAL(path->points);
|
||||
pointPos = &pointPos[waypoint];
|
||||
|
||||
dx = pointPos->x - actor->posRot.pos.x;
|
||||
dz = pointPos->z - actor->posRot.pos.z;
|
||||
|
||||
*yaw = Math_atan2f(dx, dz) * (32768 / M_PI);
|
||||
|
||||
return SQ(dx) + SQ(dz);
|
||||
}
|
||||
|
||||
void Path_CopyLastPoint(Path* path, Vec3f* dest) {
|
||||
Vec3s* pointPos;
|
||||
|
||||
if (path != NULL) {
|
||||
pointPos = &((Vec3s*)SEGMENTED_TO_VIRTUAL(path->points))[path->count - 1];
|
||||
|
||||
dest->x = pointPos->x;
|
||||
dest->y = pointPos->y;
|
||||
dest->z = pointPos->z;
|
||||
}
|
||||
}
|
||||
@@ -224,7 +224,7 @@ static s32 EnDog_Orient(EnDog* this, GlobalContext* globalCtx) {
|
||||
s16 targetYaw;
|
||||
f32 waypointDistSq;
|
||||
|
||||
waypointDistSq = func_8008E520(&this->actor, this->path, this->waypoint, &targetYaw);
|
||||
waypointDistSq = Path_OrientAndGetDistSq(&this->actor, this->path, this->waypoint, &targetYaw);
|
||||
Math_SmoothScaleMaxMinS(&this->actor.posRot.rot.y, targetYaw, 10, 1000, 1);
|
||||
|
||||
if ((waypointDistSq > 0.0f) && (waypointDistSq < 1000.0f)) {
|
||||
@@ -261,7 +261,7 @@ static void EnDog_Init(EnDog* this, GlobalContext* globalCtx) {
|
||||
Actor_SetScale(&this->actor, 0.0075f);
|
||||
this->waypoint = 0;
|
||||
this->actor.gravity = -1.0f;
|
||||
this->path = func_8008E4E0(globalCtx, (s16)((this->actor.params & 0x00F0) >> 4), 0xF);
|
||||
this->path = Path_GetByIndex(globalCtx, (this->actor.params & 0x00F0) >> 4, 0xF);
|
||||
|
||||
switch (globalCtx->sceneNum) {
|
||||
case SCENE_MARKET_NIGHT:
|
||||
|
||||
@@ -67,13 +67,13 @@ extern D_060005EC;
|
||||
extern D_06003DC0;
|
||||
|
||||
static void EnMs_SetOfferText(EnMs* this, GlobalContext* globalCtx) {
|
||||
this->actor.textId = func_8006C360(globalCtx, 0x1B);
|
||||
this->actor.textId = Text_GetFaceReaction(globalCtx, 0x1B);
|
||||
if (this->actor.textId == 0) {
|
||||
if (BEANS_BOUGHT >= 10) {
|
||||
this->actor.textId = 0x406B;
|
||||
return;
|
||||
} else {
|
||||
this->actor.textId = offerTextIds[BEANS_BOUGHT];
|
||||
}
|
||||
this->actor.textId = offerTextIds[BEANS_BOUGHT];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -335,7 +335,7 @@ s32 EnTk_Orient(EnTk* this, GlobalContext* globalCtx) {
|
||||
}
|
||||
|
||||
path = &globalCtx->setupPathList[0];
|
||||
point = SEGMENTED_TO_VIRTUAL(path->path);
|
||||
point = SEGMENTED_TO_VIRTUAL(path->points);
|
||||
point += this->currentWaypoint;
|
||||
|
||||
dx = point->x - this->actor.posRot.pos.x;
|
||||
@@ -359,7 +359,7 @@ s32 EnTk_Orient(EnTk* this, GlobalContext* globalCtx) {
|
||||
u16 func_80B1C54C(GlobalContext* globalCtx, Actor* a1) {
|
||||
u16 ret;
|
||||
|
||||
ret = func_8006C360(globalCtx, 14);
|
||||
ret = Text_GetFaceReaction(globalCtx, 14);
|
||||
if (ret != 0) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user