mirror of
https://github.com/pret/pokefirered.git
synced 2026-05-06 22:28:44 -05:00
1191 lines
21 KiB
ArmAsm
1191 lines
21 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "constants/constants.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
thumb_func_start nullsub_44
|
|
nullsub_44: @ 8077760
|
|
bx lr
|
|
thumb_func_end nullsub_44
|
|
|
|
thumb_func_start sub_8077764
|
|
sub_8077764: @ 8077764
|
|
push {lr}
|
|
ldr r2, _080777B0 @ =gPaletteFade
|
|
ldrb r0, [r2, 0x8]
|
|
movs r1, 0x80
|
|
orrs r0, r1
|
|
strb r0, [r2, 0x8]
|
|
movs r0, 0
|
|
bl SetHBlankCallback
|
|
movs r0, 0x4C
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
ldr r0, _080777B4 @ =gBattleScripting
|
|
adds r2, r0, 0
|
|
adds r2, 0x21
|
|
movs r1, 0
|
|
strb r1, [r2]
|
|
adds r0, 0x22
|
|
strb r1, [r0]
|
|
ldr r0, _080777B8 @ =gBattleTypeFlags
|
|
ldr r1, [r0]
|
|
movs r0, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080777DA
|
|
movs r0, 0x8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080777C4
|
|
movs r0, 0x1
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _080777BC
|
|
movs r0, 0x19
|
|
bl sub_812B1F0
|
|
b _080777DA
|
|
.align 2, 0
|
|
_080777B0: .4byte gPaletteFade
|
|
_080777B4: .4byte gBattleScripting
|
|
_080777B8: .4byte gBattleTypeFlags
|
|
_080777BC:
|
|
movs r0, 0x18
|
|
bl sub_812B1F0
|
|
b _080777DA
|
|
_080777C4:
|
|
movs r0, 0x80
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _080777D4
|
|
movs r0, 0x1A
|
|
bl sub_812B1F0
|
|
b _080777DA
|
|
_080777D4:
|
|
movs r0, 0x17
|
|
bl sub_812B1F0
|
|
_080777DA:
|
|
ldr r0, _080777E4 @ =sub_80777E8
|
|
bl SetMainCallback2
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080777E4: .4byte sub_80777E8
|
|
thumb_func_end sub_8077764
|
|
|
|
thumb_func_start sub_80777E8
|
|
sub_80777E8: @ 80777E8
|
|
push {r4-r7,lr}
|
|
sub sp, 0x8
|
|
ldr r0, _08077804 @ =gBattleScripting
|
|
adds r0, 0x21
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x14
|
|
bls _080777F8
|
|
b _08077A8A
|
|
_080777F8:
|
|
lsls r0, 2
|
|
ldr r1, _08077808 @ =_0807780C
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_08077804: .4byte gBattleScripting
|
|
_08077808: .4byte _0807780C
|
|
.align 2, 0
|
|
_0807780C:
|
|
.4byte _08077860
|
|
.4byte _08077866
|
|
.4byte _080778E8
|
|
.4byte _08077900
|
|
.4byte _08077906
|
|
.4byte _08077918
|
|
.4byte _0807791E
|
|
.4byte _08077946
|
|
.4byte _0807794A
|
|
.4byte _0807794E
|
|
.4byte _08077952
|
|
.4byte _08077970
|
|
.4byte _08077978
|
|
.4byte _08077980
|
|
.4byte _08077988
|
|
.4byte _08077990
|
|
.4byte _08077998
|
|
.4byte _080779A0
|
|
.4byte _080779A8
|
|
.4byte _080779B0
|
|
.4byte _08077A5C
|
|
_08077860:
|
|
bl ResetSpriteData
|
|
b _08077A8A
|
|
_08077866:
|
|
movs r0, 0
|
|
bl SetVBlankCallback
|
|
bl dp12_8087EA4
|
|
bl sub_800F324
|
|
movs r0, 0x1
|
|
movs r1, 0x1
|
|
movs r2, 0
|
|
bl SetBgAttribute
|
|
movs r0, 0x2
|
|
movs r1, 0x1
|
|
movs r2, 0
|
|
bl SetBgAttribute
|
|
movs r0, 0
|
|
bl ShowBg
|
|
movs r0, 0x1
|
|
bl ShowBg
|
|
movs r0, 0x2
|
|
bl ShowBg
|
|
movs r0, 0x3
|
|
bl ShowBg
|
|
bl ResetPaletteFade
|
|
ldr r0, _080778C8 @ =gUnknown_2022974
|
|
movs r1, 0
|
|
strh r1, [r0]
|
|
ldr r0, _080778CC @ =gUnknown_2022976
|
|
strh r1, [r0]
|
|
ldr r0, _080778D0 @ =gUnknown_2022978
|
|
strh r1, [r0]
|
|
ldr r0, _080778D4 @ =gUnknown_202297A
|
|
strh r1, [r0]
|
|
ldr r0, _080778D8 @ =gUnknown_202297C
|
|
strh r1, [r0]
|
|
ldr r0, _080778DC @ =gUnknown_202297E
|
|
strh r1, [r0]
|
|
ldr r0, _080778E0 @ =gUnknown_2022980
|
|
strh r1, [r0]
|
|
ldr r0, _080778E4 @ =gUnknown_2022982
|
|
strh r1, [r0]
|
|
b _08077A8A
|
|
.align 2, 0
|
|
_080778C8: .4byte gUnknown_2022974
|
|
_080778CC: .4byte gUnknown_2022976
|
|
_080778D0: .4byte gUnknown_2022978
|
|
_080778D4: .4byte gUnknown_202297A
|
|
_080778D8: .4byte gUnknown_202297C
|
|
_080778DC: .4byte gUnknown_202297E
|
|
_080778E0: .4byte gUnknown_2022980
|
|
_080778E4: .4byte gUnknown_2022982
|
|
_080778E8:
|
|
movs r0, 0
|
|
str r0, [sp, 0x4]
|
|
movs r1, 0xC0
|
|
lsls r1, 19
|
|
ldr r2, _080778FC @ =0x01006000
|
|
add r0, sp, 0x4
|
|
bl CpuFastSet
|
|
b _08077A8A
|
|
.align 2, 0
|
|
_080778FC: .4byte 0x01006000
|
|
_08077900:
|
|
bl LoadBattleTextboxAndBackground
|
|
b _08077A8A
|
|
_08077906:
|
|
bl FreeAllSpritePalettes
|
|
ldr r1, _08077914 @ =gReservedSpritePaletteCount
|
|
movs r0, 0x4
|
|
strb r0, [r1]
|
|
b _08077A8A
|
|
.align 2, 0
|
|
_08077914: .4byte gReservedSpritePaletteCount
|
|
_08077918:
|
|
bl ClearSpritesHealthboxAnimData
|
|
b _08077A8A
|
|
_0807791E:
|
|
ldr r5, _08077938 @ =gBattleScripting
|
|
adds r4, r5, 0
|
|
adds r4, 0x22
|
|
ldrb r0, [r4]
|
|
bl BattleLoadAllHealthBoxesGfx
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0807793C
|
|
movs r0, 0
|
|
strb r0, [r4]
|
|
b _08077A8A
|
|
.align 2, 0
|
|
_08077938: .4byte gBattleScripting
|
|
_0807793C:
|
|
ldrb r0, [r4]
|
|
adds r0, 0x1
|
|
strb r0, [r4]
|
|
adds r1, r5, 0
|
|
b _08077962
|
|
_08077946:
|
|
movs r0, 0
|
|
b _08077954
|
|
_0807794A:
|
|
movs r0, 0x1
|
|
b _08077954
|
|
_0807794E:
|
|
movs r0, 0x2
|
|
b _08077954
|
|
_08077952:
|
|
movs r0, 0x3
|
|
_08077954:
|
|
bl sub_8077B0C
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08077960
|
|
b _08077A8A
|
|
_08077960:
|
|
ldr r1, _0807796C @ =gBattleScripting
|
|
_08077962:
|
|
adds r1, 0x21
|
|
ldrb r0, [r1]
|
|
subs r0, 0x1
|
|
strb r0, [r1]
|
|
b _08077A8A
|
|
.align 2, 0
|
|
_0807796C: .4byte gBattleScripting
|
|
_08077970:
|
|
movs r0, 0
|
|
bl sub_8077C38
|
|
b _08077A8A
|
|
_08077978:
|
|
movs r0, 0x1
|
|
bl sub_8077C38
|
|
b _08077A8A
|
|
_08077980:
|
|
movs r0, 0x2
|
|
bl sub_8077C38
|
|
b _08077A8A
|
|
_08077988:
|
|
movs r0, 0x3
|
|
bl sub_8077C38
|
|
b _08077A8A
|
|
_08077990:
|
|
movs r0, 0
|
|
bl CreateHealthboxSprite
|
|
b _08077A8A
|
|
_08077998:
|
|
movs r0, 0x1
|
|
bl CreateHealthboxSprite
|
|
b _08077A8A
|
|
_080779A0:
|
|
movs r0, 0x2
|
|
bl CreateHealthboxSprite
|
|
b _08077A8A
|
|
_080779A8:
|
|
movs r0, 0x3
|
|
bl CreateHealthboxSprite
|
|
b _08077A8A
|
|
_080779B0:
|
|
bl LoadAndCreateEnemyShadowSprites
|
|
movs r0, 0x1
|
|
bl GetBattlerAtPosition
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
ldr r7, _08077A44 @ =gBattlerPartyIndexes
|
|
lsls r0, r4, 1
|
|
adds r0, r7
|
|
ldrh r0, [r0]
|
|
movs r6, 0x64
|
|
muls r0, r6
|
|
ldr r5, _08077A48 @ =gEnemyParty
|
|
adds r0, r5
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
adds r1, r0, 0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
adds r0, r4, 0
|
|
bl SetBankEnemyShadowSpriteCallback
|
|
bl sub_8075290
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08077A14
|
|
movs r0, 0x3
|
|
bl GetBattlerAtPosition
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
lsls r0, r4, 1
|
|
adds r0, r7
|
|
ldrh r0, [r0]
|
|
muls r0, r6
|
|
adds r0, r5
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
adds r1, r0, 0
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
adds r0, r4, 0
|
|
bl SetBankEnemyShadowSpriteCallback
|
|
_08077A14:
|
|
ldr r1, _08077A4C @ =gUnknown_2023FF8
|
|
ldr r0, _08077A50 @ =gBattlerInMenuId
|
|
ldrb r0, [r0]
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
movs r1, 0
|
|
bl ActionSelectionCreateCursorAt
|
|
ldr r0, _08077A54 @ =gUnknown_3003F3C
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _08077A8A
|
|
ldr r0, _08077A58 @ =gUnknown_3003F64
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _08077A8A
|
|
bl sub_80FCEA8
|
|
movs r0, 0
|
|
movs r1, 0
|
|
bl sub_80FCD74
|
|
b _08077A8A
|
|
.align 2, 0
|
|
_08077A44: .4byte gBattlerPartyIndexes
|
|
_08077A48: .4byte gEnemyParty
|
|
_08077A4C: .4byte gUnknown_2023FF8
|
|
_08077A50: .4byte gBattlerInMenuId
|
|
_08077A54: .4byte gUnknown_3003F3C
|
|
_08077A58: .4byte gUnknown_3003F64
|
|
_08077A5C:
|
|
ldr r0, _08077A9C @ =sub_80116F4
|
|
bl SetVBlankCallback
|
|
bl sub_8077AAC
|
|
movs r0, 0x1
|
|
str r0, [sp]
|
|
movs r0, 0xFF
|
|
movs r1, 0
|
|
movs r2, 0x10
|
|
movs r3, 0
|
|
bl BeginHardwarePaletteFade
|
|
ldr r2, _08077AA0 @ =gPaletteFade
|
|
ldrb r1, [r2, 0x8]
|
|
movs r0, 0x7F
|
|
ands r0, r1
|
|
strb r0, [r2, 0x8]
|
|
ldr r0, _08077AA4 @ =sub_8011100
|
|
bl SetMainCallback2
|
|
bl sub_80357C8
|
|
_08077A8A:
|
|
ldr r1, _08077AA8 @ =gBattleScripting
|
|
adds r1, 0x21
|
|
ldrb r0, [r1]
|
|
adds r0, 0x1
|
|
strb r0, [r1]
|
|
add sp, 0x8
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08077A9C: .4byte sub_80116F4
|
|
_08077AA0: .4byte gPaletteFade
|
|
_08077AA4: .4byte sub_8011100
|
|
_08077AA8: .4byte gBattleScripting
|
|
thumb_func_end sub_80777E8
|
|
|
|
thumb_func_start sub_8077AAC
|
|
sub_8077AAC: @ 8077AAC
|
|
push {lr}
|
|
movs r0, 0x1
|
|
bl EnableInterrupts
|
|
movs r0, 0x50
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x52
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x54
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x48
|
|
movs r1, 0x3F
|
|
bl SetGpuReg
|
|
movs r0, 0x4A
|
|
movs r1, 0x3F
|
|
bl SetGpuReg
|
|
movs r0, 0x40
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x44
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x42
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x46
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
ldr r1, _08077B08 @ =0x0000b040
|
|
movs r0, 0
|
|
bl SetGpuRegBits
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08077B08: .4byte 0x0000b040
|
|
thumb_func_end sub_8077AAC
|
|
|
|
thumb_func_start sub_8077B0C
|
|
sub_8077B0C: @ 8077B0C
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r0, _08077B54 @ =gBattlersCount
|
|
ldrb r0, [r0]
|
|
cmp r4, r0
|
|
bcc _08077B1C
|
|
b _08077C2C
|
|
_08077B1C:
|
|
adds r0, r4, 0
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08077BA6
|
|
ldr r0, _08077B58 @ =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0xA0
|
|
lsls r1, 8
|
|
ands r0, r1
|
|
movs r1, 0x80
|
|
lsls r1, 8
|
|
cmp r0, r1
|
|
bne _08077B64
|
|
ldr r1, _08077B5C @ =gBattlerPartyIndexes
|
|
lsls r0, r4, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _08077B60 @ =gEnemyParty
|
|
adds r0, r1
|
|
adds r1, r4, 0
|
|
bl sub_8034658
|
|
b _08077C24
|
|
.align 2, 0
|
|
_08077B54: .4byte gBattlersCount
|
|
_08077B58: .4byte gBattleTypeFlags
|
|
_08077B5C: .4byte gBattlerPartyIndexes
|
|
_08077B60: .4byte gEnemyParty
|
|
_08077B64:
|
|
ldr r0, _08077B90 @ =gUnknown_2024018
|
|
ldr r0, [r0]
|
|
ldr r1, [r0]
|
|
lsls r0, r4, 2
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
movs r0, 0x4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08077B9C
|
|
ldr r1, _08077B94 @ =gBattlerPartyIndexes
|
|
lsls r0, r4, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _08077B98 @ =gEnemyParty
|
|
adds r0, r1
|
|
adds r1, r4, 0
|
|
bl BattleLoadOpponentMonSpriteGfx
|
|
b _08077C24
|
|
.align 2, 0
|
|
_08077B90: .4byte gUnknown_2024018
|
|
_08077B94: .4byte gBattlerPartyIndexes
|
|
_08077B98: .4byte gEnemyParty
|
|
_08077B9C:
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
bl sub_80350BC
|
|
b _08077C24
|
|
_08077BA6:
|
|
ldr r0, _08077BC0 @ =gBattleTypeFlags
|
|
ldr r1, [r0]
|
|
movs r2, 0x80
|
|
ands r1, r2
|
|
cmp r1, 0
|
|
beq _08077BC8
|
|
cmp r4, 0
|
|
bne _08077BC8
|
|
ldr r0, _08077BC4 @ =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, 0x8]
|
|
b _08077BDA
|
|
.align 2, 0
|
|
_08077BC0: .4byte gBattleTypeFlags
|
|
_08077BC4: .4byte gSaveBlock2Ptr
|
|
_08077BC8:
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08077BE2
|
|
cmp r4, 0
|
|
bne _08077BE2
|
|
movs r0, 0x5
|
|
_08077BDA:
|
|
movs r1, 0
|
|
bl sub_8034750
|
|
b _08077C24
|
|
_08077BE2:
|
|
ldr r0, _08077C10 @ =gUnknown_2024018
|
|
ldr r0, [r0]
|
|
ldr r1, [r0]
|
|
lsls r0, r4, 2
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
movs r0, 0x4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08077C1C
|
|
ldr r1, _08077C14 @ =gBattlerPartyIndexes
|
|
lsls r0, r4, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _08077C18 @ =gPlayerParty
|
|
adds r0, r1
|
|
adds r1, r4, 0
|
|
bl sub_8034498
|
|
b _08077C24
|
|
.align 2, 0
|
|
_08077C10: .4byte gUnknown_2024018
|
|
_08077C14: .4byte gBattlerPartyIndexes
|
|
_08077C18: .4byte gPlayerParty
|
|
_08077C1C:
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
bl sub_80350BC
|
|
_08077C24:
|
|
ldr r0, _08077C34 @ =gBattleScripting
|
|
adds r0, 0x22
|
|
movs r1, 0
|
|
strb r1, [r0]
|
|
_08077C2C:
|
|
movs r0, 0x1
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08077C34: .4byte gBattleScripting
|
|
thumb_func_end sub_8077B0C
|
|
|
|
thumb_func_start sub_8077C38
|
|
sub_8077C38: @ 8077C38
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
ldr r0, _08077C6C @ =gBattlersCount
|
|
ldrb r0, [r0]
|
|
cmp r7, r0
|
|
bcc _08077C50
|
|
b _08077FB4
|
|
_08077C50:
|
|
ldr r0, _08077C70 @ =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0xA0
|
|
lsls r1, 8
|
|
ands r0, r1
|
|
movs r1, 0x80
|
|
lsls r1, 8
|
|
cmp r0, r1
|
|
bne _08077C74
|
|
adds r0, r7, 0
|
|
bl sub_8074900
|
|
b _08077C9A
|
|
.align 2, 0
|
|
_08077C6C: .4byte gBattlersCount
|
|
_08077C70: .4byte gBattleTypeFlags
|
|
_08077C74:
|
|
ldr r0, _08077C90 @ =gUnknown_2024018
|
|
ldr r0, [r0]
|
|
ldr r1, [r0]
|
|
lsls r0, r7, 2
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
movs r0, 0x4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08077C94
|
|
adds r0, r7, 0
|
|
bl GetSubstituteSpriteDefault_Y
|
|
b _08077C9A
|
|
.align 2, 0
|
|
_08077C90: .4byte gUnknown_2024018
|
|
_08077C94:
|
|
adds r0, r7, 0
|
|
bl GetBankSpriteDefault_Y
|
|
_08077C9A:
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r8, r0
|
|
adds r0, r7, 0
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08077CAE
|
|
b _08077DAC
|
|
_08077CAE:
|
|
ldr r1, _08077D90 @ =gBattlerPartyIndexes
|
|
lsls r0, r7, 1
|
|
adds r6, r0, r1
|
|
ldrh r0, [r6]
|
|
movs r1, 0x64
|
|
mov r10, r1
|
|
mov r1, r10
|
|
muls r1, r0
|
|
adds r0, r1, 0
|
|
ldr r1, _08077D94 @ =gEnemyParty
|
|
mov r9, r1
|
|
add r0, r9
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
bne _08077CD2
|
|
b _08077FB4
|
|
_08077CD2:
|
|
ldrh r0, [r6]
|
|
mov r1, r10
|
|
muls r1, r0
|
|
adds r0, r1, 0
|
|
add r0, r9
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
adds r4, r0, 0
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
adds r0, r7, 0
|
|
bl GetBattlerPosition
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl sub_803F7D4
|
|
ldr r5, _08077D98 @ =gMultiuseSpriteTemplate
|
|
adds r0, r7, 0
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
adds r0, r7, 0
|
|
bl sub_807685C
|
|
adds r3, r0, 0
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
mov r2, r8
|
|
bl CreateSprite
|
|
ldr r4, _08077D9C @ =gUnknown_2023D44
|
|
adds r4, r7, r4
|
|
strb r0, [r4]
|
|
ldr r5, _08077DA0 @ =gSprites
|
|
ldrb r0, [r4]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r5
|
|
lsls r3, r7, 4
|
|
ldrb r2, [r1, 0x5]
|
|
movs r0, 0xF
|
|
ands r0, r2
|
|
orrs r0, r3
|
|
strb r0, [r1, 0x5]
|
|
ldrb r1, [r4]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r1, r5, 0
|
|
adds r1, 0x1C
|
|
adds r0, r1
|
|
ldr r1, _08077DA4 @ =SpriteCallbackDummy
|
|
str r1, [r0]
|
|
ldrb r1, [r4]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r5
|
|
strh r7, [r0, 0x2E]
|
|
ldrh r0, [r6]
|
|
mov r1, r10
|
|
muls r1, r0
|
|
adds r0, r1, 0
|
|
add r0, r9
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
ldrb r2, [r4]
|
|
lsls r1, r2, 4
|
|
adds r1, r2
|
|
lsls r1, 2
|
|
adds r1, r5
|
|
strh r0, [r1, 0x32]
|
|
ldrb r1, [r4]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r5
|
|
ldr r1, _08077DA8 @ =gBattleMonForms
|
|
adds r1, r7, r1
|
|
ldrb r1, [r1]
|
|
bl StartSpriteAnim
|
|
b _08077F84
|
|
.align 2, 0
|
|
_08077D90: .4byte gBattlerPartyIndexes
|
|
_08077D94: .4byte gEnemyParty
|
|
_08077D98: .4byte gMultiuseSpriteTemplate
|
|
_08077D9C: .4byte gUnknown_2023D44
|
|
_08077DA0: .4byte gSprites
|
|
_08077DA4: .4byte SpriteCallbackDummy
|
|
_08077DA8: .4byte gBattleMonForms
|
|
_08077DAC:
|
|
ldr r0, _08077E00 @ =gBattleTypeFlags
|
|
ldr r1, [r0]
|
|
movs r2, 0x80
|
|
ands r1, r2
|
|
cmp r1, 0
|
|
beq _08077E10
|
|
cmp r7, 0
|
|
bne _08077E10
|
|
ldr r5, _08077E04 @ =gSaveBlock2Ptr
|
|
ldr r0, [r5]
|
|
ldrb r4, [r0, 0x8]
|
|
movs r0, 0
|
|
bl GetBattlerPosition
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl SetMultiuseSpriteTemplateToTrainerBack
|
|
ldr r6, _08077E08 @ =gMultiuseSpriteTemplate
|
|
ldr r1, _08077E0C @ =gUnknown_8239F8C
|
|
ldr r0, [r5]
|
|
ldrb r0, [r0, 0x8]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
movs r4, 0x8
|
|
subs r4, r0
|
|
lsls r4, 18
|
|
movs r0, 0xA0
|
|
lsls r0, 15
|
|
adds r4, r0
|
|
asrs r4, 16
|
|
movs r0, 0
|
|
bl sub_807685C
|
|
adds r3, r0, 0
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
adds r0, r6, 0
|
|
b _08077E54
|
|
.align 2, 0
|
|
_08077E00: .4byte gBattleTypeFlags
|
|
_08077E04: .4byte gSaveBlock2Ptr
|
|
_08077E08: .4byte gMultiuseSpriteTemplate
|
|
_08077E0C: .4byte gUnknown_8239F8C
|
|
_08077E10:
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08077EA8
|
|
cmp r7, 0
|
|
bne _08077EA8
|
|
movs r0, 0
|
|
bl GetBattlerPosition
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
movs r0, 0x5
|
|
bl SetMultiuseSpriteTemplateToTrainerBack
|
|
ldr r5, _08077E94 @ =gMultiuseSpriteTemplate
|
|
ldr r0, _08077E98 @ =gUnknown_8239F8C
|
|
ldrb r0, [r0, 0x14]
|
|
movs r4, 0x8
|
|
subs r4, r0
|
|
lsls r4, 18
|
|
movs r1, 0xA0
|
|
lsls r1, 15
|
|
adds r4, r1
|
|
asrs r4, 16
|
|
movs r0, 0
|
|
bl sub_807685C
|
|
adds r3, r0, 0
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
adds r0, r5, 0
|
|
_08077E54:
|
|
movs r1, 0x50
|
|
adds r2, r4, 0
|
|
bl CreateSprite
|
|
ldr r3, _08077E9C @ =gUnknown_2023D44
|
|
strb r0, [r3]
|
|
ldr r4, _08077EA0 @ =gSprites
|
|
ldrb r0, [r3]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r4
|
|
ldrb r2, [r1, 0x5]
|
|
movs r0, 0xF
|
|
ands r0, r2
|
|
strb r0, [r1, 0x5]
|
|
ldrb r1, [r3]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r1, r4, 0
|
|
adds r1, 0x1C
|
|
adds r0, r1
|
|
ldr r1, _08077EA4 @ =SpriteCallbackDummy
|
|
str r1, [r0]
|
|
ldrb r1, [r3]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
strh r7, [r0, 0x2E]
|
|
b _08077F84
|
|
.align 2, 0
|
|
_08077E94: .4byte gMultiuseSpriteTemplate
|
|
_08077E98: .4byte gUnknown_8239F8C
|
|
_08077E9C: .4byte gUnknown_2023D44
|
|
_08077EA0: .4byte gSprites
|
|
_08077EA4: .4byte SpriteCallbackDummy
|
|
_08077EA8:
|
|
ldr r1, _08077FC4 @ =gBattlerPartyIndexes
|
|
lsls r0, r7, 1
|
|
adds r6, r0, r1
|
|
ldrh r0, [r6]
|
|
movs r1, 0x64
|
|
mov r10, r1
|
|
mov r1, r10
|
|
muls r1, r0
|
|
adds r0, r1, 0
|
|
ldr r1, _08077FC8 @ =gPlayerParty
|
|
mov r9, r1
|
|
add r0, r9
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _08077FB4
|
|
ldrh r0, [r6]
|
|
mov r1, r10
|
|
muls r1, r0
|
|
adds r0, r1, 0
|
|
add r0, r9
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
adds r4, r0, 0
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
adds r0, r7, 0
|
|
bl GetBattlerPosition
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl sub_803F7D4
|
|
ldr r5, _08077FCC @ =gMultiuseSpriteTemplate
|
|
adds r0, r7, 0
|
|
movs r1, 0x2
|
|
bl sub_8074480
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
adds r0, r7, 0
|
|
bl sub_807685C
|
|
adds r3, r0, 0
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
mov r2, r8
|
|
bl CreateSprite
|
|
ldr r4, _08077FD0 @ =gUnknown_2023D44
|
|
adds r4, r7, r4
|
|
strb r0, [r4]
|
|
ldr r5, _08077FD4 @ =gSprites
|
|
ldrb r0, [r4]
|
|
lsls r1, r0, 4
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
adds r1, r5
|
|
lsls r3, r7, 4
|
|
ldrb r2, [r1, 0x5]
|
|
movs r0, 0xF
|
|
ands r0, r2
|
|
orrs r0, r3
|
|
strb r0, [r1, 0x5]
|
|
ldrb r1, [r4]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r1, r5, 0
|
|
adds r1, 0x1C
|
|
adds r0, r1
|
|
ldr r1, _08077FD8 @ =SpriteCallbackDummy
|
|
str r1, [r0]
|
|
ldrb r1, [r4]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r5
|
|
strh r7, [r0, 0x2E]
|
|
ldrh r0, [r6]
|
|
mov r1, r10
|
|
muls r1, r0
|
|
adds r0, r1, 0
|
|
add r0, r9
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
ldrb r2, [r4]
|
|
lsls r1, r2, 4
|
|
adds r1, r2
|
|
lsls r1, 2
|
|
adds r1, r5
|
|
strh r0, [r1, 0x32]
|
|
ldrb r1, [r4]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r5
|
|
ldr r1, _08077FDC @ =gBattleMonForms
|
|
adds r1, r7, r1
|
|
ldrb r1, [r1]
|
|
bl StartSpriteAnim
|
|
_08077F84:
|
|
ldr r1, _08077FD4 @ =gSprites
|
|
ldr r0, _08077FD0 @ =gUnknown_2023D44
|
|
adds r0, r7, r0
|
|
ldrb r0, [r0]
|
|
lsls r2, r0, 4
|
|
adds r2, r0
|
|
lsls r2, 2
|
|
adds r2, r1
|
|
ldr r0, _08077FE0 @ =gUnknown_2024018
|
|
ldr r0, [r0]
|
|
ldr r1, [r0]
|
|
lsls r0, r7, 2
|
|
adds r0, r1
|
|
ldr r1, [r0]
|
|
lsls r1, 31
|
|
adds r2, 0x3E
|
|
lsrs r1, 31
|
|
lsls r1, 2
|
|
ldrb r3, [r2]
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r0, r3
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
_08077FB4:
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08077FC4: .4byte gBattlerPartyIndexes
|
|
_08077FC8: .4byte gPlayerParty
|
|
_08077FCC: .4byte gMultiuseSpriteTemplate
|
|
_08077FD0: .4byte gUnknown_2023D44
|
|
_08077FD4: .4byte gSprites
|
|
_08077FD8: .4byte SpriteCallbackDummy
|
|
_08077FDC: .4byte gBattleMonForms
|
|
_08077FE0: .4byte gUnknown_2024018
|
|
thumb_func_end sub_8077C38
|
|
|
|
thumb_func_start CreateHealthboxSprite
|
|
CreateHealthboxSprite: @ 8077FE4
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r0, _0807800C @ =gBattlersCount
|
|
ldrb r0, [r0]
|
|
cmp r5, r0
|
|
bcc _08077FF4
|
|
b _08078166
|
|
_08077FF4:
|
|
ldr r0, _08078010 @ =gBattleTypeFlags
|
|
ldr r1, [r0]
|
|
movs r2, 0x80
|
|
ands r1, r2
|
|
cmp r1, 0
|
|
beq _08078014
|
|
cmp r5, 0
|
|
bne _08078014
|
|
bl CreateSafariPlayerHealthboxSprites
|
|
b _0807802C
|
|
.align 2, 0
|
|
_0807800C: .4byte gBattlersCount
|
|
_08078010: .4byte gBattleTypeFlags
|
|
_08078014:
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08078026
|
|
cmp r5, 0
|
|
bne _08078026
|
|
b _08078166
|
|
_08078026:
|
|
adds r0, r5, 0
|
|
bl CreateBankHealthboxSprites
|
|
_0807802C:
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldr r0, _08078068 @ =gUnknown_3004FF0
|
|
adds r4, r5, r0
|
|
strb r6, [r4]
|
|
adds r0, r5, 0
|
|
bl SetBankHealthboxSpritePos
|
|
adds r0, r6, 0
|
|
bl SetHealthboxSpriteVisible
|
|
adds r0, r5, 0
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08078074
|
|
ldrb r0, [r4]
|
|
ldr r1, _0807806C @ =gBattlerPartyIndexes
|
|
lsls r4, r5, 1
|
|
adds r1, r4, r1
|
|
ldrh r2, [r1]
|
|
movs r1, 0x64
|
|
muls r1, r2
|
|
ldr r2, _08078070 @ =gEnemyParty
|
|
adds r1, r2
|
|
movs r2, 0
|
|
bl UpdateHealthboxAttribute
|
|
b _080780C0
|
|
.align 2, 0
|
|
_08078068: .4byte gUnknown_3004FF0
|
|
_0807806C: .4byte gBattlerPartyIndexes
|
|
_08078070: .4byte gEnemyParty
|
|
_08078074:
|
|
ldr r0, _0807809C @ =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080780A8
|
|
ldrb r0, [r4]
|
|
ldr r1, _080780A0 @ =gBattlerPartyIndexes
|
|
lsls r4, r5, 1
|
|
adds r1, r4, r1
|
|
ldrh r2, [r1]
|
|
movs r1, 0x64
|
|
muls r1, r2
|
|
ldr r2, _080780A4 @ =gPlayerParty
|
|
adds r1, r2
|
|
movs r2, 0xA
|
|
bl UpdateHealthboxAttribute
|
|
b _080780C0
|
|
.align 2, 0
|
|
_0807809C: .4byte gBattleTypeFlags
|
|
_080780A0: .4byte gBattlerPartyIndexes
|
|
_080780A4: .4byte gPlayerParty
|
|
_080780A8:
|
|
ldrb r0, [r4]
|
|
ldr r1, _080780EC @ =gBattlerPartyIndexes
|
|
lsls r4, r5, 1
|
|
adds r1, r4, r1
|
|
ldrh r2, [r1]
|
|
movs r1, 0x64
|
|
muls r1, r2
|
|
ldr r2, _080780F0 @ =gPlayerParty
|
|
adds r1, r2
|
|
movs r2, 0
|
|
bl UpdateHealthboxAttribute
|
|
_080780C0:
|
|
adds r0, r5, 0
|
|
bl GetBattlerPosition
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x3
|
|
beq _080780DC
|
|
adds r0, r5, 0
|
|
bl GetBattlerPosition
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x2
|
|
bne _080780F8
|
|
_080780DC:
|
|
ldr r0, _080780F4 @ =gUnknown_3004FF0
|
|
adds r0, r5, r0
|
|
ldrb r0, [r0]
|
|
movs r1, 0x1
|
|
bl nullsub_21
|
|
b _08078104
|
|
.align 2, 0
|
|
_080780EC: .4byte gBattlerPartyIndexes
|
|
_080780F0: .4byte gPlayerParty
|
|
_080780F4: .4byte gUnknown_3004FF0
|
|
_080780F8:
|
|
ldr r0, _08078130 @ =gUnknown_3004FF0
|
|
adds r0, r5, r0
|
|
ldrb r0, [r0]
|
|
movs r1, 0
|
|
bl nullsub_21
|
|
_08078104:
|
|
adds r0, r5, 0
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0807813C
|
|
ldr r0, _08078134 @ =gBattlerPartyIndexes
|
|
adds r0, r4, r0
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _08078138 @ =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
bne _08078166
|
|
adds r0, r6, 0
|
|
bl SetHealthboxSpriteInvisible
|
|
b _08078166
|
|
.align 2, 0
|
|
_08078130: .4byte gUnknown_3004FF0
|
|
_08078134: .4byte gBattlerPartyIndexes
|
|
_08078138: .4byte gEnemyParty
|
|
_0807813C:
|
|
ldr r0, _0807816C @ =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08078166
|
|
ldr r0, _08078170 @ =gBattlerPartyIndexes
|
|
adds r0, r4, r0
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _08078174 @ =gPlayerParty
|
|
adds r0, r1
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
bne _08078166
|
|
adds r0, r6, 0
|
|
bl SetHealthboxSpriteInvisible
|
|
_08078166:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0807816C: .4byte gBattleTypeFlags
|
|
_08078170: .4byte gBattlerPartyIndexes
|
|
_08078174: .4byte gPlayerParty
|
|
thumb_func_end CreateHealthboxSprite
|
|
|
|
.align 2, 0 @ Don't pad with nop.
|