summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authornotyourav <65437533+notyourav@users.noreply.github.com>2022-09-17 19:25:41 -0700
committerGitHub <noreply@github.com>2022-09-17 19:25:41 -0700
commit756a8a89da46dade06fad1723de88fa5a82cc2ec (patch)
tree4b3983ac4e2e07f44aa6cb567a35828a26fcb0ab /src
parent08f7fd2b618daf1493b1d4977fb14c7d64efbaba (diff)
parent7f3b6a6a44bfe0809d76f01f690ad74356ac9ae8 (diff)
Merge pull request #573 from hatal175/TextDispEnquiry
Match some functions
Diffstat (limited to 'src')
-rw-r--r--src/enemy/vaatiArm.c21
-rw-r--r--src/message.c18
-rw-r--r--src/object/cutsceneMiscObject.c20
-rw-r--r--src/scroll.c94
-rw-r--r--src/ui.c44
5 files changed, 117 insertions, 80 deletions
diff --git a/src/enemy/vaatiArm.c b/src/enemy/vaatiArm.c
index 569a6bbf..4ed717de 100644
--- a/src/enemy/vaatiArm.c
+++ b/src/enemy/vaatiArm.c
@@ -900,10 +900,9 @@ void sub_080432A8(Entity* this) {
}
}
-static NONMATCH("asm/non_matching/vaati/sub_0804334C.inc", void sub_0804334C(Entity* this)) {
- int bVar1;
+void sub_0804334C(Entity* this) {
+ u32 bVar1;
Entity* entity;
- VaatiArm_HeapStruct1* s;
u32 i;
VaatiArm_HeapStruct1* ptr;
@@ -913,13 +912,13 @@ static NONMATCH("asm/non_matching/vaati/sub_0804334C.inc", void sub_0804334C(Ent
}
for (i = 0; i < 5; i++) {
entity = ((VaatiArm_HeapStruct*)this->myHeap)->entities[i];
- entity->flags = entity->flags | ENT_COLLIDE;
+ COLLISION_ON(entity);
entity->spriteSettings.draw = 1;
}
}
- s = &((VaatiArm_HeapStruct*)this->myHeap)->s1[0];
- if ((gUnk_080D131C[this->type2] - s->unk00.HALF.HI) + 1 > 2u) {
- s->unk00.HWORD += s->unk08;
+ ptr = &((VaatiArm_HeapStruct*)this->myHeap)->s1[0];
+ if (gUnk_080D131C[this->type2] - ptr->unk00.HALF.HI + 1 > 2u) {
+ ptr->unk00.HWORD += ptr->unk08;
bVar1 = 0;
} else {
bVar1 = 1;
@@ -927,12 +926,11 @@ static NONMATCH("asm/non_matching/vaati/sub_0804334C.inc", void sub_0804334C(Ent
sub_08043B9C(this);
for (i = 0; i < 5; i++) {
ptr = &(((VaatiArm_HeapStruct*)this->myHeap)->s1)[i];
+
if (gUnk_080D1414[i] > ptr->unk0c) {
- ptr->unk0c++;
- if (gUnk_080D1414[i] != ptr->unk0c) {
- return;
+ if (gUnk_080D1414[i] == ++ptr->unk0c) {
+ SoundReq(SFX_15E);
}
- SoundReq(SFX_15E);
return;
}
if ((bVar1) && (i == 4)) {
@@ -945,7 +943,6 @@ static NONMATCH("asm/non_matching/vaati/sub_0804334C.inc", void sub_0804334C(Ent
}
}
}
-END_NONMATCH
static void sub_08043420(Entity* this) {
gUnk_080D1320[this->subAction](this);
diff --git a/src/message.c b/src/message.c
index 01305823..165c58d1 100644
--- a/src/message.c
+++ b/src/message.c
@@ -505,11 +505,7 @@ u16 RunTextCommand(TextRender* this) {
const u8 gUnk_08107C0F[] = { 0x8, 0x1e, 0x4, 0x12, 0x0 };
const u8 gUnk_08107C14[] = { 0x8, 0x1e, 0x8, 0xFE, 0x0 };
-#ifdef EU
-ASM_FUNC("asm/non_matching/eu/TextDispEnquiry.inc", /*static*/ void TextDispEnquiry(TextRender* ctb))
-#else
-
-/*static*/ void TextDispEnquiry(TextRender* this) {
+void TextDispEnquiry(TextRender* this) {
s32 nextTextIdx, choiceIdx, lastChoice;
u32 doSwitch;
const u8* src;
@@ -556,10 +552,22 @@ ASM_FUNC("asm/non_matching/eu/TextDispEnquiry.inc", /*static*/ void TextDispEnqu
doSwitch = 1;
}
if (doSwitch) {
+#ifdef EU
+ u32 previousUnk6 = gTextRender._50.unk6;
+ gTextRender._50.unk6 = gMessageChoices.unk_08[lastChoice];
+ sub_0805F8E4(0, &this->_50);
+ gTextRender._50.unk6 = gMessageChoices.unk_08[choiceIdx];
+ sub_0805F8E4(1, &this->_50);
+ gTextRender._50.unk6 = previousUnk6;
+ gTextRender.updateDraw = 1;
+#else
SwitchChoice(choiceIdx, lastChoice);
+#endif
}
}
+#ifndef EU
+
static void SwitchChoice(u32 to, u32 from) {
u16 t;
t = gTextRender._50.unk6;
diff --git a/src/object/cutsceneMiscObject.c b/src/object/cutsceneMiscObject.c
index 25a7107c..8d971ba2 100644
--- a/src/object/cutsceneMiscObject.c
+++ b/src/object/cutsceneMiscObject.c
@@ -1107,34 +1107,34 @@ void sub_08095E7C(CutsceneMiscObjectEntity* this, ScriptExecutionContext* ctx) {
}
}
-NONMATCH("asm/non_matching/cutsceneMiscObject/sub_08095EAC.inc",
- void sub_08095EAC(CutsceneMiscObjectEntity* this, ScriptExecutionContext* ctx)) {
+void sub_08095EAC(Entity* this, ScriptExecutionContext* ctx) {
Entity* e = CreateObject(CUTSCENE_MISC_OBJECT, 0x1E, 1);
- s32 x, y;
+ s32 x;
+ s16 y;
+ s32 a, b, speed;
+ s32 vel;
if (e != NULL) {
- s32 a, b, vel, speed;
if (ctx->intVariable == 0) {
a = 0x10;
b = 0x1F;
- vel = 0x4000;
+ vel = Q_16_16(0.25);
speed = 0;
} else {
a = 0x8;
b = 0xF;
- vel = 0x40000;
+ vel = Q_16_16(4);
speed = gUnk_08122B0E[Random() & 7];
e->type2 = -1;
}
- x = a - (Random() & b);
- y = a - (Random() & b);
- PositionRelative(super, e, x << 16, y << 16);
+ x = (a - (Random() & b));
+ y = (a - (Random() & b));
+ PositionRelative(this, e, x << 16, y << 16);
e->zVelocity = vel;
e->speed = speed;
}
}
-END_NONMATCH
#define local ((Type1F*)this)
void sub_08095F38(CutsceneMiscObjectEntity* this) {
diff --git a/src/scroll.c b/src/scroll.c
index 051ee4a4..8e4d4018 100644
--- a/src/scroll.c
+++ b/src/scroll.c
@@ -83,92 +83,83 @@ void sub_0807FC64(RoomControls* controls) {
UpdateIsDiggingCave();
}
-NONMATCH("asm/non_matching/scroll/sub_0807FC7C.inc", void sub_0807FC7C(RoomControls* controls)) {
- u32 uVar1;
- u32 uVar2;
- u32 uVar3;
- int iVar4;
- u32 uVar5;
- u32 temp;
- u32 temp2;
- u32 uVar6;
+void sub_0807FC7C(RoomControls* controls) {
+ s32 uVar2;
+ s32 uVar3;
+ s32 iVar4;
+ s32 uVar5;
+ s32 temp;
if (controls->camera_target != NULL) {
- iVar4 = (int)controls->scroll_x;
+ iVar4 = controls->scroll_x;
temp = controls->camera_target->x.HALF.HI - 0x78;
- uVar3 = iVar4 - temp;
+ uVar3 = controls->scroll_x - temp;
if (uVar3 != 0) {
- uVar1 = (u16)controls->scroll_x;
- uVar5 = uVar1 & 7;
- uVar6 = uVar1;
- if ((int)uVar3 >= 1) {
- uVar2 = controls->origin_x;
- if ((int)uVar2 < iVar4) {
- if ((int)controls->unk5 <= (int)uVar3) {
+ uVar5 = controls->scroll_x & 7;
+ if (uVar3 >= 1) {
+ if (controls->origin_x < controls->scroll_x) {
+ if (controls->unk5 <= uVar3) {
uVar3 = controls->unk5;
- controls->scroll_flags = controls->scroll_flags | 4;
+ controls->scroll_flags |= 4;
}
- controls->scroll_x = uVar6 - uVar3;
- if ((int)((uVar5)-uVar3) < 1) {
+ controls->scroll_x = controls->scroll_x - uVar3;
+ if (uVar5 - uVar3 < 1) {
gUpdateVisibleTiles = 1;
}
- if ((int)uVar2 >= (int)controls->scroll_x) {
- controls->scroll_x = (s16)uVar2;
+ if (controls->origin_x >= controls->scroll_x) {
+ controls->scroll_x = controls->origin_x;
}
}
} else {
- uVar2 = (controls->origin_x + controls->width) - 0xf0;
- if (iVar4 < (int)uVar2) {
- if ((int)-controls->unk5 >= (int)uVar3) {
+ uVar2 = controls->origin_x + controls->width - 0xf0;
+ if (controls->scroll_x < uVar2) {
+ if (-controls->unk5 >= uVar3) {
uVar3 = -controls->unk5;
controls->scroll_flags |= 4;
}
- controls->scroll_x = uVar1 - (short)uVar3;
- if (7 < (int)((uVar5)-uVar3)) {
+ controls->scroll_x -= uVar3;
+ if (uVar5 - uVar3 > 7) {
gUpdateVisibleTiles = 1;
}
- if ((int)controls->scroll_x >= (int)uVar2) {
- controls->scroll_x = (s16)uVar2;
+ if (controls->scroll_x >= uVar2) {
+ controls->scroll_x = uVar2;
}
}
}
}
- iVar4 = (int)controls->scroll_y;
+ iVar4 = controls->scroll_y;
temp = controls->camera_target->y.HALF.HI - 0x50;
- uVar3 = iVar4 - (temp);
+ uVar3 = controls->scroll_y - (temp);
if (uVar3 != 0) {
- uVar1 = (u16)controls->scroll_y;
- uVar5 = uVar1 & 7;
- uVar6 = uVar1;
- if ((int)uVar3 >= 1) {
- uVar2 = temp2 = (u16)controls->origin_y;
- if ((int)uVar2 < iVar4) {
- if ((int)controls->unk5 <= (int)uVar3) {
+ uVar5 = controls->scroll_y & 7;
+ if (uVar3 >= 1) {
+ if (controls->origin_y < controls->scroll_y) {
+ if (controls->unk5 <= uVar3) {
uVar3 = controls->unk5;
controls->scroll_flags |= 4;
}
- controls->scroll_y = uVar6 - uVar3;
- if ((int)((uVar5)-uVar3) < 1) {
+ controls->scroll_y = controls->scroll_y - uVar3;
+ if (uVar5 - uVar3 < 1) {
gUpdateVisibleTiles = 1;
}
- if ((int)uVar2 >= (int)controls->scroll_y) {
- controls->scroll_y = (s16)uVar2;
+ if (controls->origin_y >= controls->scroll_y) {
+ controls->scroll_y = controls->origin_y;
}
}
} else {
- uVar2 = (controls->origin_y + controls->height) - DISPLAY_HEIGHT;
- if (iVar4 < (int)uVar2) {
- if ((int)-controls->unk5 >= (int)uVar3) {
+ uVar2 = controls->origin_y + controls->height - DISPLAY_HEIGHT;
+ if (controls->scroll_y < uVar2) {
+ if (-controls->unk5 >= uVar3) {
uVar3 = -controls->unk5;
- controls->scroll_flags = controls->scroll_flags | 4;
+ controls->scroll_flags |= 4;
}
- controls->scroll_y = uVar1 - (short)uVar3;
- if (7 < (int)((uVar1 & 7) - uVar3)) {
+ controls->scroll_y -= uVar3;
+ if (uVar5 - uVar3 > 7) {
gUpdateVisibleTiles = 1;
}
- if ((int)controls->scroll_y >= (int)uVar2) {
- controls->scroll_y = (s16)uVar2;
+ if (controls->scroll_y >= uVar2) {
+ controls->scroll_y = uVar2;
}
}
}
@@ -176,7 +167,6 @@ NONMATCH("asm/non_matching/scroll/sub_0807FC7C.inc", void sub_0807FC7C(RoomContr
}
sub_08080BC4();
}
-END_NONMATCH
void sub_0807FDB0(RoomControls* controls) {
static void (*const gUnk_0811E780[])(RoomControls*) = {
diff --git a/src/ui.c b/src/ui.c
index 613afa2e..cf68578d 100644
--- a/src/ui.c
+++ b/src/ui.c
@@ -11,6 +11,7 @@
extern void sub_0805ECEC(u32, u32, u32, u32);
extern bool32 ItemIsBottle(u32);
+extern u32 sub_08000E44(u32);
typedef struct {
u16 unk_0;
@@ -669,7 +670,48 @@ void ButtonUIElement_Action0(UIElement* element) {
sub_0801CAFC(element, element->type);
}
-ASM_FUNC("asm/non_matching/ui/ButtonUIElement_Action1.inc", void ButtonUIElement_Action1())
+void ButtonUIElement_Action1(UIElement* element) {
+ u32 MAX_MOVEMENT;
+ s32 y;
+ u32 y_diff;
+ s32 x;
+ u32 x_diff;
+
+ MAX_MOVEMENT = (!element->type2) ? 4 : 8;
+
+ if (element->type2 == 0 && (((gUnk_0200AF00.unk_1 >> element->type) & 1) || (gMessage.doTextBox & 0x7f) != 0)) {
+ y = (s16)gUnk_0200AF00.buttonY[element->type] - 0x28;
+ } else {
+ y = (s16)gUnk_0200AF00.buttonY[element->type];
+ }
+
+ y -= (s16)element->y;
+ y_diff = (y > 0) ? y : -y;
+
+ if ((s32)MAX_MOVEMENT <= (s32)y_diff) {
+ y_diff = MAX_MOVEMENT;
+ }
+
+ y_diff *= sub_08000E44(y);
+
+ if (y_diff != 0) {
+ element->y += y_diff;
+ }
+
+ x = (short)gUnk_0200AF00.buttonX[element->type];
+ x -= (short)element->x;
+ x_diff = (x < 0) ? -x : x;
+
+ if ((int)MAX_MOVEMENT <= (int)x_diff) {
+ x_diff = MAX_MOVEMENT;
+ }
+
+ x_diff *= sub_08000E44(x);
+
+ if (x_diff != 0) {
+ element->x += x_diff;
+ }
+}
u32 sub_0801CC80(UIElement* element) {
u8 type = element->type;