Merge pull request #573 from hatal175/TextDispEnquiry

Match some functions
This commit is contained in:
notyourav
2022-09-17 19:25:41 -07:00
committed by GitHub
10 changed files with 117 additions and 683 deletions
@@ -1,70 +0,0 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
mov sb, r0
adds r4, r1, #0
movs r0, #0x6a
movs r1, #0x1e
movs r2, #1
bl CreateObject
adds r5, r0, #0
cmp r5, #0
beq _08095F2A
ldr r0, [r4, #4]
cmp r0, #0
bne _08095EE0
movs r7, #0x10
movs r6, #0x1f
movs r0, #0x80
lsls r0, r0, #7
mov sl, r0
movs r2, #0
mov r8, r2
b _08095F02
_08095EE0:
movs r7, #8
movs r6, #0xf
movs r0, #0x80
lsls r0, r0, #0xb
mov sl, r0
ldr r4, _08095F34 @ =gUnk_08122B0E
bl Random
movs r1, #7
ands r1, r0
lsls r1, r1, #1
adds r1, r1, r4
movs r0, #0
ldrsh r2, [r1, r0]
mov r8, r2
movs r0, #0xff
strb r0, [r5, #0xb]
_08095F02:
bl Random
adds r4, r0, #0
ands r4, r6
subs r4, r7, r4
bl Random
ands r6, r0
subs r3, r7, r6
lsls r4, r4, #0x10
lsls r3, r3, #0x10
mov r0, sb
adds r1, r5, #0
adds r2, r4, #0
bl PositionRelative
mov r2, sl
str r2, [r5, #0x20]
mov r0, r8
strh r0, [r5, #0x24]
_08095F2A:
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08095F34: .4byte gUnk_08122B0E
.syntax divided
-153
View File
@@ -1,153 +0,0 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
adds r6, r0, #0
ldr r0, _08056570 @ =gMessageChoices
movs r7, #3
ldrsb r7, [r0, r7]
ldr r0, _08056574 @ =gInput
ldrh r0, [r0, #2]
cmp r0, #8
beq _08056582
cmp r0, #8
bgt _08056578
cmp r0, #1
beq _08056582
b _080565EA
.align 2, 0
_08056570: .4byte gMessageChoices
_08056574: .4byte gInput
_08056578:
cmp r0, #0x10
beq _080565E8
cmp r0, #0x20
beq _080565E4
b _080565EA
_08056582:
ldr r0, _08056598EU @ =gMessageChoices
lsls r1, r7, #1
adds r0, #0x10
adds r1, r1, r0
ldrh r1, [r1]
cmp r1, #0
bne _080565A0EU
ldr r1, _0805659CEU @ =gUnk_08107C14
adds r0, r6, #0
adds r0, #0x20
b _080565B0EU
.align 2, 0
_08056598EU: .4byte gMessageChoices
_0805659CEU: .4byte gUnk_08107C14
_080565A0EU:
strh r1, [r6, #8]
adds r4, r6, #0
adds r4, #0x20
adds r0, r4, #0
bl sub_0805EEB4
ldr r1, _080565D8 @ =gUnk_08107C0F
adds r0, r4, #0
_080565B0EU:
bl sub_0805EF40
ldr r2, _080565DC @ =gUnk_02000040
ldr r0, _080565E0 @ =gMessageChoices
ldrb r1, [r0, #3]
strb r1, [r2, #1]
movs r1, #3
strb r1, [r2]
movs r1, #0x18
bl MemClear
movs r0, #0x6a
bl SoundReq
adds r1, r6, #0
adds r1, #0x89
movs r0, #1
strb r0, [r1]
b _080565EA
.align 2, 0
_080565D8: .4byte gUnk_08107C0F
_080565DC: .4byte gUnk_02000040
_080565E0: .4byte gMessageChoices
_080565E4:
subs r7, #1
b _080565EA
_080565E8:
adds r7, #1
_080565EA:
ldr r4, _0805660C @ =gMessageChoices
movs r1, #2
ldrsb r1, [r4, r1]
adds r0, r7, r1
bl __modsi3
adds r7, r0, #0
movs r5, #3
ldrsb r5, [r4, r5]
cmp r7, r5
beq _08056610
strb r7, [r4, #3]
movs r0, #0x69
bl SoundReq
movs r1, #1
b _08056612
.align 2, 0
_0805660C: .4byte gMessageChoices
_08056610:
movs r1, #0
_08056612:
ldr r2, _08056674 @ =gUnk_02000040
ldrb r0, [r2]
cmp r0, #1
bne _08056624
ldr r1, _08056678 @ =gMessageChoices
movs r0, #2
strb r0, [r2]
strb r0, [r1]
movs r1, #1
_08056624:
cmp r1, #0
beq _0805666A
ldr r0, _0805667C @ =gTextRender
mov sl, r0
movs r1, #0x56
add r1, sl
mov sb, r1
ldrh r0, [r1]
mov r8, r0
ldr r4, _08056678 @ =gMessageChoices
lsls r0, r5, #1
adds r4, #8
adds r0, r0, r4
ldrh r0, [r0]
strh r0, [r1]
adds r6, #0x50
movs r0, #0
adds r1, r6, #0
bl sub_0805F8E4
lsls r0, r7, #1
adds r0, r0, r4
ldrh r0, [r0]
mov r1, sb
strh r0, [r1]
movs r0, #1
adds r1, r6, #0
bl sub_0805F8E4
mov r1, r8
mov r0, sb
strh r1, [r0]
movs r0, #1
ldr r1, _08056680 @ =0x0202281D
strb r0, [r1]
_0805666A:
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08056674: .4byte gUnk_02000040
_08056678: .4byte gMessageChoices
_0805667C: .4byte gTextRender
_08056680: .4byte 0x0202281D
.syntax divided
-170
View File
@@ -1,170 +0,0 @@
.syntax unified
push {r4, r5, r6, r7, lr}
adds r2, r0, #0
ldr r0, [r2, #0x30]
cmp r0, #0
bne _0807FC88
b _0807FDA6
_0807FC88:
movs r1, #0xa
ldrsh r4, [r2, r1]
movs r1, #0x2e
ldrsh r0, [r0, r1]
subs r0, #0x78
subs r3, r4, r0
cmp r3, #0
beq _0807FD16
ldrh r6, [r2, #0xa]
movs r7, #7
ands r7, r6
mov ip, r6
cmp r3, #0
ble _0807FCDC
ldrh r0, [r2, #6]
adds r5, r0, #0
cmp r5, r4
bge _0807FD16
ldrb r0, [r2, #0xe]
cmp r0, r3
bgt _0807FCBC
adds r3, r0, #0
ldrb r1, [r2, #0xf]
movs r0, #4
orrs r0, r1
strb r0, [r2, #0xf]
_0807FCBC:
mov r1, ip
subs r0, r1, r3
strh r0, [r2, #0xa]
subs r0, r7, r3
cmp r0, #0
bgt _0807FCCE
ldr r1, _0807FCD8 @ =gUpdateVisibleTiles
movs r0, #1
strb r0, [r1]
_0807FCCE:
movs r1, #0xa
ldrsh r0, [r2, r1]
cmp r5, r0
blt _0807FD16
b _0807FD14
.align 2, 0
_0807FCD8: .4byte gUpdateVisibleTiles
_0807FCDC:
ldrh r0, [r2, #6]
ldrh r1, [r2, #0x1e]
adds r0, r0, r1
adds r5, r0, #0
subs r5, #0xf0
cmp r4, r5
bge _0807FD16
ldrb r0, [r2, #0xe]
rsbs r0, r0, #0
cmp r0, r3
blt _0807FCFC
adds r3, r0, #0
ldrb r1, [r2, #0xf]
movs r0, #4
orrs r0, r1
strb r0, [r2, #0xf]
_0807FCFC:
subs r0, r6, r3
strh r0, [r2, #0xa]
subs r0, r7, r3
cmp r0, #7
ble _0807FD0C
ldr r1, _0807FD68 @ =gUpdateVisibleTiles
movs r0, #1
strb r0, [r1]
_0807FD0C:
movs r1, #0xa
ldrsh r0, [r2, r1]
cmp r0, r5
blt _0807FD16
_0807FD14:
strh r5, [r2, #0xa]
_0807FD16:
movs r0, #0xc
ldrsh r4, [r2, r0]
ldr r0, [r2, #0x30]
movs r1, #0x32
ldrsh r0, [r0, r1]
subs r0, #0x50
subs r3, r4, r0
cmp r3, #0
beq _0807FDA6
ldrh r6, [r2, #0xc]
movs r7, #7
ands r7, r6
mov ip, r6
cmp r3, #0
ble _0807FD6C
ldrh r0, [r2, #8]
adds r5, r0, #0
cmp r5, r4
bge _0807FDA6
ldrb r0, [r2, #0xe]
cmp r0, r3
bgt _0807FD4C
adds r3, r0, #0
ldrb r1, [r2, #0xf]
movs r0, #4
orrs r0, r1
strb r0, [r2, #0xf]
_0807FD4C:
mov r1, ip
subs r0, r1, r3
strh r0, [r2, #0xc]
subs r0, r7, r3
cmp r0, #0
bgt _0807FD5E
ldr r1, _0807FD68 @ =gUpdateVisibleTiles
movs r0, #1
strb r0, [r1]
_0807FD5E:
movs r1, #0xc
ldrsh r0, [r2, r1]
cmp r5, r0
blt _0807FDA6
b _0807FDA4
.align 2, 0
_0807FD68: .4byte gUpdateVisibleTiles
_0807FD6C:
ldrh r0, [r2, #8]
ldrh r1, [r2, #0x20]
adds r0, r0, r1
adds r5, r0, #0
subs r5, #0xa0
cmp r4, r5
bge _0807FDA6
ldrb r0, [r2, #0xe]
rsbs r0, r0, #0
cmp r0, r3
blt _0807FD8C
adds r3, r0, #0
ldrb r1, [r2, #0xf]
movs r0, #4
orrs r0, r1
strb r0, [r2, #0xf]
_0807FD8C:
subs r0, r6, r3
strh r0, [r2, #0xc]
subs r0, r7, r3
cmp r0, #7
ble _0807FD9C
ldr r1, _0807FDAC @ =gUpdateVisibleTiles
movs r0, #1
strb r0, [r1]
_0807FD9C:
movs r1, #0xc
ldrsh r0, [r2, r1]
cmp r0, r5
blt _0807FDA6
_0807FDA4:
strh r5, [r2, #0xc]
_0807FDA6:
bl sub_08080BC4
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0807FDAC: .4byte gUpdateVisibleTiles
.syntax divided
@@ -1,99 +0,0 @@
.syntax unified
push {r4, r5, r6, lr}
adds r5, r0, #0
ldrb r0, [r5, #2]
movs r6, #8
cmp r0, #0
bne _0801CC10
movs r6, #4
cmp r0, #0
bne _0801CC10
ldr r3, _0801CC08 @ =gUnk_0200AF00
ldrb r0, [r3, #1]
ldrb r2, [r5, #1]
asrs r0, r2
movs r1, #1
ands r0, r1
cmp r0, #0
bne _0801CBF6
ldr r0, _0801CC0C @ =gMessage
ldrb r1, [r0]
movs r0, #0x7f
ands r0, r1
cmp r0, #0
beq _0801CC10
_0801CBF6:
lsls r0, r2, #1
adds r1, r3, #0
adds r1, #0x1c
adds r0, r0, r1
movs r1, #0
ldrsh r0, [r0, r1]
adds r1, r0, #0
subs r1, #0x28
b _0801CC1E
.align 2, 0
_0801CC08: .4byte gUnk_0200AF00
_0801CC0C: .4byte gMessage
_0801CC10:
ldr r1, _0801CC7C @ =gUnk_0200AF00
ldrb r0, [r5, #1]
lsls r0, r0, #1
adds r1, #0x1c
adds r0, r0, r1
movs r2, #0
ldrsh r1, [r0, r2]
_0801CC1E:
movs r2, #0xe
ldrsh r0, [r5, r2]
subs r4, r1, r0
adds r1, r4, #0
cmp r4, #0
bge _0801CC2C
rsbs r4, r4, #0
_0801CC2C:
cmp r6, r4
bgt _0801CC32
adds r4, r6, #0
_0801CC32:
adds r0, r1, #0
bl sub_08000E44
muls r4, r0, r4
cmp r4, #0
beq _0801CC44
ldrh r0, [r5, #0xe]
adds r0, r0, r4
strh r0, [r5, #0xe]
_0801CC44:
ldr r0, _0801CC7C @ =gUnk_0200AF00
ldrb r1, [r5, #1]
lsls r1, r1, #1
adds r0, #0x16
adds r1, r1, r0
movs r0, #0
ldrsh r1, [r1, r0]
movs r2, #0xc
ldrsh r0, [r5, r2]
subs r4, r1, r0
adds r1, r4, #0
cmp r4, #0
bge _0801CC60
rsbs r4, r4, #0
_0801CC60:
cmp r6, r4
bgt _0801CC66
adds r4, r6, #0
_0801CC66:
adds r0, r1, #0
bl sub_08000E44
muls r4, r0, r4
cmp r4, #0
beq _0801CC78
ldrh r0, [r5, #0xc]
adds r0, r0, r4
strh r0, [r5, #0xc]
_0801CC78:
pop {r4, r5, r6, pc}
.align 2, 0
_0801CC7C: .4byte gUnk_0200AF00
.syntax divided
-111
View File
@@ -1,111 +0,0 @@
.syntax unified
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _08043388
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0804341C
movs r5, #0
movs r7, #0x80
movs r6, #4
rsbs r6, r6, #0
movs r3, #1
_0804336A:
ldr r0, [r4, #0x64]
lsls r1, r5, #2
adds r0, r0, r1
ldr r2, [r0]
ldrb r0, [r2, #0x10]
orrs r0, r7
strb r0, [r2, #0x10]
ldrb r1, [r2, #0x18]
adds r0, r6, #0
ands r0, r1
orrs r0, r3
strb r0, [r2, #0x18]
adds r5, #1
cmp r5, #4
bls _0804336A
_08043388:
ldr r3, [r4, #0x64]
adds r2, r3, #0
adds r2, #0x18
ldr r1, _080433AC @ =gUnk_080D131C
ldrb r0, [r4, #0xb]
adds r0, r0, r1
ldrb r0, [r0]
ldrb r1, [r2, #1]
subs r0, r0, r1
adds r0, #1
cmp r0, #2
bls _080433B0
ldrh r0, [r2, #8]
ldrh r1, [r3, #0x18]
adds r0, r0, r1
strh r0, [r3, #0x18]
movs r7, #0
b _080433B2
.align 2, 0
_080433AC: .4byte gUnk_080D131C
_080433B0:
movs r7, #1
_080433B2:
adds r0, r4, #0
bl sub_08043B9C
movs r5, #0
movs r6, #0x18
_080433BC:
ldr r0, [r4, #0x64]
adds r2, r0, r6
ldr r0, _080433E4 @ =gUnk_080D1414
adds r0, r5, r0
ldrb r1, [r2, #0xc]
ldrb r3, [r0]
cmp r3, r1
bls _080433E8
adds r0, r1, #1
strb r0, [r2, #0xc]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r3, r0
bne _0804341C
movs r0, #0xaf
lsls r0, r0, #1
bl SoundReq
b _0804341C
.align 2, 0
_080433E4: .4byte gUnk_080D1414
_080433E8:
cmp r7, #0
beq _08043414
cmp r5, #4
bne _08043414
adds r0, r4, #0
bl sub_08043BC8
adds r0, r4, #0
movs r1, #7
bl InitAnimationForceUpdate
adds r1, r4, #0
adds r1, #0x7e
ldrb r0, [r1]
cmp r0, #0
beq _08043414
movs r0, #0
strb r0, [r1]
ldr r0, [r4, #0x64]
ldr r1, [r0, #0x14]
movs r0, #2
strb r0, [r1, #0xd]
_08043414:
adds r6, #0x10
adds r5, #1
cmp r5, #4
bls _080433BC
_0804341C:
pop {r4, r5, r6, r7, pc}
.align 2, 0
.syntax divided
+9 -12
View File
@@ -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);
+13 -5
View File
@@ -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;
+10 -10
View File
@@ -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) {
+42 -52
View File
@@ -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*) = {
+43 -1
View File
@@ -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;