summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-01-11 10:58:30 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2020-01-11 10:58:30 -0500
commit9d2f1af103fb52ec5d06e185a4ddf25d91554549 (patch)
tree2f96b6d0c0a3a4c6811d0513d3bae05420c1041a
parent3310aadb548f11b356a6fb10a049aff6704dc82b (diff)
through PrintSafariMonInfo
-rw-r--r--asm/battle_interface.s744
-rw-r--r--asm/pokemon_summary_screen.s8
-rw-r--r--data/battle_interface.s44
-rw-r--r--data/pokemon_summary_screen.s2
-rw-r--r--include/pokemon_summary_screen.h1
-rw-r--r--include/text.h2
-rw-r--r--ld_script.txt1
-rw-r--r--src/battle_interface.c225
-rw-r--r--src/text.c2
9 files changed, 232 insertions, 797 deletions
diff --git a/asm/battle_interface.s b/asm/battle_interface.s
index 43a8a8391..f277fbf17 100644
--- a/asm/battle_interface.s
+++ b/asm/battle_interface.s
@@ -5,750 +5,6 @@
.text
- thumb_func_start UpdateHpTextInHealthbox
-UpdateHpTextInHealthbox: @ 8048440
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x30
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r1, 16
- lsrs r1, 16
- mov r10, r1
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- ldr r1, _080484B4 @ =gSprites
- lsls r0, 4
- add r0, r9
- lsls r0, 2
- adds r4, r0, r1
- ldrh r0, [r4, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08048514
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- bne _08048514
- mov r0, r8
- cmp r0, 0
- beq _080484BC
- mov r2, r10
- lsls r1, r2, 16
- asrs r1, 16
- add r0, sp, 0x10
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- add r3, sp, 0x2C
- add r0, sp, 0x10
- movs r1, 0
- movs r2, 0x5
- bl AddTextPrinterAndCreateWindowOnHealthbox
- adds r5, r0, 0
- ldrh r0, [r4, 0x4]
- lsls r0, 22
- lsrs r0, 17
- ldr r1, _080484B8 @ =0x06010a40
- adds r0, r1
- adds r1, r5, 0
- b _080484FE
- .align 2, 0
-_080484B4: .4byte gSprites
-_080484B8: .4byte 0x06010a40
-_080484BC:
- mov r2, r10
- lsls r1, r2, 16
- asrs r1, 16
- add r0, sp, 0x10
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- movs r1, 0xBA
- strb r1, [r0]
- movs r1, 0xFF
- strb r1, [r0, 0x1]
- add r3, sp, 0x2C
- add r0, sp, 0x10
- movs r1, 0x4
- movs r2, 0x5
- bl AddTextPrinterAndCreateWindowOnHealthbox
- adds r5, r0, 0
- ldrh r4, [r4, 0x4]
- lsls r4, 22
- lsrs r4, 17
- ldr r1, _0804850C @ =0x060102e0
- adds r0, r4, r1
- adds r1, r5, 0
- movs r2, 0x1
- bl TextIntoHealthboxObject
- ldr r2, _08048510 @ =0x06010a00
- adds r4, r2
- adds r1, r5, 0
- adds r1, 0x20
- adds r0, r4, 0
-_080484FE:
- movs r2, 0x2
- bl TextIntoHealthboxObject
- ldr r0, [sp, 0x2C]
- bl RemoveWindowOnHealthbox
- b _080485F8
- .align 2, 0
-_0804850C: .4byte 0x060102e0
-_08048510: .4byte 0x06010a00
-_08048514:
- add r5, sp, 0x18
- ldr r1, _0804855C @ =gUnknown_826052C
- adds r0, r5, 0
- movs r2, 0x14
- bl memcpy
- ldr r1, _08048560 @ =gSprites
- mov r0, r9
- lsls r4, r0, 4
- adds r0, r4, r0
- lsls r0, 2
- adds r7, r0, r1
- ldrh r0, [r7, 0x3A]
- lsls r0, 24
- lsrs r6, r0, 24
- bl IsDoubleBattle
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0804854C
- adds r0, r6, 0
- bl GetBattlerSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08048564
-_0804854C:
- mov r2, r10
- lsls r1, r2, 16
- asrs r1, 16
- mov r0, r9
- mov r2, r8
- bl UpdateHpTextInHealthboxInDoubles
- b _080485F8
- .align 2, 0
-_0804855C: .4byte gUnknown_826052C
-_08048560: .4byte gSprites
-_08048564:
- ldrh r0, [r7, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _08048580
- movs r6, 0x59
- mov r0, r8
- cmp r0, 0
- bne _0804858A
- movs r6, 0x1D
- b _0804858A
-_08048580:
- movs r6, 0x30
- mov r1, r8
- cmp r1, 0
- bne _0804858A
- movs r6, 0x14
-_0804858A:
- mov r0, sp
- adds r0, 0x1E
- mov r2, r10
- lsls r1, r2, 16
- asrs r1, 16
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r0, _08048608 @ =gMonSpritesGfxPtr
- ldr r0, [r0]
- movs r1, 0xBA
- lsls r1, 1
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0
- str r1, [sp]
- str r1, [sp, 0x4]
- str r1, [sp, 0x8]
- str r1, [sp, 0xC]
- adds r2, r5, 0
- movs r3, 0
- bl RenderTextFont9
- movs r5, 0
- ldr r1, _0804860C @ =gSprites
- mov r2, r9
- adds r0, r4, r2
- lsls r0, 2
- adds r4, r0, r1
-_080485C6:
- ldr r0, _08048608 @ =gMonSpritesGfxPtr
- ldr r0, [r0]
- movs r1, 0xBA
- lsls r1, 1
- adds r0, r1
- lsls r1, r5, 6
- adds r1, 0x20
- ldr r0, [r0]
- adds r0, r1
- ldrh r1, [r4, 0x4]
- lsls r1, 22
- lsrs r1, 22
- adds r1, r6
- adds r1, r5
- lsls r1, 5
- ldr r2, _08048610 @ =0x06010000
- adds r1, r2
- ldr r2, _08048614 @ =0x04000008
- bl CpuSet
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x2
- bls _080485C6
-_080485F8:
- add sp, 0x30
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08048608: .4byte gMonSpritesGfxPtr
-_0804860C: .4byte gSprites
-_08048610: .4byte 0x06010000
-_08048614: .4byte 0x04000008
- thumb_func_end UpdateHpTextInHealthbox
-
- thumb_func_start UpdateHpTextInHealthboxInDoubles
-UpdateHpTextInHealthboxInDoubles: @ 8048618
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x28
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r1, 16
- lsrs r4, r1, 16
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- ldr r1, _080486F8 @ =gUnknown_8260542
- add r0, sp, 0x10
- movs r2, 0x14
- bl memcpy
- ldr r5, _080486FC @ =gSprites
- mov r1, r9
- lsls r0, r1, 4
- add r0, r9
- lsls r0, 2
- adds r2, r0, r5
- ldrh r0, [r2, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- ldr r0, _08048700 @ =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r1, [r0]
- mov r3, r10
- lsls r0, r3, 2
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _0804866A
- b _080487DC
-_0804866A:
- movs r6, 0x4
- mov r1, r8
- negs r0, r1
- orrs r0, r1
- asrs r0, 31
- ands r6, r0
- ldrh r0, [r2, 0x38]
- lsls r0, 24
- lsrs r7, r0, 24
- mov r0, sp
- adds r0, 0x16
- lsls r1, r4, 16
- asrs r1, 16
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- mov r2, r8
- cmp r2, 0
- bne _08048698
- ldr r1, _08048704 @ =gUnknown_8260540
- bl StringCopy
-_08048698:
- ldr r0, _08048708 @ =gMonSpritesGfxPtr
- ldr r0, [r0]
- movs r3, 0xBA
- lsls r3, 1
- adds r0, r3
- ldr r0, [r0]
- movs r1, 0
- str r1, [sp]
- str r1, [sp, 0x4]
- str r1, [sp, 0x8]
- str r1, [sp, 0xC]
- add r2, sp, 0x10
- movs r3, 0
- bl RenderTextFont9
- adds r4, r6, 0
- adds r0, r4, 0x3
- cmp r4, r0
- bge _08048748
- lsls r0, r7, 4
- adds r0, r7
- lsls r0, 2
- adds r5, r0, r5
-_080486C6:
- cmp r4, 0x2
- bhi _08048714
- ldr r0, _08048708 @ =gMonSpritesGfxPtr
- ldr r0, [r0]
- movs r1, 0xBA
- lsls r1, 1
- adds r0, r1
- subs r1, r4, r6
- lsls r1, 6
- adds r1, 0x20
- ldr r0, [r0]
- adds r0, r1
- ldrh r1, [r5, 0x4]
- lsls r1, 22
- lsrs r1, 22
- adds r4, 0x1
- adds r1, r4
- lsls r1, 5
- ldr r2, _0804870C @ =0x06010000
- adds r1, r2
- ldr r2, _08048710 @ =0x04000008
- bl CpuSet
- b _0804873E
- .align 2, 0
-_080486F8: .4byte gUnknown_8260542
-_080486FC: .4byte gSprites
-_08048700: .4byte gBattleSpritesDataPtr
-_08048704: .4byte gUnknown_8260540
-_08048708: .4byte gMonSpritesGfxPtr
-_0804870C: .4byte 0x06010000
-_08048710: .4byte 0x04000008
-_08048714:
- ldr r0, _08048790 @ =gMonSpritesGfxPtr
- ldr r0, [r0]
- movs r3, 0xBA
- lsls r3, 1
- adds r0, r3
- subs r1, r4, r6
- lsls r1, 6
- adds r1, 0x20
- ldr r0, [r0]
- adds r0, r1
- ldrh r1, [r5, 0x4]
- lsls r1, 22
- lsrs r1, 22
- adds r1, r4, r1
- lsls r1, 5
- ldr r2, _08048794 @ =0x06010020
- adds r1, r2
- ldr r2, _08048798 @ =0x04000008
- bl CpuSet
- adds r4, 0x1
-_0804873E:
- lsls r0, r4, 24
- lsrs r4, r0, 24
- adds r0, r6, 0x3
- cmp r4, r0
- blt _080486C6
-_08048748:
- mov r3, r8
- cmp r3, 0
- bne _080487A8
- ldr r0, _08048790 @ =gMonSpritesGfxPtr
- ldr r0, [r0]
- movs r1, 0xBA
- lsls r1, 1
- adds r0, r1
- ldr r0, [r0]
- adds r0, 0xE0
- ldr r1, _0804879C @ =gSprites
- lsls r4, r7, 4
- adds r4, r7
- lsls r4, 2
- adds r4, r1
- ldrh r1, [r4, 0x4]
- lsls r1, 22
- lsrs r1, 17
- adds r1, 0x80
- ldr r5, _080487A0 @ =0x06010000
- adds r1, r5
- ldr r2, _08048798 @ =0x04000008
- bl CpuSet
- mov r2, r8
- str r2, [sp, 0x24]
- add r0, sp, 0x24
- ldrh r1, [r4, 0x4]
- lsls r1, 22
- lsrs r1, 17
- adds r1, r5
- ldr r2, _080487A4 @ =0x05000008
- bl CpuSet
- b _080487DC
- .align 2, 0
-_08048790: .4byte gMonSpritesGfxPtr
-_08048794: .4byte 0x06010020
-_08048798: .4byte 0x04000008
-_0804879C: .4byte gSprites
-_080487A0: .4byte 0x06010000
-_080487A4: .4byte 0x05000008
-_080487A8:
- mov r0, r10
- bl GetBattlerSide
- lsls r0, 24
- cmp r0, 0
- bne _080487DC
- movs r0, 0x74
- bl GetHealthboxElementGfxPtr
- ldr r2, _080487EC @ =gSprites
- mov r3, r9
- lsls r1, r3, 4
- add r1, r9
- lsls r1, 2
- adds r1, r2
- ldrh r1, [r1, 0x4]
- lsls r1, 22
- lsrs r1, 17
- movs r2, 0xD0
- lsls r2, 3
- adds r1, r2
- ldr r2, _080487F0 @ =0x06010000
- adds r1, r2
- ldr r2, _080487F4 @ =0x04000008
- bl CpuSet
-_080487DC:
- add sp, 0x28
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080487EC: .4byte gSprites
-_080487F0: .4byte 0x06010000
-_080487F4: .4byte 0x04000008
- thumb_func_end UpdateHpTextInHealthboxInDoubles
-
- thumb_func_start PrintSafariMonInfo
-PrintSafariMonInfo: @ 80487F8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x30
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x24]
- ldr r1, _080488AC @ =gUnknown_826052C
- add r0, sp, 0x10
- movs r2, 0x14
- bl memcpy
- ldr r1, _080488B0 @ =gSprites
- ldr r2, [sp, 0x24]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- ldrh r0, [r0, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- bl GetBattlerPosition
- ldr r1, _080488B4 @ =gMonSpritesGfxPtr
- ldr r2, [r1]
- movs r3, 0xBA
- lsls r3, 1
- adds r2, r3
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 7
- movs r0, 0xA4
- lsls r0, 3
- adds r1, r0
- ldr r0, [r2]
- adds r6, r0, r1
- movs r1, 0x5
- mov r8, r1
- adds r0, r4, 0
- bl GetNature
- lsls r0, 24
- mov r4, sp
- adds r4, 0x16
- ldr r1, _080488B8 @ =gNatureNames
- lsrs r0, 22
- adds r0, r1
- ldr r1, [r0]
- adds r0, r4, 0
- bl StringCopy
- movs r0, 0
- str r0, [sp]
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- str r0, [sp, 0xC]
- adds r0, r6, 0
- movs r1, 0
- add r2, sp, 0x10
- movs r3, 0
- bl RenderTextFont9
- movs r7, 0x6
- movs r5, 0
- mov r2, sp
- adds r2, 0x19
- str r2, [sp, 0x28]
-_08048888:
- mov r0, sp
- adds r0, r7
- adds r0, 0x10
- ldrb r1, [r0]
- adds r0, r1, 0
- subs r0, 0x37
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x13
- bls _080488A8
- adds r0, r1, 0
- adds r0, 0x79
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x13
- bhi _080488BC
-_080488A8:
- movs r0, 0x2C
- b _080488DA
- .align 2, 0
-_080488AC: .4byte gUnknown_826052C
-_080488B0: .4byte gSprites
-_080488B4: .4byte gMonSpritesGfxPtr
-_080488B8: .4byte gNatureNames
-_080488BC:
- adds r0, r1, 0
- subs r0, 0x4B
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bls _080488D4
- adds r0, r1, 0
- adds r0, 0x65
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080488D8
-_080488D4:
- movs r0, 0x2D
- b _080488DA
-_080488D8:
- movs r0, 0x2B
-_080488DA:
- bl GetHealthboxElementGfxPtr
- lsls r1, r5, 6
- adds r1, r6, r1
- ldr r2, _080489F8 @ =0x04000008
- bl CpuSet
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- adds r7, 0x1
- cmp r5, r8
- bcc _08048888
- movs r7, 0x1
- ldr r3, [sp, 0x24]
- lsls r3, 4
- str r3, [sp, 0x2C]
- movs r0, 0x1
- add r0, r8
- mov r9, r0
- cmp r7, r9
- bge _08048966
- ldr r1, _080489FC @ =gSprites
- ldr r2, _080489F8 @ =0x04000008
- mov r10, r2
- ldr r2, [sp, 0x24]
- adds r0, r3, r2
- lsls r0, 2
- adds r0, r1
- mov r8, r0
-_08048916:
- mov r3, r8
- ldrh r0, [r3, 0x4]
- lsls r0, 22
- lsrs r0, 22
- adds r5, r7, 0
- cmp r7, 0
- bge _08048926
- adds r5, r7, 0x7
-_08048926:
- asrs r5, 3
- lsls r4, r5, 3
- subs r4, r7, r4
- adds r0, r4
- lsls r5, 6
- adds r0, r5
- lsls r0, 5
- ldr r2, _08048A00 @ =0x06010000
- adds r1, r0, r2
- adds r0, r6, 0
- mov r2, r10
- bl CpuSet
- adds r6, 0x20
- mov r3, r8
- ldrh r0, [r3, 0x4]
- lsls r0, 22
- lsrs r0, 22
- adds r4, 0x8
- adds r0, r4
- adds r0, r5
- lsls r0, 5
- ldr r2, _08048A00 @ =0x06010000
- adds r1, r0, r2
- adds r0, r6, 0
- mov r2, r10
- bl CpuSet
- adds r6, 0x20
- adds r7, 0x1
- cmp r7, r9
- blt _08048916
-_08048966:
- ldr r6, _080489FC @ =gSprites
- ldr r3, [sp, 0x2C]
- ldr r1, [sp, 0x24]
- adds r0, r3, r1
- lsls r0, 2
- adds r0, r6
- ldrh r4, [r0, 0x38]
- lsls r4, 24
- lsrs r4, 24
- ldr r5, _08048A04 @ =gBattleStruct
- ldr r0, [r5]
- adds r0, 0x7C
- ldrb r1, [r0]
- mov r0, sp
- adds r0, 0x16
- movs r2, 0x1
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r0, [r5]
- adds r0, 0x7B
- ldrb r1, [r0]
- ldr r0, [sp, 0x28]
- movs r2, 0x1
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- add r0, sp, 0x10
- movs r1, 0
- strb r1, [r0, 0x5]
- adds r2, r0, 0
- movs r0, 0xBA
- strb r0, [r2, 0x8]
- ldr r5, _08048A08 @ =gMonSpritesGfxPtr
- ldr r0, [r5]
- movs r2, 0xBA
- lsls r2, 1
- adds r0, r2
- ldr r0, [r0]
- str r1, [sp]
- str r1, [sp, 0x4]
- str r1, [sp, 0x8]
- str r1, [sp, 0xC]
- add r2, sp, 0x10
- movs r3, 0
- bl RenderTextFont9
- movs r7, 0
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r6, r0, r6
- movs r4, 0x20
-_080489D0:
- cmp r7, 0x1
- bgt _08048A0C
- ldr r0, [r5]
- movs r3, 0xBA
- lsls r3, 1
- adds r0, r3
- ldr r0, [r0]
- adds r0, r4
- ldrh r1, [r6, 0x4]
- lsls r1, 22
- lsrs r1, 22
- adds r2, r7, 0x2
- adds r1, r2
- lsls r1, 5
- ldr r2, _08048A00 @ =0x06010000
- adds r1, r2
- ldr r2, _080489F8 @ =0x04000008
- bl CpuSet
- b _08048A2C
- .align 2, 0
-_080489F8: .4byte 0x04000008
-_080489FC: .4byte gSprites
-_08048A00: .4byte 0x06010000
-_08048A04: .4byte gBattleStruct
-_08048A08: .4byte gMonSpritesGfxPtr
-_08048A0C:
- ldr r0, [r5]
- movs r3, 0xBA
- lsls r3, 1
- adds r0, r3
- ldr r0, [r0]
- adds r0, r4
- ldrh r1, [r6, 0x4]
- lsls r1, 22
- lsrs r1, 22
- adds r1, r7, r1
- lsls r1, 5
- ldr r2, _08048A44 @ =0x060100c0
- adds r1, r2
- ldr r2, _08048A48 @ =0x04000008
- bl CpuSet
-_08048A2C:
- adds r4, 0x40
- adds r7, 0x1
- cmp r7, 0x4
- ble _080489D0
- add sp, 0x30
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08048A44: .4byte 0x060100c0
-_08048A48: .4byte 0x04000008
- thumb_func_end PrintSafariMonInfo
-
thumb_func_start SwapHpBarsWithHpText
SwapHpBarsWithHpText: @ 8048A4C
push {r4-r7,lr}
diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s
index 45eba1df8..d14d64ee4 100644
--- a/asm/pokemon_summary_screen.s
+++ b/asm/pokemon_summary_screen.s
@@ -5755,7 +5755,7 @@ sub_8137578: @ 8137578
bl GetNature
lsls r0, 24
lsrs r6, r0, 24
- ldr r1, _081375F0 @ =gNatureNames
+ ldr r1, _081375F0 @ =gNatureNamePointers
lsls r0, r6, 2
adds r0, r1
ldr r1, [r0]
@@ -5796,7 +5796,7 @@ _081375B2:
.align 2, 0
_081375E8: .4byte gUnknown_203B140
_081375EC: .4byte 0x00003290
-_081375F0: .4byte gNatureNames
+_081375F0: .4byte gNatureNamePointers
_081375F4:
ldr r0, [r7]
ldr r1, _08137614 @ =0x00003024
@@ -5952,7 +5952,7 @@ sub_8137724: @ 8137724
bl GetNature
lsls r0, 24
lsrs r6, r0, 24
- ldr r1, _081377A8 @ =gNatureNames
+ ldr r1, _081377A8 @ =gNatureNamePointers
lsls r0, r6, 2
adds r0, r1
ldr r1, [r0]
@@ -5997,7 +5997,7 @@ _08137790:
.align 2, 0
_081377A0: .4byte gUnknown_203B140
_081377A4: .4byte 0x00003290
-_081377A8: .4byte gNatureNames
+_081377A8: .4byte gNatureNamePointers
_081377AC:
cmp r5, 0xFF
bne _081377D0
diff --git a/data/battle_interface.s b/data/battle_interface.s
deleted file mode 100644
index 4dc0c1b99..000000000
--- a/data/battle_interface.s
+++ /dev/null
@@ -1,44 +0,0 @@
-#include "constants/region_map.h"
-#include "constants/trainer_classes.h"
-#include "constants/songs.h"
-#include "constants/flags.h"
-#include "constants/region_map.h"
-#include "constants/maps.h"
-#define RGB(r, g, b) ((r) | ((g) << 5) | ((b) << 10))
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2, 0
-
-gUnknown_826052C:: @ 826052C
- .string "{COLOR 01}{HIGHLIGHT 02}", 20
-
-gUnknown_8260540:: @ 8260540
- .string "/$"
-
-gUnknown_8260542:: @ 8260542
- .string "{COLOR 01}{HIGHLIGHT 00}", 20
-
-gUnknown_8260556:: @ 8260556
- .string "{HIGHLIGHT 02}$"
-
-gUnknown_826055A:: @ 826055A
- .2byte RGB(24, 12, 24)
- .2byte RGB(23, 23, 3)
- .2byte RGB(20, 20, 17)
- .2byte RGB(17, 22, 28)
- .2byte RGB(28, 14, 10)
-
-gUnknown_8260564:: @ 8260564
- .byte 0, 0, 0, 8, 2, 0
- .2byte 0x0000
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 0,
- @ .tilemapTop = 0,
- @ .width = 8,
- @ .height = 2,
- @ .paletteNum = 0,
- @ .baseBlock = 0x0000
- @ }
diff --git a/data/pokemon_summary_screen.s b/data/pokemon_summary_screen.s
index ff732f5ae..3400c9ae0 100644
--- a/data/pokemon_summary_screen.s
+++ b/data/pokemon_summary_screen.s
@@ -266,7 +266,7 @@ gUnknown_8463E57:: @ 8463E57
.string "QUIRKY$"
.align 2
-gNatureNames:: @ 8463E60 dataptr
+gNatureNamePointers:: @ 8463E60 dataptr
.4byte gUnknown_8463DBC
.4byte gUnknown_8463DC2
.4byte gUnknown_8463DC9
diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h
index 6f96fa86d..3695d46df 100644
--- a/include/pokemon_summary_screen.h
+++ b/include/pokemon_summary_screen.h
@@ -34,6 +34,5 @@ enum PokemonSummaryScreenPage
s32 GetLastViewedMonIndex(void);
void ShowPokemonSummaryScreen(struct Pokemon * party, u8 cursorPos, u8 lastIdx, void (*callback)(void), u8 a4);
-extern const u8 *gNatureNames[];
#endif // GUARD_POKEMON_SUMMARY_SCREEN_H
diff --git a/include/text.h b/include/text.h
index 578a0d735..eaf125b05 100644
--- a/include/text.h
+++ b/include/text.h
@@ -250,7 +250,7 @@ u16 RenderText(struct TextPrinter *textPrinter);
s32 GetStringWidthFixedWidthFont(const u8 *str, u8 fontId, u8 letterSpacing);
s32 (*GetFontWidthFunc(u8 glyphId))(u16, bool32);
s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing);
-u8 RenderTextFont9(u8 *pixels, u8 fontId, u8 *str);
+u8 RenderTextFont9(u8 *pixels, u8 fontId, u8 *str, int a3, int a4, int a5, int a6, int a7);
u8 DrawKeypadIcon(u8 windowId, u8 keypadIconId, u16 x, u16 y);
u8 GetKeypadIconTileOffset(u8 keypadIconId);
u8 GetKeypadIconWidth(u8 keypadIconId);
diff --git a/ld_script.txt b/ld_script.txt
index f837fb356..30ba74347 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -407,7 +407,6 @@ SECTIONS {
src/daycare.o(.rodata);
src/battle_gfx_sfx_util.o(.rodata);
src/battle_interface.o(.rodata);
- data/battle_interface.o(.rodata);
src/pokeball.o(.rodata);
src/trade.o(.rodata);
src/trade_scene.o(.rodata);
diff --git a/src/battle_interface.c b/src/battle_interface.c
index 926324300..2f8a8c2a1 100644
--- a/src/battle_interface.c
+++ b/src/battle_interface.c
@@ -6,6 +6,7 @@
#include "string_util.h"
#include "strings.h"
#include "text.h"
+#include "window.h"
void SpriteCB_HealthBoxOther(struct Sprite * sprite);
void SpriteCB_HealthBar(struct Sprite * sprite);
@@ -603,3 +604,227 @@ void UpdateLvlInHealthbox(u8 healthboxSpriteId, u8 lvl)
TextIntoHealthboxObject(objVram, windowTileData, 3);
RemoveWindowOnHealthbox(windowId);
}
+
+const u8 gUnknown_826052C[20] = __("{COLOR 01}{HIGHLIGHT 02}");
+
+void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent)
+{
+ u32 windowId, spriteTileNum;
+ u8 *windowTileData;
+ u8 *strptr;
+ register void *objVram;
+
+ if (GetBattlerSide(gSprites[healthboxSpriteId].hMain_Battler) == B_SIDE_PLAYER && !IsDoubleBattle())
+ {
+ u8 text[8];
+ if (maxOrCurrent != HP_CURRENT) // singles, max
+ {
+ ConvertIntToDecimalStringN(text, value, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, 0, 5, &windowId);
+ spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum;
+ TextIntoHealthboxObject( (void*)(OBJ_VRAM0) + spriteTileNum * TILE_SIZE_4BPP + 0xA40, windowTileData, 2);
+ RemoveWindowOnHealthbox(windowId);
+ }
+ else // singles, current
+ {
+ strptr = ConvertIntToDecimalStringN(text, value, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ *strptr++ = CHAR_SLASH;
+ *strptr++ = EOS;
+ windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, 4, 5, &windowId);
+ spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum;
+ TextIntoHealthboxObject((void *)(OBJ_VRAM0) + spriteTileNum * TILE_SIZE_4BPP + 0x2E0, windowTileData, 1);
+ TextIntoHealthboxObject((void *)(OBJ_VRAM0) + spriteTileNum * TILE_SIZE_4BPP + 0xA00, windowTileData + 0x20, 2);
+ RemoveWindowOnHealthbox(windowId);
+ }
+ }
+ else
+ {
+ u8 battler;
+
+ u8 text[20]; memcpy(text, gUnknown_826052C, sizeof(gUnknown_826052C));
+ battler = gSprites[healthboxSpriteId].hMain_Battler;
+ if (IsDoubleBattle() == TRUE || GetBattlerSide(battler) == B_SIDE_OPPONENT)
+ {
+ UpdateHpTextInHealthboxInDoubles(healthboxSpriteId, value, maxOrCurrent);
+ }
+ else
+ {
+ u32 var;
+ u8 i;
+
+ if (GetBattlerSide(gSprites[healthboxSpriteId].data[6]) == B_SIDE_PLAYER)
+ {
+ if (maxOrCurrent == HP_CURRENT)
+ var = 29;
+ else
+ var = 89;
+ }
+ else
+ {
+ if (maxOrCurrent == HP_CURRENT)
+ var = 20;
+ else
+ var = 48;
+ }
+
+ ConvertIntToDecimalStringN(text + 6, value, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ RenderTextFont9(gMonSpritesGfxPtr->barFontGfx, 0, text, 0, 0, 0, 0, 0);
+
+ for (i = 0; i < 3; i++)
+ {
+ CpuCopy32(&gMonSpritesGfxPtr->barFontGfx[i * 64 + 32],
+ (void*)((OBJ_VRAM0) + TILE_SIZE_4BPP * (gSprites[healthboxSpriteId].oam.tileNum + var + i)),
+ 0x20);
+ }
+ }
+ }
+}
+
+const u8 gUnknown_8260540[] = _("/");
+
+void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent)
+{
+ u32 windowId, spriteTileNum;
+ u8 *windowTileData;
+ void *objVram;
+
+ u8 battlerId;
+
+ u8 text[20] = __("{COLOR 01}{HIGHLIGHT 00}");
+ battlerId = gSprites[healthboxSpriteId].hMain_Battler;
+
+ if (gBattleSpritesDataPtr->battlerData[battlerId].hpNumbersNoBars) // don't print text if only bars are visible
+ {
+ u8 var = 4;
+ u8 r7;
+ u8 *txtPtr;
+ u8 i;
+
+ if (maxOrCurrent == HP_CURRENT)
+ var = 0;
+
+ r7 = gSprites[healthboxSpriteId].data[5];
+ txtPtr = ConvertIntToDecimalStringN(text + 6, value, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ if (!maxOrCurrent)
+ StringCopy(txtPtr, gUnknown_8260540);
+ RenderTextFont9(gMonSpritesGfxPtr->barFontGfx, 0, text, 0, 0, 0, 0, 0);
+
+ for (i = var; i < var + 3; i++)
+ {
+ if (i < 3)
+ {
+ CpuCopy32(&gMonSpritesGfxPtr->barFontGfx[((i - var) * 64) + 32],
+ (void*)((OBJ_VRAM0) + 32 * (1 + gSprites[r7].oam.tileNum + i)),
+ 0x20);
+ }
+ else
+ {
+ CpuCopy32(&gMonSpritesGfxPtr->barFontGfx[((i - var) * 64) + 32],
+ (void*)((OBJ_VRAM0 + 0x20) + 32 * (i + gSprites[r7].oam.tileNum)),
+ 0x20);
+ }
+ }
+
+ if (maxOrCurrent == HP_CURRENT)
+ {
+ CpuCopy32(&gMonSpritesGfxPtr->barFontGfx[224],
+ (void*)((OBJ_VRAM0) + ((gSprites[r7].oam.tileNum + 4) * TILE_SIZE_4BPP)),
+ 0x20);
+ CpuFill32(0, (void*)((OBJ_VRAM0) + (gSprites[r7].oam.tileNum * TILE_SIZE_4BPP)), 0x20);
+ }
+ else
+ {
+ if (GetBattlerSide(battlerId) == B_SIDE_PLAYER) // Impossible to reach part, because the battlerId is from the opponent's side.
+ {
+ CpuCopy32(GetHealthboxElementGfxPtr(116),
+ (void*)(OBJ_VRAM0) + ((gSprites[healthboxSpriteId].oam.tileNum + 52) * TILE_SIZE_4BPP),
+ 0x20);
+ }
+ }
+ }
+}
+
+// Prints mon's nature, catch and flee rate. Probably used to test pokeblock-related features.
+void PrintSafariMonInfo(u8 healthboxSpriteId, struct Pokemon *mon)
+{
+ u8 text[20];
+ s32 j, spriteTileNum;
+ u8 *barFontGfx;
+ u8 i, var, nature, healthBarSpriteId;
+
+ memcpy(text, gUnknown_826052C, sizeof(gUnknown_826052C));
+ barFontGfx = &gMonSpritesGfxPtr->barFontGfx[0x520 + (GetBattlerPosition(gSprites[healthboxSpriteId].hMain_Battler) * 384)];
+ var = 5;
+ nature = GetNature(mon);
+ StringCopy(text + 6, gNatureNamePointers[nature]);
+ RenderTextFont9(barFontGfx, 0, text, 0, 0, 0, 0, 0);
+
+ for (j = 6, i = 0; i < var; i++, j++)
+ {
+ u8 elementId;
+
+ if ((text[j] >= 55 && text[j] <= 74) || (text[j] >= 135 && text[j] <= 154))
+ elementId = 44;
+ else if ((text[j] >= 75 && text[j] <= 79) || (text[j] >= 155 && text[j] <= 159))
+ elementId = 45;
+ else
+ elementId = 43;
+
+ CpuCopy32(GetHealthboxElementGfxPtr(elementId), barFontGfx + (i * 64), 0x20);
+ }
+
+ for (j = 1; j < var + 1; j++)
+ {
+ spriteTileNum = (gSprites[healthboxSpriteId].oam.tileNum + (j - (j / 8 * 8)) + (j / 8 * 64)) * TILE_SIZE_4BPP;
+ CpuCopy32(barFontGfx, (void*)(OBJ_VRAM0) + (spriteTileNum), 0x20);
+ barFontGfx += 0x20;
+
+ spriteTileNum = (8 + gSprites[healthboxSpriteId].oam.tileNum + (j - (j / 8 * 8)) + (j / 8 * 64)) * TILE_SIZE_4BPP;
+ CpuCopy32(barFontGfx, (void*)(OBJ_VRAM0) + (spriteTileNum), 0x20);
+ barFontGfx += 0x20;
+ }
+
+ healthBarSpriteId = gSprites[healthboxSpriteId].hMain_HealthBarSpriteId;
+ ConvertIntToDecimalStringN(text + 6, gBattleStruct->safariCatchFactor, STR_CONV_MODE_RIGHT_ALIGN, 2);
+ ConvertIntToDecimalStringN(text + 9, gBattleStruct->safariEscapeFactor, STR_CONV_MODE_RIGHT_ALIGN, 2);
+ text[5] = CHAR_SPACE;
+ text[8] = CHAR_SLASH;
+ RenderTextFont9(gMonSpritesGfxPtr->barFontGfx, 0, text, 0, 0, 0, 0, 0);
+
+ j = healthBarSpriteId; // Needed to match for some reason.
+ for (j = 0; j < 5; j++)
+ {
+ if (j <= 1)
+ {
+ CpuCopy32(&gMonSpritesGfxPtr->barFontGfx[0x40 * j + 0x20],
+ (void*)(OBJ_VRAM0) + (gSprites[healthBarSpriteId].oam.tileNum + 2 + j) * TILE_SIZE_4BPP,
+ 32);
+ }
+ else
+ {
+ CpuCopy32(&gMonSpritesGfxPtr->barFontGfx[0x40 * j + 0x20],
+ (void*)(OBJ_VRAM0 + 0xC0) + (j + gSprites[healthBarSpriteId].oam.tileNum) * TILE_SIZE_4BPP,
+ 32);
+ }
+ }
+}
+
+const u8 gUnknown_8260556[] = _("{HIGHLIGHT 02}");
+
+const u16 gUnknown_826055A[] = {
+ RGB(24, 12, 24),
+ RGB(23, 23, 3),
+ RGB(20, 20, 17),
+ RGB(17, 22, 28),
+ RGB(28, 14, 10)
+};
+
+const struct WindowTemplate gUnknown_8260564 = {
+ .bg = 0,
+ .tilemapLeft = 0,
+ .tilemapTop = 0,
+ .width = 8,
+ .height = 2,
+ .paletteNum = 0,
+ .baseBlock = 0x000
+};
diff --git a/src/text.c b/src/text.c
index 93a35a07d..a0da0399f 100644
--- a/src/text.c
+++ b/src/text.c
@@ -1180,7 +1180,7 @@ s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing)
return width;
}
-u8 RenderTextFont9(u8 *pixels, u8 fontId, u8 *str)
+u8 RenderTextFont9(u8 *pixels, u8 fontId, u8 *str, int a3, int a4, int a5, int a6, int a7)
{
u8 shadowColor;
u8 *strLocal;