diff options
| author | Roman971 <32455037+Roman971@users.noreply.github.com> | 2020-07-15 17:23:57 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-07-15 11:23:57 -0400 |
| commit | 106f7a3f6a7694cc4d73c84e4980b38852916aa8 (patch) | |
| tree | bb984b61f1e9c99f8032222019a1814f98685d64 /src/code | |
| parent | 4e1fc875c3c3f4d4b0284b3b7a02c0f9b4561474 (diff) | |
Match and improve some non matchings (#254)
Diffstat (limited to 'src/code')
| -rw-r--r-- | src/code/z_actor.c | 20 | ||||
| -rw-r--r-- | src/code/z_demo.c | 13 | ||||
| -rw-r--r-- | src/code/z_room.c | 34 |
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) { |
