mirror of
https://github.com/pret/pokeemerald-jp.git
synced 2026-04-26 01:19:54 -05:00
451 lines
7.6 KiB
ArmAsm
451 lines
7.6 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "constants/constants.inc"
|
|
.text
|
|
.syntax unified
|
|
|
|
thumb_func_start berry_fix_text_update
|
|
berry_fix_text_update: @ 0x081BEEE4
|
|
push {r4, r5, lr}
|
|
sub sp, #4
|
|
adds r5, r0, #0
|
|
ldr r0, _081BEEFC
|
|
ldr r0, [r0]
|
|
ldrh r0, [r0, #0x10]
|
|
cmp r0, #0xff
|
|
bls _081BEF04
|
|
ldr r0, _081BEF00
|
|
str r0, [r5, #0x1c]
|
|
b _081BEF4C
|
|
.align 2, 0
|
|
_081BEEFC: .4byte 0x0203CBD8
|
|
_081BEF00: .4byte 0x08007141
|
|
_081BEF04:
|
|
ldrh r1, [r5, #0x22]
|
|
movs r2, #0x22
|
|
ldrsh r0, [r5, r2]
|
|
cmp r0, #0x5f
|
|
ble _081BEF48
|
|
movs r4, #0
|
|
_081BEF10:
|
|
ldr r0, _081BEF44
|
|
ldr r3, [r0]
|
|
ldr r0, [r3]
|
|
ldrh r1, [r3, #0x10]
|
|
adds r2, r1, #1
|
|
strh r2, [r3, #0x10]
|
|
lsls r1, r1, #0x10
|
|
ldr r2, [r3, #0xc]
|
|
lsrs r1, r1, #0xf
|
|
adds r1, r1, r2
|
|
ldrh r1, [r1]
|
|
movs r2, #0
|
|
str r2, [sp]
|
|
movs r3, #0x10
|
|
bl CB2_InitBerryFixProgram
|
|
adds r0, r4, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r4, r0, #0x18
|
|
cmp r4, #1
|
|
bls _081BEF10
|
|
adds r0, r5, #0
|
|
movs r1, #0
|
|
bl StartSpriteAnim
|
|
b _081BEF4C
|
|
.align 2, 0
|
|
_081BEF44: .4byte 0x0203CBD8
|
|
_081BEF48:
|
|
adds r0, r1, #1
|
|
strh r0, [r5, #0x22]
|
|
_081BEF4C:
|
|
add sp, #4
|
|
pop {r4, r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end berry_fix_text_update
|
|
|
|
thumb_func_start CB2_InitBerryFixProgram
|
|
CB2_InitBerryFixProgram: @ 0x081BEF54
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
sub sp, #8
|
|
str r0, [sp]
|
|
mov sl, r1
|
|
adds r6, r2, #0
|
|
mov r8, r3
|
|
ldr r0, [sp, #0x28]
|
|
mov sb, r0
|
|
lsls r1, r1, #0x10
|
|
lsrs r1, r1, #0x10
|
|
mov sl, r1
|
|
lsls r6, r6, #0x18
|
|
lsrs r6, r6, #0x18
|
|
mov r0, r8
|
|
lsls r0, r0, #0x18
|
|
mov r8, r0
|
|
lsrs r7, r0, #0x18
|
|
mov r1, sb
|
|
lsls r1, r1, #0x18
|
|
lsrs r1, r1, #0x18
|
|
mov sb, r1
|
|
mov r0, sl
|
|
adds r1, r7, #0
|
|
bl __divsi3
|
|
adds r5, r0, #0
|
|
lsls r5, r5, #0x18
|
|
lsrs r4, r5, #0x18
|
|
ldr r3, _081BF01C
|
|
strh r4, [r3]
|
|
mov r0, sl
|
|
adds r1, r7, #0
|
|
str r3, [sp, #4]
|
|
bl __modsi3
|
|
lsls r0, r0, #0x18
|
|
lsrs r2, r0, #0x18
|
|
ldr r3, [sp, #4]
|
|
strh r2, [r3, #2]
|
|
movs r1, #7
|
|
ands r4, r1
|
|
ands r2, r1
|
|
strh r4, [r3, #4]
|
|
strh r2, [r3, #6]
|
|
lsrs r0, r0, #0x1b
|
|
lsrs r5, r5, #0x1b
|
|
strh r0, [r3, #8]
|
|
strh r5, [r3, #0xa]
|
|
mov r1, r8
|
|
lsrs r1, r1, #0x1b
|
|
lsls r1, r1, #6
|
|
mov r8, r1
|
|
mov r1, r8
|
|
muls r1, r5, r1
|
|
lsls r0, r0, #6
|
|
adds r1, r1, r0
|
|
lsls r1, r1, #0x10
|
|
lsrs r1, r1, #0x10
|
|
strh r1, [r3, #0xc]
|
|
lsls r4, r4, #3
|
|
adds r4, r4, r2
|
|
adds r1, r1, r4
|
|
lsls r4, r1, #0x10
|
|
lsrs r4, r4, #0x11
|
|
strh r1, [r3, #0xe]
|
|
movs r1, #1
|
|
mov r0, sl
|
|
ands r1, r0
|
|
movs r2, #1
|
|
eors r1, r2
|
|
lsls r0, r1, #2
|
|
lsls r6, r0
|
|
eors r1, r2
|
|
lsls r1, r1, #2
|
|
movs r0, #0xf
|
|
lsls r0, r1
|
|
orrs r6, r0
|
|
lsls r6, r6, #0x18
|
|
lsrs r6, r6, #0x18
|
|
mov r1, sb
|
|
lsls r1, r1, #5
|
|
mov sb, r1
|
|
add sb, r4
|
|
ldr r1, [sp]
|
|
add r1, sb
|
|
ldrb r0, [r1]
|
|
ands r6, r0
|
|
strb r6, [r1]
|
|
add sp, #8
|
|
pop {r3, r4, r5}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
mov sl, r5
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081BF01C: .4byte 0x030012A0
|
|
thumb_func_end CB2_InitBerryFixProgram
|
|
|
|
thumb_func_start berry_fix_bg_hide
|
|
berry_fix_bg_hide: @ 0x081BF020
|
|
push {r4, lr}
|
|
sub sp, #4
|
|
ldr r0, _081BF094
|
|
bl DisableInterrupts
|
|
movs r0, #1
|
|
bl EnableInterrupts
|
|
bl m4aSoundVSyncOff
|
|
movs r0, #0
|
|
bl SetVBlankCallback
|
|
movs r4, #0
|
|
str r4, [sp]
|
|
ldr r0, _081BF098
|
|
mov r1, sp
|
|
str r1, [r0]
|
|
movs r1, #0xc0
|
|
lsls r1, r1, #0x13
|
|
str r1, [r0, #4]
|
|
ldr r1, _081BF09C
|
|
str r1, [r0, #8]
|
|
ldr r1, [r0, #8]
|
|
str r4, [sp]
|
|
mov r1, sp
|
|
str r1, [r0]
|
|
movs r1, #0xa0
|
|
lsls r1, r1, #0x13
|
|
str r1, [r0, #4]
|
|
ldr r1, _081BF0A0
|
|
str r1, [r0, #8]
|
|
ldr r0, [r0, #8]
|
|
bl ResetSpriteData
|
|
bl ResetTasks
|
|
bl ScanlineEffect_Stop
|
|
ldr r0, _081BF0A4
|
|
movs r1, #0
|
|
bl CreateTask
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldr r2, _081BF0A8
|
|
lsls r1, r0, #2
|
|
adds r1, r1, r0
|
|
lsls r1, r1, #3
|
|
adds r1, r1, r2
|
|
strh r4, [r1, #8]
|
|
ldr r0, _081BF0AC
|
|
bl SetMainCallback2
|
|
add sp, #4
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081BF094: .4byte 0x0000FFFF
|
|
_081BF098: .4byte 0x040000D4
|
|
_081BF09C: .4byte 0x85006000
|
|
_081BF0A0: .4byte 0x85000100
|
|
_081BF0A4: .4byte 0x081BF0BD
|
|
_081BF0A8: .4byte 0x03005B60
|
|
_081BF0AC: .4byte 0x081BF0B1
|
|
thumb_func_end berry_fix_bg_hide
|
|
|
|
thumb_func_start berry_fix_text_print
|
|
berry_fix_text_print: @ 0x081BF0B0
|
|
push {lr}
|
|
bl RunTasks
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
thumb_func_end berry_fix_text_print
|
|
|
|
thumb_func_start berry_fix_main
|
|
berry_fix_main: @ 0x081BF0BC
|
|
push {r4, r5, r6, lr}
|
|
sub sp, #4
|
|
lsls r0, r0, #0x18
|
|
lsrs r2, r0, #0x18
|
|
lsls r0, r2, #2
|
|
adds r0, r0, r2
|
|
lsls r0, r0, #3
|
|
ldr r1, _081BF0E4
|
|
adds r5, r0, r1
|
|
movs r1, #0
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, #0xa
|
|
bls _081BF0D8
|
|
b _081BF272
|
|
_081BF0D8:
|
|
lsls r0, r0, #2
|
|
ldr r1, _081BF0E8
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_081BF0E4: .4byte 0x03005B68
|
|
_081BF0E8: .4byte 0x081BF0EC
|
|
_081BF0EC: @ jump table
|
|
.4byte _081BF118 @ case 0
|
|
.4byte _081BF122 @ case 1
|
|
.4byte _081BF140 @ case 2
|
|
.4byte _081BF272 @ case 3
|
|
.4byte _081BF15C @ case 4
|
|
.4byte _081BF194 @ case 5
|
|
.4byte _081BF200 @ case 6
|
|
.4byte _081BF236 @ case 7
|
|
.4byte _081BF23A @ case 8
|
|
.4byte _081BF258 @ case 9
|
|
.4byte _081BF262 @ case 10
|
|
_081BF118:
|
|
movs r0, #5
|
|
bl sub_081BAA20
|
|
movs r0, #1
|
|
b _081BF270
|
|
_081BF122:
|
|
ldr r0, _081BF13C
|
|
ldrh r1, [r0, #0x2e]
|
|
movs r0, #1
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _081BF130
|
|
b _081BF272
|
|
_081BF130:
|
|
movs r0, #0
|
|
bl sub_081BAA20
|
|
movs r0, #2
|
|
b _081BF270
|
|
.align 2, 0
|
|
_081BF13C: .4byte 0x03002360
|
|
_081BF140:
|
|
ldr r0, _081BF158
|
|
ldrh r1, [r0, #0x2e]
|
|
movs r0, #1
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _081BF14E
|
|
b _081BF272
|
|
_081BF14E:
|
|
movs r0, #1
|
|
bl sub_081BAA20
|
|
movs r0, #4
|
|
b _081BF270
|
|
.align 2, 0
|
|
_081BF158: .4byte 0x03002360
|
|
_081BF15C:
|
|
ldr r0, _081BF180
|
|
ldr r1, _081BF184
|
|
str r1, [r0]
|
|
ldr r2, _081BF188
|
|
ldr r0, _081BF18C
|
|
subs r0, r0, r1
|
|
str r0, [r2]
|
|
ldr r0, _081BF190
|
|
str r1, [r0, #0x28]
|
|
adds r1, r0, #0
|
|
adds r1, #0x4b
|
|
movs r4, #0
|
|
strb r4, [r1]
|
|
bl GetGlyphWidthFont6
|
|
strh r4, [r5, #2]
|
|
movs r0, #5
|
|
b _081BF270
|
|
.align 2, 0
|
|
_081BF180: .4byte 0x03006070
|
|
_081BF184: .4byte 0x08912454
|
|
_081BF188: .4byte 0x03006078
|
|
_081BF18C: .4byte 0x089158E0
|
|
_081BF190: .4byte 0x03006080
|
|
_081BF194:
|
|
ldr r0, _081BF1DC
|
|
ldrb r6, [r0, #0x18]
|
|
adds r4, r0, #0
|
|
cmp r6, #0
|
|
bne _081BF1EC
|
|
ldr r0, [r4, #0x1c]
|
|
ldr r1, _081BF1E0
|
|
ands r0, r1
|
|
cmp r0, r1
|
|
bne _081BF1EC
|
|
ldrh r0, [r5, #2]
|
|
adds r0, #1
|
|
strh r0, [r5, #2]
|
|
lsls r0, r0, #0x10
|
|
asrs r0, r0, #0x10
|
|
cmp r0, #0xb4
|
|
ble _081BF1F0
|
|
movs r0, #2
|
|
bl sub_081BAA20
|
|
ldr r0, _081BF1E4
|
|
ldr r1, [r0]
|
|
adds r1, #0xc0
|
|
ldr r0, _081BF1E8
|
|
ldr r2, [r0]
|
|
subs r2, #0xc0
|
|
movs r0, #1
|
|
str r0, [sp]
|
|
adds r0, r4, #0
|
|
movs r3, #4
|
|
bl sub_081BA808
|
|
strh r6, [r5, #2]
|
|
movs r0, #6
|
|
b _081BF270
|
|
.align 2, 0
|
|
_081BF1DC: .4byte 0x03006080
|
|
_081BF1E0: .4byte 0x00020200
|
|
_081BF1E4: .4byte 0x03006070
|
|
_081BF1E8: .4byte 0x03006078
|
|
_081BF1EC:
|
|
movs r0, #0
|
|
strh r0, [r5, #2]
|
|
_081BF1F0:
|
|
adds r0, r4, #0
|
|
bl sub_081BA3A8
|
|
ldr r1, _081BF1FC
|
|
str r0, [r1]
|
|
b _081BF272
|
|
.align 2, 0
|
|
_081BF1FC: .4byte 0x03006074
|
|
_081BF200:
|
|
ldr r4, _081BF220
|
|
adds r0, r4, #0
|
|
bl sub_081BA3A8
|
|
ldr r1, _081BF224
|
|
str r0, [r1]
|
|
adds r0, r4, #0
|
|
bl sub_081BA8CC
|
|
cmp r0, #0
|
|
beq _081BF228
|
|
movs r0, #3
|
|
bl sub_081BAA20
|
|
movs r0, #7
|
|
b _081BF270
|
|
.align 2, 0
|
|
_081BF220: .4byte 0x03006080
|
|
_081BF224: .4byte 0x03006074
|
|
_081BF228:
|
|
ldrb r1, [r4, #0x1e]
|
|
movs r0, #2
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _081BF272
|
|
movs r0, #9
|
|
b _081BF270
|
|
_081BF236:
|
|
movs r0, #8
|
|
b _081BF270
|
|
_081BF23A:
|
|
ldr r0, _081BF254
|
|
ldrh r1, [r0, #0x2e]
|
|
movs r0, #1
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _081BF272
|
|
adds r0, r2, #0
|
|
bl DestroyTask
|
|
bl DoSoftReset
|
|
b _081BF272
|
|
.align 2, 0
|
|
_081BF254: .4byte 0x03002360
|
|
_081BF258:
|
|
movs r0, #4
|
|
bl sub_081BAA20
|
|
movs r0, #0xa
|
|
b _081BF270
|
|
_081BF262:
|
|
ldr r0, _081BF27C
|
|
ldrh r1, [r0, #0x2e]
|
|
movs r0, #1
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _081BF272
|
|
movs r0, #0
|
|
_081BF270:
|
|
strh r0, [r5]
|
|
_081BF272:
|
|
add sp, #4
|
|
pop {r4, r5, r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_081BF27C: .4byte 0x03002360
|
|
thumb_func_end berry_fix_main
|
|
|