decompile sub_80E7B40 - sub_80E8094

This commit is contained in:
camthesaxman
2018-01-02 21:03:40 -06:00
parent a2e854bb7c
commit 2d95fb9b97
2 changed files with 235 additions and 798 deletions
-782
View File
@@ -5,788 +5,6 @@
.text
thumb_func_start sub_80E7B40
sub_80E7B40: @ 80E7B40
push {r4-r7,lr}
movs r5, 0
ldr r2, _080E7B8C @ =gSharedMem + 0x1000
movs r0, 0xE0
lsls r0, 1
adds r6, r2, r0
strb r5, [r6]
ldr r1, _080E7B90 @ =gMain
ldrh r4, [r1, 0x30]
movs r0, 0x40
ands r0, r4
adds r3, r2, 0
adds r7, r1, 0
cmp r0, 0
beq _080E7B9C
ldr r2, _080E7B94 @ =0x000099a4
adds r1, r3, r2
ldrb r2, [r1]
movs r0, 0
ldrsb r0, [r1, r0]
cmp r0, 0
bne _080E7B6E
b _080E7D1A
_080E7B6E:
subs r0, r2, 0x1
strb r0, [r1]
ldr r4, _080E7B98 @ =0x00009a29
adds r1, r3, r4
lsls r0, 24
asrs r0, 24
ldrb r1, [r1]
lsls r1, 24
asrs r1, 24
cmp r0, r1
bge _080E7BF2
movs r0, 0xFF
strb r0, [r6]
b _080E7D1A
.align 2, 0
_080E7B8C: .4byte gSharedMem + 0x1000
_080E7B90: .4byte gMain
_080E7B94: .4byte 0x000099a4
_080E7B98: .4byte 0x00009a29
_080E7B9C:
movs r0, 0x80
ands r0, r4
cmp r0, 0
beq _080E7BEE
ldr r0, _080E7BE0 @ =0x000099a4
adds r2, r3, r0
movs r1, 0
ldrsb r1, [r2, r1]
ldr r4, _080E7BE4 @ =0x00009a28
adds r0, r3, r4
ldrb r0, [r0]
lsls r0, 24
asrs r0, 24
subs r0, 0x1
cmp r1, r0
blt _080E7BBE
b _080E7D1A
_080E7BBE:
ldrb r0, [r2]
adds r0, 0x1
strb r0, [r2]
movs r1, 0
ldrsb r1, [r2, r1]
ldr r2, _080E7BE8 @ =0x00009a29
adds r0, r3, r2
ldrb r0, [r0]
lsls r0, 24
asrs r0, 24
adds r0, 0x4
cmp r1, r0
blt _080E7BEC
movs r0, 0x1
strb r0, [r6]
b _080E7D1A
.align 2, 0
_080E7BE0: .4byte 0x000099a4
_080E7BE4: .4byte 0x00009a28
_080E7BE8: .4byte 0x00009a29
_080E7BEC:
movs r5, 0x1
_080E7BEE:
cmp r5, 0
beq _080E7BFA
_080E7BF2:
bl sub_80E7D30
_080E7BF6:
movs r0, 0x1
b _080E7D1C
_080E7BFA:
ldrh r1, [r7, 0x30]
movs r0, 0x20
ands r0, r1
lsls r0, 16
lsrs r5, r0, 16
cmp r5, 0
beq _080E7C38
ldr r4, _080E7C30 @ =0x000099a5
adds r2, r3, r4
ldrb r0, [r2]
subs r0, 0x1
strb r0, [r2]
lsls r0, 24
cmp r0, 0
bge _080E7BF6
ldr r6, _080E7C34 @ =0x000099a4
adds r0, r3, r6
ldrb r0, [r0]
lsls r0, 24
asrs r0, 24
adds r4, 0x1
adds r1, r3, r4
adds r0, r1
ldrb r0, [r0]
subs r0, 0x1
strb r0, [r2]
b _080E7BF6
.align 2, 0
_080E7C30: .4byte 0x000099a5
_080E7C34: .4byte 0x000099a4
_080E7C38:
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _080E7C70
ldr r6, _080E7C68 @ =0x000099a5
adds r4, r3, r6
ldrb r0, [r4]
adds r0, 0x1
strb r0, [r4]
ldr r2, _080E7C6C @ =0x000099a4
adds r1, r3, r2
movs r2, 0
ldrsb r2, [r1, r2]
adds r6, 0x1
adds r1, r3, r6
adds r2, r1
lsls r0, 24
asrs r0, 24
movs r1, 0
ldrsb r1, [r2, r1]
cmp r0, r1
blt _080E7BF6
strb r5, [r4]
b _080E7BF6
.align 2, 0
_080E7C68: .4byte 0x000099a5
_080E7C6C: .4byte 0x000099a4
_080E7C70:
ldrh r1, [r7, 0x2E]
movs r0, 0x8
ands r0, r1
cmp r0, 0
beq _080E7CC4
ldr r1, _080E7CBC @ =0x00009a29
adds r0, r3, r1
ldrb r1, [r0]
ldrb r0, [r0]
lsls r0, 24
asrs r0, 24
cmp r0, 0
beq _080E7CA2
negs r0, r1
movs r4, 0xE0
lsls r4, 1
adds r2, r3, r4
strb r0, [r2]
lsls r0, 24
asrs r0, 24
movs r1, 0x4
negs r1, r1
cmp r0, r1
bge _080E7CA2
strb r1, [r2]
_080E7CA2:
ldr r6, _080E7CC0 @ =0x000099a4
adds r1, r3, r6
movs r2, 0xE0
lsls r2, 1
adds r0, r3, r2
ldrb r0, [r0]
ldrb r4, [r1]
adds r0, r4
strb r0, [r1]
movs r6, 0xDF
lsls r6, 1
adds r1, r3, r6
b _080E7D16
.align 2, 0
_080E7CBC: .4byte 0x00009a29
_080E7CC0: .4byte 0x000099a4
_080E7CC4:
movs r0, 0x4
ands r0, r1
cmp r0, 0
beq _080E7D1A
ldr r0, _080E7D24 @ =0x00009a29
adds r4, r3, r0
movs r1, 0
ldrsb r1, [r4, r1]
ldr r6, _080E7D28 @ =0x00009a28
adds r2, r3, r6
movs r0, 0
ldrsb r0, [r2, r0]
subs r0, 0x4
cmp r1, r0
bge _080E7CFE
ldrb r1, [r4]
adds r1, 0x4
ldrb r0, [r2]
subs r0, r1
movs r2, 0xE0
lsls r2, 1
adds r1, r3, r2
strb r0, [r1]
lsls r0, 24
asrs r0, 24
cmp r0, 0x4
ble _080E7CFE
movs r0, 0x4
strb r0, [r1]
_080E7CFE:
ldr r4, _080E7D2C @ =0x000099a4
adds r1, r3, r4
movs r6, 0xE0
lsls r6, 1
adds r0, r3, r6
ldrb r0, [r0]
ldrb r2, [r1]
adds r0, r2
strb r0, [r1]
movs r4, 0xDF
lsls r4, 1
adds r1, r3, r4
_080E7D16:
movs r0, 0x4
strb r0, [r1]
_080E7D1A:
movs r0, 0
_080E7D1C:
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_080E7D24: .4byte 0x00009a29
_080E7D28: .4byte 0x00009a28
_080E7D2C: .4byte 0x000099a4
thumb_func_end sub_80E7B40
thumb_func_start sub_80E7D30
sub_80E7D30: @ 80E7D30
push {r4,lr}
ldr r0, _080E7D60 @ =gSharedMem + 0x1000
ldr r1, _080E7D64 @ =0x000099a5
adds r4, r0, r1
ldr r2, _080E7D68 @ =0x000099a4
adds r1, r0, r2
ldrb r1, [r1]
lsls r1, 24
asrs r1, 24
adds r2, 0x2
adds r0, r2
adds r1, r0
movs r2, 0
ldrsb r2, [r4, r2]
ldrb r3, [r1]
movs r0, 0
ldrsb r0, [r1, r0]
cmp r2, r0
blt _080E7D5A
subs r0, r3, 0x1
strb r0, [r4]
_080E7D5A:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080E7D60: .4byte gSharedMem + 0x1000
_080E7D64: .4byte 0x000099a5
_080E7D68: .4byte 0x000099a4
thumb_func_end sub_80E7D30
thumb_func_start sub_80E7D6C
sub_80E7D6C: @ 80E7D6C
push {r4,r5,lr}
movs r4, 0
ldr r0, _080E7D94 @ =gSharedMem + 0x1000
ldrb r1, [r0, 0xA]
cmp r4, r1
bcs _080E7D8E
adds r5, r0, 0
_080E7D7A:
adds r0, r4, 0
ldr r1, _080E7D98 @ =0x0000ffff
bl sub_80E7F00
adds r0, r4, 0x1
lsls r0, 16
lsrs r4, r0, 16
ldrb r0, [r5, 0xA]
cmp r4, r0
bcc _080E7D7A
_080E7D8E:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080E7D94: .4byte gSharedMem + 0x1000
_080E7D98: .4byte 0x0000ffff
thumb_func_end sub_80E7D6C
thumb_func_start sub_80E7D9C
sub_80E7D9C: @ 80E7D9C
push {r4,r5,lr}
movs r2, 0
ldr r0, _080E7DCC @ =gSharedMem + 0x1000
ldrb r1, [r0, 0xA]
cmp r2, r1
bcs _080E7DC6
adds r3, r0, 0
ldr r4, [r3, 0x4]
adds r5, r3, 0
adds r5, 0xC
_080E7DB0:
lsls r0, r2, 1
adds r1, r0, r4
adds r0, r5
ldrh r0, [r0]
strh r0, [r1]
adds r0, r2, 0x1
lsls r0, 16
lsrs r2, r0, 16
ldrb r0, [r3, 0xA]
cmp r2, r0
bcc _080E7DB0
_080E7DC6:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080E7DCC: .4byte gSharedMem + 0x1000
thumb_func_end sub_80E7D9C
thumb_func_start sub_80E7DD0
sub_80E7DD0: @ 80E7DD0
push {r4,lr}
ldr r2, _080E7E28 @ =gSharedMem + 0x1000
ldr r1, _080E7E2C @ =0x000099a5
adds r0, r2, r1
movs r1, 0
ldrsb r1, [r0, r1]
lsls r1, 1
ldr r3, _080E7E30 @ =0x000099a4
adds r0, r2, r3
ldrb r0, [r0]
lsls r0, 24
asrs r0, 24
lsls r0, 2
adds r1, r0
adds r3, 0x86
adds r0, r2, r3
adds r1, r0
ldrh r4, [r1]
adds r0, r2, 0
adds r0, 0x7D
ldrb r0, [r0]
cmp r0, 0
beq _080E7E34
adds r0, r2, 0
adds r0, 0x86
ldrb r0, [r0]
lsls r0, 24
asrs r0, 24
adds r1, r2, 0
adds r1, 0x7E
adds r0, r1
ldrb r0, [r0]
cmp r0, 0x1
bls _080E7E34
adds r0, r4, 0
bl sub_80EB2D4
lsls r0, 16
lsrs r0, 16
cmp r0, 0x7
bne _080E7E34
movs r0, 0
b _080E7E46
.align 2, 0
_080E7E28: .4byte gSharedMem + 0x1000
_080E7E2C: .4byte 0x000099a5
_080E7E30: .4byte 0x000099a4
_080E7E34:
ldr r0, _080E7E4C @ =gSharedMem + 0x1000
adds r0, 0x27
ldrb r0, [r0]
adds r1, r4, 0
bl sub_80E7F00
bl sub_80E95A4
movs r0, 0x1
_080E7E46:
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080E7E4C: .4byte gSharedMem + 0x1000
thumb_func_end sub_80E7DD0
thumb_func_start sub_80E7E50
sub_80E7E50: @ 80E7E50
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x8
movs r5, 0
movs r2, 0
ldr r1, _080E7EF0 @ =gSharedMem + 0x1000
adds r3, r1, 0
adds r3, 0x84
movs r0, 0
ldrsb r0, [r3, r0]
cmp r2, r0
bge _080E7EDE
mov r8, r1
adds r0, r1, 0
str r0, [sp]
_080E7E74:
mov r0, r8
adds r0, 0x7E
adds r0, r2, r0
movs r1, 0
strb r1, [r0]
movs r3, 0
ldr r6, _080E7EF4 @ =gSharedMem + 0x1083
movs r0, 0
ldrsb r0, [r6, r0]
adds r1, r2, 0x1
str r1, [sp, 0x4]
cmp r3, r0
bge _080E7ECE
ldr r6, [sp]
mov r12, r6
movs r0, 0
mov r10, r0
ldr r1, _080E7EF4 @ =gSharedMem + 0x1083
mov r9, r1
ldr r7, _080E7EF8 @ =gSharedMem + 0x100C
lsls r4, r2, 1
_080E7E9E:
lsls r1, r5, 1
adds r2, r1, r7
mov r6, r12
ldr r0, [r6, 0x4]
adds r1, r0
ldrh r0, [r1]
strh r0, [r2]
adds r0, r3, r4
mov r1, r12
adds r1, 0x8C
adds r0, r1
mov r1, r10
strb r1, [r0]
adds r0, r5, 0x1
lsls r0, 16
lsrs r5, r0, 16
adds r0, r3, 0x1
lsls r0, 16
lsrs r3, r0, 16
mov r6, r9
movs r0, 0
ldrsb r0, [r6, r0]
cmp r3, r0
blt _080E7E9E
_080E7ECE:
ldr r1, [sp, 0x4]
lsls r0, r1, 16
lsrs r2, r0, 16
ldr r6, _080E7EFC @ =gSharedMem + 0x1084
movs r0, 0
ldrsb r0, [r6, r0]
cmp r2, r0
blt _080E7E74
_080E7EDE:
add sp, 0x8
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080E7EF0: .4byte gSharedMem + 0x1000
_080E7EF4: .4byte gSharedMem + 0x1083
_080E7EF8: .4byte gSharedMem + 0x100C
_080E7EFC: .4byte gSharedMem + 0x1084
thumb_func_end sub_80E7E50
thumb_func_start sub_80E7F00
sub_80E7F00: @ 80E7F00
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
lsls r0, 16
lsrs r6, r0, 16
lsls r1, 16
lsrs r1, 16
mov r9, r1
ldr r7, _080E7F68 @ =gSharedMem + 0x1000
adds r0, r7, 0
adds r0, 0x83
movs r4, 0
ldrsb r4, [r0, r4]
adds r0, r6, 0
adds r1, r4, 0
bl __divsi3
lsls r0, 16
lsrs r5, r0, 16
adds r0, r6, 0
adds r1, r4, 0
bl __modsi3
lsls r0, 16
lsrs r0, 16
mov r8, r0
lsls r0, r6, 1
adds r1, r7, 0
adds r1, 0xC
adds r0, r1
ldrh r0, [r0]
bl sub_80EB2D4
adds r4, r0, 0
lsls r4, 16
lsrs r4, 16
mov r0, r9
bl sub_80EB2D4
lsls r0, 16
lsrs r3, r0, 16
cmp r4, 0x7
bne _080E7F6C
cmp r3, 0x7
beq _080E7F7C
adds r1, r7, 0
adds r1, 0x7E
adds r1, r5, r1
ldrb r0, [r1]
subs r0, 0x1
b _080E7F7A
.align 2, 0
_080E7F68: .4byte gSharedMem + 0x1000
_080E7F6C:
cmp r3, 0x7
bne _080E7F7C
adds r1, r7, 0
adds r1, 0x7E
adds r1, r5, r1
ldrb r0, [r1]
adds r0, 0x1
_080E7F7A:
strb r0, [r1]
_080E7F7C:
movs r3, 0
ldr r2, _080E7FA4 @ =gSharedMem + 0x1000
lsls r0, r5, 1
add r0, r8
adds r1, r2, 0
adds r1, 0x8C
adds r0, r1
strb r3, [r0]
lsls r0, r6, 1
adds r2, 0xC
adds r0, r2
mov r1, r9
strh r1, [r0]
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080E7FA4: .4byte gSharedMem + 0x1000
thumb_func_end sub_80E7F00
thumb_func_start sub_80E7FA8
sub_80E7FA8: @ 80E7FA8
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
movs r0, 0
mov r8, r0
movs r5, 0
ldr r0, _080E8040 @ =gSharedMem + 0x1000
ldrb r1, [r0, 0xA]
cmp r8, r1
bcs _080E802E
ldr r3, _080E8044 @ =0x00009e14
adds r6, r0, r3
ldr r1, _080E8048 @ =0x00009e41
adds r1, r0
mov r9, r1
_080E7FC8:
ldr r3, _080E804C @ =0xffff61ec
adds r7, r6, r3
ldr r0, [r7, 0x4]
lsls r4, r5, 1
adds r0, r4, r0
ldrh r1, [r0]
adds r0, r6, 0
movs r2, 0
bl sub_80EB218
ldr r1, _080E8050 @ =0xffff61f8
adds r0, r6, r1
adds r0, r4
ldrh r1, [r0]
mov r0, r9
movs r2, 0
bl sub_80EB218
adds r1, r6, 0
mov r2, r9
ldrb r0, [r1]
adds r4, r5, 0x1
ldrb r3, [r2]
cmp r0, r3
bne _080E8018
adds r3, r7, 0
cmp r0, 0xFF
beq _080E8010
_080E8000:
adds r1, 0x1
adds r2, 0x1
ldrb r0, [r1]
ldrb r5, [r2]
cmp r0, r5
bne _080E8018
cmp r0, 0xFF
bne _080E8000
_080E8010:
ldrb r0, [r1]
ldrb r2, [r2]
cmp r0, r2
beq _080E8024
_080E8018:
mov r0, r8
adds r0, 0x1
lsls r0, 16
lsrs r0, 16
mov r8, r0
ldr r3, _080E8040 @ =gSharedMem + 0x1000
_080E8024:
lsls r0, r4, 16
lsrs r5, r0, 16
ldrb r3, [r3, 0xA]
cmp r5, r3
bcc _080E7FC8
_080E802E:
mov r1, r8
lsls r0, r1, 24
lsrs r0, 24
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_080E8040: .4byte gSharedMem + 0x1000
_080E8044: .4byte 0x00009e14
_080E8048: .4byte 0x00009e41
_080E804C: .4byte 0xffff61ec
_080E8050: .4byte 0xffff61f8
thumb_func_end sub_80E7FA8
thumb_func_start sub_80E8054
sub_80E8054: @ 80E8054
push {r4,lr}
movs r1, 0
ldr r2, _080E8078 @ =gSharedMem + 0x1000
ldrb r0, [r2, 0xA]
cmp r1, r0
bcs _080E808A
adds r4, r2, 0
adds r4, 0xC
ldr r3, _080E807C @ =0x0000ffff
adds r2, r0, 0
_080E8068:
lsls r0, r1, 1
adds r0, r4
ldrh r0, [r0]
cmp r0, r3
beq _080E8080
movs r0, 0
b _080E808C
.align 2, 0
_080E8078: .4byte gSharedMem + 0x1000
_080E807C: .4byte 0x0000ffff
_080E8080:
adds r0, r1, 0x1
lsls r0, 16
lsrs r1, r0, 16
cmp r1, r2
bcc _080E8068
_080E808A:
movs r0, 0x1
_080E808C:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_80E8054
thumb_func_start sub_80E8094
sub_80E8094: @ 80E8094
push {r4-r7,lr}
movs r5, 0
ldr r6, _080E80C4 @ =gSharedMem + 0xAE14
adds r7, r6, 0
adds r7, 0x2D
_080E809E:
lsls r4, r5, 1
ldr r1, _080E80C8 @ =0xffff61f8
adds r0, r6, r1
adds r0, r4
ldrh r1, [r0]
adds r0, r6, 0
movs r2, 0
bl sub_80EB218
ldr r0, _080E80CC @ =gMysteryEventPhrase
adds r4, r0
ldrh r1, [r4]
adds r0, r7, 0
movs r2, 0
bl sub_80EB218
adds r3, r6, 0
adds r4, r7, 0
b _080E80D8
.align 2, 0
_080E80C4: .4byte gSharedMem + 0xAE14
_080E80C8: .4byte 0xffff61f8
_080E80CC: .4byte gMysteryEventPhrase
_080E80D0:
adds r4, 0x1
adds r3, 0x1
cmp r2, r1
bne _080E80F4
_080E80D8:
ldrb r2, [r3]
adds r0, r2, 0
cmp r0, 0xFF
beq _080E80EE
ldrb r1, [r4]
adds r0, r1, 0
cmp r0, 0xFF
bne _080E80D0
ldrb r0, [r3]
cmp r0, 0xFF
bne _080E80F4
_080E80EE:
ldrb r0, [r4]
cmp r0, 0xFF
beq _080E80F8
_080E80F4:
movs r0, 0
b _080E8104
_080E80F8:
adds r0, r5, 0x1
lsls r0, 16
lsrs r5, r0, 16
cmp r5, 0x3
bls _080E809E
movs r0, 0x1
_080E8104:
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_80E8094
thumb_func_start sub_80E810C
sub_80E810C: @ 80E810C
push {r4-r7,lr}
+235 -16
View File
@@ -46,7 +46,7 @@ struct Shared1000
bool8 unk87;
u16 unk88;
u16 unk8A;
u8 filler8C[0x96-0x8C];
u8 unk8C[(0x96-0x8C)/2][2];
u8 unk96;
u8 filler97[0x1A8-0x97];
s8 unk1A8;
@@ -73,28 +73,33 @@ struct Shared1000
#if GERMAN
u8 filler99A4_de[2];
#endif
u8 unk99A4;
u8 unk99A5;
u8 unk99A6[0xA28-0x9A6];
s8 unk99A4;
s8 unk99A5;
s8 unk99A6[0xA28-0x9A6];
s8 unk9A28;
u8 unk9A29;
u8 filler9A2A[0xC7C-0xA2A];
s8 unk9A29;
//u8 filler9A2A[0xC7C-0xA2A];
u16 unk9A2A[0x94][2]; // unknown length
u8 filler9C7A[2];
u16 unk9C7C; // this is at 0x9FA8 in German
s16 unk9C7E;
u8 filler9C80[0xDA4-0xC80];
u8 unk9DA4[0x24];
u8 filler9DC8[0xF6E - 0xDC8];
u8 filler9DC8[0xE14 - 0xDC8];
u8 unk9E14[0xE41 - 0xE14];
u8 unk9E41[0xF6E - 0xE41];
u8 unk9F6E[1]; // unknown length
};
#define static_assert(cond) \
typedef char test_[(cond) ? 1 : -1]
static_assert(offsetof(struct Shared1000, unk20) == 0x20);
//static_assert(offsetof(struct Shared1000, unk9DA4) == 0x9DA4);
#define shared1000 (*(struct Shared1000 *)(gSharedMem + 0x1000))
const u16 gMysteryEventPhrase[] = {EC_WORD_MYSTERY, EC_WORD_EVENT, EC_WORD_IS, EC_WORD_EXCITING};
const u16 gBerryMasterWifePhrases[][2] =
{
#if ENGLISH
@@ -209,15 +214,15 @@ bool8 sub_80E75D8(void);
bool8 sub_80E77C8(void);
void sub_80E7A98(void);
void sub_80E7AD4(void);
u8 sub_80E7B40(void);
bool8 sub_80E7B40(void);
void sub_80E7D30(void);
void sub_80E7D6C(void);
void sub_80E7D9C(void);
u8 sub_80E7DD0(void);
bool8 sub_80E7DD0(void);
void sub_80E7E50(void);
void sub_80E7F00();
void sub_80E7F00(u16, u16);
u8 sub_80E7FA8(void);
u8 sub_80E8054(void);
bool8 sub_80E8054(void);
u8 sub_80E8094(void);
u8 sub_80E810C(void);
void sub_80E81C0(void);
@@ -243,6 +248,7 @@ void sub_80E9974(void);
void sub_80E9A14(void);
void sub_80E9A4C(void);
void sub_80E9AD4(void);
void sub_80E9C94(void);
void sub_80E9D00(void);
void sub_80E9D7C(void);
void sub_80E9E08();
@@ -261,9 +267,9 @@ u8 sub_80EAD7C(u8);
void sub_80EAECC(void);
void sub_80EB040(void);
void sub_80EB0B0(void);
void sub_80EB218();
u16 sub_80EB2D4();
bool8 sub_80EB680(u16 *, u16, u16, u16);
void sub_80E9C94(void);
// TODO: Integrate German code into this
#if ENGLISH
@@ -921,7 +927,7 @@ void sub_80E6D7C(void)
{
case 0:
sub_80E8398(2);
if (sub_80E8054() != 0)
if (sub_80E8054())
{
sub_80E91D4(5);
shared1000.unk24 = 10;
@@ -1198,7 +1204,7 @@ void sub_80E7294(void)
}
else
{
if (shared1000.unk1B9 != 0)
if (shared1000.unk1B9)
PlaySE(SE_SELECT);
if (gMain.newKeys & A_BUTTON)
{
@@ -1217,7 +1223,7 @@ void sub_80E7324(void)
switch (shared1000.unk24)
{
case 0:
if (sub_80E7DD0() == 0)
if (!sub_80E7DD0())
{
sub_80E682C(sub_80E7294);
}
@@ -1577,4 +1583,217 @@ void sub_80E7AD4(void)
shared1000.unk1B8 = shared1000.unk40[shared1000.unk1A8][shared1000.unk1A9];
}
bool8 sub_80E7B40(void)
{
bool8 pressedUpDown = FALSE;
shared1000.unk1C0 = 0;
if (gMain.newAndRepeatedKeys & DPAD_UP)
{
if (shared1000.unk99A4 == 0)
return FALSE;
shared1000.unk99A4--;
if (shared1000.unk99A4 < shared1000.unk9A29)
{
shared1000.unk1C0 = -1;
return FALSE;
}
pressedUpDown = TRUE;
}
else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
{
if (shared1000.unk99A4 >= shared1000.unk9A28 - 1)
return FALSE;
shared1000.unk99A4++;
if (shared1000.unk99A4 >= shared1000.unk9A29 + 4)
{
shared1000.unk1C0 = 1;
return FALSE;
}
pressedUpDown = TRUE;
}
if (pressedUpDown)
{
sub_80E7D30();
return TRUE;
}
if (gMain.newAndRepeatedKeys & DPAD_LEFT)
{
shared1000.unk99A5--;
if (shared1000.unk99A5 < 0)
shared1000.unk99A5 = shared1000.unk99A6[shared1000.unk99A4] - 1;
return TRUE;
}
else if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
{
shared1000.unk99A5++;
if (shared1000.unk99A5 >= shared1000.unk99A6[shared1000.unk99A4])
shared1000.unk99A5 = 0;
return TRUE;
}
if (gMain.newKeys & START_BUTTON)
{
if (shared1000.unk9A29 != 0)
{
shared1000.unk1C0 = -shared1000.unk9A29;
if (shared1000.unk1C0 < -4)
shared1000.unk1C0 = -4;
}
shared1000.unk99A4 += shared1000.unk1C0;
shared1000.unk1BE = 4;
}
else if (gMain.newKeys & SELECT_BUTTON)
{
if (shared1000.unk9A29 < shared1000.unk9A28 - 4)
{
shared1000.unk1C0 = shared1000.unk9A28 - 4 - shared1000.unk9A29;
if (shared1000.unk1C0 > 4)
shared1000.unk1C0 = 4;
}
shared1000.unk99A4 += shared1000.unk1C0;
shared1000.unk1BE = 4;
}
return FALSE;
}
void sub_80E7D30(void)
{
if (shared1000.unk99A5 >= shared1000.unk99A6[shared1000.unk99A4])
shared1000.unk99A5 = shared1000.unk99A6[shared1000.unk99A4] - 1;
}
void sub_80E7D6C(void)
{
u16 i;
for (i = 0; i < shared1000.unkA; i++)
sub_80E7F00(i, 0xFFFF);
}
void sub_80E7D9C(void)
{
u16 i;
for (i = 0; i < shared1000.unkA; i++)
shared1000.unk4[i] = shared1000.unkC[i];
}
bool8 sub_80E7DD0(void)
{
u16 r4 = shared1000.unk9A2A[shared1000.unk99A4][shared1000.unk99A5];
if (shared1000.unk7D != 0
&& shared1000.unk7E[shared1000.unk86] > 1
&& sub_80EB2D4(r4) == 7)
return FALSE;
sub_80E7F00(shared1000.unk27, r4);
sub_80E95A4();
return TRUE;
}
void sub_80E7E50(void)
{
u16 r5 = 0;
u16 i;
u16 j;
for (i = 0; i < shared1000.unk84; i++)
{
shared1000.unk7E[i] = 0;
for (j = 0; j < shared1000.unk83; j++)
{
shared1000.unkC[r5] = shared1000.unk4[r5];
shared1000.unk8C[i][j] = 0;
r5++;
}
}
}
void sub_80E7F00(u16 a, u16 b)
{
u16 r5 = a / shared1000.unk83;
u16 r8 = a % shared1000.unk83;
u16 r4 = sub_80EB2D4(shared1000.unkC[a]);
u16 r3 = sub_80EB2D4(b);
if (r4 == 7)
{
if (r3 != 7)
shared1000.unk7E[r5]--;
}
else
{
if (r3 == 7)
shared1000.unk7E[r5]++;
}
r3 = 0;
shared1000.unk8C[r5][r8] = r3;
shared1000.unkC[a] = b;
}
u8 sub_80E7FA8(void)
{
u16 r8 = 0;
u16 i;
u8 *r1;
u8 *r2;
for (i = 0; i < shared1000.unkA; i++)
{
sub_80EB218(shared1000.unk9E14, shared1000.unk4[i], 0);
sub_80EB218(shared1000.unk9E41, shared1000.unkC[i], 0);
r1 = shared1000.unk9E14;
r2 = shared1000.unk9E41;
while (*r1 == *r2 && *r1 != 0xFF)
{
r1++;
r2++;
}
if (*r1 != *r2)
r8++;
}
return r8;
}
bool8 sub_80E8054(void)
{
u16 i;
for (i = 0; i < shared1000.unkA; i++)
{
if (shared1000.unkC[i] != 0xFFFF)
return FALSE;
}
return TRUE;
}
// CheckMysteryEventPhrase
bool8 sub_80E8094(void)
{
u16 i;
u8 *r3;
u8 *r4;
for (i = 0; i < 4; i++)
{
sub_80EB218(shared1000.unk9E14, shared1000.unkC[i], 0);
sub_80EB218(shared1000.unk9E41, gMysteryEventPhrase[i], 0);
r3 = shared1000.unk9E14;
r4 = shared1000.unk9E41;
while (*r3 != 0xFF && *r4 != 0xFF)
{
if (*r3++ != *r4++)
return FALSE;
}
if (*r3 != 0xFF || *r4 != 0xFF)
return FALSE;
}
return TRUE;
}
#endif