summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHenny022p <info@henny022.de>2025-03-03 16:15:20 +0000
committerHenny022p <info@henny022.de>2025-03-09 18:57:56 +0000
commitb19f86852b486b44c67f782914cfd208bb313bcf (patch)
tree0ea059a12fea9ab1dec4951425c8f72898169a77 /src
parentb5eab6fc2bb4b034f7153d56b779e3679076961d (diff)
more transition function cleanup
Diffstat (limited to 'src')
-rw-r--r--src/beanstalkSubtask.c6
-rw-r--r--src/manager/miscManager.c2
-rw-r--r--src/manager/vaati3StartManager.c2
-rw-r--r--src/npc/npc4E.c2
-rw-r--r--src/object/gyorgBossObject.c2
-rw-r--r--src/object/lilypadLarge.c2
-rw-r--r--src/roomInit.c2
-rw-r--r--src/scroll.c141
8 files changed, 80 insertions, 79 deletions
diff --git a/src/beanstalkSubtask.c b/src/beanstalkSubtask.c
index 9da2f7eb..6ad7f184 100644
--- a/src/beanstalkSubtask.c
+++ b/src/beanstalkSubtask.c
@@ -63,7 +63,7 @@ extern void sub_0804B388(u32 a1, u32 a2);
extern u32 sub_080A7CFC(u32 a1, u32 tmp); // TODO does this really have a second param?
extern void OpenSmallChest(u32 pos, u32 layer);
extern bool32 sub_08079778();
-extern Transition* sub_08080734(u32, u32);
+extern Transition* FindApplicableAreaTransition(u32, u32);
extern const s16 gUnk_080B4490[];
extern const s16 gUnk_080B4468[];
@@ -206,7 +206,7 @@ u32 UpdatePlayerCollision(void) {
gPlayerEntity.base.collisionLayer) == COLLISION_DATA_255) {
if ((((gPlayerState.flags & (PL_FLAGS10000 | PL_FLAGS2)) != 0) ||
((gPlayerState.sword_state & 0x10) != 0)) ||
- ((sub_080806BC(gPlayerEntity.base.x.HALF.HI - gRoomControls.origin_x,
+ ((DoApplicableTransition(gPlayerEntity.base.x.HALF.HI - gRoomControls.origin_x,
gPlayerEntity.base.y.HALF.HI - gRoomControls.origin_y, index, 5) == 0 &&
(((gPlayerState.heldObject != 0 || ((gPlayerState.gustJarState & 0xf) != 0)) ||
(sub_0807BD14(&gPlayerEntity.base, index) == 0)))))) {
@@ -269,7 +269,7 @@ u32 UpdatePlayerCollision(void) {
}
ptr1 = &gUnk_080B4478[gPlayerEntity.base.animationState & 6];
- transition = sub_08080734((gPlayerEntity.base.x.HALF.HI - gRoomControls.origin_x) + ptr1[0],
+ transition = FindApplicableAreaTransition((gPlayerEntity.base.x.HALF.HI - gRoomControls.origin_x) + ptr1[0],
(gPlayerEntity.base.y.HALF.HI - gRoomControls.origin_y) + ptr1[1]);
if (transition == NULL) {
return 0;
diff --git a/src/manager/miscManager.c b/src/manager/miscManager.c
index ed284275..bcb7bce9 100644
--- a/src/manager/miscManager.c
+++ b/src/manager/miscManager.c
@@ -355,7 +355,7 @@ void MiscManager_TypeA(MiscManager* this) {
void MiscManager_TypeB(MiscManager* this) {
if (sub_080593CC(this)) {
if (++super->timer >= 8) {
- sub_080806BC(this->x - gRoomControls.origin_x, this->y - gRoomControls.origin_y, 0xFF, 0xA);
+ DoApplicableTransition(this->x - gRoomControls.origin_x, this->y - gRoomControls.origin_y, 0xFF, 0xA);
}
} else {
super->timer = 0;
diff --git a/src/manager/vaati3StartManager.c b/src/manager/vaati3StartManager.c
index 1fa0c618..097f3afa 100644
--- a/src/manager/vaati3StartManager.c
+++ b/src/manager/vaati3StartManager.c
@@ -154,5 +154,5 @@ void Vaati3StartManager_Type1_Action1(Vaati3StartManager* this) {
void sub_0805E094(void) {
SetInitializationPriority();
- sub_0808091C(&gUnk_0813AC34, TRANSITION_7);
+ DoExitTransitionWithType(&gUnk_0813AC34, TRANSITION_7);
}
diff --git a/src/npc/npc4E.c b/src/npc/npc4E.c
index 69a57088..73dced19 100644
--- a/src/npc/npc4E.c
+++ b/src/npc/npc4E.c
@@ -62,7 +62,7 @@ void NPC4E_ChangeInteractableHitbox(Entity* this, ScriptExecutionContext* contex
}
void NPC4E_DoScreenTransition(Entity* this, ScriptExecutionContext* context) {
- sub_0808091C(gNpc4ETransitions[context->intVariable], gNpc4ETransitionTypes[context->intVariable]);
+ DoExitTransitionWithType(gNpc4ETransitions[context->intVariable], gNpc4ETransitionTypes[context->intVariable]);
}
u8 NPC4E_GetKinstoneId(Entity* this) {
diff --git a/src/object/gyorgBossObject.c b/src/object/gyorgBossObject.c
index 2de64ed0..c04e6eaa 100644
--- a/src/object/gyorgBossObject.c
+++ b/src/object/gyorgBossObject.c
@@ -251,7 +251,7 @@ void GyorgBossObject_FightEnd(GyorgBossObjectEntity* this) {
sub_080A1E54(this);
if (--super->subtimer == 0) {
SetFlag(0x7B);
- sub_0808091C(&gUnk_0813ABD0, 8);
+ DoExitTransitionWithType(&gUnk_0813ABD0, 8);
return;
}
if (super->subtimer == 0x3C) {
diff --git a/src/object/lilypadLarge.c b/src/object/lilypadLarge.c
index 03cca48a..9a7458b3 100644
--- a/src/object/lilypadLarge.c
+++ b/src/object/lilypadLarge.c
@@ -498,7 +498,7 @@ void sub_08085D60(LilypadLargeEntity* this) {
tmpY = gUnk_08120638[tmp + 1];
if (GetCollisionDataRelativeTo(super, tmpX, tmpY) == COLLISION_DATA_255) {
- if (sub_080806BC((super->x.HALF.HI - gRoomControls.origin_x) + tmpX,
+ if (DoApplicableTransition((super->x.HALF.HI - gRoomControls.origin_x) + tmpX,
(super->y.HALF.HI - gRoomControls.origin_y) + tmpY, r4, 5) == 0) {
if (sub_0807BD14(&gPlayerEntity.base, r4 >> 3) != 0) {
super->direction = r4;
diff --git a/src/roomInit.c b/src/roomInit.c
index 4c5dbfa7..e5afa576 100644
--- a/src/roomInit.c
+++ b/src/roomInit.c
@@ -713,7 +713,7 @@ void sub_StateChange_HyruleCastle_4(void) {
}
void sub_0804BCDC(void) {
- sub_0808091C(&gUnk_0813AB80, TRANSITION_FADE_BLACK_SLOW);
+ DoExitTransitionWithType(&gUnk_0813AB80, TRANSITION_FADE_BLACK_SLOW);
}
u32 sub_unk3_HyruleCastle_5(void) {
diff --git a/src/scroll.c b/src/scroll.c
index 6fa1e3d9..408cbd6b 100644
--- a/src/scroll.c
+++ b/src/scroll.c
@@ -57,10 +57,10 @@ void sub_08080368();
void FillActTileForLayer(MapLayer* mapLayer);
bool32 IsPosInBorderTransitionRegion(const Transition* transition, u32 param_2, u32 param_3, u32 facing_direction);
bool32 IsPosInTransitionRect(const Transition* transition, u32 param_2, u32 param_3, u32 facing_direction);
-void sub_080808D8(s32);
-void sub_080808E4(s32);
-void sub_08080904(s32);
-void sub_08080910(s32);
+void SetRoomTransitionTypeForAreaWarp(s32);
+void SetRoomTransitionTypeForBorderWarp(s32);
+void SetRoomTransitionTypeForArea2Warp(s32);
+void SetRoomTransitionTypeForBorder2Warp(s32);
extern const s8 gShakeOffsets[];
@@ -482,89 +482,90 @@ void sub_08080368(void) {
}
u32 sub_080803D0(void) {
- s32 sp00, sp04, sp08, sp0c, sp10, sp14, sp18, sp1c;
- s32 r2, r4, r7, r8, r9, r10;
-
- sp18 = gRoomControls.scroll_x - gRoomControls.origin_x;
- sp10 = gRoomControls.camera_target->x.HALF.HI - gRoomControls.origin_x;
- sp1c = gRoomControls.scroll_y - gRoomControls.origin_y;
- sp14 = gRoomControls.camera_target->y.HALF.HI - gRoomControls.origin_y;
- sp08 = 0x3c;
+ s32 delta_x, delta_y, dd_x, dd_y, pos_x, pos_y, scroll_x, scroll_y;
+ s32 xy49, r4, r7, r8, delta_yy, delta_xx;
+
+ scroll_x = gRoomControls.scroll_x - gRoomControls.origin_x;
+ pos_x = gRoomControls.camera_target->x.HALF.HI - gRoomControls.origin_x;
+ scroll_y = gRoomControls.scroll_y - gRoomControls.origin_y;
+ pos_y = gRoomControls.camera_target->y.HALF.HI - gRoomControls.origin_y;
+ dd_x = 0x3c;
+
do {
r7 = 0;
- sp08 += 6;
- r10 = sp08 * sp08;
- sp0c = sp08 * 2 / 3;
- r9 = sp0c * sp0c;
-
- sp00 = sp08;
- sp04 = 0;
- r4 = (-(sp08 * 2) + 1) * r9 + r10 * 2;
- r2 = sp00 * r9 / r10;
- while (sp04 <= r2) {
-
- if ((sp1c + 0xa8) > sp14 + sp04) {
- if (sp18 + 0xf8 > sp00 + sp10) {
+ dd_x += 6;
+ delta_xx = dd_x * dd_x;
+ dd_y = dd_x * 2 / 3;
+ delta_yy = dd_y * dd_y;
+
+ delta_x = dd_x;
+ delta_y = 0;
+ r4 = (-(dd_x * 2) + 1) * delta_yy + delta_xx * 2;
+ xy49 = delta_x * delta_yy / delta_xx; // = x * 4/9
+ while (delta_y <= xy49) {
+
+ if (scroll_y + 0xa8 > pos_y + delta_y) {
+ if (scroll_x + 0xf8 > delta_x + pos_x) {
r7 |= 1;
}
- if (sp18 < sp10 - sp00 + 8) {
+ if (scroll_x < pos_x - delta_x + 8) {
r7 |= 2;
}
}
- if (sp1c < (sp14 - sp04) + 8) {
- if (sp18 + 0xf8 > sp00 + sp10) {
+ if (scroll_y < pos_y - delta_y + 8) {
+ if (scroll_x + 0xf8 > delta_x + pos_x) {
r7 |= 4;
}
- if (sp18 < sp10 - sp00 + 8) {
+ if (scroll_x < pos_x - delta_x + 8) {
r7 |= 8;
}
}
if (r4 > 0) {
- r4 += ((-(sp00 << 0x2) + 4) * r9) + (r10 * (6 + 4 * sp04));
- sp00--;
- r2 = sp00 * r9 / r10;
+ r4 += ((-(delta_x << 0x2) + 4) * delta_yy) + (delta_xx * (6 + 4 * delta_y));
+ delta_x--;
+ xy49 = delta_x * delta_yy / delta_xx;
} else {
- r4 += (r10 * (6 + 4 * sp04));
+ r4 += (delta_xx * (6 + 4 * delta_y));
}
- sp04++;
+ delta_y++;
}
- sp00 = 0;
- sp04 = sp0c;
- r4 = r9 * 2 + (sp04 * -2 + 1) * r10;
- r2 = sp04 * r10 / r9;
- while (sp00 <= r2) {
- if (sp1c + 0xa8 > sp14 + sp04) {
- if (sp18 + 0xf8 > sp10 + sp00) {
+ delta_x = 0;
+ delta_y = dd_y;
+ r4 = delta_yy * 2 + (delta_y * -2 + 1) * delta_xx;
+ xy49 = delta_y * delta_xx / delta_yy; // y * 9 / 4
+ while (delta_x <= xy49) {
+ if (scroll_y + 0xa8 > pos_y + delta_y) {
+ if (scroll_x + 0xf8 > pos_x + delta_x) {
r7 |= 0x10;
}
- if (sp18 < sp10 + 8 - sp00) {
+ if (scroll_x < pos_x + 8 - delta_x) {
r7 |= 0x20;
}
}
- if (sp1c < (sp14 - sp04) + 8) {
- if (sp18 + 0xf8 > sp10 + sp00) {
+ if (scroll_y < pos_y - delta_y + 8) {
+ if (scroll_x + 0xf8 > pos_x + delta_x) {
r7 |= 0x40;
}
- if (sp18 < sp10 + 8 - sp00) {
+ if (scroll_x < pos_x + 8 - delta_x) {
r7 |= 0x80;
}
}
if (r4 > 0) {
- r4 += r9 * (6 + (4 * sp00)) + (sp04 * -4 + 4) * r10;
- sp04--;
- r2 = sp04 * r10 / r9;
+ r4 += delta_yy * (6 + (4 * delta_x)) + (delta_y * -4 + 4) * delta_xx;
+ delta_y--;
+ xy49 = delta_y * delta_xx / delta_yy;
} else {
- r4 += r9 * (6 + (4 * sp00));
+ r4 += delta_yy * (6 + (4 * delta_x));
}
- sp00++;
+ delta_x++;
}
} while (r7 != 0);
- return sp08;
+ return dd_x;
}
void UpdateIsDiggingCave(void) {
@@ -592,7 +593,7 @@ void ClearTileMaps(void) {
MemClear(&gMapDataTopSpecial, 0x8000);
}
-bool32 sub_080806BC(u32 x, u32 y, u32 direction, u32 warp_types) {
+bool32 DoApplicableTransition(u32 x, u32 y, u32 direction, u32 warp_types) {
static bool32 (*const gUnk_0811E7AC[])(const Transition*, u32, u32, u32) = {
IsPosInBorderTransitionRegion,
IsPosInTransitionRect,
@@ -612,12 +613,12 @@ bool32 sub_080806BC(u32 x, u32 y, u32 direction, u32 warp_types) {
return 0;
}
-const Transition* sub_08080734(u32 param_1, u32 param_2) {
+const Transition* FindApplicableAreaTransition(u32 pos_x, u32 pos_y) {
const Transition* transition = gArea.pCurrentRoomInfo->exits;
u32 warp_types = 0xa;
while (transition->warp_type != WARP_TYPE_END_OF_LIST) {
if (((1 << transition->warp_type) & warp_types) != 0 &&
- IsPosInTransitionRect(transition, param_1, param_2, 0)) {
+ IsPosInTransitionRect(transition, pos_x, pos_y, 0)) {
return transition;
}
transition++;
@@ -688,24 +689,24 @@ bool32 IsPosInTransitionRect(const Transition* transition, u32 pos_x, u32 pos_y,
}
void DoExitTransition(const Transition* data) {
- static void (*const gUnk_0811E7C4[])(s32) = {
- sub_080808D8,
- sub_080808E4,
- sub_08080904,
- sub_08080910,
+ static void (*const sSetRoomTransitionTypes[])(s32) = {
+ SetRoomTransitionTypeForAreaWarp,
+ SetRoomTransitionTypeForBorderWarp,
+ SetRoomTransitionTypeForArea2Warp,
+ SetRoomTransitionTypeForBorder2Warp,
};
PlayerRoomStatus* status;
gRoomTransition.transitioningOut = 1;
status = &gRoomTransition.player_status;
- if ((u16)data->endX <= 0x3ff) {
+ if (data->endX <= 0x3ff) {
status->start_pos_x = data->endX;
} else {
- status->start_pos_x = (gRoomControls.camera_target)->x.HALF.HI | 0x8000;
+ status->start_pos_x = gRoomControls.camera_target->x.HALF.HI | 0x8000;
}
- if ((u16)data->endY <= 0x3ff) {
+ if (data->endY <= 0x3ff) {
status->start_pos_y = data->endY;
} else {
- status->start_pos_y = (gRoomControls.camera_target)->y.HALF.HI | 0x8000;
+ status->start_pos_y = gRoomControls.camera_target->y.HALF.HI | 0x8000;
}
status->area_next = data->area;
status->room_next = data->room;
@@ -715,14 +716,14 @@ void DoExitTransition(const Transition* data) {
if (data->transitionSFX != SFX_NONE) {
SoundReq(data->transitionSFX);
}
- gUnk_0811E7C4[data->warp_type](data->shape);
+ sSetRoomTransitionTypes[data->warp_type](data->shape);
}
-void sub_080808D8(s32 param_1) {
+void SetRoomTransitionTypeForAreaWarp(s32 param_1) {
gRoomTransition.type = TRANSITION_DEFAULT;
}
-void sub_080808E4(s32 param_1) {
+void SetRoomTransitionTypeForBorderWarp(s32 param_1) {
if (CheckAreaOverworld(gRoomTransition.player_status.area_next)) {
gRoomTransition.type = TRANSITION_DEFAULT;
} else {
@@ -730,15 +731,15 @@ void sub_080808E4(s32 param_1) {
}
}
-void sub_08080904(s32 param_1) {
+void SetRoomTransitionTypeForArea2Warp(s32 param_1) {
gRoomTransition.type = TRANSITION_CUT;
}
-void sub_08080910(s32 param_1) {
+void SetRoomTransitionTypeForBorder2Warp(s32 param_1) {
gRoomTransition.type = TRANSITION_CUT;
}
-void sub_0808091C(const Transition* screenTransition, u32 transitionType) {
+void DoExitTransitionWithType(const Transition* screenTransition, u32 transitionType) {
DoExitTransition(screenTransition);
gRoomTransition.type = transitionType;
}
@@ -864,7 +865,7 @@ void UpdateDoorTransition() {
case ACT_TILE_241:
case ACT_TILE_40:
case ACT_TILE_41:
- sub_080806BC(x, y, 0xff, 10);
+ DoApplicableTransition(x, y, 0xff, 10);
break;
}
}