mirror of
https://github.com/pret/pokeruby.git
synced 2026-10-10 18:25:39 -04:00
decompile sub_80E7B40 - sub_80E8094
This commit is contained in:
-782
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user