summaryrefslogtreecommitdiff
path: root/src/code
diff options
context:
space:
mode:
authorRoman971 <32455037+Roman971@users.noreply.github.com>2020-07-15 17:23:57 +0200
committerGitHub <noreply@github.com>2020-07-15 11:23:57 -0400
commit106f7a3f6a7694cc4d73c84e4980b38852916aa8 (patch)
treebb984b61f1e9c99f8032222019a1814f98685d64 /src/code
parent4e1fc875c3c3f4d4b0284b3b7a02c0f9b4561474 (diff)
Match and improve some non matchings (#254)
Diffstat (limited to 'src/code')
-rw-r--r--src/code/z_actor.c20
-rw-r--r--src/code/z_demo.c13
-rw-r--r--src/code/z_room.c34
3 files changed, 29 insertions, 38 deletions
diff --git a/src/code/z_actor.c b/src/code/z_actor.c
index b9da54281..4c0512306 100644
--- a/src/code/z_actor.c
+++ b/src/code/z_actor.c
@@ -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
diff --git a/src/code/z_demo.c b/src/code/z_demo.c
index cb7668072..26d5a3f8d 100644
--- a/src/code/z_demo.c
+++ b/src/code/z_demo.c
@@ -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) {
diff --git a/src/code/z_room.c b/src/code/z_room.c
index dbde895fb..487e96964 100644
--- a/src/code/z_room.c
+++ b/src/code/z_room.c
@@ -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) {