1870 lines
31 KiB
ArmAsm
1870 lines
31 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "constants/constants.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
thumb_func_start SetAnimBgAttribute
|
|
SetAnimBgAttribute: @ 80BC1F8
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
lsls r1, 24
|
|
lsrs r5, r1, 24
|
|
lsls r2, 24
|
|
lsrs r4, r2, 24
|
|
cmp r6, 0x3
|
|
bls _080BC20C
|
|
b _080BC2FE
|
|
_080BC20C:
|
|
ldr r0, _080BC228 @ =gUnknown_83E7CCA
|
|
adds r0, r6, r0
|
|
ldrb r0, [r0]
|
|
bl GetGpuReg
|
|
ldr r1, _080BC22C @ =gUnknown_20399B8
|
|
strh r0, [r1]
|
|
cmp r5, 0x6
|
|
bhi _080BC2F0
|
|
lsls r0, r5, 2
|
|
ldr r1, _080BC230 @ =_080BC234
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080BC228: .4byte gUnknown_83E7CCA
|
|
_080BC22C: .4byte gUnknown_20399B8
|
|
_080BC230: .4byte _080BC234
|
|
.align 2, 0
|
|
_080BC234:
|
|
.4byte _080BC250
|
|
.4byte _080BC264
|
|
.4byte _080BC27C
|
|
.4byte _080BC294
|
|
.4byte _080BC2AC
|
|
.4byte _080BC2C8
|
|
.4byte _080BC2DC
|
|
_080BC250:
|
|
ldr r2, _080BC260 @ =gUnknown_20399B8
|
|
lsls r3, r4, 6
|
|
ldrb r1, [r2, 0x1]
|
|
movs r0, 0x3F
|
|
ands r0, r1
|
|
orrs r0, r3
|
|
strb r0, [r2, 0x1]
|
|
b _080BC2F0
|
|
.align 2, 0
|
|
_080BC260: .4byte gUnknown_20399B8
|
|
_080BC264:
|
|
ldr r3, _080BC278 @ =gUnknown_20399B8
|
|
movs r0, 0x1
|
|
adds r1, r4, 0
|
|
ands r1, r0
|
|
lsls r1, 5
|
|
ldrb r2, [r3, 0x1]
|
|
movs r0, 0x21
|
|
negs r0, r0
|
|
b _080BC2EA
|
|
.align 2, 0
|
|
_080BC278: .4byte gUnknown_20399B8
|
|
_080BC27C:
|
|
ldr r3, _080BC290 @ =gUnknown_20399B8
|
|
movs r0, 0x1
|
|
adds r1, r4, 0
|
|
ands r1, r0
|
|
lsls r1, 6
|
|
ldrb r2, [r3]
|
|
movs r0, 0x41
|
|
negs r0, r0
|
|
b _080BC2BA
|
|
.align 2, 0
|
|
_080BC290: .4byte gUnknown_20399B8
|
|
_080BC294:
|
|
ldr r3, _080BC2A8 @ =gUnknown_20399B8
|
|
movs r0, 0x3
|
|
adds r1, r4, 0
|
|
ands r1, r0
|
|
lsls r1, 2
|
|
ldrb r2, [r3]
|
|
movs r0, 0xD
|
|
negs r0, r0
|
|
b _080BC2BA
|
|
.align 2, 0
|
|
_080BC2A8: .4byte gUnknown_20399B8
|
|
_080BC2AC:
|
|
ldr r3, _080BC2C4 @ =gUnknown_20399B8
|
|
movs r0, 0x3
|
|
adds r1, r4, 0
|
|
ands r1, r0
|
|
ldrb r2, [r3]
|
|
movs r0, 0x4
|
|
negs r0, r0
|
|
_080BC2BA:
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3]
|
|
b _080BC2F0
|
|
.align 2, 0
|
|
_080BC2C4: .4byte gUnknown_20399B8
|
|
_080BC2C8:
|
|
ldr r2, _080BC2D8 @ =gUnknown_20399B8
|
|
lsls r3, r4, 7
|
|
ldrb r1, [r2]
|
|
movs r0, 0x7F
|
|
ands r0, r1
|
|
orrs r0, r3
|
|
strb r0, [r2]
|
|
b _080BC2F0
|
|
.align 2, 0
|
|
_080BC2D8: .4byte gUnknown_20399B8
|
|
_080BC2DC:
|
|
ldr r3, _080BC304 @ =gUnknown_20399B8
|
|
movs r0, 0x1F
|
|
adds r1, r4, 0
|
|
ands r1, r0
|
|
ldrb r2, [r3, 0x1]
|
|
movs r0, 0x20
|
|
negs r0, r0
|
|
_080BC2EA:
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3, 0x1]
|
|
_080BC2F0:
|
|
ldr r0, _080BC308 @ =gUnknown_83E7CCA
|
|
adds r0, r6, r0
|
|
ldrb r0, [r0]
|
|
ldr r1, _080BC304 @ =gUnknown_20399B8
|
|
ldrh r1, [r1]
|
|
bl SetGpuReg
|
|
_080BC2FE:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BC304: .4byte gUnknown_20399B8
|
|
_080BC308: .4byte gUnknown_83E7CCA
|
|
thumb_func_end SetAnimBgAttribute
|
|
|
|
thumb_func_start sub_80BC30C
|
|
sub_80BC30C: @ 80BC30C
|
|
push {r4,lr}
|
|
sub sp, 0x4
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
lsls r1, 24
|
|
lsrs r4, r1, 24
|
|
cmp r2, 0x3
|
|
bhi _080BC394
|
|
ldr r0, _080BC338 @ =gUnknown_83E7CCE
|
|
adds r0, r2, r0
|
|
ldrb r0, [r0]
|
|
bl GetGpuReg
|
|
mov r1, sp
|
|
strh r0, [r1]
|
|
cmp r4, 0x6
|
|
bhi _080BC394
|
|
lsls r0, r4, 2
|
|
ldr r1, _080BC33C @ =_080BC340
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080BC338: .4byte gUnknown_83E7CCE
|
|
_080BC33C: .4byte _080BC340
|
|
.align 2, 0
|
|
_080BC340:
|
|
.4byte _080BC35C
|
|
.4byte _080BC364
|
|
.4byte _080BC36C
|
|
.4byte _080BC374
|
|
.4byte _080BC37C
|
|
.4byte _080BC384
|
|
.4byte _080BC38C
|
|
_080BC35C:
|
|
ldr r0, [sp]
|
|
lsls r0, 16
|
|
lsrs r0, 30
|
|
b _080BC396
|
|
_080BC364:
|
|
ldr r0, [sp]
|
|
lsls r0, 18
|
|
lsrs r0, 31
|
|
b _080BC396
|
|
_080BC36C:
|
|
ldr r0, [sp]
|
|
lsls r0, 25
|
|
lsrs r0, 31
|
|
b _080BC396
|
|
_080BC374:
|
|
ldr r0, [sp]
|
|
lsls r0, 28
|
|
lsrs r0, 30
|
|
b _080BC396
|
|
_080BC37C:
|
|
ldr r0, [sp]
|
|
lsls r0, 30
|
|
lsrs r0, 30
|
|
b _080BC396
|
|
_080BC384:
|
|
ldr r0, [sp]
|
|
lsls r0, 24
|
|
lsrs r0, 31
|
|
b _080BC396
|
|
_080BC38C:
|
|
ldr r0, [sp]
|
|
lsls r0, 19
|
|
lsrs r0, 27
|
|
b _080BC396
|
|
_080BC394:
|
|
movs r0, 0
|
|
_080BC396:
|
|
add sp, 0x4
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80BC30C
|
|
|
|
thumb_func_start HandleIntroSlide
|
|
HandleIntroSlide: @ 80BC3A0
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r0, _080BC3B8 @ =gBattleTypeFlags
|
|
ldr r1, [r0]
|
|
movs r0, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080BC3C0
|
|
ldr r0, _080BC3BC @ =sub_80BCC4C
|
|
b _080BC3E8
|
|
.align 2, 0
|
|
_080BC3B8: .4byte gBattleTypeFlags
|
|
_080BC3BC: .4byte sub_80BCC4C
|
|
_080BC3C0:
|
|
movs r0, 0x80
|
|
lsls r0, 5
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _080BC3E0
|
|
ldr r0, _080BC3D8 @ =gGameVersion
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x2
|
|
beq _080BC3E0
|
|
movs r4, 0x3
|
|
ldr r0, _080BC3DC @ =task00_battle_intro_80BC6C8
|
|
b _080BC3E8
|
|
.align 2, 0
|
|
_080BC3D8: .4byte gGameVersion
|
|
_080BC3DC: .4byte task00_battle_intro_80BC6C8
|
|
_080BC3E0:
|
|
ldr r1, _080BC414 @ =gUnknown_83E7CD4
|
|
lsls r0, r4, 2
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
_080BC3E8:
|
|
movs r1, 0
|
|
bl CreateTask
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
ldr r0, _080BC418 @ =gTasks
|
|
lsls r1, r2, 2
|
|
adds r1, r2
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
movs r0, 0
|
|
strh r0, [r1, 0x8]
|
|
strh r4, [r1, 0xA]
|
|
strh r0, [r1, 0xC]
|
|
strh r0, [r1, 0xE]
|
|
strh r0, [r1, 0x10]
|
|
strh r0, [r1, 0x12]
|
|
strh r0, [r1, 0x14]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BC414: .4byte gUnknown_83E7CD4
|
|
_080BC418: .4byte gTasks
|
|
thumb_func_end HandleIntroSlide
|
|
|
|
thumb_func_start sub_80BC41C
|
|
sub_80BC41C: @ 80BC41C
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl DestroyTask
|
|
ldr r0, _080BC468 @ =gBattle_BG1_X
|
|
movs r1, 0
|
|
strh r1, [r0]
|
|
ldr r0, _080BC46C @ =gBattle_BG1_Y
|
|
strh r1, [r0]
|
|
ldr r0, _080BC470 @ =gBattle_BG2_X
|
|
strh r1, [r0]
|
|
ldr r0, _080BC474 @ =gBattle_BG2_Y
|
|
strh r1, [r0]
|
|
movs r0, 0x50
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x52
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x54
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
ldr r4, _080BC478 @ =0x00003f3f
|
|
movs r0, 0x48
|
|
adds r1, r4, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x4A
|
|
adds r1, r4, 0
|
|
bl SetGpuReg
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BC468: .4byte gBattle_BG1_X
|
|
_080BC46C: .4byte gBattle_BG1_Y
|
|
_080BC470: .4byte gBattle_BG2_X
|
|
_080BC474: .4byte gBattle_BG2_Y
|
|
_080BC478: .4byte 0x00003f3f
|
|
thumb_func_end sub_80BC41C
|
|
|
|
thumb_func_start task_battle_intro_80BC47C
|
|
task_battle_intro_80BC47C: @ 80BC47C
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
sub sp, 0x4
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r1, _080BC4B4 @ =gBattle_BG1_X
|
|
ldrh r0, [r1]
|
|
adds r0, 0x6
|
|
strh r0, [r1]
|
|
ldr r1, _080BC4B8 @ =gTasks
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
movs r2, 0x8
|
|
ldrsh r0, [r0, r2]
|
|
mov r8, r1
|
|
cmp r0, 0x4
|
|
bls _080BC4A8
|
|
b _080BC6BA
|
|
_080BC4A8:
|
|
lsls r0, 2
|
|
ldr r1, _080BC4BC @ =_080BC4C0
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080BC4B4: .4byte gBattle_BG1_X
|
|
_080BC4B8: .4byte gTasks
|
|
_080BC4BC: .4byte _080BC4C0
|
|
.align 2, 0
|
|
_080BC4C0:
|
|
.4byte _080BC4D4
|
|
.4byte _080BC504
|
|
.4byte _080BC52C
|
|
.4byte _080BC574
|
|
.4byte _080BC6B4
|
|
_080BC4D4:
|
|
ldr r0, _080BC4EC @ =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080BC4F0
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
add r0, r8
|
|
movs r1, 0x10
|
|
b _080BC4FA
|
|
.align 2, 0
|
|
_080BC4EC: .4byte gBattleTypeFlags
|
|
_080BC4F0:
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
add r0, r8
|
|
movs r1, 0x1
|
|
_080BC4FA:
|
|
strh r1, [r0, 0xC]
|
|
ldrh r1, [r0, 0x8]
|
|
adds r1, 0x1
|
|
strh r1, [r0, 0x8]
|
|
b _080BC6BA
|
|
_080BC504:
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 3
|
|
mov r3, r8
|
|
adds r1, r0, r3
|
|
ldrh r0, [r1, 0xC]
|
|
subs r0, 0x1
|
|
strh r0, [r1, 0xC]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
beq _080BC51C
|
|
b _080BC6BA
|
|
_080BC51C:
|
|
ldrh r0, [r1, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x8]
|
|
movs r0, 0x48
|
|
movs r1, 0x3F
|
|
bl SetGpuReg
|
|
b _080BC6BA
|
|
_080BC52C:
|
|
ldr r1, _080BC568 @ =gBattle_WIN0V
|
|
ldrh r0, [r1]
|
|
subs r0, 0xFF
|
|
strh r0, [r1]
|
|
movs r1, 0xFF
|
|
lsls r1, 8
|
|
ands r0, r1
|
|
movs r1, 0xC0
|
|
lsls r1, 6
|
|
cmp r0, r1
|
|
beq _080BC544
|
|
b _080BC6BA
|
|
_080BC544:
|
|
lsls r1, r4, 2
|
|
adds r1, r4
|
|
lsls r1, 3
|
|
add r1, r8
|
|
ldrh r0, [r1, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x8]
|
|
movs r0, 0xF0
|
|
strh r0, [r1, 0xC]
|
|
movs r0, 0x20
|
|
strh r0, [r1, 0xE]
|
|
ldr r2, _080BC56C @ =gIntroSlideFlags
|
|
ldrh r1, [r2]
|
|
ldr r0, _080BC570 @ =0x0000fffe
|
|
ands r0, r1
|
|
strh r0, [r2]
|
|
b _080BC6BA
|
|
.align 2, 0
|
|
_080BC568: .4byte gBattle_WIN0V
|
|
_080BC56C: .4byte gIntroSlideFlags
|
|
_080BC570: .4byte 0x0000fffe
|
|
_080BC574:
|
|
lsls r0, r4, 2
|
|
adds r1, r0, r4
|
|
lsls r1, 3
|
|
mov r5, r8
|
|
adds r2, r1, r5
|
|
ldrh r3, [r2, 0xE]
|
|
movs r5, 0xE
|
|
ldrsh r1, [r2, r5]
|
|
mov r12, r0
|
|
cmp r1, 0
|
|
beq _080BC590
|
|
subs r0, r3, 0x1
|
|
strh r0, [r2, 0xE]
|
|
b _080BC5BE
|
|
_080BC590:
|
|
movs r1, 0xA
|
|
ldrsh r0, [r2, r1]
|
|
cmp r0, 0x1
|
|
bne _080BC5B0
|
|
ldr r2, _080BC5A8 @ =gBattle_BG1_Y
|
|
ldrh r1, [r2]
|
|
ldr r0, _080BC5AC @ =0x0000ffb0
|
|
cmp r1, r0
|
|
beq _080BC5BE
|
|
subs r0, r1, 0x2
|
|
b _080BC5BC
|
|
.align 2, 0
|
|
_080BC5A8: .4byte gBattle_BG1_Y
|
|
_080BC5AC: .4byte 0x0000ffb0
|
|
_080BC5B0:
|
|
ldr r2, _080BC690 @ =gBattle_BG1_Y
|
|
ldrh r1, [r2]
|
|
ldr r0, _080BC694 @ =0x0000ffc8
|
|
cmp r1, r0
|
|
beq _080BC5BE
|
|
subs r0, r1, 0x1
|
|
_080BC5BC:
|
|
strh r0, [r2]
|
|
_080BC5BE:
|
|
ldr r2, _080BC698 @ =gBattle_WIN0V
|
|
ldrh r1, [r2]
|
|
movs r0, 0xFF
|
|
lsls r0, 8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080BC5D2
|
|
ldr r3, _080BC69C @ =0xfffffc04
|
|
adds r0, r1, r3
|
|
strh r0, [r2]
|
|
_080BC5D2:
|
|
mov r5, r12
|
|
adds r0, r5, r4
|
|
lsls r0, 3
|
|
mov r2, r8
|
|
adds r1, r0, r2
|
|
ldrh r2, [r1, 0xC]
|
|
movs r3, 0xC
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, 0
|
|
beq _080BC5EA
|
|
subs r0, r2, 0x2
|
|
strh r0, [r1, 0xC]
|
|
_080BC5EA:
|
|
movs r3, 0
|
|
ldr r5, _080BC6A0 @ =gScanlineEffect
|
|
mov r9, r5
|
|
ldr r7, _080BC6A4 @ =gScanlineEffectRegBuffers
|
|
mov r6, r9
|
|
adds r5, r1, 0
|
|
_080BC5F6:
|
|
lsls r2, r3, 1
|
|
ldrb r1, [r6, 0x14]
|
|
lsls r0, r1, 4
|
|
subs r0, r1
|
|
lsls r0, 7
|
|
adds r2, r0
|
|
adds r2, r7
|
|
ldrh r0, [r5, 0xC]
|
|
strh r0, [r2]
|
|
adds r3, 0x1
|
|
cmp r3, 0x4F
|
|
ble _080BC5F6
|
|
cmp r3, 0x9F
|
|
bgt _080BC63A
|
|
ldr r7, _080BC6A4 @ =gScanlineEffectRegBuffers
|
|
ldr r6, _080BC6A0 @ =gScanlineEffect
|
|
ldr r1, _080BC6A8 @ =gTasks
|
|
mov r2, r12
|
|
adds r0, r2, r4
|
|
lsls r0, 3
|
|
adds r5, r0, r1
|
|
_080BC620:
|
|
lsls r2, r3, 1
|
|
ldrb r1, [r6, 0x14]
|
|
lsls r0, r1, 4
|
|
subs r0, r1
|
|
lsls r0, 7
|
|
adds r2, r0
|
|
adds r2, r7
|
|
ldrh r0, [r5, 0xC]
|
|
negs r0, r0
|
|
strh r0, [r2]
|
|
adds r3, 0x1
|
|
cmp r3, 0x9F
|
|
ble _080BC620
|
|
_080BC63A:
|
|
mov r3, r12
|
|
adds r0, r3, r4
|
|
lsls r0, 3
|
|
mov r5, r8
|
|
adds r1, r0, r5
|
|
movs r0, 0xC
|
|
ldrsh r2, [r1, r0]
|
|
cmp r2, 0
|
|
bne _080BC6BA
|
|
movs r0, 0x3
|
|
mov r3, r9
|
|
strb r0, [r3, 0x15]
|
|
ldrh r0, [r1, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x8]
|
|
str r2, [sp]
|
|
ldr r1, _080BC6AC @ =0x0600e000
|
|
ldr r2, _080BC6B0 @ =0x05000200
|
|
mov r0, sp
|
|
bl CpuSet
|
|
movs r0, 0x1
|
|
movs r1, 0x1
|
|
movs r2, 0
|
|
bl SetBgAttribute
|
|
movs r0, 0x2
|
|
movs r1, 0x1
|
|
movs r2, 0
|
|
bl SetBgAttribute
|
|
movs r1, 0x9C
|
|
lsls r1, 8
|
|
movs r0, 0xA
|
|
bl SetGpuReg
|
|
movs r1, 0xBC
|
|
lsls r1, 7
|
|
movs r0, 0xC
|
|
bl SetGpuReg
|
|
b _080BC6BA
|
|
.align 2, 0
|
|
_080BC690: .4byte gBattle_BG1_Y
|
|
_080BC694: .4byte 0x0000ffc8
|
|
_080BC698: .4byte gBattle_WIN0V
|
|
_080BC69C: .4byte 0xfffffc04
|
|
_080BC6A0: .4byte gScanlineEffect
|
|
_080BC6A4: .4byte gScanlineEffectRegBuffers
|
|
_080BC6A8: .4byte gTasks
|
|
_080BC6AC: .4byte 0x0600e000
|
|
_080BC6B0: .4byte 0x05000200
|
|
_080BC6B4:
|
|
adds r0, r4, 0
|
|
bl sub_80BC41C
|
|
_080BC6BA:
|
|
add sp, 0x4
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end task_battle_intro_80BC47C
|
|
|
|
thumb_func_start task00_battle_intro_80BC6C8
|
|
task00_battle_intro_80BC6C8: @ 80BC6C8
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x4
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r1, _080BC6F4 @ =gTasks
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
movs r2, 0xA
|
|
ldrsh r0, [r0, r2]
|
|
adds r2, r1, 0
|
|
cmp r0, 0x3
|
|
beq _080BC708
|
|
cmp r0, 0x3
|
|
bgt _080BC6F8
|
|
cmp r0, 0x2
|
|
beq _080BC6FC
|
|
b _080BC710
|
|
.align 2, 0
|
|
_080BC6F4: .4byte gTasks
|
|
_080BC6F8:
|
|
cmp r0, 0x4
|
|
bne _080BC710
|
|
_080BC6FC:
|
|
ldr r1, _080BC704 @ =gBattle_BG1_X
|
|
ldrh r0, [r1]
|
|
adds r0, 0x8
|
|
b _080BC70E
|
|
.align 2, 0
|
|
_080BC704: .4byte gBattle_BG1_X
|
|
_080BC708:
|
|
ldr r1, _080BC74C @ =gBattle_BG1_X
|
|
ldrh r0, [r1]
|
|
adds r0, 0x6
|
|
_080BC70E:
|
|
strh r0, [r1]
|
|
_080BC710:
|
|
lsls r0, r5, 2
|
|
adds r1, r0, r5
|
|
lsls r1, 3
|
|
adds r4, r1, r2
|
|
movs r3, 0xA
|
|
ldrsh r1, [r4, r3]
|
|
adds r6, r0, 0
|
|
cmp r1, 0x4
|
|
bne _080BC774
|
|
ldr r7, _080BC750 @ =gBattle_BG1_Y
|
|
ldrh r0, [r4, 0x14]
|
|
bl Cos2
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0
|
|
bge _080BC736
|
|
ldr r1, _080BC754 @ =0x000001ff
|
|
adds r0, r1
|
|
_080BC736:
|
|
asrs r0, 9
|
|
subs r0, 0x8
|
|
strh r0, [r7]
|
|
ldrh r1, [r4, 0x14]
|
|
movs r2, 0x14
|
|
ldrsh r0, [r4, r2]
|
|
cmp r0, 0xB3
|
|
bgt _080BC758
|
|
adds r0, r1, 0x4
|
|
b _080BC75A
|
|
.align 2, 0
|
|
_080BC74C: .4byte gBattle_BG1_X
|
|
_080BC750: .4byte gBattle_BG1_Y
|
|
_080BC754: .4byte 0x000001ff
|
|
_080BC758:
|
|
adds r0, r1, 0x6
|
|
_080BC75A:
|
|
strh r0, [r4, 0x14]
|
|
ldr r2, _080BC790 @ =gTasks
|
|
adds r0, r6, r5
|
|
lsls r0, 3
|
|
adds r3, r0, r2
|
|
movs r0, 0x14
|
|
ldrsh r1, [r3, r0]
|
|
movs r0, 0xB4
|
|
lsls r0, 1
|
|
cmp r1, r0
|
|
bne _080BC774
|
|
movs r0, 0
|
|
strh r0, [r3, 0x14]
|
|
_080BC774:
|
|
adds r0, r6, r5
|
|
lsls r0, 3
|
|
adds r0, r2
|
|
movs r1, 0x8
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0x4
|
|
bls _080BC784
|
|
b _080BC9AA
|
|
_080BC784:
|
|
lsls r0, 2
|
|
ldr r1, _080BC794 @ =_080BC798
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080BC790: .4byte gTasks
|
|
_080BC794: .4byte _080BC798
|
|
.align 2, 0
|
|
_080BC798:
|
|
.4byte _080BC7AC
|
|
.4byte _080BC7DC
|
|
.4byte _080BC808
|
|
.4byte _080BC858
|
|
.4byte _080BC9A4
|
|
_080BC7AC:
|
|
ldr r1, _080BC7C8 @ =gTasks
|
|
adds r0, r6, r5
|
|
lsls r0, 3
|
|
adds r2, r0, r1
|
|
movs r3, 0x10
|
|
strh r3, [r2, 0x10]
|
|
ldr r0, _080BC7CC @ =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080BC7D0
|
|
strh r3, [r2, 0xC]
|
|
b _080BC7D4
|
|
.align 2, 0
|
|
_080BC7C8: .4byte gTasks
|
|
_080BC7CC: .4byte gBattleTypeFlags
|
|
_080BC7D0:
|
|
movs r0, 0x1
|
|
strh r0, [r2, 0xC]
|
|
_080BC7D4:
|
|
ldrh r0, [r2, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r2, 0x8]
|
|
b _080BC9AA
|
|
_080BC7DC:
|
|
ldr r0, _080BC804 @ =gTasks
|
|
adds r1, r6, r5
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldrh r0, [r1, 0xC]
|
|
subs r0, 0x1
|
|
strh r0, [r1, 0xC]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
beq _080BC7F2
|
|
b _080BC9AA
|
|
_080BC7F2:
|
|
ldrh r0, [r1, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x8]
|
|
movs r0, 0x48
|
|
movs r1, 0x3F
|
|
bl SetGpuReg
|
|
b _080BC9AA
|
|
.align 2, 0
|
|
_080BC804: .4byte gTasks
|
|
_080BC808:
|
|
ldr r1, _080BC848 @ =gBattle_WIN0V
|
|
ldrh r0, [r1]
|
|
subs r0, 0xFF
|
|
strh r0, [r1]
|
|
movs r1, 0xFF
|
|
lsls r1, 8
|
|
ands r0, r1
|
|
movs r1, 0xC0
|
|
lsls r1, 6
|
|
cmp r0, r1
|
|
beq _080BC820
|
|
b _080BC9AA
|
|
_080BC820:
|
|
ldr r0, _080BC84C @ =gTasks
|
|
adds r1, r6, r5
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldrh r0, [r1, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x8]
|
|
movs r0, 0xF0
|
|
strh r0, [r1, 0xC]
|
|
movs r0, 0x20
|
|
strh r0, [r1, 0xE]
|
|
movs r0, 0x1
|
|
strh r0, [r1, 0x12]
|
|
ldr r2, _080BC850 @ =gIntroSlideFlags
|
|
ldrh r1, [r2]
|
|
ldr r0, _080BC854 @ =0x0000fffe
|
|
ands r0, r1
|
|
strh r0, [r2]
|
|
b _080BC9AA
|
|
.align 2, 0
|
|
_080BC848: .4byte gBattle_WIN0V
|
|
_080BC84C: .4byte gTasks
|
|
_080BC850: .4byte gIntroSlideFlags
|
|
_080BC854: .4byte 0x0000fffe
|
|
_080BC858:
|
|
ldr r0, _080BC890 @ =gTasks
|
|
adds r1, r6, r5
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldrh r2, [r1, 0xE]
|
|
movs r3, 0xE
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, 0
|
|
beq _080BC898
|
|
subs r0, r2, 0x1
|
|
strh r0, [r1, 0xE]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _080BC8B8
|
|
ldr r1, _080BC894 @ =0x00001842
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
movs r0, 0x52
|
|
movs r1, 0xF
|
|
bl SetGpuReg
|
|
movs r0, 0x54
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
b _080BC8B8
|
|
.align 2, 0
|
|
_080BC890: .4byte gTasks
|
|
_080BC894: .4byte 0x00001842
|
|
_080BC898:
|
|
ldrh r2, [r1, 0x10]
|
|
movs r0, 0x1F
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _080BC8B8
|
|
ldrh r0, [r1, 0x12]
|
|
subs r0, 0x1
|
|
strh r0, [r1, 0x12]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _080BC8B8
|
|
adds r0, r2, 0
|
|
adds r0, 0xFF
|
|
strh r0, [r1, 0x10]
|
|
movs r0, 0x4
|
|
strh r0, [r1, 0x12]
|
|
_080BC8B8:
|
|
ldr r2, _080BC988 @ =gBattle_WIN0V
|
|
ldrh r1, [r2]
|
|
movs r0, 0xFF
|
|
lsls r0, 8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080BC8CC
|
|
ldr r3, _080BC98C @ =0xfffffc04
|
|
adds r0, r1, r3
|
|
strh r0, [r2]
|
|
_080BC8CC:
|
|
ldr r0, _080BC990 @ =gTasks
|
|
adds r1, r6, r5
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldrh r2, [r1, 0xC]
|
|
movs r3, 0xC
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, 0
|
|
beq _080BC8E2
|
|
subs r0, r2, 0x2
|
|
strh r0, [r1, 0xC]
|
|
_080BC8E2:
|
|
movs r3, 0
|
|
ldr r0, _080BC994 @ =gScanlineEffect
|
|
mov r8, r0
|
|
ldr r2, _080BC998 @ =gScanlineEffectRegBuffers
|
|
mov r12, r2
|
|
mov r7, r8
|
|
adds r4, r1, 0
|
|
_080BC8F0:
|
|
lsls r2, r3, 1
|
|
ldrb r1, [r7, 0x14]
|
|
lsls r0, r1, 4
|
|
subs r0, r1
|
|
lsls r0, 7
|
|
adds r2, r0
|
|
add r2, r12
|
|
ldrh r0, [r4, 0xC]
|
|
strh r0, [r2]
|
|
adds r3, 0x1
|
|
cmp r3, 0x4F
|
|
ble _080BC8F0
|
|
cmp r3, 0x9F
|
|
bgt _080BC934
|
|
ldr r0, _080BC998 @ =gScanlineEffectRegBuffers
|
|
mov r12, r0
|
|
ldr r7, _080BC994 @ =gScanlineEffect
|
|
ldr r1, _080BC990 @ =gTasks
|
|
adds r0, r6, r5
|
|
lsls r0, 3
|
|
adds r4, r0, r1
|
|
_080BC91A:
|
|
lsls r2, r3, 1
|
|
ldrb r1, [r7, 0x14]
|
|
lsls r0, r1, 4
|
|
subs r0, r1
|
|
lsls r0, 7
|
|
adds r2, r0
|
|
add r2, r12
|
|
ldrh r0, [r4, 0xC]
|
|
negs r0, r0
|
|
strh r0, [r2]
|
|
adds r3, 0x1
|
|
cmp r3, 0x9F
|
|
ble _080BC91A
|
|
_080BC934:
|
|
ldr r1, _080BC990 @ =gTasks
|
|
adds r0, r6, r5
|
|
lsls r0, 3
|
|
adds r1, r0, r1
|
|
movs r3, 0xC
|
|
ldrsh r2, [r1, r3]
|
|
cmp r2, 0
|
|
bne _080BC9AA
|
|
movs r0, 0x3
|
|
mov r3, r8
|
|
strb r0, [r3, 0x15]
|
|
ldrh r0, [r1, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x8]
|
|
str r2, [sp]
|
|
ldr r1, _080BC99C @ =0x0600e000
|
|
ldr r2, _080BC9A0 @ =0x05000200
|
|
mov r0, sp
|
|
bl CpuSet
|
|
movs r0, 0x1
|
|
movs r1, 0x1
|
|
movs r2, 0
|
|
bl SetBgAttribute
|
|
movs r0, 0x2
|
|
movs r1, 0x1
|
|
movs r2, 0
|
|
bl SetBgAttribute
|
|
movs r1, 0x9C
|
|
lsls r1, 8
|
|
movs r0, 0xA
|
|
bl SetGpuReg
|
|
movs r1, 0xBC
|
|
lsls r1, 7
|
|
movs r0, 0xC
|
|
bl SetGpuReg
|
|
b _080BC9AA
|
|
.align 2, 0
|
|
_080BC988: .4byte gBattle_WIN0V
|
|
_080BC98C: .4byte 0xfffffc04
|
|
_080BC990: .4byte gTasks
|
|
_080BC994: .4byte gScanlineEffect
|
|
_080BC998: .4byte gScanlineEffectRegBuffers
|
|
_080BC99C: .4byte 0x0600e000
|
|
_080BC9A0: .4byte 0x05000200
|
|
_080BC9A4:
|
|
adds r0, r5, 0
|
|
bl sub_80BC41C
|
|
_080BC9AA:
|
|
ldr r0, _080BC9D0 @ =gTasks
|
|
adds r1, r6, r5
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
movs r2, 0x8
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, 0x4
|
|
beq _080BC9C2
|
|
ldrh r1, [r1, 0x10]
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
_080BC9C2:
|
|
add sp, 0x4
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BC9D0: .4byte gTasks
|
|
thumb_func_end task00_battle_intro_80BC6C8
|
|
|
|
thumb_func_start task_battle_intro_anim
|
|
task_battle_intro_anim: @ 80BC9D4
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x4
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r1, _080BCA08 @ =gBattle_BG1_X
|
|
ldrh r0, [r1]
|
|
adds r0, 0x8
|
|
strh r0, [r1]
|
|
ldr r1, _080BCA0C @ =gTasks
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
movs r2, 0x8
|
|
ldrsh r0, [r0, r2]
|
|
adds r4, r1, 0
|
|
cmp r0, 0x4
|
|
bls _080BC9FE
|
|
b _080BCC22
|
|
_080BC9FE:
|
|
lsls r0, 2
|
|
ldr r1, _080BCA10 @ =_080BCA14
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080BCA08: .4byte gBattle_BG1_X
|
|
_080BCA0C: .4byte gTasks
|
|
_080BCA10: .4byte _080BCA14
|
|
.align 2, 0
|
|
_080BCA14:
|
|
.4byte _080BCA28
|
|
.4byte _080BCA7C
|
|
.4byte _080BCAA8
|
|
.4byte _080BCAF8
|
|
.4byte _080BCC1C
|
|
_080BCA28:
|
|
ldr r1, _080BCA60 @ =0x00001842
|
|
movs r0, 0x50
|
|
bl SetGpuReg
|
|
ldr r4, _080BCA64 @ =0x00000808
|
|
movs r0, 0x52
|
|
adds r1, r4, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x54
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
ldr r1, _080BCA68 @ =gTasks
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
adds r2, r0, r1
|
|
strh r4, [r2, 0x10]
|
|
ldr r0, _080BCA6C @ =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080BCA70
|
|
movs r0, 0x10
|
|
b _080BCA72
|
|
.align 2, 0
|
|
_080BCA60: .4byte 0x00001842
|
|
_080BCA64: .4byte 0x00000808
|
|
_080BCA68: .4byte gTasks
|
|
_080BCA6C: .4byte gBattleTypeFlags
|
|
_080BCA70:
|
|
movs r0, 0x1
|
|
_080BCA72:
|
|
strh r0, [r2, 0xC]
|
|
ldrh r0, [r2, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r2, 0x8]
|
|
b _080BCC22
|
|
_080BCA7C:
|
|
ldr r0, _080BCAA4 @ =gTasks
|
|
lsls r1, r5, 2
|
|
adds r1, r5
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldrh r0, [r1, 0xC]
|
|
subs r0, 0x1
|
|
strh r0, [r1, 0xC]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
beq _080BCA94
|
|
b _080BCC22
|
|
_080BCA94:
|
|
ldrh r0, [r1, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x8]
|
|
movs r0, 0x48
|
|
movs r1, 0x3F
|
|
bl SetGpuReg
|
|
b _080BCC22
|
|
.align 2, 0
|
|
_080BCAA4: .4byte gTasks
|
|
_080BCAA8:
|
|
ldr r1, _080BCAE8 @ =gBattle_WIN0V
|
|
ldrh r0, [r1]
|
|
subs r0, 0xFF
|
|
strh r0, [r1]
|
|
movs r1, 0xFF
|
|
lsls r1, 8
|
|
ands r0, r1
|
|
movs r1, 0xC0
|
|
lsls r1, 6
|
|
cmp r0, r1
|
|
beq _080BCAC0
|
|
b _080BCC22
|
|
_080BCAC0:
|
|
ldr r0, _080BCAEC @ =gTasks
|
|
lsls r1, r5, 2
|
|
adds r1, r5
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldrh r0, [r1, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x8]
|
|
movs r0, 0xF0
|
|
strh r0, [r1, 0xC]
|
|
movs r0, 0x20
|
|
strh r0, [r1, 0xE]
|
|
movs r0, 0x1
|
|
strh r0, [r1, 0x12]
|
|
ldr r2, _080BCAF0 @ =gIntroSlideFlags
|
|
ldrh r1, [r2]
|
|
ldr r0, _080BCAF4 @ =0x0000fffe
|
|
ands r0, r1
|
|
strh r0, [r2]
|
|
b _080BCC22
|
|
.align 2, 0
|
|
_080BCAE8: .4byte gBattle_WIN0V
|
|
_080BCAEC: .4byte gTasks
|
|
_080BCAF0: .4byte gIntroSlideFlags
|
|
_080BCAF4: .4byte 0x0000fffe
|
|
_080BCAF8:
|
|
lsls r0, r5, 2
|
|
adds r1, r0, r5
|
|
lsls r1, 3
|
|
adds r2, r1, r4
|
|
ldrh r3, [r2, 0xE]
|
|
movs r6, 0xE
|
|
ldrsh r1, [r2, r6]
|
|
mov r12, r0
|
|
cmp r1, 0
|
|
beq _080BCB12
|
|
subs r0, r3, 0x1
|
|
strh r0, [r2, 0xE]
|
|
b _080BCB32
|
|
_080BCB12:
|
|
ldrh r1, [r2, 0x10]
|
|
movs r0, 0xF
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080BCB32
|
|
ldrh r0, [r2, 0x12]
|
|
subs r0, 0x1
|
|
strh r0, [r2, 0x12]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _080BCB32
|
|
adds r0, r1, 0
|
|
adds r0, 0xFF
|
|
strh r0, [r2, 0x10]
|
|
movs r0, 0x6
|
|
strh r0, [r2, 0x12]
|
|
_080BCB32:
|
|
ldr r2, _080BCC00 @ =gBattle_WIN0V
|
|
ldrh r1, [r2]
|
|
movs r0, 0xFF
|
|
lsls r0, 8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080BCB46
|
|
ldr r3, _080BCC04 @ =0xfffffc04
|
|
adds r0, r1, r3
|
|
strh r0, [r2]
|
|
_080BCB46:
|
|
mov r6, r12
|
|
adds r0, r6, r5
|
|
lsls r0, 3
|
|
adds r1, r0, r4
|
|
ldrh r2, [r1, 0xC]
|
|
movs r3, 0xC
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, 0
|
|
beq _080BCB5C
|
|
subs r0, r2, 0x2
|
|
strh r0, [r1, 0xC]
|
|
_080BCB5C:
|
|
movs r3, 0
|
|
ldr r6, _080BCC08 @ =gScanlineEffect
|
|
mov r8, r6
|
|
ldr r7, _080BCC0C @ =gScanlineEffectRegBuffers
|
|
adds r4, r1, 0
|
|
_080BCB66:
|
|
lsls r2, r3, 1
|
|
ldrb r1, [r6, 0x14]
|
|
lsls r0, r1, 4
|
|
subs r0, r1
|
|
lsls r0, 7
|
|
adds r2, r0
|
|
adds r2, r7
|
|
ldrh r0, [r4, 0xC]
|
|
strh r0, [r2]
|
|
adds r3, 0x1
|
|
cmp r3, 0x4F
|
|
ble _080BCB66
|
|
cmp r3, 0x9F
|
|
bgt _080BCBAA
|
|
ldr r7, _080BCC0C @ =gScanlineEffectRegBuffers
|
|
ldr r6, _080BCC08 @ =gScanlineEffect
|
|
ldr r1, _080BCC10 @ =gTasks
|
|
mov r2, r12
|
|
adds r0, r2, r5
|
|
lsls r0, 3
|
|
adds r4, r0, r1
|
|
_080BCB90:
|
|
lsls r2, r3, 1
|
|
ldrb r1, [r6, 0x14]
|
|
lsls r0, r1, 4
|
|
subs r0, r1
|
|
lsls r0, 7
|
|
adds r2, r0
|
|
adds r2, r7
|
|
ldrh r0, [r4, 0xC]
|
|
negs r0, r0
|
|
strh r0, [r2]
|
|
adds r3, 0x1
|
|
cmp r3, 0x9F
|
|
ble _080BCB90
|
|
_080BCBAA:
|
|
ldr r1, _080BCC10 @ =gTasks
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 3
|
|
adds r1, r0, r1
|
|
movs r3, 0xC
|
|
ldrsh r2, [r1, r3]
|
|
cmp r2, 0
|
|
bne _080BCC22
|
|
movs r0, 0x3
|
|
mov r6, r8
|
|
strb r0, [r6, 0x15]
|
|
ldrh r0, [r1, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x8]
|
|
str r2, [sp]
|
|
ldr r1, _080BCC14 @ =0x0600e000
|
|
ldr r2, _080BCC18 @ =0x05000200
|
|
mov r0, sp
|
|
bl CpuSet
|
|
movs r0, 0x1
|
|
movs r1, 0x1
|
|
movs r2, 0
|
|
bl SetBgAttribute
|
|
movs r0, 0x2
|
|
movs r1, 0x1
|
|
movs r2, 0
|
|
bl SetBgAttribute
|
|
movs r1, 0x9C
|
|
lsls r1, 8
|
|
movs r0, 0xA
|
|
bl SetGpuReg
|
|
movs r1, 0xBC
|
|
lsls r1, 7
|
|
movs r0, 0xC
|
|
bl SetGpuReg
|
|
b _080BCC22
|
|
.align 2, 0
|
|
_080BCC00: .4byte gBattle_WIN0V
|
|
_080BCC04: .4byte 0xfffffc04
|
|
_080BCC08: .4byte gScanlineEffect
|
|
_080BCC0C: .4byte gScanlineEffectRegBuffers
|
|
_080BCC10: .4byte gTasks
|
|
_080BCC14: .4byte 0x0600e000
|
|
_080BCC18: .4byte 0x05000200
|
|
_080BCC1C:
|
|
adds r0, r5, 0
|
|
bl sub_80BC41C
|
|
_080BCC22:
|
|
ldr r0, _080BCC48 @ =gTasks
|
|
lsls r1, r5, 2
|
|
adds r1, r5
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
movs r2, 0x8
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, 0x4
|
|
beq _080BCC3C
|
|
ldrh r1, [r1, 0x10]
|
|
movs r0, 0x52
|
|
bl SetGpuReg
|
|
_080BCC3C:
|
|
add sp, 0x4
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BCC48: .4byte gTasks
|
|
thumb_func_end task_battle_intro_anim
|
|
|
|
thumb_func_start sub_80BCC4C
|
|
sub_80BCC4C: @ 80BCC4C
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
sub sp, 0x8
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldr r1, _080BCC98 @ =gTasks
|
|
lsls r0, r6, 2
|
|
adds r0, r6
|
|
lsls r0, 3
|
|
adds r7, r0, r1
|
|
movs r1, 0x8
|
|
ldrsh r0, [r7, r1]
|
|
cmp r0, 0x1
|
|
ble _080BCCC2
|
|
movs r2, 0x10
|
|
ldrsh r0, [r7, r2]
|
|
cmp r0, 0
|
|
bne _080BCCC2
|
|
ldr r2, _080BCC9C @ =gBattle_BG1_X
|
|
ldrh r1, [r2]
|
|
movs r0, 0x80
|
|
lsls r0, 8
|
|
ands r0, r1
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
cmp r5, 0
|
|
bne _080BCC8A
|
|
cmp r1, 0x4F
|
|
bhi _080BCCA4
|
|
_080BCC8A:
|
|
adds r0, r1, 0x3
|
|
strh r0, [r2]
|
|
ldr r1, _080BCCA0 @ =gBattle_BG2_X
|
|
ldrh r0, [r1]
|
|
subs r0, 0x3
|
|
strh r0, [r1]
|
|
b _080BCCC2
|
|
.align 2, 0
|
|
_080BCC98: .4byte gTasks
|
|
_080BCC9C: .4byte gBattle_BG1_X
|
|
_080BCCA0: .4byte gBattle_BG2_X
|
|
_080BCCA4:
|
|
str r5, [sp]
|
|
ldr r1, _080BCCE4 @ =0x0600e000
|
|
ldr r4, _080BCCE8 @ =0x05000200
|
|
mov r0, sp
|
|
adds r2, r4, 0
|
|
bl CpuSet
|
|
str r5, [sp, 0x4]
|
|
add r0, sp, 0x4
|
|
ldr r1, _080BCCEC @ =0x0600f000
|
|
adds r2, r4, 0
|
|
bl CpuSet
|
|
movs r0, 0x1
|
|
strh r0, [r7, 0x10]
|
|
_080BCCC2:
|
|
ldr r0, _080BCCF0 @ =gTasks
|
|
lsls r2, r6, 2
|
|
adds r1, r2, r6
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
movs r3, 0x8
|
|
ldrsh r1, [r1, r3]
|
|
mov r9, r0
|
|
adds r5, r2, 0
|
|
cmp r1, 0x4
|
|
bls _080BCCDA
|
|
b _080BCEE6
|
|
_080BCCDA:
|
|
lsls r0, r1, 2
|
|
ldr r1, _080BCCF4 @ =_080BCCF8
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080BCCE4: .4byte 0x0600e000
|
|
_080BCCE8: .4byte 0x05000200
|
|
_080BCCEC: .4byte 0x0600f000
|
|
_080BCCF0: .4byte gTasks
|
|
_080BCCF4: .4byte _080BCCF8
|
|
.align 2, 0
|
|
_080BCCF8:
|
|
.4byte _080BCD0C
|
|
.4byte _080BCD1E
|
|
.4byte _080BCDC4
|
|
.4byte _080BCE08
|
|
.4byte _080BCEE0
|
|
_080BCD0C:
|
|
adds r0, r5, r6
|
|
lsls r0, 3
|
|
add r0, r9
|
|
movs r1, 0x20
|
|
strh r1, [r0, 0xC]
|
|
ldrh r1, [r0, 0x8]
|
|
adds r1, 0x1
|
|
strh r1, [r0, 0x8]
|
|
b _080BCEE6
|
|
_080BCD1E:
|
|
adds r0, r5, r6
|
|
lsls r0, 3
|
|
mov r2, r9
|
|
adds r1, r0, r2
|
|
ldrh r0, [r1, 0xC]
|
|
subs r0, 0x1
|
|
strh r0, [r1, 0xC]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
beq _080BCD34
|
|
b _080BCEE6
|
|
_080BCD34:
|
|
ldrh r0, [r1, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x8]
|
|
ldr r4, _080BCDB4 @ =gSprites
|
|
ldr r5, _080BCDB8 @ =gBattleStruct
|
|
ldr r0, [r5]
|
|
adds r0, 0x7D
|
|
ldrb r0, [r0]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r4
|
|
ldrb r3, [r1, 0x1]
|
|
movs r2, 0xD
|
|
negs r2, r2
|
|
adds r0, r2, 0
|
|
ands r0, r3
|
|
movs r3, 0x8
|
|
mov r9, r3
|
|
mov r3, r9
|
|
orrs r0, r3
|
|
strb r0, [r1, 0x1]
|
|
ldr r3, [r5]
|
|
adds r0, r3, 0
|
|
adds r0, 0x7D
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
movs r1, 0x1C
|
|
adds r1, r4
|
|
mov r8, r1
|
|
add r0, r8
|
|
ldr r6, _080BCDBC @ =sub_801182C
|
|
str r6, [r0]
|
|
adds r3, 0x7E
|
|
ldrb r1, [r3]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
ldrb r1, [r0, 0x1]
|
|
ands r2, r1
|
|
mov r3, r9
|
|
orrs r2, r3
|
|
strb r2, [r0, 0x1]
|
|
ldr r0, [r5]
|
|
adds r0, 0x7E
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
add r0, r8
|
|
str r6, [r0]
|
|
movs r0, 0x48
|
|
movs r1, 0x3F
|
|
bl SetGpuReg
|
|
ldr r1, _080BCDC0 @ =0x00003f06
|
|
movs r0, 0x4A
|
|
bl SetGpuReg
|
|
b _080BCEE6
|
|
.align 2, 0
|
|
_080BCDB4: .4byte gSprites
|
|
_080BCDB8: .4byte gBattleStruct
|
|
_080BCDBC: .4byte sub_801182C
|
|
_080BCDC0: .4byte 0x00003f06
|
|
_080BCDC4:
|
|
ldr r1, _080BCDFC @ =gBattle_WIN0V
|
|
ldrh r0, [r1]
|
|
subs r0, 0xFF
|
|
strh r0, [r1]
|
|
movs r1, 0xFF
|
|
lsls r1, 8
|
|
ands r0, r1
|
|
movs r1, 0xC0
|
|
lsls r1, 6
|
|
cmp r0, r1
|
|
beq _080BCDDC
|
|
b _080BCEE6
|
|
_080BCDDC:
|
|
adds r1, r5, r6
|
|
lsls r1, 3
|
|
add r1, r9
|
|
ldrh r0, [r1, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x8]
|
|
movs r0, 0xF0
|
|
strh r0, [r1, 0xC]
|
|
movs r0, 0x20
|
|
strh r0, [r1, 0xE]
|
|
ldr r2, _080BCE00 @ =gIntroSlideFlags
|
|
ldrh r1, [r2]
|
|
ldr r0, _080BCE04 @ =0x0000fffe
|
|
ands r0, r1
|
|
strh r0, [r2]
|
|
b _080BCEE6
|
|
.align 2, 0
|
|
_080BCDFC: .4byte gBattle_WIN0V
|
|
_080BCE00: .4byte gIntroSlideFlags
|
|
_080BCE04: .4byte 0x0000fffe
|
|
_080BCE08:
|
|
ldr r2, _080BCECC @ =gBattle_WIN0V
|
|
ldrh r1, [r2]
|
|
movs r0, 0xFF
|
|
lsls r0, 8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080BCE1C
|
|
ldr r3, _080BCED0 @ =0xfffffc04
|
|
adds r0, r1, r3
|
|
strh r0, [r2]
|
|
_080BCE1C:
|
|
adds r0, r5, r6
|
|
lsls r0, 3
|
|
mov r2, r9
|
|
adds r1, r0, r2
|
|
ldrh r2, [r1, 0xC]
|
|
movs r3, 0xC
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, 0
|
|
beq _080BCE32
|
|
subs r0, r2, 0x2
|
|
strh r0, [r1, 0xC]
|
|
_080BCE32:
|
|
movs r3, 0
|
|
ldr r0, _080BCED4 @ =gScanlineEffect
|
|
mov r12, r0
|
|
ldr r2, _080BCED8 @ =gScanlineEffectRegBuffers
|
|
mov r8, r2
|
|
mov r7, r12
|
|
adds r4, r1, 0
|
|
_080BCE40:
|
|
lsls r2, r3, 1
|
|
ldrb r1, [r7, 0x14]
|
|
lsls r0, r1, 4
|
|
subs r0, r1
|
|
lsls r0, 7
|
|
adds r2, r0
|
|
add r2, r8
|
|
ldrh r0, [r4, 0xC]
|
|
strh r0, [r2]
|
|
adds r3, 0x1
|
|
cmp r3, 0x4F
|
|
ble _080BCE40
|
|
cmp r3, 0x9F
|
|
bgt _080BCE84
|
|
ldr r0, _080BCED8 @ =gScanlineEffectRegBuffers
|
|
mov r8, r0
|
|
ldr r7, _080BCED4 @ =gScanlineEffect
|
|
ldr r1, _080BCEDC @ =gTasks
|
|
adds r0, r5, r6
|
|
lsls r0, 3
|
|
adds r4, r0, r1
|
|
_080BCE6A:
|
|
lsls r2, r3, 1
|
|
ldrb r1, [r7, 0x14]
|
|
lsls r0, r1, 4
|
|
subs r0, r1
|
|
lsls r0, 7
|
|
adds r2, r0
|
|
add r2, r8
|
|
ldrh r0, [r4, 0xC]
|
|
negs r0, r0
|
|
strh r0, [r2]
|
|
adds r3, 0x1
|
|
cmp r3, 0x9F
|
|
ble _080BCE6A
|
|
_080BCE84:
|
|
adds r0, r5, r6
|
|
lsls r0, 3
|
|
mov r2, r9
|
|
adds r1, r0, r2
|
|
movs r3, 0xC
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, 0
|
|
bne _080BCEE6
|
|
movs r0, 0x3
|
|
mov r2, r12
|
|
strb r0, [r2, 0x15]
|
|
ldrh r0, [r1, 0x8]
|
|
adds r0, 0x1
|
|
strh r0, [r1, 0x8]
|
|
movs r0, 0x1
|
|
movs r1, 0x1
|
|
movs r2, 0
|
|
bl SetBgAttribute
|
|
movs r0, 0x2
|
|
movs r1, 0x1
|
|
movs r2, 0
|
|
bl SetBgAttribute
|
|
movs r1, 0x9C
|
|
lsls r1, 8
|
|
movs r0, 0xA
|
|
bl SetGpuReg
|
|
movs r1, 0xBC
|
|
lsls r1, 7
|
|
movs r0, 0xC
|
|
bl SetGpuReg
|
|
b _080BCEE6
|
|
.align 2, 0
|
|
_080BCECC: .4byte gBattle_WIN0V
|
|
_080BCED0: .4byte 0xfffffc04
|
|
_080BCED4: .4byte gScanlineEffect
|
|
_080BCED8: .4byte gScanlineEffectRegBuffers
|
|
_080BCEDC: .4byte gTasks
|
|
_080BCEE0:
|
|
adds r0, r6, 0
|
|
bl sub_80BC41C
|
|
_080BCEE6:
|
|
add sp, 0x8
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80BCC4C
|
|
|
|
thumb_func_start sub_80BCEF4
|
|
sub_80BCEF4: @ 80BCEF4
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x4
|
|
str r0, [sp]
|
|
adds r6, r2, 0
|
|
adds r4, r3, 0
|
|
ldr r0, [sp, 0x24]
|
|
ldr r7, [sp, 0x28]
|
|
ldr r2, [sp, 0x2C]
|
|
mov r9, r2
|
|
ldr r5, [sp, 0x30]
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
mov r8, r1
|
|
lsls r6, 24
|
|
lsrs r6, 24
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r10, r0
|
|
lsls r5, 16
|
|
lsrs r5, 16
|
|
adds r0, r4, 0
|
|
bl GetBattlerAtPosition
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, _080BCFC4 @ =gMonSpritesGfxPtr
|
|
ldr r2, [r1]
|
|
lsls r4, 2
|
|
adds r2, 0x4
|
|
adds r2, r4
|
|
ldr r1, _080BCFC8 @ =gBattleMonForms
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
lsls r1, 11
|
|
ldr r0, [r2]
|
|
adds r0, r1
|
|
movs r2, 0x80
|
|
lsls r2, 3
|
|
adds r1, r7, 0
|
|
bl CpuSet
|
|
ldr r1, [sp]
|
|
lsls r0, r1, 24
|
|
lsrs r0, 24
|
|
movs r2, 0x80
|
|
lsls r2, 5
|
|
adds r1, r7, 0
|
|
adds r3, r5, 0
|
|
bl LoadBgTiles
|
|
adds r0, r6, 0
|
|
adds r0, 0x8
|
|
cmp r6, r0
|
|
bge _080BCFA0
|
|
mov r12, r0
|
|
mov r2, r8
|
|
lsls r7, r2, 1
|
|
_080BCF72:
|
|
mov r1, r8
|
|
adds r2, r1, 0
|
|
adds r2, 0x8
|
|
adds r4, r6, 0x1
|
|
cmp r1, r2
|
|
bge _080BCF9A
|
|
mov r0, r10
|
|
lsls r3, r0, 12
|
|
lsls r0, r6, 6
|
|
add r0, r9
|
|
adds r6, r7, r0
|
|
subs r1, r2, r1
|
|
_080BCF8A:
|
|
adds r0, r5, 0
|
|
orrs r0, r3
|
|
strh r0, [r6]
|
|
adds r5, 0x1
|
|
adds r6, 0x2
|
|
subs r1, 0x1
|
|
cmp r1, 0
|
|
bne _080BCF8A
|
|
_080BCF9A:
|
|
adds r6, r4, 0
|
|
cmp r6, r12
|
|
blt _080BCF72
|
|
_080BCFA0:
|
|
ldr r1, [sp]
|
|
lsls r0, r1, 24
|
|
lsrs r0, 24
|
|
movs r2, 0x80
|
|
lsls r2, 4
|
|
mov r1, r9
|
|
movs r3, 0
|
|
bl LoadBgTilemap
|
|
add sp, 0x4
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BCFC4: .4byte gMonSpritesGfxPtr
|
|
_080BCFC8: .4byte gBattleMonForms
|
|
thumb_func_end sub_80BCEF4
|
|
|
|
thumb_func_start sub_80BCFCC
|
|
sub_80BCFCC: @ 80BCFCC
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x4
|
|
ldr r4, [sp, 0x24]
|
|
ldr r5, [sp, 0x28]
|
|
mov r8, r5
|
|
ldr r5, [sp, 0x2C]
|
|
ldr r6, [sp, 0x30]
|
|
mov r9, r6
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r12, r0
|
|
lsls r1, 24
|
|
lsls r2, 24
|
|
lsls r3, 24
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
mov r10, r4
|
|
mov r7, r8
|
|
lsls r7, 16
|
|
lsrs r6, r7, 16
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
mov r0, r9
|
|
lsls r0, 24
|
|
mov r9, r0
|
|
ldr r4, _080BD090 @ =0x040000d4
|
|
ldr r0, _080BD094 @ =gMonSpritesGfxPtr
|
|
ldr r0, [r0]
|
|
lsrs r2, 22
|
|
adds r0, 0x4
|
|
adds r0, r2
|
|
lsrs r3, 13
|
|
ldr r0, [r0]
|
|
adds r0, r3
|
|
str r0, [r4]
|
|
movs r0, 0xC0
|
|
lsls r0, 19
|
|
adds r6, r0
|
|
str r6, [r4, 0x4]
|
|
ldr r0, _080BD098 @ =0x80000400
|
|
str r0, [r4, 0x8]
|
|
ldr r0, [r4, 0x8]
|
|
adds r2, r7, 0
|
|
lsrs r2, 21
|
|
mov r6, r9
|
|
lsrs r6, 15
|
|
subs r4, r2, r6
|
|
lsrs r0, r1, 24
|
|
adds r1, r0, 0
|
|
adds r1, 0x8
|
|
cmp r0, r1
|
|
bge _080BD080
|
|
mov r9, r1
|
|
mov r7, r12
|
|
lsls r7, 1
|
|
mov r8, r7
|
|
lsls r5, 11
|
|
str r5, [sp]
|
|
_080BD048:
|
|
mov r2, r12
|
|
adds r3, r2, 0
|
|
adds r3, 0x8
|
|
adds r5, r0, 0x1
|
|
cmp r2, r3
|
|
bge _080BD07A
|
|
mov r1, r10
|
|
lsls r6, r1, 12
|
|
lsls r0, 6
|
|
movs r7, 0xC0
|
|
lsls r7, 19
|
|
adds r0, r7
|
|
ldr r1, [sp]
|
|
adds r0, r1, r0
|
|
mov r7, r8
|
|
adds r1, r7, r0
|
|
subs r2, r3, r2
|
|
_080BD06A:
|
|
adds r0, r4, 0
|
|
orrs r0, r6
|
|
strh r0, [r1]
|
|
adds r4, 0x1
|
|
adds r1, 0x2
|
|
subs r2, 0x1
|
|
cmp r2, 0
|
|
bne _080BD06A
|
|
_080BD07A:
|
|
adds r0, r5, 0
|
|
cmp r0, r9
|
|
blt _080BD048
|
|
_080BD080:
|
|
add sp, 0x4
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080BD090: .4byte 0x040000d4
|
|
_080BD094: .4byte gMonSpritesGfxPtr
|
|
_080BD098: .4byte 0x80000400
|
|
thumb_func_end sub_80BCFCC
|
|
|
|
.align 2, 0 @ Don't pad with nop.
|