mirror of
https://github.com/zeldaret/oot.git
synced 2025-07-04 23:14:37 +00:00
Match and improve some non matchings (#254)
This commit is contained in:
parent
4e1fc875c3
commit
106f7a3f6a
12 changed files with 51 additions and 451 deletions
|
@ -3707,31 +3707,31 @@ void func_800344BC(Actor* actor, struct_80034A14_arg1* arg1, s16 arg2, s16 arg3,
|
|||
sp44 = Math_Vec3f_Yaw(&sp30, &arg1->unk_18);
|
||||
sp40 = Math_Vec3f_Yaw(&actor->posRot.pos, &arg1->unk_18) - actor->shape.rot.y;
|
||||
|
||||
temp1 = (sp40 < -arg2) ? -arg2 : ((sp40 > arg2) ? arg2 : sp40);
|
||||
temp1 = CLAMP(sp40, -arg2, arg2);
|
||||
Math_SmoothScaleMaxMinS(&arg1->unk_08.y, temp1, 6, 2000, 1);
|
||||
|
||||
sp40 = (ABS(sp40) >= 0x8000) ? 0 : ((sp40 >= 0) ? sp40 : -sp40);
|
||||
arg1->unk_08.y = ((arg1->unk_08.y < -sp40) ? -sp40 : ((arg1->unk_08.y > sp40) ? sp40 : arg1->unk_08.y));
|
||||
sp40 = (ABS(sp40) >= 0x8000) ? 0 : ABS(sp40);
|
||||
arg1->unk_08.y = CLAMP(arg1->unk_08.y, -sp40, sp40);
|
||||
|
||||
sp40 = sp40 - arg1->unk_08.y;
|
||||
|
||||
temp1 = (sp40 < -arg5) ? -arg5 : ((sp40 > arg5) ? arg5 : sp40);
|
||||
Math_SmoothScaleMaxMinS(&arg1->unk_08.z, temp1, 6, 2000, 1);
|
||||
temp1 = CLAMP(sp40, -arg5, arg5);
|
||||
Math_SmoothScaleMaxMinS(&arg1->unk_0E.y, temp1, 6, 2000, 1);
|
||||
|
||||
sp40 = (ABS(sp40) >= 0x8000) ? 0 : ((sp40 >= 0) ? sp40 : -sp40);
|
||||
arg1->unk_08.z = ((arg1->unk_08.z < -sp40) ? -sp40 : ((arg1->unk_08.z > sp40) ? sp40 : arg1->unk_08.z));
|
||||
sp40 = (ABS(sp40) >= 0x8000) ? 0 : ABS(sp40);
|
||||
arg1->unk_0E.y = CLAMP(arg1->unk_0E.y, -sp40, sp40);
|
||||
|
||||
if (arg8 != 0) {
|
||||
if (arg3) {} // Seems necessary to match
|
||||
Math_SmoothScaleMaxMinS(&actor->shape.rot.y, sp44, 6, 2000, 1);
|
||||
}
|
||||
|
||||
temp1 = (sp46 < arg4) ? arg4 : ((sp46 > arg3) ? arg3 : sp46);
|
||||
Math_SmoothScaleMaxMinS(&arg1->unk_08, temp1, 6, 2000, 1);
|
||||
temp1 = CLAMP(sp46, arg4, arg3);
|
||||
Math_SmoothScaleMaxMinS(&arg1->unk_08.x, temp1, 6, 2000, 1);
|
||||
|
||||
temp2 = sp46 - arg1->unk_08.x;
|
||||
|
||||
temp1 = (temp2 < arg7) ? arg7 : ((temp2 > arg6) ? arg6 : temp2);
|
||||
temp1 = CLAMP(temp2, arg7, arg6);
|
||||
Math_SmoothScaleMaxMinS(&arg1->unk_0E.x, temp1, 6, 2000, 1);
|
||||
}
|
||||
#else
|
||||
|
|
|
@ -2018,10 +2018,10 @@ void Cutscene_HandleEntranceTriggers(GlobalContext* globalCtx) {
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef NON_MATCHING
|
||||
// regalloc differences
|
||||
void Cutscene_HandleConditionalTriggers(GlobalContext* globalCtx) {
|
||||
osSyncPrintf("\ngame_info.mode=[%d] restart_flag", gSaveContext.respawnFlag);
|
||||
s32 temp; // inline temp needed to match regalloc
|
||||
|
||||
osSyncPrintf("\ngame_info.mode=[%d] restart_flag", temp = gSaveContext.respawnFlag);
|
||||
|
||||
if ((gSaveContext.gameMode == 0) && (gSaveContext.respawnFlag <= 0) && (gSaveContext.cutsceneIndex < 0xFFF0)) {
|
||||
if ((gSaveContext.entranceIndex == 0x01E1) && !Flags_GetEventChkInf(0xAC)) {
|
||||
|
@ -2040,21 +2040,18 @@ void Cutscene_HandleConditionalTriggers(GlobalContext* globalCtx) {
|
|||
gSaveContext.cutsceneIndex = 0xFFF0;
|
||||
} else if (CHECK_QUEST_ITEM(QUEST_MEDALLION_SPIRIT) && CHECK_QUEST_ITEM(QUEST_MEDALLION_SHADOW) &&
|
||||
LINK_IS_ADULT && !Flags_GetEventChkInf(0xC4) &&
|
||||
(gEntranceTable[gSaveContext.entranceIndex].scene == SCENE_TOKINOMA)) {
|
||||
(gEntranceTable[temp = gSaveContext.entranceIndex].scene == SCENE_TOKINOMA)) {
|
||||
Flags_SetEventChkInf(0xC4);
|
||||
gSaveContext.entranceIndex = 0x0053;
|
||||
gSaveContext.cutsceneIndex = 0xFFF8;
|
||||
} else if (!Flags_GetEventChkInf(0xC7) &&
|
||||
(gEntranceTable[gSaveContext.entranceIndex].scene == SCENE_GANON_DEMO)) {
|
||||
(gEntranceTable[temp = gSaveContext.entranceIndex].scene == SCENE_GANON_DEMO)) {
|
||||
Flags_SetEventChkInf(0xC7);
|
||||
gSaveContext.entranceIndex = 0x0517;
|
||||
gSaveContext.cutsceneIndex = 0xFFF0;
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/z_demo/Cutscene_HandleConditionalTriggers.s")
|
||||
#endif
|
||||
|
||||
void Cutscene_SetSegment(GlobalContext* globalCtx, u32 segment) {
|
||||
if (SEGMENT_NUMBER(segment) != 0) {
|
||||
|
|
|
@ -513,20 +513,12 @@ void func_80096FD4(GlobalContext* globalCtx, Room* room) {
|
|||
#ifdef NON_MATCHING
|
||||
// regalloc differences
|
||||
u32 func_80096FE8(GlobalContext* globalCtx, RoomContext* roomCtx) {
|
||||
RomFile* roomList;
|
||||
TransitionActorEntry* transitionActor;
|
||||
s32 i, j;
|
||||
s8 frontRoom;
|
||||
s8 backRoom;
|
||||
u32 roomSize;
|
||||
u32 maxRoomSize;
|
||||
u32 frontRoomSize;
|
||||
u32 backRoomSize;
|
||||
u32 cumulRoomSize;
|
||||
u8 nextRoomNum;
|
||||
u32 maxRoomSize = 0;
|
||||
RomFile* roomList = globalCtx->roomList;
|
||||
u32 roomSize;
|
||||
s32 i;
|
||||
|
||||
maxRoomSize = 0;
|
||||
roomList = globalCtx->roomList;
|
||||
for (i = 0; i < globalCtx->nbRooms; i++) {
|
||||
roomSize = roomList[i].vromEnd - roomList[i].vromStart;
|
||||
osSyncPrintf("ROOM%d size=%d\n", i, roomSize);
|
||||
|
@ -536,17 +528,19 @@ u32 func_80096FE8(GlobalContext* globalCtx, RoomContext* roomCtx) {
|
|||
}
|
||||
|
||||
if (globalCtx->nbTransitionActors != 0) {
|
||||
j = 0;
|
||||
roomList = globalCtx->roomList;
|
||||
transitionActor = &globalCtx->transitionActorList[0];
|
||||
s32 j = 0;
|
||||
RomFile* roomList = globalCtx->roomList;
|
||||
TransitionActorEntry* transitionActor = &globalCtx->transitionActorList[0];
|
||||
|
||||
LOG_NUM("game_play->room_rom_address.num", globalCtx->nbRooms, "../z_room.c", 912);
|
||||
|
||||
for (j = 0; j < globalCtx->nbTransitionActors; j++) {
|
||||
frontRoom = transitionActor->frontRoom;
|
||||
backRoom = transitionActor->backRoom;
|
||||
frontRoomSize = (frontRoom < 0) ? 0 : roomList[frontRoom].vromEnd - roomList[frontRoom].vromStart;
|
||||
backRoomSize = (backRoom < 0) ? 0 : roomList[backRoom].vromEnd - roomList[backRoom].vromStart;
|
||||
cumulRoomSize = (frontRoom != backRoom) ? frontRoomSize + backRoomSize : frontRoomSize;
|
||||
s8 frontRoom = transitionActor->frontRoom;
|
||||
s8 backRoom = transitionActor->backRoom;
|
||||
u32 frontRoomSize = (frontRoom < 0) ? 0 : roomList[frontRoom].vromEnd - roomList[frontRoom].vromStart;
|
||||
u32 backRoomSize = (backRoom < 0) ? 0 : roomList[backRoom].vromEnd - roomList[backRoom].vromStart;
|
||||
u32 cumulRoomSize = (frontRoom != backRoom) ? frontRoomSize + backRoomSize : frontRoomSize;
|
||||
|
||||
osSyncPrintf("DOOR%d=<%d> ROOM1=<%d, %d> ROOM2=<%d, %d>\n", j, cumulRoomSize, frontRoom, frontRoomSize,
|
||||
backRoom, backRoomSize);
|
||||
if (maxRoomSize < cumulRoomSize) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue