mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2025-02-04 02:10:01 +01:00
more of battle interface done again
This commit is contained in:
parent
6e56211f40
commit
25a9c851cf
@ -6,548 +6,8 @@
|
|||||||
.text
|
.text
|
||||||
|
|
||||||
|
|
||||||
|
thumb_func_start UpdateLeftNoOfBallsTextOnHealthbox
|
||||||
|
UpdateLeftNoOfBallsTextOnHealthbox: @ 80747D8
|
||||||
thumb_func_start sub_8074310
|
|
||||||
sub_8074310: @ 8074310
|
|
||||||
push {r4-r7,lr}
|
|
||||||
sub sp, 0x4
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r2, r0, 24
|
|
||||||
lsls r1, 24
|
|
||||||
lsrs r7, r1, 24
|
|
||||||
ldr r0, =gBattleTypeFlags
|
|
||||||
ldr r1, [r0]
|
|
||||||
movs r0, 0x80
|
|
||||||
lsls r0, 2
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, 0
|
|
||||||
bne _080743E6
|
|
||||||
movs r0, 0x8
|
|
||||||
ands r1, r0
|
|
||||||
cmp r1, 0
|
|
||||||
bne _080743E6
|
|
||||||
ldr r6, =gSprites
|
|
||||||
lsls r0, r2, 4
|
|
||||||
adds r0, r2
|
|
||||||
lsls r0, 2
|
|
||||||
adds r5, r0, r6
|
|
||||||
ldrh r0, [r5, 0x3A]
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r4, r0, 24
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl GetBankSide
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
beq _080743E6
|
|
||||||
ldr r1, =gBattlePartyID
|
|
||||||
lsls r0, r4, 1
|
|
||||||
adds r0, r1
|
|
||||||
ldrh r1, [r0]
|
|
||||||
movs r0, 0x64
|
|
||||||
muls r0, r1
|
|
||||||
ldr r1, =gEnemyParty
|
|
||||||
adds r0, r1
|
|
||||||
movs r1, 0xB
|
|
||||||
bl GetMonData
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r0, 16
|
|
||||||
bl SpeciesToNationalPokedexNum
|
|
||||||
lsls r0, 16
|
|
||||||
lsrs r0, 16
|
|
||||||
movs r1, 0x1
|
|
||||||
bl GetSetPokedexFlag
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
beq _080743E6
|
|
||||||
ldrh r0, [r5, 0x38]
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r4, r0, 24
|
|
||||||
cmp r7, 0
|
|
||||||
beq _080743C4
|
|
||||||
movs r0, 0x46
|
|
||||||
bl GetHealthboxElementGfxPtr
|
|
||||||
lsls r1, r4, 4
|
|
||||||
adds r1, r4
|
|
||||||
lsls r1, 2
|
|
||||||
adds r1, r6
|
|
||||||
ldrh r1, [r1, 0x4]
|
|
||||||
lsls r1, 22
|
|
||||||
lsrs r1, 17
|
|
||||||
movs r2, 0x80
|
|
||||||
lsls r2, 1
|
|
||||||
adds r1, r2
|
|
||||||
ldr r2, =0x06010000
|
|
||||||
adds r1, r2
|
|
||||||
ldr r2, =0x04000008
|
|
||||||
bl CpuSet
|
|
||||||
b _080743E6
|
|
||||||
.pool
|
|
||||||
_080743C4:
|
|
||||||
str r7, [sp]
|
|
||||||
lsls r0, r4, 4
|
|
||||||
adds r0, r4
|
|
||||||
lsls r0, 2
|
|
||||||
adds r0, r6
|
|
||||||
ldrh r1, [r0, 0x4]
|
|
||||||
lsls r1, 22
|
|
||||||
lsrs r1, 17
|
|
||||||
movs r0, 0x80
|
|
||||||
lsls r0, 1
|
|
||||||
adds r1, r0
|
|
||||||
ldr r0, =0x06010000
|
|
||||||
adds r1, r0
|
|
||||||
ldr r2, =0x05000008
|
|
||||||
mov r0, sp
|
|
||||||
bl CpuSet
|
|
||||||
_080743E6:
|
|
||||||
add sp, 0x4
|
|
||||||
pop {r4-r7}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_8074310
|
|
||||||
|
|
||||||
thumb_func_start UpdateStatusIconInHealthbox
|
|
||||||
UpdateStatusIconInHealthbox: @ 80743F8
|
|
||||||
push {r4-r7,lr}
|
|
||||||
mov r7, r10
|
|
||||||
mov r6, r9
|
|
||||||
mov r5, r8
|
|
||||||
push {r5-r7}
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
mov r9, r0
|
|
||||||
ldr r0, =gSprites
|
|
||||||
mov r2, r9
|
|
||||||
lsls r1, r2, 4
|
|
||||||
add r1, r9
|
|
||||||
lsls r1, 2
|
|
||||||
adds r1, r0
|
|
||||||
ldrh r0, [r1, 0x3A]
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r7, r0, 24
|
|
||||||
ldrh r0, [r1, 0x38]
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
mov r10, r0
|
|
||||||
adds r0, r7, 0
|
|
||||||
bl GetBankSide
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _08074468
|
|
||||||
ldr r1, =gBattlePartyID
|
|
||||||
lsls r0, r7, 1
|
|
||||||
adds r0, r1
|
|
||||||
ldrh r1, [r0]
|
|
||||||
movs r0, 0x64
|
|
||||||
muls r0, r1
|
|
||||||
ldr r1, =gPlayerParty
|
|
||||||
adds r0, r1
|
|
||||||
movs r1, 0x37
|
|
||||||
bl GetMonData
|
|
||||||
adds r4, r0, 0
|
|
||||||
bl IsDoubleBattle
|
|
||||||
lsls r0, 24
|
|
||||||
movs r3, 0x12
|
|
||||||
mov r8, r3
|
|
||||||
cmp r0, 0
|
|
||||||
bne _08074484
|
|
||||||
movs r0, 0x1A
|
|
||||||
mov r8, r0
|
|
||||||
b _08074484
|
|
||||||
.pool
|
|
||||||
_08074468:
|
|
||||||
ldr r1, =gBattlePartyID
|
|
||||||
lsls r0, r7, 1
|
|
||||||
adds r0, r1
|
|
||||||
ldrh r1, [r0]
|
|
||||||
movs r0, 0x64
|
|
||||||
muls r0, r1
|
|
||||||
ldr r1, =gEnemyParty
|
|
||||||
adds r0, r1
|
|
||||||
movs r1, 0x37
|
|
||||||
bl GetMonData
|
|
||||||
adds r4, r0, 0
|
|
||||||
movs r1, 0x11
|
|
||||||
mov r8, r1
|
|
||||||
_08074484:
|
|
||||||
movs r0, 0x7
|
|
||||||
ands r0, r4
|
|
||||||
cmp r0, 0
|
|
||||||
beq _080744AC
|
|
||||||
movs r0, 0x1B
|
|
||||||
adds r1, r7, 0
|
|
||||||
bl sub_80746A8
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
bl GetHealthboxElementGfxPtr
|
|
||||||
adds r6, r0, 0
|
|
||||||
movs r0, 0x2
|
|
||||||
b _080745B8
|
|
||||||
.pool
|
|
||||||
_080744AC:
|
|
||||||
movs r0, 0x88
|
|
||||||
ands r0, r4
|
|
||||||
cmp r0, 0
|
|
||||||
beq _080744CA
|
|
||||||
movs r0, 0x15
|
|
||||||
adds r1, r7, 0
|
|
||||||
bl sub_80746A8
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
bl GetHealthboxElementGfxPtr
|
|
||||||
adds r6, r0, 0
|
|
||||||
movs r0, 0
|
|
||||||
b _080745B8
|
|
||||||
_080744CA:
|
|
||||||
movs r0, 0x10
|
|
||||||
ands r0, r4
|
|
||||||
cmp r0, 0
|
|
||||||
beq _080744E8
|
|
||||||
movs r0, 0x21
|
|
||||||
adds r1, r7, 0
|
|
||||||
bl sub_80746A8
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
bl GetHealthboxElementGfxPtr
|
|
||||||
adds r6, r0, 0
|
|
||||||
movs r0, 0x4
|
|
||||||
b _080745B8
|
|
||||||
_080744E8:
|
|
||||||
movs r0, 0x20
|
|
||||||
ands r0, r4
|
|
||||||
cmp r0, 0
|
|
||||||
beq _08074506
|
|
||||||
movs r0, 0x1E
|
|
||||||
adds r1, r7, 0
|
|
||||||
bl sub_80746A8
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
bl GetHealthboxElementGfxPtr
|
|
||||||
adds r6, r0, 0
|
|
||||||
movs r0, 0x3
|
|
||||||
b _080745B8
|
|
||||||
_08074506:
|
|
||||||
movs r0, 0x40
|
|
||||||
ands r0, r4
|
|
||||||
cmp r0, 0
|
|
||||||
beq _08074524
|
|
||||||
movs r0, 0x18
|
|
||||||
adds r1, r7, 0
|
|
||||||
bl sub_80746A8
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
bl GetHealthboxElementGfxPtr
|
|
||||||
adds r6, r0, 0
|
|
||||||
movs r0, 0x1
|
|
||||||
b _080745B8
|
|
||||||
_08074524:
|
|
||||||
movs r0, 0x27
|
|
||||||
bl GetHealthboxElementGfxPtr
|
|
||||||
adds r6, r0, 0
|
|
||||||
movs r4, 0
|
|
||||||
mov r2, r9
|
|
||||||
lsls r0, r2, 4
|
|
||||||
mov r3, r8
|
|
||||||
lsls r3, 16
|
|
||||||
mov r8, r3
|
|
||||||
lsls r7, 2
|
|
||||||
ldr r1, =gSprites
|
|
||||||
add r0, r9
|
|
||||||
lsls r0, 2
|
|
||||||
adds r5, r0, r1
|
|
||||||
_08074542:
|
|
||||||
ldrh r1, [r5, 0x4]
|
|
||||||
lsls r1, 22
|
|
||||||
lsrs r1, 22
|
|
||||||
mov r2, r8
|
|
||||||
asrs r0, r2, 16
|
|
||||||
adds r1, r0
|
|
||||||
adds r1, r4
|
|
||||||
lsls r1, 5
|
|
||||||
ldr r3, =0x06010000
|
|
||||||
adds r1, r3
|
|
||||||
adds r0, r6, 0
|
|
||||||
ldr r2, =0x04000008
|
|
||||||
bl CpuSet
|
|
||||||
adds r4, 0x1
|
|
||||||
cmp r4, 0x2
|
|
||||||
ble _08074542
|
|
||||||
ldr r0, =gBattleSpritesDataPtr
|
|
||||||
ldr r0, [r0]
|
|
||||||
ldr r0, [r0]
|
|
||||||
adds r0, r7, r0
|
|
||||||
ldrb r1, [r0]
|
|
||||||
movs r0, 0x10
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, 0
|
|
||||||
bne _08074598
|
|
||||||
movs r0, 0x1
|
|
||||||
bl GetHealthboxElementGfxPtr
|
|
||||||
ldr r2, =gSprites
|
|
||||||
mov r3, r10
|
|
||||||
lsls r1, r3, 4
|
|
||||||
add r1, r10
|
|
||||||
lsls r1, 2
|
|
||||||
adds r1, r2
|
|
||||||
ldrh r1, [r1, 0x4]
|
|
||||||
lsls r1, 22
|
|
||||||
lsrs r1, 17
|
|
||||||
ldr r2, =0x06010000
|
|
||||||
adds r1, r2
|
|
||||||
ldr r2, =0x04000010
|
|
||||||
bl CpuSet
|
|
||||||
_08074598:
|
|
||||||
mov r0, r9
|
|
||||||
movs r1, 0x1
|
|
||||||
bl sub_8074310
|
|
||||||
b _0807467A
|
|
||||||
.pool
|
|
||||||
_080745B8:
|
|
||||||
mov r1, r9
|
|
||||||
lsls r5, r1, 4
|
|
||||||
add r5, r9
|
|
||||||
lsls r5, 2
|
|
||||||
ldr r2, =gSprites
|
|
||||||
adds r5, r2
|
|
||||||
ldrb r4, [r5, 0x5]
|
|
||||||
lsrs r4, 4
|
|
||||||
lsls r4, 4
|
|
||||||
adds r4, 0xC
|
|
||||||
adds r4, r7
|
|
||||||
ldr r1, =gUnknown_0832C3EC
|
|
||||||
lsls r0, 1
|
|
||||||
adds r0, r1
|
|
||||||
ldrh r0, [r0]
|
|
||||||
movs r3, 0x80
|
|
||||||
lsls r3, 1
|
|
||||||
adds r1, r4, r3
|
|
||||||
movs r2, 0x2
|
|
||||||
bl FillPalette
|
|
||||||
lsls r4, 1
|
|
||||||
ldr r0, =gPlttBufferUnfaded + 0x200
|
|
||||||
adds r0, r4, r0
|
|
||||||
ldr r1, =0x05000200
|
|
||||||
adds r4, r1
|
|
||||||
adds r1, r4, 0
|
|
||||||
movs r2, 0x1
|
|
||||||
bl CpuSet
|
|
||||||
ldrh r1, [r5, 0x4]
|
|
||||||
lsls r1, 22
|
|
||||||
lsrs r1, 22
|
|
||||||
add r1, r8
|
|
||||||
lsls r1, 5
|
|
||||||
ldr r2, =0x06010000
|
|
||||||
mov r8, r2
|
|
||||||
add r1, r8
|
|
||||||
ldr r2, =0x04000018
|
|
||||||
adds r0, r6, 0
|
|
||||||
bl CpuSet
|
|
||||||
bl IsDoubleBattle
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0x1
|
|
||||||
beq _08074626
|
|
||||||
adds r0, r7, 0
|
|
||||||
bl GetBankSide
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
cmp r0, 0x1
|
|
||||||
bne _08074672
|
|
||||||
_08074626:
|
|
||||||
ldr r0, =gBattleSpritesDataPtr
|
|
||||||
ldr r0, [r0]
|
|
||||||
ldr r1, [r0]
|
|
||||||
lsls r0, r7, 2
|
|
||||||
adds r0, r1
|
|
||||||
ldrb r1, [r0]
|
|
||||||
movs r0, 0x10
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, 0
|
|
||||||
bne _08074672
|
|
||||||
movs r0, 0
|
|
||||||
bl GetHealthboxElementGfxPtr
|
|
||||||
mov r3, r10
|
|
||||||
lsls r4, r3, 4
|
|
||||||
add r4, r10
|
|
||||||
lsls r4, 2
|
|
||||||
ldr r1, =gSprites
|
|
||||||
adds r4, r1
|
|
||||||
ldrh r1, [r4, 0x4]
|
|
||||||
lsls r1, 22
|
|
||||||
lsrs r1, 17
|
|
||||||
add r1, r8
|
|
||||||
ldr r5, =0x04000008
|
|
||||||
adds r2, r5, 0
|
|
||||||
bl CpuSet
|
|
||||||
movs r0, 0x41
|
|
||||||
bl GetHealthboxElementGfxPtr
|
|
||||||
ldrh r1, [r4, 0x4]
|
|
||||||
lsls r1, 22
|
|
||||||
lsrs r1, 17
|
|
||||||
adds r1, 0x20
|
|
||||||
add r1, r8
|
|
||||||
adds r2, r5, 0
|
|
||||||
bl CpuSet
|
|
||||||
_08074672:
|
|
||||||
mov r0, r9
|
|
||||||
movs r1, 0
|
|
||||||
bl sub_8074310
|
|
||||||
_0807467A:
|
|
||||||
pop {r3-r5}
|
|
||||||
mov r8, r3
|
|
||||||
mov r9, r4
|
|
||||||
mov r10, r5
|
|
||||||
pop {r4-r7}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end UpdateStatusIconInHealthbox
|
|
||||||
|
|
||||||
thumb_func_start sub_80746A8
|
|
||||||
sub_80746A8: @ 80746A8
|
|
||||||
push {lr}
|
|
||||||
lsls r0, 24
|
|
||||||
lsls r1, 24
|
|
||||||
lsrs r3, r1, 24
|
|
||||||
lsrs r2, r0, 24
|
|
||||||
adds r0, r2, 0
|
|
||||||
subs r0, 0x15
|
|
||||||
cmp r0, 0xC
|
|
||||||
bhi _08074768
|
|
||||||
lsls r0, 2
|
|
||||||
ldr r1, =_080746C8
|
|
||||||
adds r0, r1
|
|
||||||
ldr r0, [r0]
|
|
||||||
mov pc, r0
|
|
||||||
.pool
|
|
||||||
.align 2, 0
|
|
||||||
_080746C8:
|
|
||||||
.4byte _080746FC
|
|
||||||
.4byte _08074768
|
|
||||||
.4byte _08074768
|
|
||||||
.4byte _08074712
|
|
||||||
.4byte _08074768
|
|
||||||
.4byte _08074768
|
|
||||||
.4byte _08074728
|
|
||||||
.4byte _08074768
|
|
||||||
.4byte _08074768
|
|
||||||
.4byte _0807473E
|
|
||||||
.4byte _08074768
|
|
||||||
.4byte _08074768
|
|
||||||
.4byte _08074754
|
|
||||||
_080746FC:
|
|
||||||
movs r2, 0x15
|
|
||||||
cmp r3, 0
|
|
||||||
beq _08074768
|
|
||||||
movs r2, 0x47
|
|
||||||
cmp r3, 0x1
|
|
||||||
beq _08074768
|
|
||||||
movs r2, 0x65
|
|
||||||
cmp r3, 0x2
|
|
||||||
bne _08074768
|
|
||||||
movs r2, 0x56
|
|
||||||
b _08074768
|
|
||||||
_08074712:
|
|
||||||
movs r2, 0x18
|
|
||||||
cmp r3, 0
|
|
||||||
beq _08074768
|
|
||||||
movs r2, 0x4A
|
|
||||||
cmp r3, 0x1
|
|
||||||
beq _08074768
|
|
||||||
movs r2, 0x68
|
|
||||||
cmp r3, 0x2
|
|
||||||
bne _08074768
|
|
||||||
movs r2, 0x59
|
|
||||||
b _08074768
|
|
||||||
_08074728:
|
|
||||||
movs r2, 0x1B
|
|
||||||
cmp r3, 0
|
|
||||||
beq _08074768
|
|
||||||
movs r2, 0x4D
|
|
||||||
cmp r3, 0x1
|
|
||||||
beq _08074768
|
|
||||||
movs r2, 0x6B
|
|
||||||
cmp r3, 0x2
|
|
||||||
bne _08074768
|
|
||||||
movs r2, 0x5C
|
|
||||||
b _08074768
|
|
||||||
_0807473E:
|
|
||||||
movs r2, 0x1E
|
|
||||||
cmp r3, 0
|
|
||||||
beq _08074768
|
|
||||||
movs r2, 0x50
|
|
||||||
cmp r3, 0x1
|
|
||||||
beq _08074768
|
|
||||||
movs r2, 0x6E
|
|
||||||
cmp r3, 0x2
|
|
||||||
bne _08074768
|
|
||||||
movs r2, 0x5F
|
|
||||||
b _08074768
|
|
||||||
_08074754:
|
|
||||||
movs r2, 0x21
|
|
||||||
cmp r3, 0
|
|
||||||
beq _08074768
|
|
||||||
movs r2, 0x53
|
|
||||||
cmp r3, 0x1
|
|
||||||
beq _08074768
|
|
||||||
movs r2, 0x71
|
|
||||||
cmp r3, 0x2
|
|
||||||
bne _08074768
|
|
||||||
movs r2, 0x62
|
|
||||||
_08074768:
|
|
||||||
adds r0, r2, 0
|
|
||||||
pop {r1}
|
|
||||||
bx r1
|
|
||||||
thumb_func_end sub_80746A8
|
|
||||||
|
|
||||||
thumb_func_start sub_8074770
|
|
||||||
sub_8074770: @ 8074770
|
|
||||||
push {r4,r5,lr}
|
|
||||||
sub sp, 0x8
|
|
||||||
adds r4, r0, 0
|
|
||||||
lsls r4, 24
|
|
||||||
lsrs r4, 24
|
|
||||||
ldr r0, =gText_SafariBalls
|
|
||||||
add r1, sp, 0x4
|
|
||||||
str r1, [sp]
|
|
||||||
movs r1, 0
|
|
||||||
movs r2, 0x3
|
|
||||||
movs r3, 0x2
|
|
||||||
bl AddTextPrinterAndCreateWindowOnHealthbox
|
|
||||||
adds r5, r0, 0
|
|
||||||
ldr r1, =gSprites
|
|
||||||
lsls r0, r4, 4
|
|
||||||
adds r0, r4
|
|
||||||
lsls r0, 2
|
|
||||||
adds r0, r1
|
|
||||||
ldrh r4, [r0, 0x4]
|
|
||||||
lsls r4, 22
|
|
||||||
lsrs r4, 17
|
|
||||||
ldr r1, =0x06010040
|
|
||||||
adds r0, r4, r1
|
|
||||||
adds r1, r5, 0
|
|
||||||
movs r2, 0x6
|
|
||||||
bl sub_8075198
|
|
||||||
ldr r0, =0x06010800
|
|
||||||
adds r4, r0
|
|
||||||
adds r5, 0xC0
|
|
||||||
adds r0, r4, 0
|
|
||||||
adds r1, r5, 0
|
|
||||||
movs r2, 0x2
|
|
||||||
bl sub_8075198
|
|
||||||
ldr r0, [sp, 0x4]
|
|
||||||
bl RemoveWindow_
|
|
||||||
add sp, 0x8
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.pool
|
|
||||||
thumb_func_end sub_8074770
|
|
||||||
|
|
||||||
thumb_func_start sub_80747D8
|
|
||||||
sub_80747D8: @ 80747D8
|
|
||||||
push {r4,r5,lr}
|
push {r4,r5,lr}
|
||||||
sub sp, 0x18
|
sub sp, 0x18
|
||||||
adds r4, r0, 0
|
adds r4, r0, 0
|
||||||
@ -594,13 +54,13 @@ sub_80747D8: @ 80747D8
|
|||||||
movs r2, 0x4
|
movs r2, 0x4
|
||||||
bl sub_80751E4
|
bl sub_80751E4
|
||||||
ldr r0, [sp, 0x14]
|
ldr r0, [sp, 0x14]
|
||||||
bl RemoveWindow_
|
bl RemoveWindowOnHealthbox
|
||||||
add sp, 0x18
|
add sp, 0x18
|
||||||
pop {r4,r5}
|
pop {r4,r5}
|
||||||
pop {r0}
|
pop {r0}
|
||||||
bx r0
|
bx r0
|
||||||
.pool
|
.pool
|
||||||
thumb_func_end sub_80747D8
|
thumb_func_end UpdateLeftNoOfBallsTextOnHealthbox
|
||||||
|
|
||||||
thumb_func_start UpdateHealthboxAttribute
|
thumb_func_start UpdateHealthboxAttribute
|
||||||
UpdateHealthboxAttribute: @ 8074860
|
UpdateHealthboxAttribute: @ 8074860
|
||||||
@ -797,7 +257,7 @@ _080749EC:
|
|||||||
cmp r7, 0xA
|
cmp r7, 0xA
|
||||||
bne _080749F6
|
bne _080749F6
|
||||||
adds r0, r6, 0
|
adds r0, r6, 0
|
||||||
bl sub_8074770
|
bl UpdateSafariBallsTextOnHealthbox
|
||||||
_080749F6:
|
_080749F6:
|
||||||
adds r0, r7, 0
|
adds r0, r7, 0
|
||||||
subs r0, 0xA
|
subs r0, 0xA
|
||||||
@ -806,7 +266,7 @@ _080749F6:
|
|||||||
cmp r0, 0x1
|
cmp r0, 0x1
|
||||||
bhi _08074A8E
|
bhi _08074A8E
|
||||||
adds r0, r6, 0
|
adds r0, r6, 0
|
||||||
bl sub_80747D8
|
bl UpdateLeftNoOfBallsTextOnHealthbox
|
||||||
b _08074A8E
|
b _08074A8E
|
||||||
.pool
|
.pool
|
||||||
_08074A18:
|
_08074A18:
|
||||||
@ -1740,15 +1200,15 @@ AddTextPrinterAndCreateWindowOnHealthbox: @ 8075094
|
|||||||
.pool
|
.pool
|
||||||
thumb_func_end AddTextPrinterAndCreateWindowOnHealthbox
|
thumb_func_end AddTextPrinterAndCreateWindowOnHealthbox
|
||||||
|
|
||||||
thumb_func_start RemoveWindow_
|
thumb_func_start RemoveWindowOnHealthbox
|
||||||
RemoveWindow_: @ 807512C
|
RemoveWindowOnHealthbox: @ 807512C
|
||||||
push {lr}
|
push {lr}
|
||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
lsrs r0, 24
|
lsrs r0, 24
|
||||||
bl RemoveWindow
|
bl RemoveWindow
|
||||||
pop {r0}
|
pop {r0}
|
||||||
bx r0
|
bx r0
|
||||||
thumb_func_end RemoveWindow_
|
thumb_func_end RemoveWindowOnHealthbox
|
||||||
|
|
||||||
thumb_func_start sub_807513C
|
thumb_func_start sub_807513C
|
||||||
sub_807513C: @ 807513C
|
sub_807513C: @ 807513C
|
||||||
|
@ -130,7 +130,7 @@ gUnknown_0832C3D8:: @ 832C3D8
|
|||||||
.byte 0x00, 0x00, 0x00, 0x00
|
.byte 0x00, 0x00, 0x00, 0x00
|
||||||
|
|
||||||
.align 2
|
.align 2
|
||||||
gUnknown_0832C3EC:: @ 832C3EC
|
gBattleInterfaceStatusIcons_DynPals:: @ 832C3EC
|
||||||
.byte 0x98, 0x61, 0xf7, 0x0e, 0x94, 0x46, 0xd1, 0x72
|
.byte 0x98, 0x61, 0xf7, 0x0e, 0x94, 0x46, 0xd1, 0x72
|
||||||
.byte 0xdc, 0x29, 0x00, 0x00
|
.byte 0xdc, 0x29, 0x00, 0x00
|
||||||
|
|
||||||
|
@ -15,6 +15,10 @@
|
|||||||
#include "gpu_regs.h"
|
#include "gpu_regs.h"
|
||||||
#include "battle_message.h"
|
#include "battle_message.h"
|
||||||
#include "species.h"
|
#include "species.h"
|
||||||
|
#include "pokedex.h"
|
||||||
|
#include "palette.h"
|
||||||
|
#include "international_string_util.h"
|
||||||
|
#include "safari_zone.h"
|
||||||
|
|
||||||
extern bool8 IsDoubleBattle(void);
|
extern bool8 IsDoubleBattle(void);
|
||||||
extern u8 gBanksByIdentity[BATTLE_BANKS_COUNT];
|
extern u8 gBanksByIdentity[BATTLE_BANKS_COUNT];
|
||||||
@ -29,9 +33,9 @@ extern const u8 gText_Slash[];
|
|||||||
void sub_8072924(struct Sprite *sprite);
|
void sub_8072924(struct Sprite *sprite);
|
||||||
void sub_80728B4(struct Sprite *sprite);
|
void sub_80728B4(struct Sprite *sprite);
|
||||||
const u32 *GetHealthboxElementGfxPtr(u8 elementId);
|
const u32 *GetHealthboxElementGfxPtr(u8 elementId);
|
||||||
u32 AddTextPrinterAndCreateWindowOnHealthbox(u8 *str, u32 x, u32 y, u32 arg3, u32 *windowId);
|
u32 AddTextPrinterAndCreateWindowOnHealthbox(const u8 *str, u32 x, u32 y, u32 arg3, u32 *windowId);
|
||||||
void sub_8075198(void *objVram, u32 windowTileData, u32 arg2);
|
void sub_8075198(void *objVram, u32 windowTileData, u32 arg2);
|
||||||
void RemoveWindow_(u32 windowId);
|
void RemoveWindowOnHealthbox(u32 windowId);
|
||||||
void sub_8075170(void *dest, u32 arg1, u32 arg2);
|
void sub_8075170(void *dest, u32 arg1, u32 arg2);
|
||||||
void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent);
|
void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent);
|
||||||
void sub_807513C(void *dest, u32 arg1, u32 arg2);
|
void sub_807513C(void *dest, u32 arg1, u32 arg2);
|
||||||
@ -42,6 +46,7 @@ void sub_8073F98(u8 taskId);
|
|||||||
void sub_8073E64(u8 taskId);
|
void sub_8073E64(u8 taskId);
|
||||||
void sub_8074158(struct Sprite *sprite);
|
void sub_8074158(struct Sprite *sprite);
|
||||||
void sub_8074090(struct Sprite *sprite);
|
void sub_8074090(struct Sprite *sprite);
|
||||||
|
u8 GetStatusIconForBankId(u8 statusElementId, u8 bank);
|
||||||
|
|
||||||
// const rom data
|
// const rom data
|
||||||
const struct OamData gUnknown_0832C138 =
|
const struct OamData gUnknown_0832C138 =
|
||||||
@ -186,6 +191,7 @@ extern const struct SpriteTemplate gUnknown_0832C364[2];
|
|||||||
extern const struct SpriteTemplate gUnknown_0832C394[2];
|
extern const struct SpriteTemplate gUnknown_0832C394[2];
|
||||||
extern const struct SubspriteTable gUnknown_0832C2C4;
|
extern const struct SubspriteTable gUnknown_0832C2C4;
|
||||||
extern const struct SubspriteTable gUnknown_0832C2CC;
|
extern const struct SubspriteTable gUnknown_0832C2CC;
|
||||||
|
extern const u16 gBattleInterfaceStatusIcons_DynPals[];
|
||||||
|
|
||||||
u8 sub_8072304(void)
|
u8 sub_8072304(void)
|
||||||
{
|
{
|
||||||
@ -773,7 +779,7 @@ void UpdateLvlInHealthbox(u8 healthboxSpriteId, u8 lvl)
|
|||||||
objVram += spriteTileNum + 0x400;
|
objVram += spriteTileNum + 0x400;
|
||||||
}
|
}
|
||||||
sub_8075198(objVram, windowTileData, 3);
|
sub_8075198(objVram, windowTileData, 3);
|
||||||
RemoveWindow_(windowId);
|
RemoveWindowOnHealthbox(windowId);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent)
|
void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent)
|
||||||
@ -792,7 +798,7 @@ void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent)
|
|||||||
objVram = (void*)(OBJ_VRAM0);
|
objVram = (void*)(OBJ_VRAM0);
|
||||||
objVram += spriteTileNum + 0xB40;
|
objVram += spriteTileNum + 0xB40;
|
||||||
sub_8075170(objVram, windowTileData, 2);
|
sub_8075170(objVram, windowTileData, 2);
|
||||||
RemoveWindow_(windowId);
|
RemoveWindowOnHealthbox(windowId);
|
||||||
}
|
}
|
||||||
else // singles, current
|
else // singles, current
|
||||||
{
|
{
|
||||||
@ -806,7 +812,7 @@ void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent)
|
|||||||
objVram = (void*)(OBJ_VRAM0);
|
objVram = (void*)(OBJ_VRAM0);
|
||||||
objVram += spriteTileNum + 0xB00;
|
objVram += spriteTileNum + 0xB00;
|
||||||
sub_8075170(objVram, windowTileData + 0x20, 2);
|
sub_8075170(objVram, windowTileData + 0x20, 2);
|
||||||
RemoveWindow_(windowId);
|
RemoveWindowOnHealthbox(windowId);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -871,7 +877,7 @@ void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 maxOrC
|
|||||||
ConvertIntToDecimalStringN(text, value, STR_CONV_MODE_RIGHT_ALIGN, 3);
|
ConvertIntToDecimalStringN(text, value, STR_CONV_MODE_RIGHT_ALIGN, 3);
|
||||||
windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, 0, 5, 0, &windowId);
|
windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, 0, 5, 0, &windowId);
|
||||||
sub_8075170((void*)(OBJ_VRAM0) + spriteTileNum + 0xC0, windowTileData, 2);
|
sub_8075170((void*)(OBJ_VRAM0) + spriteTileNum + 0xC0, windowTileData, 2);
|
||||||
RemoveWindow_(windowId);
|
RemoveWindowOnHealthbox(windowId);
|
||||||
CpuCopy32(GetHealthboxElementGfxPtr(0x74),
|
CpuCopy32(GetHealthboxElementGfxPtr(0x74),
|
||||||
(void*)(OBJ_VRAM0 + 0x680) + (gSprites[healthboxSpriteId].oam.tileNum * 32),
|
(void*)(OBJ_VRAM0 + 0x680) + (gSprites[healthboxSpriteId].oam.tileNum * 32),
|
||||||
0x20);
|
0x20);
|
||||||
@ -884,7 +890,7 @@ void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 maxOrC
|
|||||||
windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, 4, 5, 0, &windowId);
|
windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, 4, 5, 0, &windowId);
|
||||||
sub_807513C(objVram, 0, 3);
|
sub_807513C(objVram, 0, 3);
|
||||||
sub_8075170((void*)(OBJ_VRAM0 + 0x60) + spriteTileNum, windowTileData, 3);
|
sub_8075170((void*)(OBJ_VRAM0 + 0x60) + spriteTileNum, windowTileData, 3);
|
||||||
RemoveWindow_(windowId);
|
RemoveWindowOnHealthbox(windowId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1580,5 +1586,194 @@ void UpdateNickInHealthbox(u8 healthboxSpriteId, struct Pokemon *mon)
|
|||||||
sub_8075198((void*)(0x6010020 + spriteTileNum), windowTileData, 7);
|
sub_8075198((void*)(0x6010020 + spriteTileNum), windowTileData, 7);
|
||||||
}
|
}
|
||||||
|
|
||||||
RemoveWindow_(windowId);
|
RemoveWindowOnHealthbox(windowId);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TryAddPokeballIconToHealthbox(u8 healthboxSpriteId, bool8 noStatus)
|
||||||
|
{
|
||||||
|
u8 bank, healthboxSpriteId_2;
|
||||||
|
|
||||||
|
if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL)
|
||||||
|
return;
|
||||||
|
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
|
||||||
|
return;
|
||||||
|
|
||||||
|
bank = gSprites[healthboxSpriteId].data6;
|
||||||
|
if (GetBankSide(bank) == SIDE_PLAYER)
|
||||||
|
return;
|
||||||
|
if (!GetSetPokedexFlag(SpeciesToNationalPokedexNum(GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES)), FLAG_GET_CAUGHT))
|
||||||
|
return;
|
||||||
|
|
||||||
|
healthboxSpriteId_2 = gSprites[healthboxSpriteId].data5;
|
||||||
|
|
||||||
|
if (noStatus)
|
||||||
|
CpuCopy32(GetHealthboxElementGfxPtr(0x46), (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId_2].oam.tileNum + 8) * 32), 32);
|
||||||
|
else
|
||||||
|
CpuFill32(0, (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId_2].oam.tileNum + 8) * 32), 32);
|
||||||
|
}
|
||||||
|
|
||||||
|
void UpdateStatusIconInHealthbox(u8 healthboxSpriteId)
|
||||||
|
{
|
||||||
|
s32 i;
|
||||||
|
u8 bank, healthboxSpriteId_2;
|
||||||
|
u32 status, pltAdder;
|
||||||
|
const u32 *statusGfxPtr;
|
||||||
|
s16 tileNumAdder;
|
||||||
|
u8 statusPalId;
|
||||||
|
|
||||||
|
bank = gSprites[healthboxSpriteId].data6;
|
||||||
|
healthboxSpriteId_2 = gSprites[healthboxSpriteId].data5;
|
||||||
|
if (GetBankSide(bank) == SIDE_PLAYER)
|
||||||
|
{
|
||||||
|
status = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_STATUS);
|
||||||
|
if (!IsDoubleBattle())
|
||||||
|
tileNumAdder = 0x1A;
|
||||||
|
else
|
||||||
|
tileNumAdder = 0x12;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
status = GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_STATUS);
|
||||||
|
tileNumAdder = 0x11;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (status & STATUS_SLEEP)
|
||||||
|
{
|
||||||
|
statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(0x1B, bank));
|
||||||
|
statusPalId = 2;
|
||||||
|
}
|
||||||
|
else if (status & STATUS_PSN_ANY)
|
||||||
|
{
|
||||||
|
statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(0x15, bank));
|
||||||
|
statusPalId = 0;
|
||||||
|
}
|
||||||
|
else if (status & STATUS_BURN)
|
||||||
|
{
|
||||||
|
statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(0x21, bank));
|
||||||
|
statusPalId = 4;
|
||||||
|
}
|
||||||
|
else if (status & STATUS_FREEZE)
|
||||||
|
{
|
||||||
|
statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(0x1E, bank));
|
||||||
|
statusPalId = 3;
|
||||||
|
}
|
||||||
|
else if (status & STATUS_PARALYSIS)
|
||||||
|
{
|
||||||
|
statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(0x18, bank));
|
||||||
|
statusPalId = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
statusGfxPtr = GetHealthboxElementGfxPtr(0x27);
|
||||||
|
|
||||||
|
for (i = 0; i < 3; i++)
|
||||||
|
CpuCopy32(statusGfxPtr, (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId].oam.tileNum + tileNumAdder + i) * 32), 32);
|
||||||
|
|
||||||
|
if (!gBattleSpritesDataPtr->bankData[bank].hpNumbersNoBars)
|
||||||
|
CpuCopy32(GetHealthboxElementGfxPtr(1), (void *)(OBJ_VRAM0 + gSprites[healthboxSpriteId_2].oam.tileNum * 32), 64);
|
||||||
|
|
||||||
|
TryAddPokeballIconToHealthbox(healthboxSpriteId, TRUE);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
pltAdder = gSprites[healthboxSpriteId].oam.paletteNum * 16;
|
||||||
|
pltAdder += bank + 12;
|
||||||
|
|
||||||
|
FillPalette(gBattleInterfaceStatusIcons_DynPals[statusPalId], pltAdder + 0x100, 2);
|
||||||
|
CpuCopy16(gPlttBufferUnfaded + 0x100 + pltAdder, (void*)(OBJ_PLTT + pltAdder * 2), 2);
|
||||||
|
CpuCopy32(statusGfxPtr, (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId].oam.tileNum + tileNumAdder) * 32), 96);
|
||||||
|
if (IsDoubleBattle() == TRUE || GetBankSide(bank) == SIDE_OPPONENT)
|
||||||
|
{
|
||||||
|
if (!gBattleSpritesDataPtr->bankData[bank].hpNumbersNoBars)
|
||||||
|
{
|
||||||
|
CpuCopy32(GetHealthboxElementGfxPtr(0), (void*)(OBJ_VRAM0 + gSprites[healthboxSpriteId_2].oam.tileNum * 32), 32);
|
||||||
|
CpuCopy32(GetHealthboxElementGfxPtr(0x41), (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId_2].oam.tileNum + 1) * 32), 32);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
TryAddPokeballIconToHealthbox(healthboxSpriteId, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
u8 GetStatusIconForBankId(u8 statusElementId, u8 bank)
|
||||||
|
{
|
||||||
|
u8 ret = statusElementId;
|
||||||
|
|
||||||
|
switch (statusElementId)
|
||||||
|
{
|
||||||
|
case 21:
|
||||||
|
if (bank == 0)
|
||||||
|
ret = 21;
|
||||||
|
else if (bank == 1)
|
||||||
|
ret = 71;
|
||||||
|
else if (bank == 2)
|
||||||
|
ret = 86;
|
||||||
|
else
|
||||||
|
ret = 101;
|
||||||
|
break;
|
||||||
|
case 24:
|
||||||
|
if (bank == 0)
|
||||||
|
ret = 24;
|
||||||
|
else if (bank == 1)
|
||||||
|
ret = 74;
|
||||||
|
else if (bank == 2)
|
||||||
|
ret = 89;
|
||||||
|
else
|
||||||
|
ret = 104;
|
||||||
|
break;
|
||||||
|
case 27:
|
||||||
|
if (bank == 0)
|
||||||
|
ret = 27;
|
||||||
|
else if (bank == 1)
|
||||||
|
ret = 77;
|
||||||
|
else if (bank == 2)
|
||||||
|
ret = 92;
|
||||||
|
else
|
||||||
|
ret = 107;
|
||||||
|
break;
|
||||||
|
case 30:
|
||||||
|
if (bank == 0)
|
||||||
|
ret = 30;
|
||||||
|
else if (bank == 1)
|
||||||
|
ret = 80;
|
||||||
|
else if (bank == 2)
|
||||||
|
ret = 95;
|
||||||
|
else
|
||||||
|
ret = 110;
|
||||||
|
break;
|
||||||
|
case 33:
|
||||||
|
if (bank == 0)
|
||||||
|
ret = 33;
|
||||||
|
else if (bank == 1)
|
||||||
|
ret = 83;
|
||||||
|
else if (bank == 2)
|
||||||
|
ret = 98;
|
||||||
|
else
|
||||||
|
ret = 113;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
extern const u8 gText_SafariBalls[];
|
||||||
|
extern const u8 gText_SafariBallLeft[];
|
||||||
|
|
||||||
|
void UpdateSafariBallsTextOnHealthbox(u8 healthboxSpriteId)
|
||||||
|
{
|
||||||
|
u32 windowId, windowTileData, spriteTileNum;
|
||||||
|
|
||||||
|
windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(gText_SafariBalls, 0, 3, 2, &windowId);
|
||||||
|
spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * 32;
|
||||||
|
sub_8075198((void*)(OBJ_VRAM0 + 0x40) + spriteTileNum, windowTileData, 6);
|
||||||
|
sub_8075198((void*)(OBJ_VRAM0 + 0x800) + spriteTileNum, windowTileData + 0xC0, 2);
|
||||||
|
RemoveWindowOnHealthbox(windowId);
|
||||||
|
}
|
||||||
|
|
||||||
|
void UpdateLeftNoOfBallsTextOnHealthbox(healthboxSpriteId)
|
||||||
|
{
|
||||||
|
u8 text[20];
|
||||||
|
u8 *txtPtr;
|
||||||
|
u32 windowId, windowTileData, spriteTileNum;
|
||||||
|
|
||||||
|
txtPtr = StringCopy(text, gText_SafariBallLeft);
|
||||||
|
ConvertIntToDecimalStringN(txtPtr, gNumSafariBalls, STR_CONV_MODE_LEFT_ALIGN, 2);
|
||||||
|
windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, GetStringRightAlignXOffset(0, 1));
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user