summaryrefslogtreecommitdiff
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
parent08f7fd2b618daf1493b1d4977fb14c7d64efbaba (diff)
parent7f3b6a6a44bfe0809d76f01f690ad74356ac9ae8 (diff)
Merge pull request #573 from hatal175/TextDispEnquiry
Match some functions
-rw-r--r--asm/non_matching/cutsceneMiscObject/sub_08095EAC.inc70
-rw-r--r--asm/non_matching/eu/TextDispEnquiry.inc153
-rw-r--r--asm/non_matching/scroll/sub_0807FC7C.inc170
-rw-r--r--asm/non_matching/ui/ButtonUIElement_Action1.inc99
-rw-r--r--asm/non_matching/vaati/sub_0804334C.inc111
-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
10 files changed, 117 insertions, 683 deletions
diff --git a/asm/non_matching/cutsceneMiscObject/sub_08095EAC.inc b/asm/non_matching/cutsceneMiscObject/sub_08095EAC.inc
deleted file mode 100644
index ed92dd8a..00000000
--- a/asm/non_matching/cutsceneMiscObject/sub_08095EAC.inc
+++ /dev/null
@@ -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
diff --git a/asm/non_matching/eu/TextDispEnquiry.inc b/asm/non_matching/eu/TextDispEnquiry.inc
deleted file mode 100644
index 1835ff7f..00000000
--- a/asm/non_matching/eu/TextDispEnquiry.inc
+++ /dev/null
@@ -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
diff --git a/asm/non_matching/scroll/sub_0807FC7C.inc b/asm/non_matching/scroll/sub_0807FC7C.inc
deleted file mode 100644
index 57cf9ed2..00000000
--- a/asm/non_matching/scroll/sub_0807FC7C.inc
+++ /dev/null
@@ -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
diff --git a/asm/non_matching/ui/ButtonUIElement_Action1.inc b/asm/non_matching/ui/ButtonUIElement_Action1.inc
deleted file mode 100644
index 76f9a763..00000000
--- a/asm/non_matching/ui/ButtonUIElement_Action1.inc
+++ /dev/null
@@ -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
diff --git a/asm/non_matching/vaati/sub_0804334C.inc b/asm/non_matching/vaati/sub_0804334C.inc
deleted file mode 100644
index 91e7120c..00000000
--- a/asm/non_matching/vaati/sub_0804334C.inc
+++ /dev/null
@@ -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
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;