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
|
||||
|
||||
|
||||
|
||||
|
||||
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
|
||||
thumb_func_start UpdateLeftNoOfBallsTextOnHealthbox
|
||||
UpdateLeftNoOfBallsTextOnHealthbox: @ 80747D8
|
||||
push {r4,r5,lr}
|
||||
sub sp, 0x18
|
||||
adds r4, r0, 0
|
||||
@ -594,13 +54,13 @@ sub_80747D8: @ 80747D8
|
||||
movs r2, 0x4
|
||||
bl sub_80751E4
|
||||
ldr r0, [sp, 0x14]
|
||||
bl RemoveWindow_
|
||||
bl RemoveWindowOnHealthbox
|
||||
add sp, 0x18
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_80747D8
|
||||
thumb_func_end UpdateLeftNoOfBallsTextOnHealthbox
|
||||
|
||||
thumb_func_start UpdateHealthboxAttribute
|
||||
UpdateHealthboxAttribute: @ 8074860
|
||||
@ -797,7 +257,7 @@ _080749EC:
|
||||
cmp r7, 0xA
|
||||
bne _080749F6
|
||||
adds r0, r6, 0
|
||||
bl sub_8074770
|
||||
bl UpdateSafariBallsTextOnHealthbox
|
||||
_080749F6:
|
||||
adds r0, r7, 0
|
||||
subs r0, 0xA
|
||||
@ -806,7 +266,7 @@ _080749F6:
|
||||
cmp r0, 0x1
|
||||
bhi _08074A8E
|
||||
adds r0, r6, 0
|
||||
bl sub_80747D8
|
||||
bl UpdateLeftNoOfBallsTextOnHealthbox
|
||||
b _08074A8E
|
||||
.pool
|
||||
_08074A18:
|
||||
@ -1740,15 +1200,15 @@ AddTextPrinterAndCreateWindowOnHealthbox: @ 8075094
|
||||
.pool
|
||||
thumb_func_end AddTextPrinterAndCreateWindowOnHealthbox
|
||||
|
||||
thumb_func_start RemoveWindow_
|
||||
RemoveWindow_: @ 807512C
|
||||
thumb_func_start RemoveWindowOnHealthbox
|
||||
RemoveWindowOnHealthbox: @ 807512C
|
||||
push {lr}
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
bl RemoveWindow
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end RemoveWindow_
|
||||
thumb_func_end RemoveWindowOnHealthbox
|
||||
|
||||
thumb_func_start sub_807513C
|
||||
sub_807513C: @ 807513C
|
||||
|
@ -130,7 +130,7 @@ gUnknown_0832C3D8:: @ 832C3D8
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
.align 2
|
||||
gUnknown_0832C3EC:: @ 832C3EC
|
||||
gBattleInterfaceStatusIcons_DynPals:: @ 832C3EC
|
||||
.byte 0x98, 0x61, 0xf7, 0x0e, 0x94, 0x46, 0xd1, 0x72
|
||||
.byte 0xdc, 0x29, 0x00, 0x00
|
||||
|
||||
|
@ -15,6 +15,10 @@
|
||||
#include "gpu_regs.h"
|
||||
#include "battle_message.h"
|
||||
#include "species.h"
|
||||
#include "pokedex.h"
|
||||
#include "palette.h"
|
||||
#include "international_string_util.h"
|
||||
#include "safari_zone.h"
|
||||
|
||||
extern bool8 IsDoubleBattle(void);
|
||||
extern u8 gBanksByIdentity[BATTLE_BANKS_COUNT];
|
||||
@ -29,9 +33,9 @@ extern const u8 gText_Slash[];
|
||||
void sub_8072924(struct Sprite *sprite);
|
||||
void sub_80728B4(struct Sprite *sprite);
|
||||
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 RemoveWindow_(u32 windowId);
|
||||
void RemoveWindowOnHealthbox(u32 windowId);
|
||||
void sub_8075170(void *dest, u32 arg1, u32 arg2);
|
||||
void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent);
|
||||
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_8074158(struct Sprite *sprite);
|
||||
void sub_8074090(struct Sprite *sprite);
|
||||
u8 GetStatusIconForBankId(u8 statusElementId, u8 bank);
|
||||
|
||||
// const rom data
|
||||
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 SubspriteTable gUnknown_0832C2C4;
|
||||
extern const struct SubspriteTable gUnknown_0832C2CC;
|
||||
extern const u16 gBattleInterfaceStatusIcons_DynPals[];
|
||||
|
||||
u8 sub_8072304(void)
|
||||
{
|
||||
@ -773,7 +779,7 @@ void UpdateLvlInHealthbox(u8 healthboxSpriteId, u8 lvl)
|
||||
objVram += spriteTileNum + 0x400;
|
||||
}
|
||||
sub_8075198(objVram, windowTileData, 3);
|
||||
RemoveWindow_(windowId);
|
||||
RemoveWindowOnHealthbox(windowId);
|
||||
}
|
||||
|
||||
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 += spriteTileNum + 0xB40;
|
||||
sub_8075170(objVram, windowTileData, 2);
|
||||
RemoveWindow_(windowId);
|
||||
RemoveWindowOnHealthbox(windowId);
|
||||
}
|
||||
else // singles, current
|
||||
{
|
||||
@ -806,7 +812,7 @@ void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent)
|
||||
objVram = (void*)(OBJ_VRAM0);
|
||||
objVram += spriteTileNum + 0xB00;
|
||||
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);
|
||||
windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, 0, 5, 0, &windowId);
|
||||
sub_8075170((void*)(OBJ_VRAM0) + spriteTileNum + 0xC0, windowTileData, 2);
|
||||
RemoveWindow_(windowId);
|
||||
RemoveWindowOnHealthbox(windowId);
|
||||
CpuCopy32(GetHealthboxElementGfxPtr(0x74),
|
||||
(void*)(OBJ_VRAM0 + 0x680) + (gSprites[healthboxSpriteId].oam.tileNum * 32),
|
||||
0x20);
|
||||
@ -884,7 +890,7 @@ void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 maxOrC
|
||||
windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, 4, 5, 0, &windowId);
|
||||
sub_807513C(objVram, 0, 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);
|
||||
}
|
||||
|
||||
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