diff options
-rw-r--r-- | asm/battle_interface.s | 744 | ||||
-rw-r--r-- | asm/pokemon_summary_screen.s | 8 | ||||
-rw-r--r-- | data/battle_interface.s | 44 | ||||
-rw-r--r-- | data/pokemon_summary_screen.s | 2 | ||||
-rw-r--r-- | include/pokemon_summary_screen.h | 1 | ||||
-rw-r--r-- | include/text.h | 2 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/battle_interface.c | 225 | ||||
-rw-r--r-- | src/text.c | 2 |
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; |