diff options
author | Evan <eroelke@gmail.com> | 2019-12-11 11:35:10 -0500 |
---|---|---|
committer | Evan <eroelke@gmail.com> | 2019-12-11 11:35:10 -0500 |
commit | 9806a60837602916d99076f7ba0e6df67f9b3515 (patch) | |
tree | 0b14b8d14714a694bbe2f5e4433479240453eeb8 | |
parent | af24633bf3f00e47a9d52e0ae6f1914e0f1cfa3d (diff) |
finish trainer card matching and data
48 files changed, 1521 insertions, 6107 deletions
diff --git a/asm/cable_club.s b/asm/cable_club.s index d19bb3a35..3fea2b935 100644 --- a/asm/cable_club.s +++ b/asm/cable_club.s @@ -781,7 +781,7 @@ _08080D54: ldrb r0, [r4] bl sub_800A900 ldr r0, _08080D84 @ =gBlockSendBuffer - bl sub_80898E8 + bl TrainerCard_GenerateCardForLinkPlayer ldr r0, _08080D88 @ =sub_8080E6C _08080D72: str r0, [r5] @@ -884,7 +884,7 @@ _08080E20: ldrb r0, [r4] bl sub_800A900 ldr r0, _08080E60 @ =gBlockSendBuffer - bl sub_80898E8 + bl TrainerCard_GenerateCardForLinkPlayer ldr r1, _08080E64 @ =gTasks lsls r0, r5, 2 adds r0, r5 @@ -2388,7 +2388,7 @@ sp02A_crash_sound: @ 8081A1C ldr r0, _08081A2C @ =gSpecialVar_0x8006 ldrb r0, [r0] ldr r1, _08081A30 @ =CB2_ReturnToFieldContinueScriptPlayMapMusic - bl InitLinkPartnerTrainerCard + bl ShowTrainerCardInLink pop {r0} bx r0 .align 2, 0 @@ -2412,7 +2412,7 @@ sub_8081A34: @ 8081A34 adds r1, r2 bl StringCopy adds r0, r4, 0 - bl sub_808B1BC + bl GetTrainerCardStars lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0 diff --git a/asm/link_rfu_3.s b/asm/link_rfu_3.s index 1e076a55e..d1f18a8ae 100644 --- a/asm/link_rfu_3.s +++ b/asm/link_rfu_3.s @@ -3252,7 +3252,7 @@ _08117384: lsls r0, 24 lsrs r0, 24 ldr r1, _081173BC @ =CB2_ReturnToField - bl InitLinkPartnerTrainerCard + bl ShowTrainerCardInLink _081173A2: bl RunTasks bl RunTextPrinters @@ -3489,7 +3489,7 @@ sub_8117594: @ 8117594 push {r4,r5,lr} adds r4, r0, 0 adds r5, r1, 0 - bl sub_80898E8 + bl TrainerCard_GenerateCardForLinkPlayer cmp r5, 0 beq _081175AE bl sub_81440E8 diff --git a/asm/trainer_card.s b/asm/trainer_card.s deleted file mode 100644 index 1e97ba2de..000000000 --- a/asm/trainer_card.s +++ /dev/null @@ -1,5113 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_8088FF0 -sub_8088FF0: @ 8088FF0 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - bl sub_808B180 - ldr r0, _08089024 @ =gUnknown_20397A4 - ldr r0, [r0] - ldrb r0, [r0, 0x9] - cmp r0, 0 - beq _08089020 - ldr r1, _08089028 @ =0x040000d4 - ldr r0, _0808902C @ =gScanlineEffectRegBuffers - str r0, [r1] - movs r2, 0xF0 - lsls r2, 3 - adds r0, r2 - str r0, [r1, 0x4] - ldr r0, _08089030 @ =0x800000a0 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_08089020: - pop {r0} - bx r0 - .align 2, 0 -_08089024: .4byte gUnknown_20397A4 -_08089028: .4byte 0x040000d4 -_0808902C: .4byte gScanlineEffectRegBuffers -_08089030: .4byte 0x800000a0 - thumb_func_end sub_8088FF0 - - thumb_func_start sub_8089034 -sub_8089034: @ 8089034 - push {r4,lr} - ldr r4, _08089060 @ =0x04000208 - ldrh r3, [r4] - movs r0, 0 - strh r0, [r4] - ldr r1, _08089064 @ =gScanlineEffectRegBuffers - ldr r0, _08089068 @ =0x04000006 - ldrh r2, [r0] - movs r0, 0xFF - ands r0, r2 - lsls r0, 1 - movs r2, 0xF0 - lsls r2, 3 - adds r1, r2 - adds r0, r1 - ldrh r1, [r0] - ldr r0, _0808906C @ =0x04000012 - strh r1, [r0] - strh r3, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08089060: .4byte 0x04000208 -_08089064: .4byte gScanlineEffectRegBuffers -_08089068: .4byte 0x04000006 -_0808906C: .4byte 0x04000012 - thumb_func_end sub_8089034 - - thumb_func_start sub_8089070 -sub_8089070: @ 8089070 - push {lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_8089070 - - thumb_func_start sub_8089088 -sub_8089088: @ 8089088 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r5, _080890BC @ =gUnknown_20397A4 - ldr r0, [r5] - movs r1, 0x8B - lsls r1, 3 - adds r0, r1 - ldr r0, [r0] - bl SetMainCallback2 - bl FreeAllWindowBuffers - ldr r0, [r5] - bl Free - movs r0, 0 - str r0, [r5] - adds r0, r4, 0 - bl DestroyTask - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080890BC: .4byte gUnknown_20397A4 - thumb_func_end sub_8089088 - - thumb_func_start sub_80890C0 -sub_80890C0: @ 80890C0 - push {r4,r5,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080890E0 @ =gUnknown_20397A4 - ldr r0, [r1] - ldrb r0, [r0] - adds r4, r1, 0 - cmp r0, 0x10 - bls _080890D6 - b _08089416 -_080890D6: - lsls r0, 2 - ldr r1, _080890E4 @ =_080890E8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080890E0: .4byte gUnknown_20397A4 -_080890E4: .4byte _080890E8 - .align 2, 0 -_080890E8: - .4byte _0808912C - .4byte _08089142 - .4byte _08089150 - .4byte _08089158 - .4byte _0808916C - .4byte _08089180 - .4byte _08089194 - .4byte _0808919A - .4byte _080891DC - .4byte _08089208 - .4byte _08089224 - .4byte _080892E4 - .4byte _080892B8 - .4byte _080893F6 - .4byte _080893E4 - .4byte _0808937A - .4byte _080893B8 -_0808912C: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - beq _08089138 - b _08089416 -_08089138: - movs r0, 0x1 - movs r1, 0 - bl FillWindowPixelBuffer - b _08089214 -_08089142: - bl sub_8089DC8 - lsls r0, 24 - cmp r0, 0 - bne _0808914E - b _08089416 -_0808914E: - b _08089214 -_08089150: - movs r0, 0x1 - bl sub_808ACC8 - b _08089214 -_08089158: - movs r0, 0x2 - movs r1, 0 - bl FillWindowPixelBuffer - bl sub_808B838 - movs r0, 0x2 - bl sub_808ACC8 - b _08089214 -_0808916C: - ldr r0, [r4] - ldr r1, _0808917C @ =0x00000e1c - adds r0, r1 - bl sub_808AE94 - ldr r1, [r4] - b _08089218 - .align 2, 0 -_0808917C: .4byte 0x00000e1c -_08089180: - ldr r0, [r4] - ldr r1, _08089190 @ =0x000004bc - adds r0, r1 - bl sub_808AF04 - ldr r1, [r4] - b _08089218 - .align 2, 0 -_08089190: .4byte 0x000004bc -_08089194: - bl sub_808AF74 - b _08089214 -_0808919A: - ldr r0, _080891D0 @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0x1 - bne _080891B6 - ldr r0, _080891D4 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0x1 - bne _080891B6 - bl LoadWirelessStatusIndicatorSpriteGfx - movs r0, 0xE6 - movs r1, 0x96 - bl CreateWirelessStatusIndicatorSprite -_080891B6: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r0, _080891D8 @ =sub_8088FF0 - bl SetVBlankCallback - b _08089214 - .align 2, 0 -_080891D0: .4byte gWirelessCommType -_080891D4: .4byte gReceivedRemoteLinkPlayers -_080891D8: .4byte sub_8088FF0 -_080891DC: - bl UpdatePaletteFade - lsls r0, 24 - cmp r0, 0 - beq _080891E8 - b _08089416 -_080891E8: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - beq _080891F4 - b _08089416 -_080891F4: - movs r0, 0xF4 - bl PlaySE - ldr r0, _08089204 @ =gUnknown_20397A4 - ldr r1, [r0] - movs r0, 0xA - strb r0, [r1] - b _08089416 - .align 2, 0 -_08089204: .4byte gUnknown_20397A4 -_08089208: - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _08089214 - b _08089416 -_08089214: - ldr r0, _08089220 @ =gUnknown_20397A4 - ldr r1, [r0] -_08089218: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08089416 - .align 2, 0 -_08089220: .4byte gUnknown_20397A4 -_08089224: - ldr r0, _08089270 @ =gReceivedRemoteLinkPlayers - ldrb r5, [r0] - cmp r5, 0 - bne _0808924A - ldr r0, [r4] - ldr r1, _08089274 @ =0x00007bce - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _0808924A - bl sub_808A22C - movs r0, 0x1 - bl sub_808ACC8 - ldr r0, [r4] - ldr r1, _08089274 @ =0x00007bce - adds r0, r1 - strb r5, [r0] -_0808924A: - ldr r0, _08089278 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08089280 - movs r0, 0xB - bl HelpSystem_SetSomeVariable2 - bl sub_808B1D4 - movs r0, 0xF2 - bl PlaySE - ldr r0, _0808927C @ =gUnknown_20397A4 - ldr r1, [r0] - movs r0, 0xC - strb r0, [r1] - b _08089416 - .align 2, 0 -_08089270: .4byte gReceivedRemoteLinkPlayers -_08089274: .4byte 0x00007bce -_08089278: .4byte gMain -_0808927C: .4byte gUnknown_20397A4 -_08089280: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0808928A - b _08089416 -_0808928A: - ldr r0, _080892B0 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _080892A4 - ldr r4, _080892B4 @ =gUnknown_20397A4 - ldr r0, [r4] - ldrb r0, [r0, 0x5] - cmp r0, 0 - beq _080892A4 - bl InUnionRoom - cmp r0, 0x1 - beq _08089364 -_080892A4: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - b _080893C8 - .align 2, 0 -_080892B0: .4byte gReceivedRemoteLinkPlayers -_080892B4: .4byte gUnknown_20397A4 -_080892B8: - bl sub_808B1FC - lsls r0, 24 - cmp r0, 0 - bne _080892C4 - b _08089416 -_080892C4: - bl sub_8058244 - cmp r0, 0x1 - bne _080892CE - b _08089416 -_080892CE: - movs r0, 0xF4 - bl PlaySE - ldr r0, _080892E0 @ =gUnknown_20397A4 - ldr r1, [r0] - movs r0, 0xB - strb r0, [r1] - b _08089416 - .align 2, 0 -_080892E0: .4byte gUnknown_20397A4 -_080892E4: - ldr r0, _0808931C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08089344 - ldr r0, _08089320 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _08089324 - ldr r0, [r4] - ldrb r0, [r0, 0x5] - cmp r0, 0 - beq _08089308 - bl InUnionRoom - cmp r0, 0x1 - beq _08089364 -_08089308: - ldr r0, _08089320 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _08089324 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - b _080893C8 - .align 2, 0 -_0808931C: .4byte gMain -_08089320: .4byte gReceivedRemoteLinkPlayers -_08089324: - movs r0, 0xA - bl HelpSystem_SetSomeVariable2 - bl sub_808B1D4 - ldr r0, _08089340 @ =gUnknown_20397A4 - ldr r1, [r0] - movs r0, 0xD - strb r0, [r1] - movs r0, 0xF2 - bl PlaySE - b _08089416 - .align 2, 0 -_08089340: .4byte gUnknown_20397A4 -_08089344: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08089416 - ldr r0, _0808936C @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _08089370 - ldr r0, [r4] - ldrb r0, [r0, 0x5] - cmp r0, 0 - beq _08089370 - bl InUnionRoom - cmp r0, 0x1 - bne _08089370 -_08089364: - ldr r1, [r4] - movs r0, 0xF - strb r0, [r1] - b _08089416 - .align 2, 0 -_0808936C: .4byte gReceivedRemoteLinkPlayers -_08089370: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - b _080893C8 -_0808937A: - bl sub_800AAC0 - movs r0, 0 - movs r1, 0x1 - bl DrawDialogueFrame - ldr r2, _080893B0 @ =gUnknown_8419D89 - movs r0, 0x1 - str r0, [sp] - movs r0, 0xFF - str r0, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - movs r1, 0x2 - movs r3, 0 - bl AddTextPrinterParameterized - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - ldr r0, _080893B4 @ =gUnknown_20397A4 - ldr r1, [r0] - movs r0, 0x10 - strb r0, [r1] - b _08089416 - .align 2, 0 -_080893B0: .4byte gUnknown_8419D89 -_080893B4: .4byte gUnknown_20397A4 -_080893B8: - ldr r0, _080893DC @ =gReceivedRemoteLinkPlayers - ldrb r1, [r0] - cmp r1, 0 - bne _08089416 - movs r0, 0x1 - negs r0, r0 - str r1, [sp] - movs r1, 0 -_080893C8: - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _080893E0 @ =gUnknown_20397A4 - ldr r1, [r0] - movs r0, 0xE - strb r0, [r1] - b _08089416 - .align 2, 0 -_080893DC: .4byte gReceivedRemoteLinkPlayers -_080893E0: .4byte gUnknown_20397A4 -_080893E4: - bl UpdatePaletteFade - lsls r0, 24 - cmp r0, 0 - bne _08089416 - adds r0, r5, 0 - bl sub_8089088 - b _08089416 -_080893F6: - bl sub_808B1FC - lsls r0, 24 - cmp r0, 0 - beq _08089416 - bl sub_8058244 - cmp r0, 0x1 - beq _08089416 - ldr r0, _08089420 @ =gUnknown_20397A4 - ldr r1, [r0] - movs r0, 0xA - strb r0, [r1] - movs r0, 0xF4 - bl PlaySE -_08089416: - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08089420: .4byte gUnknown_20397A4 - thumb_func_end sub_80890C0 - - thumb_func_start sub_8089424 -sub_8089424: @ 8089424 - push {lr} - ldr r0, _0808943C @ =gUnknown_20397A4 - ldr r1, [r0] - ldrb r0, [r1, 0x2] - cmp r0, 0x5 - bls _08089432 - b _0808959C -_08089432: - lsls r0, 2 - ldr r1, _08089440 @ =_08089444 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0808943C: .4byte gUnknown_20397A4 -_08089440: .4byte _08089444 - .align 2, 0 -_08089444: - .4byte _0808945C - .4byte _08089490 - .4byte _080894C4 - .4byte _08089524 - .4byte _0808953C - .4byte _08089570 -_0808945C: - ldr r0, _08089470 @ =gUnknown_20397A4 - ldr r1, [r0] - ldr r2, _08089474 @ =0x00000457 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x1 - bne _08089480 - ldr r0, _08089478 @ =gUnknown_83CCE30 - ldr r2, _0808947C @ =0x00000e1c - b _08089582 - .align 2, 0 -_08089470: .4byte gUnknown_20397A4 -_08089474: .4byte 0x00000457 -_08089478: .4byte gUnknown_83CCE30 -_0808947C: .4byte 0x00000e1c -_08089480: - ldr r0, _08089488 @ =gUnknown_83CCEC8 - ldr r2, _0808948C @ =0x00000e1c - b _08089582 - .align 2, 0 -_08089488: .4byte gUnknown_83CCEC8 -_0808948C: .4byte 0x00000e1c -_08089490: - ldr r0, _080894A4 @ =gUnknown_20397A4 - ldr r1, [r0] - ldr r2, _080894A8 @ =0x00000457 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080894B4 - ldr r0, _080894AC @ =gUnknown_83CC8A8 - ldr r2, _080894B0 @ =0x0000096c - b _08089582 - .align 2, 0 -_080894A4: .4byte gUnknown_20397A4 -_080894A8: .4byte 0x00000457 -_080894AC: .4byte gUnknown_83CC8A8 -_080894B0: .4byte 0x0000096c -_080894B4: - ldr r0, _080894BC @ =gUnknown_83CC984 - ldr r2, _080894C0 @ =0x0000096c - b _08089582 - .align 2, 0 -_080894BC: .4byte gUnknown_83CC984 -_080894C0: .4byte 0x0000096c -_080894C4: - ldr r0, _080894E0 @ =gUnknown_20397A4 - ldr r1, [r0] - ldrb r0, [r1, 0x5] - cmp r0, 0 - bne _080894FC - ldr r2, _080894E4 @ =0x00000457 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080894EC - ldr r0, _080894E8 @ =gUnknown_83CC4DC - adds r2, 0x65 - b _08089582 - .align 2, 0 -_080894E0: .4byte gUnknown_20397A4 -_080894E4: .4byte 0x00000457 -_080894E8: .4byte gUnknown_83CC4DC -_080894EC: - ldr r0, _080894F4 @ =gUnknown_83CC6F0 - ldr r2, _080894F8 @ =0x000004bc - b _08089582 - .align 2, 0 -_080894F4: .4byte gUnknown_83CC6F0 -_080894F8: .4byte 0x000004bc -_080894FC: - ldr r2, _0808950C @ =0x00000457 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x1 - bne _08089514 - ldr r0, _08089510 @ =gUnknown_83CCAB0 - adds r2, 0x65 - b _08089582 - .align 2, 0 -_0808950C: .4byte 0x00000457 -_08089510: .4byte gUnknown_83CCAB0 -_08089514: - ldr r0, _0808951C @ =gUnknown_83CCCA4 - ldr r2, _08089520 @ =0x000004bc - b _08089582 - .align 2, 0 -_0808951C: .4byte gUnknown_83CCCA4 -_08089520: .4byte 0x000004bc -_08089524: - ldr r0, _08089530 @ =gUnknown_83CD5E8 - ldr r1, _08089534 @ =gUnknown_20397A4 - ldr r1, [r1] - ldr r2, _08089538 @ =0x000012cc - b _08089582 - .align 2, 0 -_08089530: .4byte gUnknown_83CD5E8 -_08089534: .4byte gUnknown_20397A4 -_08089538: .4byte 0x000012cc -_0808953C: - ldr r0, _08089550 @ =gUnknown_20397A4 - ldr r1, [r0] - ldr r2, _08089554 @ =0x00000457 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x1 - bne _08089560 - ldr r0, _08089558 @ =gUnknown_8E998CC - ldr r2, _0808955C @ =0x000018cc - b _08089582 - .align 2, 0 -_08089550: .4byte gUnknown_20397A4 -_08089554: .4byte 0x00000457 -_08089558: .4byte gUnknown_8E998CC -_0808955C: .4byte 0x000018cc -_08089560: - ldr r0, _08089568 @ =gUnknown_8E991F8 - ldr r2, _0808956C @ =0x000018cc - b _08089582 - .align 2, 0 -_08089568: .4byte gUnknown_8E991F8 -_0808956C: .4byte 0x000018cc -_08089570: - ldr r0, _0808958C @ =gUnknown_20397A4 - ldr r1, [r0] - ldr r2, _08089590 @ =0x00000457 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _080895A4 - ldr r0, _08089594 @ =gUnknown_83CC368 - ldr r2, _08089598 @ =0x000016cc -_08089582: - adds r1, r2 - bl LZ77UnCompWram - b _080895A4 - .align 2, 0 -_0808958C: .4byte gUnknown_20397A4 -_08089590: .4byte 0x00000457 -_08089594: .4byte gUnknown_83CC368 -_08089598: .4byte 0x000016cc -_0808959C: - movs r0, 0 - strb r0, [r1, 0x2] - movs r0, 0x1 - b _080895B0 -_080895A4: - ldr r0, _080895B4 @ =gUnknown_20397A4 - ldr r1, [r0] - ldrb r0, [r1, 0x2] - adds r0, 0x1 - strb r0, [r1, 0x2] - movs r0, 0 -_080895B0: - pop {r1} - bx r1 - .align 2, 0 -_080895B4: .4byte gUnknown_20397A4 - thumb_func_end sub_8089424 - - thumb_func_start sub_80895B8 -sub_80895B8: @ 80895B8 - push {lr} - ldr r1, _080895D8 @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r0, r1, r2 - ldrb r0, [r0] - adds r2, r1, 0 - cmp r0, 0xD - bls _080895CC - b _0808973A -_080895CC: - lsls r0, 2 - ldr r1, _080895DC @ =_080895E0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080895D8: .4byte gMain -_080895DC: .4byte _080895E0 - .align 2, 0 -_080895E0: - .4byte _08089618 - .4byte _08089630 - .4byte _08089644 - .4byte _08089658 - .4byte _0808966A - .4byte _0808967C - .4byte _08089690 - .4byte _080896A4 - .4byte _080896B8 - .4byte _080896D4 - .4byte _080896E8 - .4byte _080896FC - .4byte _08089710 - .4byte _0808972C -_08089618: - bl sub_8089C3C - bl sub_8089DA4 - ldr r1, _0808962C @ =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - b _08089732 - .align 2, 0 -_0808962C: .4byte gMain -_08089630: - bl nullsub_51 - ldr r1, _08089640 @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r1, r2 - b _08089732 - .align 2, 0 -_08089640: .4byte gMain -_08089644: - bl sub_8089C5C - ldr r1, _08089654 @ =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - b _08089732 - .align 2, 0 -_08089654: .4byte gMain -_08089658: - bl sub_8089C80 - ldr r1, _08089678 @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r1, r2 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0808966A: - bl sub_8089CA4 - ldr r1, _08089678 @ =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - b _08089732 - .align 2, 0 -_08089678: .4byte gMain -_0808967C: - bl sub_8089D0C - ldr r1, _0808968C @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r1, r2 - b _08089732 - .align 2, 0 -_0808968C: .4byte gMain -_08089690: - bl LoadStdWindowFrameGfx - ldr r1, _080896A0 @ =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - b _08089732 - .align 2, 0 -_080896A0: .4byte gMain -_080896A4: - bl sub_808AB10 - ldr r1, _080896B4 @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r1, r2 - b _08089732 - .align 2, 0 -_080896B4: .4byte gMain -_080896B8: - bl sub_8089424 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808973E - ldr r1, _080896D0 @ =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - b _08089732 - .align 2, 0 -_080896D0: .4byte gMain -_080896D4: - bl sub_808AC6C - ldr r1, _080896E4 @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r1, r2 - b _08089732 - .align 2, 0 -_080896E4: .4byte gMain -_080896E8: - bl sub_8089B64 - ldr r1, _080896F8 @ =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - b _08089732 - .align 2, 0 -_080896F8: .4byte gMain -_080896FC: - bl sub_8089ECC - ldr r1, _0808970C @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r1, r2 - b _08089732 - .align 2, 0 -_0808970C: .4byte gMain -_08089710: - bl sub_808ACE4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0808973E - ldr r1, _08089728 @ =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - b _08089732 - .align 2, 0 -_08089728: .4byte gMain -_0808972C: - movs r0, 0x87 - lsls r0, 3 - adds r1, r2, r0 -_08089732: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0808973E -_0808973A: - bl sub_8089D8C -_0808973E: - pop {r0} - bx r0 - thumb_func_end sub_80895B8 - - thumb_func_start sav12_xor_get_clamped_above -sav12_xor_get_clamped_above: @ 8089744 - push {r4,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r0, 24 - bl GetGameStat - cmp r0, r4 - bls _08089756 - adds r0, r4, 0 -_08089756: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sav12_xor_get_clamped_above - - thumb_func_start sub_808975C -sub_808975C: @ 808975C - push {lr} - adds r1, r0, 0 - movs r2, 0 - ldrh r0, [r1, 0x6] - cmp r0, 0 - bne _0808976E - ldr r0, [r1, 0x8] - cmp r0, 0 - beq _08089770 -_0808976E: - movs r2, 0x1 -_08089770: - ldrb r0, [r1, 0x3] - cmp r0, 0 - beq _0808977C - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 -_0808977C: - ldrh r0, [r1, 0x1A] - cmp r0, 0x31 - bls _08089788 - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 -_08089788: - ldrb r0, [r1, 0x4] - cmp r0, 0 - beq _08089794 - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 -_08089794: - adds r0, r2, 0 - pop {r1} - bx r1 - thumb_func_end sub_808975C - - thumb_func_start sub_808979C -sub_808979C: @ 808979C - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r5, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - ldr r7, _08089888 @ =gSaveBlock2Ptr - ldr r1, [r7] - ldrb r0, [r1, 0x8] - movs r6, 0 - strb r0, [r5] - ldrh r0, [r1, 0xE] - strh r0, [r5, 0x10] - ldrb r0, [r1, 0x10] - strh r0, [r5, 0x12] - movs r0, 0x1 - bl GetGameStat - adds r4, r0, 0 - movs r0, 0xA - bl GetGameStat - cmp r0, 0 - bne _080897D0 - movs r4, 0 -_080897D0: - lsrs r0, r4, 16 - strh r0, [r5, 0x6] - lsrs r1, r4, 8 - movs r2, 0xFF - ands r1, r2 - strh r1, [r5, 0x8] - ands r4, r2 - strh r4, [r5, 0xA] - ldr r1, _0808988C @ =0x000003e7 - cmp r0, r1 - bls _080897EE - strh r1, [r5, 0x6] - movs r0, 0x3B - strh r0, [r5, 0x8] - strh r0, [r5, 0xA] -_080897EE: - ldr r0, _08089890 @ =0x00000829 - bl FlagGet - strb r0, [r5, 0x2] - bl HasAllHoennMons - strb r0, [r5, 0x3] - bl sub_808A0E0 - strh r0, [r5, 0xC] - ldr r0, [r7] - ldrb r1, [r0, 0xB] - lsls r1, 8 - ldrb r0, [r0, 0xA] - orrs r0, r1 - strh r0, [r5, 0xE] - ldr r4, _08089894 @ =0x0000270f - movs r0, 0x17 - adds r1, r4, 0 - bl sav12_xor_get_clamped_above - strh r0, [r5, 0x14] - movs r0, 0x18 - adds r1, r4, 0 - bl sav12_xor_get_clamped_above - strh r0, [r5, 0x16] - ldr r1, _08089898 @ =0x0000ffff - movs r0, 0x15 - bl sav12_xor_get_clamped_above - strh r0, [r5, 0x20] - strh r6, [r5, 0x18] - strh r6, [r5, 0x1A] - strh r6, [r5, 0x1C] - strh r6, [r5, 0x1E] - movs r0, 0 - strb r0, [r5, 0x4] - ldr r4, _0808989C @ =gSaveBlock1Ptr - ldr r0, [r4] - movs r1, 0xA4 - lsls r1, 2 - adds r0, r1 - bl GetMoney - str r0, [r5, 0x24] - movs r2, 0 - adds r7, r5, 0 - adds r7, 0x30 - adds r6, r5, 0 - adds r6, 0x28 - ldr r0, [r4] - ldr r1, _080898A0 @ =0x00002ca0 - adds r3, r0, r1 -_0808985A: - lsls r0, r2, 1 - adds r1, r6, r0 - adds r0, r3, r0 - ldrh r0, [r0] - strh r0, [r1] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x3 - bls _0808985A - ldr r0, _08089888 @ =gSaveBlock2Ptr - ldr r1, [r0] - adds r0, r7, 0 - bl StringCopy - mov r0, r8 - cmp r0, 0 - bne _080898A4 - adds r0, r5, 0 - bl sub_808975C - b _080898DC - .align 2, 0 -_08089888: .4byte gSaveBlock2Ptr -_0808988C: .4byte 0x000003e7 -_08089890: .4byte 0x00000829 -_08089894: .4byte 0x0000270f -_08089898: .4byte 0x0000ffff -_0808989C: .4byte gSaveBlock1Ptr -_080898A0: .4byte 0x00002ca0 -_080898A4: - mov r1, r8 - cmp r1, 0x1 - bne _080898DE - movs r0, 0 - strb r0, [r5, 0x1] - ldrh r0, [r5, 0x6] - cmp r0, 0 - bne _080898BA - ldr r0, [r5, 0x8] - cmp r0, 0 - beq _080898BE -_080898BA: - mov r0, r8 - strb r0, [r5, 0x1] -_080898BE: - bl HasAllKantoMons - lsls r0, 16 - cmp r0, 0 - beq _080898CE - ldrb r0, [r5, 0x1] - adds r0, 0x1 - strb r0, [r5, 0x1] -_080898CE: - bl HasAllMons - lsls r0, 16 - cmp r0, 0 - beq _080898DE - ldrb r0, [r5, 0x1] - adds r0, 0x1 -_080898DC: - strb r0, [r5, 0x1] -_080898DE: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_808979C - - thumb_func_start sub_80898E8 -sub_80898E8: @ 80898E8 - push {r4-r6,lr} - adds r5, r0, 0 - movs r4, 0 - adds r1, r5, 0 - adds r1, 0x38 - movs r0, 0x4 - strb r0, [r1] - adds r0, r5, 0 - movs r1, 0x1 - bl sub_808979C - bl sub_808B800 - lsls r0, 24 - cmp r0, 0 - beq _0808990A - b _08089A60 -_0808990A: - strb r4, [r5, 0x1] - ldrh r0, [r5, 0x6] - cmp r0, 0 - bne _08089918 - ldr r0, [r5, 0x8] - cmp r0, 0 - beq _0808991C -_08089918: - movs r0, 0x1 - strb r0, [r5, 0x1] -_0808991C: - bl HasAllKantoMons - strb r0, [r5, 0x3] - bl HasAllMons - adds r6, r5, 0 - adds r6, 0x4D - strb r0, [r6] - ldr r0, _0808999C @ =gSaveBlock2Ptr - ldr r0, [r0] - ldr r2, _080899A0 @ =0x00000b14 - adds r1, r0, r2 - ldrh r1, [r1] - str r1, [r5, 0x44] - movs r1, 0xB0 - lsls r1, 4 - adds r0, r1 - ldrh r0, [r0] - str r0, [r5, 0x48] - ldr r4, _080899A4 @ =0x0000ffff - movs r0, 0x33 - adds r1, r4, 0 - bl sav12_xor_get_clamped_above - str r0, [r5, 0x3C] - movs r0, 0x32 - adds r1, r4, 0 - bl sav12_xor_get_clamped_above - str r0, [r5, 0x40] - adds r1, r5, 0 - adds r1, 0x4C - movs r0, 0x1 - strb r0, [r1] - ldrb r0, [r5, 0x3] - cmp r0, 0 - beq _0808996C - ldrb r0, [r5, 0x1] - adds r0, 0x1 - strb r0, [r5, 0x1] -_0808996C: - ldrb r0, [r6] - cmp r0, 0 - beq _08089978 - ldrb r0, [r5, 0x1] - adds r0, 0x1 - strb r0, [r5, 0x1] -_08089978: - ldr r0, [r5, 0x44] - cmp r0, 0xC7 - bls _0808998A - ldr r0, [r5, 0x48] - cmp r0, 0xC7 - bls _0808998A - ldrb r0, [r5, 0x1] - adds r0, 0x1 - strb r0, [r5, 0x1] -_0808998A: - ldrh r4, [r5, 0xE] - movs r0, 0x7 - ands r4, r0 - ldrb r0, [r5] - cmp r0, 0x1 - bne _080899AC - ldr r0, _080899A8 @ =gUnknown_83CD8F8 - adds r0, 0x8 - b _080899AE - .align 2, 0 -_0808999C: .4byte gSaveBlock2Ptr -_080899A0: .4byte 0x00000b14 -_080899A4: .4byte 0x0000ffff -_080899A8: .4byte gUnknown_83CD8F8 -_080899AC: - ldr r0, _08089A68 @ =gUnknown_83CD8F8 -_080899AE: - adds r0, r4, r0 - ldrb r0, [r0] - adds r1, r5, 0 - adds r1, 0x4F - strb r0, [r1] - ldr r0, _08089A6C @ =0x00004049 - bl VarGet - adds r1, r5, 0 - adds r1, 0x50 - strb r0, [r1] - ldr r0, _08089A70 @ =0x0000404a - bl VarGet - adds r1, r5, 0 - adds r1, 0x51 - strb r0, [r1] - ldr r0, _08089A74 @ =0x0000404b - bl VarGet - adds r1, r5, 0 - adds r1, 0x52 - strb r0, [r1] - ldr r0, _08089A78 @ =0x00004042 - bl VarGet - adds r1, r5, 0 - adds r1, 0x4E - strb r0, [r1] - ldr r0, _08089A7C @ =0x00004043 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - bl MailSpeciesToIconSpecies - adds r1, r5, 0 - adds r1, 0x54 - strh r0, [r1] - ldr r0, _08089A80 @ =0x00004044 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - bl MailSpeciesToIconSpecies - adds r1, r5, 0 - adds r1, 0x56 - strh r0, [r1] - ldr r0, _08089A84 @ =0x00004045 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - bl MailSpeciesToIconSpecies - adds r1, r5, 0 - adds r1, 0x58 - strh r0, [r1] - ldr r0, _08089A88 @ =0x00004046 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - bl MailSpeciesToIconSpecies - adds r1, r5, 0 - adds r1, 0x5A - strh r0, [r1] - ldr r0, _08089A8C @ =0x00004047 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - bl MailSpeciesToIconSpecies - adds r1, r5, 0 - adds r1, 0x5C - strh r0, [r1] - ldr r0, _08089A90 @ =0x00004048 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - bl MailSpeciesToIconSpecies - adds r1, r5, 0 - adds r1, 0x5E - strh r0, [r1] -_08089A60: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08089A68: .4byte gUnknown_83CD8F8 -_08089A6C: .4byte 0x00004049 -_08089A70: .4byte 0x0000404a -_08089A74: .4byte 0x0000404b -_08089A78: .4byte 0x00004042 -_08089A7C: .4byte 0x00004043 -_08089A80: .4byte 0x00004044 -_08089A84: .4byte 0x00004045 -_08089A88: .4byte 0x00004046 -_08089A8C: .4byte 0x00004047 -_08089A90: .4byte 0x00004048 - thumb_func_end sub_80898E8 - - thumb_func_start sub_8089A94 -sub_8089A94: @ 8089A94 - push {r4,r5,lr} - ldr r4, _08089B4C @ =gUnknown_20397A4 - ldr r0, [r4] - movs r1, 0 - strb r1, [r0, 0xA] - ldr r0, [r4] - strb r1, [r0, 0xB] - ldr r0, [r4] - strb r1, [r0, 0xC] - ldr r0, [r4] - strb r1, [r0, 0xD] - ldr r0, [r4] - strb r1, [r0, 0xE] - ldr r0, [r4] - strb r1, [r0, 0xF] - ldr r0, [r4] - strb r1, [r0, 0x10] - ldr r0, [r4] - adds r0, 0x11 - movs r2, 0x8 - bl memset - ldr r1, [r4] - ldr r2, _08089B50 @ =0x0000045e - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _08089AD2 - ldrb r0, [r1, 0xA] - adds r0, 0x1 - strb r0, [r1, 0xA] -_08089AD2: - ldr r1, [r4] - ldr r3, _08089B54 @ =0x00000462 - adds r0, r1, r3 - ldrh r0, [r0] - cmp r0, 0 - bne _08089AE8 - ldr r2, _08089B58 @ =0x00000464 - adds r0, r1, r2 - ldr r0, [r0] - cmp r0, 0 - beq _08089AEE -_08089AE8: - ldrb r0, [r1, 0xB] - adds r0, 0x1 - strb r0, [r1, 0xB] -_08089AEE: - ldr r2, _08089B4C @ =gUnknown_20397A4 - ldr r1, [r2] - movs r3, 0x8E - lsls r3, 3 - adds r0, r1, r3 - ldr r0, [r0] - cmp r0, 0 - beq _08089B04 - ldrb r0, [r1, 0xC] - adds r0, 0x1 - strb r0, [r1, 0xC] -_08089B04: - ldr r1, [r2] - ldr r2, _08089B5C @ =0x0000047c - adds r0, r1, r2 - ldrh r0, [r0] - cmp r0, 0 - beq _08089B16 - ldrb r0, [r1, 0x10] - adds r0, 0x1 - strb r0, [r1, 0x10] -_08089B16: - movs r5, 0 - movs r4, 0x82 - lsls r4, 4 -_08089B1C: - lsls r0, r4, 16 - lsrs r0, 16 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _08089B38 - ldr r0, _08089B4C @ =gUnknown_20397A4 - ldr r1, [r0] - adds r1, 0x11 - adds r1, r5 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_08089B38: - adds r4, 0x1 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _08089B60 @ =0x00000827 - cmp r4, r0 - bls _08089B1C - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08089B4C: .4byte gUnknown_20397A4 -_08089B50: .4byte 0x0000045e -_08089B54: .4byte 0x00000462 -_08089B58: .4byte 0x00000464 -_08089B5C: .4byte 0x0000047c -_08089B60: .4byte 0x00000827 - thumb_func_end sub_8089A94 - - thumb_func_start sub_8089B64 -sub_8089B64: @ 8089B64 - push {lr} - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - movs r0, 0x3 - bl ShowBg - movs r1, 0xFD - lsls r1, 6 - movs r0, 0 - bl SetGpuReg - movs r0, 0x50 - movs r1, 0xC1 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - movs r0, 0x48 - movs r1, 0x3F - bl SetGpuReg - movs r0, 0x4A - movs r1, 0x1E - bl SetGpuReg - movs r0, 0x44 - movs r1, 0xA0 - bl SetGpuReg - movs r0, 0x40 - movs r1, 0xF0 - bl SetGpuReg - ldr r0, _08089BC8 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _08089BCC - movs r0, 0xC7 - bl EnableInterrupts - b _08089BD2 - .align 2, 0 -_08089BC8: .4byte gReceivedRemoteLinkPlayers -_08089BCC: - movs r0, 0x3 - bl EnableInterrupts -_08089BD2: - pop {r0} - bx r0 - thumb_func_end sub_8089B64 - - thumb_func_start sub_8089BD8 -sub_8089BD8: @ 8089BD8 - push {r4,lr} - lsls r0, 16 - lsrs r0, 16 - adds r0, 0x28 - movs r1, 0xA - bl __divsi3 - lsls r0, 24 - lsrs r2, r0, 24 - asrs r0, 24 - cmp r0, 0x4 - bgt _08089BF2 - movs r2, 0 -_08089BF2: - ldr r4, _08089C30 @ =gUnknown_20397A4 - ldr r0, [r4] - ldr r1, _08089C34 @ =0x00000456 - adds r0, r1 - strb r2, [r0] - ldr r0, [r4] - adds r0, r1 - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x54 - bl SetGpuReg - ldr r0, [r4] - ldr r1, _08089C38 @ =0x00007bcc - adds r0, r1 - ldrh r2, [r0] - lsls r1, r2, 8 - movs r0, 0xA0 - subs r0, r2 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x44 - bl SetGpuReg - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08089C30: .4byte gUnknown_20397A4 -_08089C34: .4byte 0x00000456 -_08089C38: .4byte 0x00007bcc - thumb_func_end sub_8089BD8 - - thumb_func_start sub_8089C3C -sub_8089C3C: @ 8089C3C - push {lr} - movs r0, 0 - bl SetVBlankCallback - movs r0, 0 - bl SetHBlankCallback - movs r0, 0 - movs r1, 0 - bl SetGpuReg - pop {r0} - bx r0 - thumb_func_end sub_8089C3C - - thumb_func_start nullsub_51 -nullsub_51: @ 8089C58 - bx lr - thumb_func_end nullsub_51 - - thumb_func_start sub_8089C5C -sub_8089C5C: @ 8089C5C - sub sp, 0x4 - movs r1, 0xE0 - lsls r1, 19 - movs r0, 0 - str r0, [sp] - ldr r0, _08089C78 @ =0x040000d4 - mov r2, sp - str r2, [r0] - str r1, [r0, 0x4] - ldr r1, _08089C7C @ =0x85000100 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - add sp, 0x4 - bx lr - .align 2, 0 -_08089C78: .4byte 0x040000d4 -_08089C7C: .4byte 0x85000100 - thumb_func_end sub_8089C5C - - thumb_func_start sub_8089C80 -sub_8089C80: @ 8089C80 - sub sp, 0x4 - movs r2, 0xA0 - lsls r2, 19 - mov r1, sp - movs r0, 0 - strh r0, [r1] - ldr r0, _08089C9C @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _08089CA0 @ =0x81000200 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - add sp, 0x4 - bx lr - .align 2, 0 -_08089C9C: .4byte 0x040000d4 -_08089CA0: .4byte 0x81000200 - thumb_func_end sub_8089C80 - - thumb_func_start sub_8089CA4 -sub_8089CA4: @ 8089CA4 - push {lr} - movs r0, 0x8 - movs r1, 0 - bl SetGpuReg - movs r0, 0xA - movs r1, 0 - bl SetGpuReg - movs r0, 0xC - movs r1, 0 - bl SetGpuReg - movs r0, 0xE - movs r1, 0 - bl SetGpuReg - movs r0, 0x10 - movs r1, 0 - bl SetGpuReg - movs r0, 0x12 - movs r1, 0 - bl SetGpuReg - movs r0, 0x14 - movs r1, 0 - bl SetGpuReg - movs r0, 0x16 - movs r1, 0 - bl SetGpuReg - movs r0, 0x18 - movs r1, 0 - bl SetGpuReg - movs r0, 0x1A - movs r1, 0 - bl SetGpuReg - movs r0, 0x1C - movs r1, 0 - bl SetGpuReg - movs r0, 0x1E - movs r1, 0 - bl SetGpuReg - pop {r0} - bx r0 - thumb_func_end sub_8089CA4 - - thumb_func_start sub_8089D0C -sub_8089D0C: @ 8089D0C - push {lr} - bl ResetSpriteData - bl ResetPaletteFade - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, _08089D84 @ =gUnknown_83CD888 - movs r0, 0 - movs r2, 0x4 - bl InitBgsFromTemplates - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - ldr r0, _08089D88 @ =gUnknown_83CD898 - bl InitWindows - bl DeactivateAllTextPrinters - pop {r0} - bx r0 - .align 2, 0 -_08089D84: .4byte gUnknown_83CD888 -_08089D88: .4byte gUnknown_83CD898 - thumb_func_end sub_8089D0C - - thumb_func_start sub_8089D8C -sub_8089D8C: @ 8089D8C - push {lr} - ldr r0, _08089DA0 @ =sub_8089070 - bl SetMainCallback2 - movs r0, 0xA - bl HelpSystem_SetSomeVariable2 - pop {r0} - bx r0 - .align 2, 0 -_08089DA0: .4byte sub_8089070 - thumb_func_end sub_8089D8C - - thumb_func_start sub_8089DA4 -sub_8089DA4: @ 8089DA4 - push {lr} - bl ResetTasks - bl ScanlineEffect_Stop - ldr r0, _08089DC4 @ =sub_80890C0 - movs r1, 0 - bl CreateTask - bl sub_808B774 - bl sub_8089A94 - pop {r0} - bx r0 - .align 2, 0 -_08089DC4: .4byte sub_80890C0 - thumb_func_end sub_8089DA4 - - thumb_func_start sub_8089DC8 -sub_8089DC8: @ 8089DC8 - push {lr} - ldr r0, _08089DE0 @ =gUnknown_20397A4 - ldr r1, [r0] - ldrb r0, [r1, 0x1] - cmp r0, 0x5 - bhi _08089E24 - lsls r0, 2 - ldr r1, _08089DE4 @ =_08089DE8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08089DE0: .4byte gUnknown_20397A4 -_08089DE4: .4byte _08089DE8 - .align 2, 0 -_08089DE8: - .4byte _08089E00 - .4byte _08089E06 - .4byte _08089E0C - .4byte _08089E12 - .4byte _08089E18 - .4byte _08089E1E -_08089E00: - bl sub_8089EEC - b _08089E2C -_08089E06: - bl sub_8089F78 - b _08089E2C -_08089E0C: - bl sub_8089FEC - b _08089E2C -_08089E12: - bl sub_808A100 - b _08089E2C -_08089E18: - bl sub_808A22C - b _08089E2C -_08089E1E: - bl sub_808A3D0 - b _08089E2C -_08089E24: - movs r0, 0 - strb r0, [r1, 0x1] - movs r0, 0x1 - b _08089E38 -_08089E2C: - ldr r0, _08089E3C @ =gUnknown_20397A4 - ldr r1, [r0] - ldrb r0, [r1, 0x1] - adds r0, 0x1 - strb r0, [r1, 0x1] - movs r0, 0 -_08089E38: - pop {r1} - bx r1 - .align 2, 0 -_08089E3C: .4byte gUnknown_20397A4 - thumb_func_end sub_8089DC8 - - thumb_func_start sub_8089E40 -sub_8089E40: @ 8089E40 - push {lr} - ldr r0, _08089E58 @ =gUnknown_20397A4 - ldr r1, [r0] - ldrb r0, [r1, 0x1] - cmp r0, 0x7 - bhi _08089EB0 - lsls r0, 2 - ldr r1, _08089E5C @ =_08089E60 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08089E58: .4byte gUnknown_20397A4 -_08089E5C: .4byte _08089E60 - .align 2, 0 -_08089E60: - .4byte _08089E80 - .4byte _08089E86 - .4byte _08089E8C - .4byte _08089E92 - .4byte _08089E98 - .4byte _08089E9E - .4byte _08089EA4 - .4byte _08089EAA -_08089E80: - bl sub_808A4FC - b _08089EB8 -_08089E86: - bl sub_808A654 - b _08089EB8 -_08089E8C: - bl sub_808A760 - b _08089EB8 -_08089E92: - bl sub_808A854 - b _08089EB8 -_08089E98: - bl sub_808A91C - b _08089EB8 -_08089E9E: - bl sub_808A9F0 - b _08089EB8 -_08089EA4: - bl sub_808AA78 - b _08089EB8 -_08089EAA: - bl sub_808ABE0 - b _08089EB8 -_08089EB0: - movs r0, 0 - strb r0, [r1, 0x1] - movs r0, 0x1 - b _08089EC4 -_08089EB8: - ldr r0, _08089EC8 @ =gUnknown_20397A4 - ldr r1, [r0] - ldrb r0, [r1, 0x1] - adds r0, 0x1 - strb r0, [r1, 0x1] - movs r0, 0 -_08089EC4: - pop {r1} - bx r1 - .align 2, 0 -_08089EC8: .4byte gUnknown_20397A4 - thumb_func_end sub_8089E40 - - thumb_func_start sub_8089ECC -sub_8089ECC: @ 8089ECC - push {lr} - bl sub_808A4A8 - bl sub_808A5B8 - bl sub_808A6C8 - bl sub_808A810 - bl sub_808A8D0 - bl sub_808A9A4 - pop {r0} - bx r0 - thumb_func_end sub_8089ECC - - thumb_func_start sub_8089EEC -sub_8089EEC: @ 8089EEC - push {r4,r5,lr} - sub sp, 0x4C - ldr r1, _08089F54 @ =gUnknown_8419CDA - add r0, sp, 0xC - bl StringCopy - add r4, sp, 0x2C - ldr r5, _08089F58 @ =gUnknown_20397A4 - ldr r1, [r5] - ldr r0, _08089F5C @ =0x0000048c - adds r1, r0 - adds r0, r4, 0 - bl StringCopy - ldr r0, [r5] - ldr r1, _08089F60 @ =0x00007bcf - adds r0, r1 - ldrb r1, [r0] - adds r0, r4, 0 - bl ConvertInternationalString - add r0, sp, 0xC - adds r1, r4, 0 - bl StringAppend - ldr r0, _08089F64 @ =gUnknown_83CD8E9 - ldrb r1, [r0, 0x1] - ldr r2, _08089F68 @ =gUnknown_83CD920 - ldr r0, [r5] - ldr r3, _08089F6C @ =0x00000457 - adds r0, r3 - ldrb r0, [r0] - adds r2, r0, r2 - ldrb r2, [r2] - ldr r3, _08089F70 @ =gUnknown_83CD922 - adds r0, r3 - ldrb r3, [r0] - ldr r0, _08089F74 @ =gUnknown_83CD8E0 - str r0, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - add r0, sp, 0xC - str r0, [sp, 0x8] - movs r0, 0x1 - bl AddTextPrinterParameterized3 - add sp, 0x4C - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08089F54: .4byte gUnknown_8419CDA -_08089F58: .4byte gUnknown_20397A4 -_08089F5C: .4byte 0x0000048c -_08089F60: .4byte 0x00007bcf -_08089F64: .4byte gUnknown_83CD8E9 -_08089F68: .4byte gUnknown_83CD920 -_08089F6C: .4byte 0x00000457 -_08089F70: .4byte gUnknown_83CD922 -_08089F74: .4byte gUnknown_83CD8E0 - thumb_func_end sub_8089EEC - - thumb_func_start sub_8089F78 -sub_8089F78: @ 8089F78 - push {r4,lr} - sub sp, 0x2C - ldr r1, _08089FCC @ =gUnknown_8419CE1 - add r0, sp, 0xC - bl StringCopy - ldr r4, _08089FD0 @ =gUnknown_20397A4 - ldr r1, [r4] - ldr r2, _08089FD4 @ =0x0000046a - adds r1, r2 - ldrh r1, [r1] - movs r2, 0x2 - movs r3, 0x5 - bl ConvertIntToDecimalStringN - ldr r0, _08089FD8 @ =gUnknown_83CD8E9 - ldrb r1, [r0, 0x1] - ldr r2, _08089FDC @ =gUnknown_83CD924 - ldr r0, [r4] - ldr r3, _08089FE0 @ =0x00000457 - adds r0, r3 - ldrb r0, [r0] - adds r2, r0, r2 - ldrb r2, [r2] - ldr r3, _08089FE4 @ =gUnknown_83CD926 - adds r0, r3 - ldrb r3, [r0] - ldr r0, _08089FE8 @ =gUnknown_83CD8E0 - str r0, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - add r0, sp, 0xC - str r0, [sp, 0x8] - movs r0, 0x1 - bl AddTextPrinterParameterized3 - add sp, 0x2C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08089FCC: .4byte gUnknown_8419CE1 -_08089FD0: .4byte gUnknown_20397A4 -_08089FD4: .4byte 0x0000046a -_08089FD8: .4byte gUnknown_83CD8E9 -_08089FDC: .4byte gUnknown_83CD924 -_08089FE0: .4byte 0x00000457 -_08089FE4: .4byte gUnknown_83CD926 -_08089FE8: .4byte gUnknown_83CD8E0 - thumb_func_end sub_8089F78 - - thumb_func_start sub_8089FEC -sub_8089FEC: @ 8089FEC - push {r4-r7,lr} - sub sp, 0x18 - ldr r1, _0808A068 @ =gUnknown_8419CED - add r0, sp, 0xC - bl StringCopy - ldr r4, _0808A06C @ =gUnknown_20397A4 - ldr r1, [r4] - movs r2, 0x90 - lsls r2, 3 - adds r1, r2 - ldr r1, [r1] - movs r2, 0 - movs r3, 0x6 - bl ConvertIntToDecimalStringN - ldr r0, [r4] - ldr r1, _0808A070 @ =0x00000457 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0808A080 - add r0, sp, 0xC - bl StringLength - lsls r0, 16 - lsrs r0, 16 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 1 - movs r2, 0x7A - negs r2, r2 - adds r0, r2, 0 - subs r0, r1 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _0808A074 @ =gUnknown_83CD8E9 - ldrb r6, [r0, 0x1] - ldr r5, _0808A078 @ =gUnknown_83CD8E0 - str r5, [sp] - movs r4, 0x1 - negs r4, r4 - str r4, [sp, 0x4] - ldr r0, _0808A07C @ =gUnknown_8419CE7 - str r0, [sp, 0x8] - movs r0, 0x1 - adds r1, r6, 0 - movs r2, 0x14 - movs r3, 0x38 - bl AddTextPrinterParameterized3 - str r5, [sp] - str r4, [sp, 0x4] - add r0, sp, 0xC - str r0, [sp, 0x8] - movs r0, 0x1 - adds r1, r6, 0 - adds r2, r7, 0 - movs r3, 0x38 - bl AddTextPrinterParameterized3 - b _0808A0CA - .align 2, 0 -_0808A068: .4byte gUnknown_8419CED -_0808A06C: .4byte gUnknown_20397A4 -_0808A070: .4byte 0x00000457 -_0808A074: .4byte gUnknown_83CD8E9 -_0808A078: .4byte gUnknown_83CD8E0 -_0808A07C: .4byte gUnknown_8419CE7 -_0808A080: - add r0, sp, 0xC - bl StringLength - lsls r0, 16 - lsrs r0, 16 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 1 - movs r0, 0x76 - subs r0, r1 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _0808A0D4 @ =gUnknown_83CD8E9 - ldrb r6, [r0, 0x1] - ldr r5, _0808A0D8 @ =gUnknown_83CD8E0 - str r5, [sp] - movs r4, 0x1 - negs r4, r4 - str r4, [sp, 0x4] - ldr r0, _0808A0DC @ =gUnknown_8419CE7 - str r0, [sp, 0x8] - movs r0, 0x1 - adds r1, r6, 0 - movs r2, 0x10 - movs r3, 0x39 - bl AddTextPrinterParameterized3 - str r5, [sp] - str r4, [sp, 0x4] - add r1, sp, 0xC - str r1, [sp, 0x8] - movs r0, 0x1 - adds r1, r6, 0 - adds r2, r7, 0 - movs r3, 0x39 - bl AddTextPrinterParameterized3 -_0808A0CA: - add sp, 0x18 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0808A0D4: .4byte gUnknown_83CD8E9 -_0808A0D8: .4byte gUnknown_83CD8E0 -_0808A0DC: .4byte gUnknown_8419CE7 - thumb_func_end sub_8089FEC - - thumb_func_start sub_808A0E0 -sub_808A0E0: @ 808A0E0 - push {lr} - bl IsNationalPokedexEnabled - cmp r0, 0 - bne _0808A0F2 - movs r0, 0x1 - bl GetKantoPokedexCount - b _0808A0F8 -_0808A0F2: - movs r0, 0x1 - bl GetNationalPokedexCount -_0808A0F8: - lsls r0, 16 - lsrs r0, 16 - pop {r1} - bx r1 - thumb_func_end sub_808A0E0 - - thumb_func_start sub_808A100 -sub_808A100: @ 808A100 - push {r4-r7,lr} - sub sp, 0x18 - ldr r0, _0808A198 @ =0x00000829 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - bne _0808A112 - b _0808A212 -_0808A112: - ldr r4, _0808A19C @ =gUnknown_20397A4 - ldr r0, [r4] - movs r1, 0x8D - lsls r1, 3 - adds r0, r1 - ldrh r1, [r0] - add r0, sp, 0xC - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - ldr r0, [r4] - ldr r2, _0808A1A0 @ =0x00000457 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0808A1B4 - add r0, sp, 0xC - bl StringLength - lsls r0, 16 - lsrs r0, 16 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 1 - movs r2, 0x78 - negs r2, r2 - adds r0, r2, 0 - subs r0, r1 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _0808A1A4 @ =gUnknown_83CD8E9 - ldrb r6, [r0, 0x1] - ldr r5, _0808A1A8 @ =gUnknown_83CD8E0 - str r5, [sp] - movs r4, 0x1 - negs r4, r4 - str r4, [sp, 0x4] - ldr r0, _0808A1AC @ =gUnknown_8419CEF - str r0, [sp, 0x8] - movs r0, 0x1 - adds r1, r6, 0 - movs r2, 0x14 - movs r3, 0x48 - bl AddTextPrinterParameterized3 - str r5, [sp] - str r4, [sp, 0x4] - add r0, sp, 0xC - str r0, [sp, 0x8] - movs r0, 0x1 - adds r1, r6, 0 - adds r2, r7, 0 - movs r3, 0x48 - bl AddTextPrinterParameterized3 - str r5, [sp] - str r4, [sp, 0x4] - ldr r0, _0808A1B0 @ =gUnknown_8419CF7 - str r0, [sp, 0x8] - movs r0, 0x1 - adds r1, r6, 0 - movs r2, 0x8A - movs r3, 0x48 - bl AddTextPrinterParameterized3 - b _0808A212 - .align 2, 0 -_0808A198: .4byte 0x00000829 -_0808A19C: .4byte gUnknown_20397A4 -_0808A1A0: .4byte 0x00000457 -_0808A1A4: .4byte gUnknown_83CD8E9 -_0808A1A8: .4byte gUnknown_83CD8E0 -_0808A1AC: .4byte gUnknown_8419CEF -_0808A1B0: .4byte gUnknown_8419CF7 -_0808A1B4: - add r0, sp, 0xC - bl StringLength - lsls r0, 16 - lsrs r0, 16 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 1 - movs r0, 0x78 - subs r0, r1 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _0808A21C @ =gUnknown_83CD8E9 - ldrb r6, [r0, 0x1] - ldr r5, _0808A220 @ =gUnknown_83CD8E0 - str r5, [sp] - movs r4, 0x1 - negs r4, r4 - str r4, [sp, 0x4] - ldr r0, _0808A224 @ =gUnknown_8419CEF - str r0, [sp, 0x8] - movs r0, 0x1 - adds r1, r6, 0 - movs r2, 0x10 - movs r3, 0x49 - bl AddTextPrinterParameterized3 - str r5, [sp] - str r4, [sp, 0x4] - add r1, sp, 0xC - str r1, [sp, 0x8] - movs r0, 0x1 - adds r1, r6, 0 - adds r2, r7, 0 - movs r3, 0x49 - bl AddTextPrinterParameterized3 - str r5, [sp] - str r4, [sp, 0x4] - ldr r0, _0808A228 @ =gUnknown_8419CF7 - str r0, [sp, 0x8] - movs r0, 0x1 - adds r1, r6, 0 - movs r2, 0x8A - movs r3, 0x49 - bl AddTextPrinterParameterized3 -_0808A212: - add sp, 0x18 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0808A21C: .4byte gUnknown_83CD8E9 -_0808A220: .4byte gUnknown_83CD8E0 -_0808A224: .4byte gUnknown_8419CEF -_0808A228: .4byte gUnknown_8419CF7 - thumb_func_end sub_808A100 - - thumb_func_start sub_808A22C -sub_808A22C: @ 808A22C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - ldr r0, _0808A2B0 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrh r5, [r0, 0xE] - ldrb r7, [r0, 0x10] - ldr r6, _0808A2B4 @ =gUnknown_20397A4 - ldr r2, [r6] - ldrb r0, [r2, 0x5] - cmp r0, 0 - beq _0808A256 - ldr r1, _0808A2B8 @ =0x0000046c - adds r0, r2, r1 - ldrh r5, [r0] - adds r1, 0x2 - adds r0, r2, r1 - ldrh r7, [r0] -_0808A256: - ldr r0, _0808A2BC @ =0x000003e7 - cmp r5, r0 - bls _0808A25E - adds r5, r0, 0 -_0808A25E: - cmp r7, 0x3B - bls _0808A264 - movs r7, 0x3B -_0808A264: - ldr r1, _0808A2C0 @ =gUnknown_83CD930 - ldr r4, _0808A2C4 @ =0x00000457 - adds r0, r2, r4 - ldrb r0, [r0] - adds r1, r0, r1 - ldrb r2, [r1] - ldr r1, _0808A2C8 @ =gUnknown_83CD936 - adds r0, r1 - ldrb r3, [r0] - movs r0, 0x32 - str r0, [sp] - movs r0, 0xC - str r0, [sp, 0x4] - movs r0, 0x1 - movs r1, 0 - bl FillWindowPixelRect - ldr r0, [r6] - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0808A2D8 - ldr r0, _0808A2CC @ =gUnknown_83CD8E9 - ldrb r1, [r0, 0x1] - ldr r0, _0808A2D0 @ =gUnknown_83CD8E0 - str r0, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - ldr r0, _0808A2D4 @ =gUnknown_8419CFD - str r0, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x14 - movs r3, 0x58 - bl AddTextPrinterParameterized3 - b _0808A2F4 - .align 2, 0 -_0808A2B0: .4byte gSaveBlock2Ptr -_0808A2B4: .4byte gUnknown_20397A4 -_0808A2B8: .4byte 0x0000046c -_0808A2BC: .4byte 0x000003e7 -_0808A2C0: .4byte gUnknown_83CD930 -_0808A2C4: .4byte 0x00000457 -_0808A2C8: .4byte gUnknown_83CD936 -_0808A2CC: .4byte gUnknown_83CD8E9 -_0808A2D0: .4byte gUnknown_83CD8E0 -_0808A2D4: .4byte gUnknown_8419CFD -_0808A2D8: - ldr r0, _0808A3A4 @ =gUnknown_83CD8E9 - ldrb r1, [r0, 0x1] - ldr r0, _0808A3A8 @ =gUnknown_83CD8E0 - str r0, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - ldr r0, _0808A3AC @ =gUnknown_8419CFD - str r0, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x10 - movs r3, 0x59 - bl AddTextPrinterParameterized3 -_0808A2F4: - add r0, sp, 0xC - adds r1, r5, 0 - movs r2, 0x1 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - ldr r0, _0808A3A4 @ =gUnknown_83CD8E9 - ldrb r0, [r0, 0x1] - mov r10, r0 - ldr r1, _0808A3B0 @ =gUnknown_83CD930 - ldr r2, _0808A3B4 @ =gUnknown_20397A4 - mov r9, r2 - ldr r0, [r2] - ldr r2, _0808A3B8 @ =0x00000457 - mov r8, r2 - add r0, r8 - ldrb r0, [r0] - adds r1, r0, r1 - ldrb r2, [r1] - ldr r6, _0808A3BC @ =gUnknown_83CD936 - adds r0, r6 - ldrb r3, [r0] - ldr r0, _0808A3A8 @ =gUnknown_83CD8E0 - str r0, [sp] - movs r5, 0x1 - negs r5, r5 - str r5, [sp, 0x4] - add r1, sp, 0xC - str r1, [sp, 0x8] - movs r0, 0x1 - mov r1, r10 - bl AddTextPrinterParameterized3 - ldr r1, _0808A3C0 @ =gUnknown_83CD932 - mov r2, r9 - ldr r4, [r2] - mov r2, r8 - adds r0, r4, r2 - ldrb r0, [r0] - adds r1, r0, r1 - ldrb r2, [r1] - adds r0, r6 - ldrb r3, [r0] - ldr r1, _0808A3C4 @ =gUnknown_83CD928 - ldrb r0, [r4, 0x7] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - str r0, [sp] - str r5, [sp, 0x4] - ldr r0, _0808A3C8 @ =gUnknown_8419CF8 - str r0, [sp, 0x8] - movs r0, 0x1 - mov r1, r10 - bl AddTextPrinterParameterized3 - add r0, sp, 0xC - adds r1, r7, 0 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r1, _0808A3CC @ =gUnknown_83CD934 - mov r2, r9 - ldr r0, [r2] - add r0, r8 - ldrb r0, [r0] - adds r1, r0, r1 - ldrb r2, [r1] - adds r0, r6 - ldrb r3, [r0] - ldr r0, _0808A3A8 @ =gUnknown_83CD8E0 - str r0, [sp] - str r5, [sp, 0x4] - add r1, sp, 0xC - str r1, [sp, 0x8] - movs r0, 0x1 - mov r1, r10 - bl AddTextPrinterParameterized3 - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0808A3A4: .4byte gUnknown_83CD8E9 -_0808A3A8: .4byte gUnknown_83CD8E0 -_0808A3AC: .4byte gUnknown_8419CFD -_0808A3B0: .4byte gUnknown_83CD930 -_0808A3B4: .4byte gUnknown_20397A4 -_0808A3B8: .4byte 0x00000457 -_0808A3BC: .4byte gUnknown_83CD936 -_0808A3C0: .4byte gUnknown_83CD932 -_0808A3C4: .4byte gUnknown_83CD928 -_0808A3C8: .4byte gUnknown_8419CF8 -_0808A3CC: .4byte gUnknown_83CD934 - thumb_func_end sub_808A22C - - thumb_func_start sub_808A3D0 -sub_808A3D0: @ 808A3D0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xC - ldr r7, _0808A494 @ =gUnknown_20397A4 - ldr r1, [r7] - ldrb r0, [r1, 0x5] - cmp r0, 0 - beq _0808A486 - ldr r0, _0808A498 @ =gUnknown_83CD938 - mov r8, r0 - ldr r4, _0808A49C @ =0x00000457 - adds r0, r1, r4 - ldrb r0, [r0] - add r0, r8 - ldrb r3, [r0] - ldr r6, _0808A4A0 @ =gUnknown_83CD8E0 - str r6, [sp] - movs r5, 0x1 - negs r5, r5 - str r5, [sp, 0x4] - adds r0, r1, 0 - adds r0, 0x19 - str r0, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x2 - movs r2, 0xA - bl AddTextPrinterParameterized3 - ldr r1, [r7] - adds r1, 0x19 - movs r0, 0x2 - movs r2, 0 - bl GetStringWidth - adds r2, r0, 0 - adds r2, 0x10 - lsls r2, 24 - lsrs r2, 24 - ldr r1, [r7] - adds r0, r1, r4 - ldrb r0, [r0] - add r0, r8 - ldrb r3, [r0] - str r6, [sp] - str r5, [sp, 0x4] - adds r1, 0x26 - str r1, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x2 - bl AddTextPrinterParameterized3 - ldr r0, _0808A4A4 @ =gUnknown_83CD93A - mov r8, r0 - ldr r1, [r7] - adds r0, r1, r4 - ldrb r0, [r0] - add r0, r8 - ldrb r3, [r0] - str r6, [sp] - str r5, [sp, 0x4] - adds r1, 0x33 - str r1, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x2 - movs r2, 0xA - bl AddTextPrinterParameterized3 - ldr r1, [r7] - adds r1, 0x33 - movs r0, 0x2 - movs r2, 0 - bl GetStringWidth - adds r2, r0, 0 - adds r2, 0x10 - lsls r2, 24 - lsrs r2, 24 - ldr r1, [r7] - adds r4, r1, r4 - ldrb r0, [r4] - add r0, r8 - ldrb r3, [r0] - str r6, [sp] - str r5, [sp, 0x4] - adds r1, 0x40 - str r1, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x2 - bl AddTextPrinterParameterized3 -_0808A486: - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0808A494: .4byte gUnknown_20397A4 -_0808A498: .4byte gUnknown_83CD938 -_0808A49C: .4byte 0x00000457 -_0808A4A0: .4byte gUnknown_83CD8E0 -_0808A4A4: .4byte gUnknown_83CD93A - thumb_func_end sub_808A3D0 - - thumb_func_start sub_808A4A8 -sub_808A4A8: @ 808A4A8 - push {r4,lr} - ldr r4, _0808A4E8 @ =gUnknown_20397A4 - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x4D - ldr r2, _0808A4EC @ =0x0000048c - adds r1, r2 - bl StringCopy - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x4D - ldr r2, _0808A4F0 @ =0x00007bcf - adds r1, r2 - ldrb r1, [r1] - bl ConvertInternationalString - ldr r4, [r4] - ldr r1, _0808A4F4 @ =0x00000457 - adds r0, r4, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _0808A4E0 - adds r0, r4, 0 - adds r0, 0x4D - ldr r1, _0808A4F8 @ =gUnknown_8419D0A - bl StringAppend -_0808A4E0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808A4E8: .4byte gUnknown_20397A4 -_0808A4EC: .4byte 0x0000048c -_0808A4F0: .4byte 0x00007bcf -_0808A4F4: .4byte 0x00000457 -_0808A4F8: .4byte gUnknown_8419D0A - thumb_func_end sub_808A4A8 - - thumb_func_start sub_808A4FC -sub_808A4FC: @ 808A4FC - push {r4-r6,lr} - sub sp, 0xC - ldr r6, _0808A538 @ =gUnknown_20397A4 - ldr r4, [r6] - ldr r0, _0808A53C @ =0x00000457 - adds r2, r4, r0 - ldrb r0, [r2] - cmp r0, 0 - bne _0808A550 - ldr r0, _0808A540 @ =gUnknown_83CD8E9 - ldrb r1, [r0, 0x1] - ldr r0, _0808A544 @ =gUnknown_83CD93C - ldrb r3, [r2] - adds r0, r3, r0 - ldrb r2, [r0] - ldr r0, _0808A548 @ =gUnknown_83CD93E - adds r3, r0 - ldrb r3, [r3] - ldr r0, _0808A54C @ =gUnknown_83CD8E0 - str r0, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - adds r0, r4, 0 - adds r0, 0x4D - str r0, [sp, 0x8] - movs r0, 0x1 - bl AddTextPrinterParameterized3 - b _0808A59C - .align 2, 0 -_0808A538: .4byte gUnknown_20397A4 -_0808A53C: .4byte 0x00000457 -_0808A540: .4byte gUnknown_83CD8E9 -_0808A544: .4byte gUnknown_83CD93C -_0808A548: .4byte gUnknown_83CD93E -_0808A54C: .4byte gUnknown_83CD8E0 -_0808A550: - ldr r0, _0808A5A4 @ =gUnknown_83CD8E9 - ldrb r5, [r0, 0x1] - adds r4, 0x4D - adds r0, r5, 0 - movs r1, 0x2 - bl GetFontAttribute - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r5, 0 - adds r1, r4, 0 - bl GetStringWidth - ldr r2, _0808A5A8 @ =gUnknown_83CD93C - ldr r4, [r6] - ldr r3, _0808A5AC @ =0x00000457 - adds r1, r4, r3 - ldrb r1, [r1] - adds r2, r1, r2 - ldrb r2, [r2] - subs r2, r0 - lsls r2, 24 - lsrs r2, 24 - ldr r0, _0808A5B0 @ =gUnknown_83CD93E - adds r1, r0 - ldrb r3, [r1] - ldr r0, _0808A5B4 @ =gUnknown_83CD8E0 - str r0, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - adds r4, 0x4D - str r4, [sp, 0x8] - movs r0, 0x1 - adds r1, r5, 0 - bl AddTextPrinterParameterized3 -_0808A59C: - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0808A5A4: .4byte gUnknown_83CD8E9 -_0808A5A8: .4byte gUnknown_83CD93C -_0808A5AC: .4byte 0x00000457 -_0808A5B0: .4byte gUnknown_83CD93E -_0808A5B4: .4byte gUnknown_83CD8E0 - thumb_func_end sub_808A4FC - - thumb_func_start sub_808A5B8 -sub_808A5B8: @ 808A5B8 - push {r4,r5,lr} - sub sp, 0xC - ldr r5, _0808A640 @ =gUnknown_20397A4 - ldr r1, [r5] - ldrb r0, [r1, 0xB] - cmp r0, 0 - beq _0808A636 - ldr r2, _0808A644 @ =0x00000462 - adds r0, r1, r2 - ldrh r1, [r0] - mov r0, sp - movs r2, 0x1 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - ldr r0, [r5] - adds r0, 0x93 - mov r1, sp - bl StringCopy - ldr r0, [r5] - adds r0, 0x93 - ldr r4, _0808A648 @ =gUnknown_8419CF8 - adds r1, r4, 0 - movs r2, 0x2 - bl StringAppendN - ldr r0, [r5] - ldr r1, _0808A64C @ =0x00000464 - adds r0, r1 - ldrh r1, [r0] - mov r0, sp - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, [r5] - adds r0, 0x93 - mov r1, sp - movs r2, 0x3 - bl StringAppendN - ldr r0, [r5] - adds r0, 0x93 - adds r1, r4, 0 - movs r2, 0x2 - bl StringAppendN - ldr r0, [r5] - ldr r2, _0808A650 @ =0x00000466 - adds r0, r2 - ldrh r1, [r0] - mov r0, sp - movs r2, 0x2 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldr r0, [r5] - adds r0, 0x93 - mov r1, sp - movs r2, 0x3 - bl StringAppendN -_0808A636: - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808A640: .4byte gUnknown_20397A4 -_0808A644: .4byte 0x00000462 -_0808A648: .4byte gUnknown_8419CF8 -_0808A64C: .4byte 0x00000464 -_0808A650: .4byte 0x00000466 - thumb_func_end sub_808A5B8 - - thumb_func_start sub_808A654 -sub_808A654: @ 808A654 - push {r4-r6,lr} - sub sp, 0xC - ldr r6, _0808A6AC @ =gUnknown_20397A4 - ldr r2, [r6] - ldrb r0, [r2, 0xB] - cmp r0, 0 - beq _0808A6A2 - ldr r0, _0808A6B0 @ =gUnknown_83CD8E9 - ldrb r5, [r0, 0x1] - ldr r1, _0808A6B4 @ =gUnknown_83CD940 - ldr r3, _0808A6B8 @ =0x00000457 - adds r0, r2, r3 - ldrb r0, [r0] - adds r0, r1 - ldrb r2, [r0] - ldr r0, _0808A6BC @ =gUnknown_83CD8E0 - str r0, [sp] - movs r4, 0x1 - negs r4, r4 - str r4, [sp, 0x4] - ldr r0, _0808A6C0 @ =gUnknown_8419D1A - str r0, [sp, 0x8] - movs r0, 0x1 - adds r1, r5, 0 - movs r3, 0x23 - bl AddTextPrinterParameterized3 - ldr r0, _0808A6C4 @ =gUnknown_83CD8E3 - str r0, [sp] - str r4, [sp, 0x4] - ldr r0, [r6] - adds r0, 0x93 - str r0, [sp, 0x8] - movs r0, 0x1 - adds r1, r5, 0 - movs r2, 0xA4 - movs r3, 0x23 - bl AddTextPrinterParameterized3 -_0808A6A2: - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0808A6AC: .4byte gUnknown_20397A4 -_0808A6B0: .4byte gUnknown_83CD8E9 -_0808A6B4: .4byte gUnknown_83CD940 -_0808A6B8: .4byte 0x00000457 -_0808A6BC: .4byte gUnknown_83CD8E0 -_0808A6C0: .4byte gUnknown_8419D1A -_0808A6C4: .4byte gUnknown_83CD8E3 - thumb_func_end sub_808A654 - - thumb_func_start sub_808A6C8 -sub_808A6C8: @ 808A6C8 - push {r4,lr} - sub sp, 0x20 - ldr r4, _0808A740 @ =gUnknown_20397A4 - ldr r1, [r4] - ldrb r0, [r1, 0xC] - cmp r0, 0 - beq _0808A736 - adds r0, r1, 0 - adds r0, 0xD9 - ldr r2, _0808A744 @ =gUnknown_83CD944 - ldr r3, _0808A748 @ =0x00000457 - adds r1, r3 - ldrb r1, [r1] - lsls r1, 2 - adds r1, r2 - ldr r1, [r1] - bl StringCopy - ldr r0, [r4] - ldr r1, _0808A74C @ =0x0000011f - adds r0, r1 - ldr r1, _0808A750 @ =gUnknown_8419D4F - bl StringCopy - ldr r0, [r4] - movs r3, 0x8E - lsls r3, 3 - adds r0, r3 - ldrh r1, [r0] - mov r0, sp - movs r2, 0x1 - movs r3, 0x4 - bl ConvertIntToDecimalStringN - ldr r0, [r4] - ldr r1, _0808A754 @ =0x00000165 - adds r0, r1 - mov r1, sp - bl StringCopy - ldr r0, [r4] - ldr r3, _0808A758 @ =0x00000472 - adds r0, r3 - ldrh r1, [r0] - mov r0, sp - movs r2, 0x1 - movs r3, 0x4 - bl ConvertIntToDecimalStringN - ldr r0, [r4] - ldr r1, _0808A75C @ =0x000001ab - adds r0, r1 - mov r1, sp - bl StringCopy -_0808A736: - add sp, 0x20 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808A740: .4byte gUnknown_20397A4 -_0808A744: .4byte gUnknown_83CD944 -_0808A748: .4byte 0x00000457 -_0808A74C: .4byte 0x0000011f -_0808A750: .4byte gUnknown_8419D4F -_0808A754: .4byte 0x00000165 -_0808A758: .4byte 0x00000472 -_0808A75C: .4byte 0x000001ab - thumb_func_end sub_808A6C8 - - thumb_func_start sub_808A760 -sub_808A760: @ 808A760 - push {r4-r7,lr} - sub sp, 0xC - ldr r7, _0808A7EC @ =gUnknown_20397A4 - ldr r3, [r7] - ldrb r0, [r3, 0xC] - cmp r0, 0 - beq _0808A7E2 - ldr r0, _0808A7F0 @ =gUnknown_83CD8E9 - ldrb r6, [r0, 0x1] - ldr r1, _0808A7F4 @ =gUnknown_83CD940 - ldr r2, _0808A7F8 @ =0x00000457 - adds r0, r3, r2 - ldrb r0, [r0] - adds r0, r1 - ldrb r2, [r0] - ldr r5, _0808A7FC @ =gUnknown_83CD8E0 - str r5, [sp] - movs r4, 0x1 - negs r4, r4 - str r4, [sp, 0x4] - adds r0, r3, 0 - adds r0, 0xD9 - str r0, [sp, 0x8] - movs r0, 0x1 - adds r1, r6, 0 - movs r3, 0x33 - bl AddTextPrinterParameterized3 - str r5, [sp] - str r4, [sp, 0x4] - ldr r0, [r7] - ldr r1, _0808A800 @ =0x0000011f - adds r0, r1 - str r0, [sp, 0x8] - movs r0, 0x1 - adds r1, r6, 0 - movs r2, 0x82 - movs r3, 0x33 - bl AddTextPrinterParameterized3 - ldr r5, _0808A804 @ =gUnknown_83CD8E3 - str r5, [sp] - str r4, [sp, 0x4] - ldr r0, [r7] - ldr r2, _0808A808 @ =0x00000165 - adds r0, r2 - str r0, [sp, 0x8] - movs r0, 0x1 - adds r1, r6, 0 - movs r2, 0x90 - movs r3, 0x33 - bl AddTextPrinterParameterized3 - str r5, [sp] - str r4, [sp, 0x4] - ldr r0, [r7] - ldr r1, _0808A80C @ =0x000001ab - adds r0, r1 - str r0, [sp, 0x8] - movs r0, 0x1 - adds r1, r6, 0 - movs r2, 0xC0 - movs r3, 0x33 - bl AddTextPrinterParameterized3 -_0808A7E2: - add sp, 0xC - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0808A7EC: .4byte gUnknown_20397A4 -_0808A7F0: .4byte gUnknown_83CD8E9 -_0808A7F4: .4byte gUnknown_83CD940 -_0808A7F8: .4byte 0x00000457 -_0808A7FC: .4byte gUnknown_83CD8E0 -_0808A800: .4byte 0x0000011f -_0808A804: .4byte gUnknown_83CD8E3 -_0808A808: .4byte 0x00000165 -_0808A80C: .4byte 0x000001ab - thumb_func_end sub_808A760 - - thumb_func_start sub_808A810 -sub_808A810: @ 808A810 - push {r4,lr} - ldr r4, _0808A840 @ =gUnknown_20397A4 - ldr r1, [r4] - ldrb r0, [r1, 0x10] - cmp r0, 0 - beq _0808A83A - ldr r2, _0808A844 @ =0x000001f1 - adds r0, r1, r2 - ldr r1, _0808A848 @ =gUnknown_8419D57 - bl StringCopy - ldr r1, [r4] - ldr r2, _0808A84C @ =0x00000237 - adds r0, r1, r2 - ldr r2, _0808A850 @ =0x0000047c - adds r1, r2 - ldrh r1, [r1] - movs r2, 0x1 - movs r3, 0x5 - bl ConvertIntToDecimalStringN -_0808A83A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808A840: .4byte gUnknown_20397A4 -_0808A844: .4byte 0x000001f1 -_0808A848: .4byte gUnknown_8419D57 -_0808A84C: .4byte 0x00000237 -_0808A850: .4byte 0x0000047c - thumb_func_end sub_808A810 - - thumb_func_start sub_808A854 -sub_808A854: @ 808A854 - push {r4-r6,lr} - sub sp, 0xC - ldr r6, _0808A8B0 @ =gUnknown_20397A4 - ldr r3, [r6] - ldrb r0, [r3, 0x10] - cmp r0, 0 - beq _0808A8A6 - ldr r0, _0808A8B4 @ =gUnknown_83CD8E9 - ldrb r5, [r0, 0x1] - ldr r1, _0808A8B8 @ =gUnknown_83CD940 - ldr r2, _0808A8BC @ =0x00000457 - adds r0, r3, r2 - ldrb r0, [r0] - adds r0, r1 - ldrb r2, [r0] - ldr r0, _0808A8C0 @ =gUnknown_83CD8E0 - str r0, [sp] - movs r4, 0x1 - negs r4, r4 - str r4, [sp, 0x4] - ldr r1, _0808A8C4 @ =0x000001f1 - adds r0, r3, r1 - str r0, [sp, 0x8] - movs r0, 0x1 - adds r1, r5, 0 - movs r3, 0x43 - bl AddTextPrinterParameterized3 - ldr r0, _0808A8C8 @ =gUnknown_83CD8E3 - str r0, [sp] - str r4, [sp, 0x4] - ldr r0, [r6] - ldr r2, _0808A8CC @ =0x00000237 - adds r0, r2 - str r0, [sp, 0x8] - movs r0, 0x1 - adds r1, r5, 0 - movs r2, 0xBA - movs r3, 0x43 - bl AddTextPrinterParameterized3 -_0808A8A6: - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0808A8B0: .4byte gUnknown_20397A4 -_0808A8B4: .4byte gUnknown_83CD8E9 -_0808A8B8: .4byte gUnknown_83CD940 -_0808A8BC: .4byte 0x00000457 -_0808A8C0: .4byte gUnknown_83CD8E0 -_0808A8C4: .4byte 0x000001f1 -_0808A8C8: .4byte gUnknown_83CD8E3 -_0808A8CC: .4byte 0x00000237 - thumb_func_end sub_808A854 - - thumb_func_start sub_808A8D0 -sub_808A8D0: @ 808A8D0 - push {r4,lr} - ldr r4, _0808A908 @ =gUnknown_20397A4 - ldr r1, [r4] - ldr r2, _0808A90C @ =0x00000457 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0808A900 - ldr r2, _0808A910 @ =0x0000027d - adds r0, r1, r2 - ldr r1, _0808A914 @ =gUnknown_8419D7D - bl StringCopy - ldr r1, [r4] - ldr r2, _0808A918 @ =0x000002c3 - adds r0, r1, r2 - movs r2, 0x93 - lsls r2, 3 - adds r1, r2 - ldr r1, [r1] - movs r2, 0x1 - movs r3, 0x5 - bl ConvertIntToDecimalStringN -_0808A900: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808A908: .4byte gUnknown_20397A4 -_0808A90C: .4byte 0x00000457 -_0808A910: .4byte 0x0000027d -_0808A914: .4byte gUnknown_8419D7D -_0808A918: .4byte 0x000002c3 - thumb_func_end sub_808A8D0 - - thumb_func_start sub_808A91C -sub_808A91C: @ 808A91C - push {r4-r6,lr} - sub sp, 0xC - ldr r6, _0808A984 @ =gUnknown_20397A4 - ldr r3, [r6] - ldr r0, _0808A988 @ =0x00000457 - adds r2, r3, r0 - ldrb r0, [r2] - cmp r0, 0x1 - beq _0808A97A - movs r1, 0x93 - lsls r1, 3 - adds r0, r3, r1 - ldr r0, [r0] - cmp r0, 0 - beq _0808A97A - ldr r0, _0808A98C @ =gUnknown_83CD8E9 - ldrb r5, [r0, 0x1] - ldr r1, _0808A990 @ =gUnknown_83CD940 - ldrb r0, [r2] - adds r0, r1 - ldrb r2, [r0] - ldr r0, _0808A994 @ =gUnknown_83CD8E0 - str r0, [sp] - movs r4, 0x1 - negs r4, r4 - str r4, [sp, 0x4] - ldr r1, _0808A998 @ =0x0000027d - adds r0, r3, r1 - str r0, [sp, 0x8] - movs r0, 0x1 - adds r1, r5, 0 - movs r3, 0x63 - bl AddTextPrinterParameterized3 - ldr r0, _0808A99C @ =gUnknown_83CD8E3 - str r0, [sp] - str r4, [sp, 0x4] - ldr r0, [r6] - ldr r1, _0808A9A0 @ =0x000002c3 - adds r0, r1 - str r0, [sp, 0x8] - movs r0, 0x1 - adds r1, r5, 0 - movs r2, 0xBA - movs r3, 0x63 - bl AddTextPrinterParameterized3 -_0808A97A: - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0808A984: .4byte gUnknown_20397A4 -_0808A988: .4byte 0x00000457 -_0808A98C: .4byte gUnknown_83CD8E9 -_0808A990: .4byte gUnknown_83CD940 -_0808A994: .4byte gUnknown_83CD8E0 -_0808A998: .4byte 0x0000027d -_0808A99C: .4byte gUnknown_83CD8E3 -_0808A9A0: .4byte 0x000002c3 - thumb_func_end sub_808A91C - - thumb_func_start sub_808A9A4 -sub_808A9A4: @ 808A9A4 - push {r4,lr} - ldr r4, _0808A9D8 @ =gUnknown_20397A4 - ldr r1, [r4] - ldr r2, _0808A9DC @ =0x00000457 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0808A9D2 - ldr r2, _0808A9E0 @ =0x00000309 - adds r0, r1, r2 - ldr r1, _0808A9E4 @ =gUnknown_8419D66 - bl StringCopy - ldr r1, [r4] - ldr r2, _0808A9E8 @ =0x0000034f - adds r0, r1, r2 - ldr r2, _0808A9EC @ =0x0000049c - adds r1, r2 - ldr r1, [r1] - movs r2, 0x1 - movs r3, 0x5 - bl ConvertIntToDecimalStringN -_0808A9D2: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808A9D8: .4byte gUnknown_20397A4 -_0808A9DC: .4byte 0x00000457 -_0808A9E0: .4byte 0x00000309 -_0808A9E4: .4byte gUnknown_8419D66 -_0808A9E8: .4byte 0x0000034f -_0808A9EC: .4byte 0x0000049c - thumb_func_end sub_808A9A4 - - thumb_func_start sub_808A9F0 -sub_808A9F0: @ 808A9F0 - push {r4-r6,lr} - sub sp, 0xC - ldr r6, _0808AA54 @ =gUnknown_20397A4 - ldr r3, [r6] - ldr r0, _0808AA58 @ =0x00000457 - adds r2, r3, r0 - ldrb r0, [r2] - cmp r0, 0x1 - beq _0808AA4C - ldr r1, _0808AA5C @ =0x0000049c - adds r0, r3, r1 - ldr r0, [r0] - cmp r0, 0 - beq _0808AA4C - ldr r0, _0808AA60 @ =gUnknown_83CD8E9 - ldrb r5, [r0, 0x1] - ldr r1, _0808AA64 @ =gUnknown_83CD940 - ldrb r0, [r2] - adds r0, r1 - ldrb r2, [r0] - ldr r0, _0808AA68 @ =gUnknown_83CD8E0 - str r0, [sp] - movs r4, 0x1 - negs r4, r4 - str r4, [sp, 0x4] - ldr r1, _0808AA6C @ =0x00000309 - adds r0, r3, r1 - str r0, [sp, 0x8] - movs r0, 0x1 - adds r1, r5, 0 - movs r3, 0x53 - bl AddTextPrinterParameterized3 - ldr r0, _0808AA70 @ =gUnknown_83CD8E3 - str r0, [sp] - str r4, [sp, 0x4] - ldr r0, [r6] - ldr r1, _0808AA74 @ =0x0000034f - adds r0, r1 - str r0, [sp, 0x8] - movs r0, 0x1 - adds r1, r5, 0 - movs r2, 0xBA - movs r3, 0x53 - bl AddTextPrinterParameterized3 -_0808AA4C: - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0808AA54: .4byte gUnknown_20397A4 -_0808AA58: .4byte 0x00000457 -_0808AA5C: .4byte 0x0000049c -_0808AA60: .4byte gUnknown_83CD8E9 -_0808AA64: .4byte gUnknown_83CD940 -_0808AA68: .4byte gUnknown_83CD8E0 -_0808AA6C: .4byte 0x00000309 -_0808AA70: .4byte gUnknown_83CD8E3 -_0808AA74: .4byte 0x0000034f - thumb_func_end sub_808A9F0 - - thumb_func_start sub_808AA78 -sub_808AA78: @ 808AA78 - push {r4,r5,lr} - sub sp, 0x20 - ldr r1, _0808AB00 @ =gUnknown_83CD94C - add r0, sp, 0x10 - movs r2, 0x6 - bl memcpy - add r4, sp, 0x18 - ldr r1, _0808AB04 @ =gUnknown_83CD952 - adds r0, r4, 0 - movs r2, 0x6 - bl memcpy - ldr r0, _0808AB08 @ =gUnknown_20397A4 - ldr r0, [r0] - ldr r1, _0808AB0C @ =0x00000457 - adds r0, r1 - ldrb r0, [r0] - adds r5, r4, 0 - cmp r0, 0x1 - beq _0808AAF8 - movs r4, 0 -_0808AAA4: - ldr r0, _0808AB08 @ =gUnknown_20397A4 - ldr r0, [r0] - lsls r1, r4, 1 - movs r2, 0x96 - lsls r2, 3 - adds r0, r2 - adds r1, r0, r1 - ldrh r0, [r1] - cmp r0, 0 - beq _0808AAEE - bl GetMonIconPaletteIndexFromSpecies - lsls r0, 24 - lsrs r0, 24 - lsls r1, r4, 20 - movs r2, 0xE0 - lsls r2, 16 - adds r1, r2 - lsrs r1, 16 - adds r2, r5, r4 - ldrb r2, [r2] - adds r2, 0x3 - lsls r2, 24 - lsrs r2, 24 - movs r3, 0x4 - str r3, [sp] - str r3, [sp, 0x4] - add r0, sp - adds r0, 0x10 - ldrb r0, [r0] - str r0, [sp, 0x8] - movs r0, 0x1 - str r0, [sp, 0xC] - movs r0, 0x3 - movs r3, 0xF - bl WriteSequenceToBgTilemapBuffer -_0808AAEE: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x5 - bls _0808AAA4 -_0808AAF8: - add sp, 0x20 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808AB00: .4byte gUnknown_83CD94C -_0808AB04: .4byte gUnknown_83CD952 -_0808AB08: .4byte gUnknown_20397A4 -_0808AB0C: .4byte 0x00000457 - thumb_func_end sub_808AA78 - - thumb_func_start sub_808AB10 -sub_808AB10: @ 808AB10 - push {r4,r5,lr} - sub sp, 0x4 - ldr r0, _0808AB40 @ =gMonIconPalettes - ldr r4, _0808AB44 @ =gUnknown_20397A4 - ldr r1, [r4] - ldr r5, _0808AB48 @ =0x00000396 - adds r1, r5 - movs r2, 0x60 - bl CpuSet - ldr r4, [r4] - ldr r1, _0808AB4C @ =0x000004aa - adds r0, r4, r1 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0808AB50 - cmp r0, 0x1 - ble _0808AB88 - cmp r0, 0x2 - beq _0808AB68 - cmp r0, 0x3 - beq _0808AB80 - b _0808AB88 - .align 2, 0 -_0808AB40: .4byte gMonIconPalettes -_0808AB44: .4byte gUnknown_20397A4 -_0808AB48: .4byte 0x00000396 -_0808AB4C: .4byte 0x000004aa -_0808AB50: - ldr r2, _0808AB64 @ =0x00000396 - adds r0, r4, r2 - movs r1, 0 - str r1, [sp] - movs r1, 0x60 - movs r2, 0 - movs r3, 0 - bl TintPalette_CustomTone - b _0808AB88 - .align 2, 0 -_0808AB64: .4byte 0x00000396 -_0808AB68: - adds r0, r4, r5 - movs r2, 0xFA - lsls r2, 1 - movs r3, 0xA5 - lsls r3, 1 - movs r1, 0x9B - lsls r1, 1 - str r1, [sp] - movs r1, 0x60 - bl TintPalette_CustomTone - b _0808AB88 -_0808AB80: - adds r0, r4, r5 - movs r1, 0x60 - bl TintPalette_SepiaTone -_0808AB88: - ldr r0, _0808ABD8 @ =gUnknown_20397A4 - ldr r0, [r0] - ldr r1, _0808ABDC @ =0x00000396 - adds r0, r1 - movs r1, 0x50 - movs r2, 0xC0 - bl LoadPalette - movs r4, 0 -_0808AB9A: - ldr r0, _0808ABD8 @ =gUnknown_20397A4 - ldr r0, [r0] - lsls r1, r4, 1 - movs r2, 0x96 - lsls r2, 3 - adds r0, r2 - adds r0, r1 - ldrh r0, [r0] - movs r1, 0 - bl GetMonIconTiles - adds r1, r0, 0 - lsls r3, r4, 20 - movs r0, 0x80 - lsls r0, 14 - adds r3, r0 - lsrs r3, 16 - movs r0, 0x3 - movs r2, 0x80 - lsls r2, 2 - bl LoadBgTiles - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x5 - bls _0808AB9A - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808ABD8: .4byte gUnknown_20397A4 -_0808ABDC: .4byte 0x00000396 - thumb_func_end sub_808AB10 - - thumb_func_start sub_808ABE0 -sub_808ABE0: @ 808ABE0 - push {r4,lr} - sub sp, 0x14 - ldr r1, _0808AC5C @ =gUnknown_83CD958 - add r0, sp, 0x10 - movs r2, 0x4 - bl memcpy - ldr r0, _0808AC60 @ =gUnknown_20397A4 - ldr r1, [r0] - ldr r2, _0808AC64 @ =0x00000457 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _0808AC52 - adds r2, 0x51 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x1 - bne _0808AC52 - movs r4, 0 -_0808AC08: - ldr r0, _0808AC60 @ =gUnknown_20397A4 - ldr r0, [r0] - ldr r1, _0808AC68 @ =0x000004ac - adds r0, r1 - adds r0, r4 - ldrb r3, [r0] - cmp r3, 0 - beq _0808AC48 - lsls r1, r4, 18 - movs r2, 0xA0 - lsls r2, 17 - adds r1, r2 - lsrs r1, 16 - lsls r2, r4, 1 - adds r2, r4 - adds r2, 0x2 - lsls r2, 24 - lsrs r2, 24 - movs r0, 0x2 - str r0, [sp] - str r0, [sp, 0x4] - subs r0, r3, 0x1 - add r0, sp - adds r0, 0x10 - ldrb r0, [r0] - str r0, [sp, 0x8] - movs r0, 0x1 - str r0, [sp, 0xC] - movs r0, 0x3 - movs r3, 0x2 - bl WriteSequenceToBgTilemapBuffer -_0808AC48: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x2 - bls _0808AC08 -_0808AC52: - add sp, 0x14 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808AC5C: .4byte gUnknown_83CD958 -_0808AC60: .4byte gUnknown_20397A4 -_0808AC64: .4byte 0x00000457 -_0808AC68: .4byte 0x000004ac - thumb_func_end sub_808ABE0 - - thumb_func_start sub_808AC6C -sub_808AC6C: @ 808AC6C - push {lr} - ldr r0, _0808ACB0 @ =gUnknown_83CD320 - movs r1, 0xB0 - movs r2, 0x20 - bl LoadPalette - ldr r0, _0808ACB4 @ =gUnknown_83CD340 - movs r1, 0xC0 - movs r2, 0x20 - bl LoadPalette - ldr r0, _0808ACB8 @ =gUnknown_83CD360 - movs r1, 0xD0 - movs r2, 0x20 - bl LoadPalette - ldr r0, _0808ACBC @ =gUnknown_83CD380 - movs r1, 0xE0 - movs r2, 0x20 - bl LoadPalette - ldr r0, _0808ACC0 @ =gUnknown_20397A4 - ldr r1, [r0] - ldr r0, _0808ACC4 @ =0x000016cc - adds r1, r0 - movs r2, 0x80 - lsls r2, 3 - movs r0, 0x3 - movs r3, 0x80 - bl LoadBgTiles - pop {r0} - bx r0 - .align 2, 0 -_0808ACB0: .4byte gUnknown_83CD320 -_0808ACB4: .4byte gUnknown_83CD340 -_0808ACB8: .4byte gUnknown_83CD360 -_0808ACBC: .4byte gUnknown_83CD380 -_0808ACC0: .4byte gUnknown_20397A4 -_0808ACC4: .4byte 0x000016cc - thumb_func_end sub_808AC6C - - thumb_func_start sub_808ACC8 -sub_808ACC8: @ 808ACC8 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl PutWindowTilemap - adds r0, r4, 0 - movs r1, 0x3 - bl CopyWindowToVram - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_808ACC8 - - thumb_func_start sub_808ACE4 -sub_808ACE4: @ 808ACE4 - push {r4,lr} - sub sp, 0x8 - ldr r0, _0808AD00 @ =gUnknown_20397A4 - ldr r0, [r0] - ldrb r0, [r0, 0x3] - cmp r0, 0x6 - bls _0808ACF4 - b _0808AE44 -_0808ACF4: - lsls r0, 2 - ldr r1, _0808AD04 @ =_0808AD08 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0808AD00: .4byte gUnknown_20397A4 -_0808AD04: .4byte _0808AD08 - .align 2, 0 -_0808AD08: - .4byte _0808AD24 - .4byte _0808AD3C - .4byte _0808AD58 - .4byte _0808AD98 - .4byte _0808ADC4 - .4byte _0808AE0C - .4byte _0808AE1C -_0808AD24: - ldr r0, _0808AD34 @ =gUnknown_20397A4 - ldr r1, [r0] - ldr r0, _0808AD38 @ =0x000012cc - adds r1, r0 - movs r2, 0x80 - lsls r2, 3 - movs r0, 0x3 - b _0808AD48 - .align 2, 0 -_0808AD34: .4byte gUnknown_20397A4 -_0808AD38: .4byte 0x000012cc -_0808AD3C: - ldr r0, _0808AD50 @ =gUnknown_20397A4 - ldr r1, [r0] - ldr r2, _0808AD54 @ =0x000018cc - adds r1, r2 - subs r2, 0xCC - movs r0, 0 -_0808AD48: - movs r3, 0 - bl LoadBgTiles - b _0808AE7A - .align 2, 0 -_0808AD50: .4byte gUnknown_20397A4 -_0808AD54: .4byte 0x000018cc -_0808AD58: - ldr r0, _0808AD6C @ =gUnknown_20397A4 - ldr r2, [r0] - ldr r3, _0808AD70 @ =0x00000457 - adds r0, r2, r3 - ldrb r0, [r0] - cmp r0, 0x1 - bne _0808AD78 - ldr r1, _0808AD74 @ =gUnknown_83CD8B8 - adds r3, 0x6 - b _0808AD7C - .align 2, 0 -_0808AD6C: .4byte gUnknown_20397A4 -_0808AD70: .4byte 0x00000457 -_0808AD74: .4byte gUnknown_83CD8B8 -_0808AD78: - ldr r1, _0808AD90 @ =gUnknown_83CD8CC - ldr r3, _0808AD94 @ =0x0000045d -_0808AD7C: - adds r0, r2, r3 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0 - movs r2, 0x60 - bl LoadPalette - b _0808AE7A - .align 2, 0 -_0808AD90: .4byte gUnknown_83CD8CC -_0808AD94: .4byte 0x0000045d -_0808AD98: - ldr r0, _0808ADAC @ =gUnknown_20397A4 - ldr r0, [r0] - ldr r1, _0808ADB0 @ =0x00000457 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _0808ADB8 - ldr r0, _0808ADB4 @ =gUnknown_83CD2C0 - movs r1, 0x30 - b _0808AE10 - .align 2, 0 -_0808ADAC: .4byte gUnknown_20397A4 -_0808ADB0: .4byte 0x00000457 -_0808ADB4: .4byte gUnknown_83CD2C0 -_0808ADB8: - ldr r0, _0808ADC0 @ =gUnknown_83CD2E0 - movs r1, 0x30 - b _0808AE10 - .align 2, 0 -_0808ADC0: .4byte gUnknown_83CD2E0 -_0808ADC4: - ldr r0, _0808ADE4 @ =gUnknown_20397A4 - ldr r1, [r0] - ldr r2, _0808ADE8 @ =0x00000457 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x1 - bne _0808ADF4 - ldr r3, _0808ADEC @ =0x0000045c - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, 0 - beq _0808AE7A - ldr r0, _0808ADF0 @ =gUnknown_83CD280 - movs r1, 0x10 - b _0808AE10 - .align 2, 0 -_0808ADE4: .4byte gUnknown_20397A4 -_0808ADE8: .4byte 0x00000457 -_0808ADEC: .4byte 0x0000045c -_0808ADF0: .4byte gUnknown_83CD280 -_0808ADF4: - ldr r2, _0808AE04 @ =0x0000045c - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _0808AE7A - ldr r0, _0808AE08 @ =gUnknown_83CD2A0 - movs r1, 0x10 - b _0808AE10 - .align 2, 0 -_0808AE04: .4byte 0x0000045c -_0808AE08: .4byte gUnknown_83CD2A0 -_0808AE0C: - ldr r0, _0808AE18 @ =gUnknown_83CD300 - movs r1, 0x40 -_0808AE10: - movs r2, 0x20 - bl LoadPalette - b _0808AE7A - .align 2, 0 -_0808AE18: .4byte gUnknown_83CD300 -_0808AE1C: - ldr r4, _0808AE38 @ =gUnknown_20397A4 - ldr r1, [r4] - ldr r3, _0808AE3C @ =0x00003bcc - adds r1, r3 - movs r0, 0 - bl SetBgTilemapBuffer - ldr r1, [r4] - ldr r0, _0808AE40 @ =0x00005bcc - adds r1, r0 - movs r0, 0x2 - bl SetBgTilemapBuffer - b _0808AE7A - .align 2, 0 -_0808AE38: .4byte gUnknown_20397A4 -_0808AE3C: .4byte 0x00003bcc -_0808AE40: .4byte 0x00005bcc -_0808AE44: - movs r4, 0x20 - str r4, [sp] - str r4, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - str r4, [sp] - str r4, [sp, 0x4] - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - str r4, [sp] - str r4, [sp, 0x4] - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - movs r0, 0x1 - b _0808AE86 -_0808AE7A: - ldr r0, _0808AE90 @ =gUnknown_20397A4 - ldr r1, [r0] - ldrb r0, [r1, 0x3] - adds r0, 0x1 - strb r0, [r1, 0x3] - movs r0, 0 -_0808AE86: - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0808AE90: .4byte gUnknown_20397A4 - thumb_func_end sub_808ACE4 - - thumb_func_start sub_808AE94 -sub_808AE94: @ 808AE94 - push {r4-r7,lr} - adds r7, r0, 0 - ldr r0, _0808AECC @ =gUnknown_20397A4 - ldr r0, [r0] - ldr r1, _0808AED0 @ =0x00005bcc - adds r6, r0, r1 - movs r1, 0 -_0808AEA2: - movs r2, 0 - lsls r5, r1, 16 - asrs r1, r5, 16 - lsls r3, r1, 5 - lsls r0, r1, 4 - subs r0, r1 - lsls r4, r0, 1 -_0808AEB0: - lsls r0, r2, 16 - asrs r1, r0, 16 - adds r2, r0, 0 - cmp r1, 0x1D - bgt _0808AED4 - adds r0, r3, r1 - lsls r0, 1 - adds r0, r6 - adds r1, r4, r1 - lsls r1, 1 - adds r1, r7 - ldrh r1, [r1] - b _0808AEDC - .align 2, 0 -_0808AECC: .4byte gUnknown_20397A4 -_0808AED0: .4byte 0x00005bcc -_0808AED4: - adds r0, r3, r1 - lsls r0, 1 - adds r0, r6 - ldrh r1, [r7] -_0808AEDC: - strh r1, [r0] - movs r1, 0x80 - lsls r1, 9 - adds r0, r2, r1 - lsrs r2, r0, 16 - asrs r0, 16 - cmp r0, 0x1F - ble _0808AEB0 - adds r0, r5, r1 - lsrs r1, r0, 16 - asrs r0, 16 - cmp r0, 0x13 - ble _0808AEA2 - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_808AE94 - - thumb_func_start sub_808AF04 -sub_808AF04: @ 808AF04 - push {r4-r7,lr} - adds r7, r0, 0 - ldr r0, _0808AF3C @ =gUnknown_20397A4 - ldr r0, [r0] - ldr r1, _0808AF40 @ =0x00003bcc - adds r6, r0, r1 - movs r1, 0 -_0808AF12: - movs r2, 0 - lsls r5, r1, 16 - asrs r1, r5, 16 - lsls r3, r1, 5 - lsls r0, r1, 4 - subs r0, r1 - lsls r4, r0, 1 -_0808AF20: - lsls r0, r2, 16 - asrs r1, r0, 16 - adds r2, r0, 0 - cmp r1, 0x1D - bgt _0808AF44 - adds r0, r3, r1 - lsls r0, 1 - adds r0, r6 - adds r1, r4, r1 - lsls r1, 1 - adds r1, r7 - ldrh r1, [r1] - b _0808AF4C - .align 2, 0 -_0808AF3C: .4byte gUnknown_20397A4 -_0808AF40: .4byte 0x00003bcc -_0808AF44: - adds r0, r3, r1 - lsls r0, 1 - adds r0, r6 - ldrh r1, [r7] -_0808AF4C: - strh r1, [r0] - movs r1, 0x80 - lsls r1, 9 - adds r0, r2, r1 - lsrs r2, r0, 16 - asrs r0, 16 - cmp r0, 0x1F - ble _0808AF20 - adds r0, r5, r1 - lsrs r1, r0, 16 - asrs r0, 16 - cmp r0, 0x13 - ble _0808AF12 - movs r0, 0 - bl CopyBgTilemapBufferToVram - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_808AF04 - - thumb_func_start sub_808AF74 -sub_808AF74: @ 808AF74 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - movs r0, 0xC0 - mov r8, r0 - movs r2, 0x3 - mov r10, r2 - ldr r2, _0808B080 @ =gUnknown_83CD95C - ldr r4, _0808B084 @ =gUnknown_20397A4 - ldr r1, [r4] - ldr r3, _0808B088 @ =0x00000457 - adds r0, r1, r3 - ldrb r0, [r0] - adds r0, r2 - ldrb r3, [r0] - ldr r0, _0808B08C @ =0x0000045d - adds r1, r0 - ldrb r0, [r1] - str r0, [sp] - movs r0, 0x1 - str r0, [sp, 0x4] - movs r0, 0x4 - str r0, [sp, 0x8] - movs r0, 0x3 - movs r1, 0x8F - movs r2, 0xF - bl FillBgTilemapBufferRect - ldr r0, [r4] - ldrb r0, [r0, 0x5] - cmp r0, 0 - bne _0808B068 - movs r2, 0x4 - mov r9, r2 - movs r2, 0 - movs r6, 0x1 -_0808AFC2: - ldr r0, _0808B084 @ =gUnknown_20397A4 - ldr r1, [r0] - lsls r0, r2, 16 - asrs r7, r0, 16 - adds r1, 0x11 - adds r1, r7 - ldrb r0, [r1] - cmp r0, 0 - beq _0808B044 - mov r3, r9 - lsls r5, r3, 24 - lsrs r5, 24 - str r6, [sp] - str r6, [sp, 0x4] - mov r0, r10 - str r0, [sp, 0x8] - movs r0, 0x3 - mov r1, r8 - adds r2, r5, 0 - movs r3, 0x10 - bl FillBgTilemapBufferRect - mov r1, r8 - adds r1, 0x1 - lsls r1, 16 - lsrs r1, 16 - mov r4, r9 - adds r4, 0x1 - lsls r4, 24 - lsrs r4, 24 - str r6, [sp] - str r6, [sp, 0x4] - mov r2, r10 - str r2, [sp, 0x8] - movs r0, 0x3 - adds r2, r4, 0 - movs r3, 0x10 - bl FillBgTilemapBufferRect - mov r1, r8 - adds r1, 0x10 - lsls r1, 16 - lsrs r1, 16 - str r6, [sp] - str r6, [sp, 0x4] - mov r3, r10 - str r3, [sp, 0x8] - movs r0, 0x3 - adds r2, r5, 0 - movs r3, 0x11 - bl FillBgTilemapBufferRect - mov r1, r8 - adds r1, 0x11 - lsls r1, 16 - lsrs r1, 16 - str r6, [sp] - str r6, [sp, 0x4] - mov r0, r10 - str r0, [sp, 0x8] - movs r0, 0x3 - adds r2, r4, 0 - movs r3, 0x11 - bl FillBgTilemapBufferRect -_0808B044: - adds r0, r7, 0x1 - lsls r0, 16 - mov r1, r8 - adds r1, 0x2 - lsls r1, 16 - lsrs r1, 16 - mov r8, r1 - mov r2, r9 - lsls r1, r2, 16 - movs r3, 0xC0 - lsls r3, 10 - adds r1, r3 - lsrs r1, 16 - mov r9, r1 - lsrs r2, r0, 16 - asrs r0, 16 - cmp r0, 0x7 - ble _0808AFC2 -_0808B068: - movs r0, 0x3 - bl CopyBgTilemapBufferToVram - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0808B080: .4byte gUnknown_83CD95C -_0808B084: .4byte gUnknown_20397A4 -_0808B088: .4byte 0x00000457 -_0808B08C: .4byte 0x0000045d - thumb_func_end sub_808AF74 - - thumb_func_start sub_808B090 -sub_808B090: @ 808B090 - push {r4-r6,lr} - sub sp, 0xC - ldr r6, _0808B138 @ =gUnknown_20397A4 - ldr r1, [r6] - ldr r2, _0808B13C @ =0x00000457 - adds r0, r1, r2 - ldrb r5, [r0] - cmp r5, 0x1 - beq _0808B144 - ldrb r0, [r1, 0x10] - cmp r0, 0 - beq _0808B0CE - movs r4, 0x1 - str r4, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0x3 - movs r1, 0x8D - movs r2, 0x1A - movs r3, 0x9 - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0x3 - movs r1, 0x9D - movs r2, 0x1A - movs r3, 0xA - bl FillBgTilemapBufferRect -_0808B0CE: - ldr r0, [r6] - movs r1, 0x93 - lsls r1, 3 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0 - beq _0808B102 - movs r4, 0x1 - str r4, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0x3 - movs r1, 0x8D - movs r2, 0x15 - movs r3, 0xD - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0x3 - movs r1, 0x9D - movs r2, 0x15 - movs r3, 0xE - bl FillBgTilemapBufferRect -_0808B102: - ldr r0, [r6] - ldr r2, _0808B140 @ =0x0000049c - adds r0, r2 - ldr r0, [r0] - cmp r0, 0 - beq _0808B170 - movs r4, 0x1 - str r4, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0x3 - movs r1, 0x8D - movs r2, 0x1B - movs r3, 0xB - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0x3 - movs r1, 0x9D - movs r2, 0x1B - movs r3, 0xC - bl FillBgTilemapBufferRect - b _0808B170 - .align 2, 0 -_0808B138: .4byte gUnknown_20397A4 -_0808B13C: .4byte 0x00000457 -_0808B140: .4byte 0x0000049c -_0808B144: - ldrb r0, [r1, 0x10] - cmp r0, 0 - beq _0808B170 - str r5, [sp] - str r5, [sp, 0x4] - movs r4, 0 - str r4, [sp, 0x8] - movs r0, 0x3 - movs r1, 0x8D - movs r2, 0x1A - movs r3, 0x9 - bl FillBgTilemapBufferRect - str r5, [sp] - str r5, [sp, 0x4] - str r4, [sp, 0x8] - movs r0, 0x3 - movs r1, 0x9D - movs r2, 0x1A - movs r3, 0xA - bl FillBgTilemapBufferRect -_0808B170: - movs r0, 0x3 - bl CopyBgTilemapBufferToVram - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_808B090 - - thumb_func_start sub_808B180 -sub_808B180: @ 808B180 - push {lr} - ldr r3, _0808B1B4 @ =gUnknown_20397A4 - ldr r1, [r3] - ldrb r0, [r1, 0x6] - adds r0, 0x1 - strb r0, [r1, 0x6] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3C - bls _0808B1AE - ldr r1, [r3] - movs r0, 0 - strb r0, [r1, 0x6] - ldr r2, [r3] - ldrb r0, [r2, 0x7] - movs r1, 0x1 - eors r0, r1 - strb r0, [r2, 0x7] - ldr r0, [r3] - ldr r1, _0808B1B8 @ =0x00007bce - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] -_0808B1AE: - pop {r0} - bx r0 - .align 2, 0 -_0808B1B4: .4byte gUnknown_20397A4 -_0808B1B8: .4byte 0x00007bce - thumb_func_end sub_808B180 - - thumb_func_start sub_808B1BC -sub_808B1BC: @ 808B1BC - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0808B1D0 @ =gTrainerCards - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 5 - adds r1, r2 - ldrb r0, [r1, 0x1] - bx lr - .align 2, 0 -_0808B1D0: .4byte gTrainerCards - thumb_func_end sub_808B1BC - - thumb_func_start sub_808B1D4 -sub_808B1D4: @ 808B1D4 - push {r4,lr} - ldr r4, _0808B1F4 @ =sub_808B21C - adds r0, r4, 0 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - bl _call_via_r4 - ldr r0, _0808B1F8 @ =sub_8089034 - bl SetHBlankCallback - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808B1F4: .4byte sub_808B21C -_0808B1F8: .4byte sub_8089034 - thumb_func_end sub_808B1D4 - - thumb_func_start sub_808B1FC -sub_808B1FC: @ 808B1FC - push {lr} - ldr r0, _0808B210 @ =sub_808B21C - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _0808B214 - movs r0, 0 - b _0808B216 - .align 2, 0 -_0808B210: .4byte sub_808B21C -_0808B214: - movs r0, 0x1 -_0808B216: - pop {r1} - bx r1 - thumb_func_end sub_808B1FC - - thumb_func_start sub_808B21C -sub_808B21C: @ 808B21C - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r5, _0808B24C @ =gUnknown_83CD908 - ldr r2, _0808B250 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 -_0808B22E: - movs r1, 0x8 - ldrsh r0, [r4, r1] - lsls r0, 2 - adds r0, r5 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _0808B22E - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808B24C: .4byte gUnknown_83CD908 -_0808B250: .4byte gTasks - thumb_func_end sub_808B21C - - thumb_func_start sub_808B254 -sub_808B254: @ 808B254 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0x1 - bl HideBg - movs r0, 0x3 - bl HideBg - bl ScanlineEffect_Stop - bl ScanlineEffect_Clear - movs r1, 0 - ldr r0, _0808B290 @ =gScanlineEffectRegBuffers - movs r2, 0 - movs r3, 0xF0 - lsls r3, 3 - adds r0, r3 -_0808B278: - strh r2, [r0] - adds r0, 0x2 - adds r1, 0x1 - cmp r1, 0x9F - bls _0808B278 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0808B290: .4byte gScanlineEffectRegBuffers - thumb_func_end sub_808B254 - - thumb_func_start sub_808B294 -sub_808B294: @ 808B294 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - mov r8, r0 - ldr r0, _0808B2C0 @ =gUnknown_20397A4 - ldr r1, [r0] - movs r0, 0 - strb r0, [r1, 0x9] - mov r0, r8 - ldrh r1, [r0, 0xA] - movs r2, 0xA - ldrsh r0, [r0, r2] - cmp r0, 0x4C - ble _0808B2C4 - movs r0, 0x4D - mov r3, r8 - strh r0, [r3, 0xA] - b _0808B2CA - .align 2, 0 -_0808B2C0: .4byte gUnknown_20397A4 -_0808B2C4: - adds r0, r1, 0x7 - mov r4, r8 - strh r0, [r4, 0xA] -_0808B2CA: - ldr r0, _0808B3B4 @ =gUnknown_20397A4 - ldr r0, [r0] - mov r2, r8 - ldrh r1, [r2, 0xA] - ldr r3, _0808B3B8 @ =0x00007bcc - adds r0, r3 - strh r1, [r0] - ldrh r0, [r2, 0xA] - bl sub_8089BD8 - mov r4, r8 - movs r0, 0xA - ldrsh r7, [r4, r0] - movs r0, 0xA0 - subs r0, r7 - mov r9, r0 - subs r4, r0, r7 - negs r0, r7 - lsls r6, r0, 16 - movs r0, 0xA0 - lsls r0, 16 - adds r1, r4, 0 - bl __udivsi3 - adds r5, r0, 0 - ldr r1, _0808B3BC @ =0xffff0000 - adds r5, r1 - adds r0, r5, 0 - muls r0, r4 - adds r0, r6, r0 - str r0, [sp] - adds r0, r5, 0 - adds r1, r4, 0 - bl __udivsi3 - mov r10, r0 - lsls r5, 1 - movs r2, 0 - cmp r2, r7 - bcs _0808B334 - ldr r3, _0808B3C0 @ =gScanlineEffectRegBuffers -_0808B31C: - lsls r0, r2, 16 - asrs r0, 16 - lsls r1, r0, 1 - adds r1, r3 - negs r2, r0 - strh r2, [r1] - adds r0, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - asrs r0, 16 - cmp r0, r7 - bcc _0808B31C -_0808B334: - lsls r1, r2, 16 - mov r3, r9 - lsls r0, r3, 16 - asrs r3, r0, 16 - ldr r4, _0808B3B4 @ =gUnknown_20397A4 - mov r9, r4 - ldr r4, [sp] - lsrs r7, r4, 16 - cmp r1, r0 - bge _0808B36C - ldr r0, _0808B3C0 @ =gScanlineEffectRegBuffers - mov r12, r0 - adds r4, r3, 0 -_0808B34E: - lsrs r3, r6, 16 - adds r6, r5 - mov r2, r10 - subs r5, r2 - asrs r0, r1, 16 - lsls r1, r0, 1 - add r1, r12 - strh r3, [r1] - adds r0, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - lsls r1, r2, 16 - asrs r0, r1, 16 - cmp r0, r4 - blt _0808B34E -_0808B36C: - adds r3, r7, 0 - lsls r1, r2, 16 - asrs r0, r1, 16 - cmp r0, 0x9F - bgt _0808B38A - ldr r2, _0808B3C0 @ =gScanlineEffectRegBuffers -_0808B378: - asrs r0, r1, 16 - lsls r1, r0, 1 - adds r1, r2 - strh r3, [r1] - adds r0, 0x1 - lsls r1, r0, 16 - asrs r0, r1, 16 - cmp r0, 0x9F - ble _0808B378 -_0808B38A: - mov r3, r9 - ldr r0, [r3] - movs r1, 0x1 - strb r1, [r0, 0x9] - mov r4, r8 - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0x4C - ble _0808B3A2 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] -_0808B3A2: - movs r0, 0 - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0808B3B4: .4byte gUnknown_20397A4 -_0808B3B8: .4byte 0x00007bcc -_0808B3BC: .4byte 0xffff0000 -_0808B3C0: .4byte gScanlineEffectRegBuffers - thumb_func_end sub_808B294 - - thumb_func_start sub_808B3C4 -sub_808B3C4: @ 808B3C4 - push {r4,r5,lr} - sub sp, 0x8 - adds r5, r0, 0 - ldr r4, _0808B3F0 @ =gUnknown_20397A4 - ldr r1, [r4] - movs r0, 0 - strb r0, [r1, 0x9] - bl sub_8058244 - adds r2, r4, 0 - cmp r0, 0x1 - beq _0808B4C4 -_0808B3DC: - ldr r3, [r2] - ldrb r0, [r3, 0x4] - cmp r0, 0x4 - bhi _0808B4A0 - lsls r0, 2 - ldr r1, _0808B3F4 @ =_0808B3F8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0808B3F0: .4byte gUnknown_20397A4 -_0808B3F4: .4byte _0808B3F8 - .align 2, 0 -_0808B3F8: - .4byte _0808B40C - .4byte _0808B428 - .4byte _0808B448 - .4byte _0808B46C - .4byte _0808B48A -_0808B40C: - movs r0, 0x1 - movs r1, 0 - bl FillWindowPixelBuffer - movs r0, 0x20 - str r0, [sp] - str r0, [sp, 0x4] - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - b _0808B4B2 -_0808B428: - ldr r0, [r2] - ldrb r0, [r0, 0x8] - cmp r0, 0 - bne _0808B43C - bl sub_8089E40 - lsls r0, 24 - cmp r0, 0 - bne _0808B4B2 - b _0808B4C4 -_0808B43C: - bl sub_8089DC8 - lsls r0, 24 - cmp r0, 0 - bne _0808B4B2 - b _0808B4C4 -_0808B448: - ldr r0, _0808B45C @ =gUnknown_20397A4 - ldr r1, [r0] - ldrb r0, [r1, 0x8] - cmp r0, 0 - bne _0808B464 - ldr r2, _0808B460 @ =0x0000096c - adds r0, r1, r2 - bl sub_808AF04 - b _0808B4B2 - .align 2, 0 -_0808B45C: .4byte gUnknown_20397A4 -_0808B460: .4byte 0x0000096c -_0808B464: - movs r0, 0x1 - bl sub_808ACC8 - b _0808B4B2 -_0808B46C: - ldr r0, _0808B47C @ =gUnknown_20397A4 - ldr r0, [r0] - ldrb r0, [r0, 0x8] - cmp r0, 0 - bne _0808B480 - bl sub_808B090 - b _0808B4B2 - .align 2, 0 -_0808B47C: .4byte gUnknown_20397A4 -_0808B480: - movs r0, 0x2 - movs r1, 0 - bl FillWindowPixelBuffer - b _0808B4B2 -_0808B48A: - ldr r0, _0808B49C @ =gUnknown_20397A4 - ldr r0, [r0] - ldrb r0, [r0, 0x8] - cmp r0, 0 - beq _0808B4B2 - bl sub_808B838 - b _0808B4B2 - .align 2, 0 -_0808B49C: .4byte gUnknown_20397A4 -_0808B4A0: - ldrh r0, [r5, 0x8] - adds r0, 0x1 - movs r1, 0 - strh r0, [r5, 0x8] - movs r0, 0x1 - strb r0, [r3, 0x9] - ldr r0, [r2] - strb r1, [r0, 0x4] - b _0808B4C4 -_0808B4B2: - ldr r2, _0808B4D0 @ =gUnknown_20397A4 - ldr r1, [r2] - ldrb r0, [r1, 0x4] - adds r0, 0x1 - strb r0, [r1, 0x4] - ldr r0, _0808B4D4 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _0808B3DC -_0808B4C4: - movs r0, 0 - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0808B4D0: .4byte gUnknown_20397A4 -_0808B4D4: .4byte gReceivedRemoteLinkPlayers - thumb_func_end sub_808B3C4 - - thumb_func_start sub_808B4D8 -sub_808B4D8: @ 808B4D8 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _0808B534 @ =gUnknown_20397A4 - ldr r1, [r4] - movs r0, 0 - strb r0, [r1, 0x9] - ldr r0, [r4] - ldrb r0, [r0, 0x8] - cmp r0, 0 - beq _0808B50A - movs r0, 0x2 - bl sub_808ACC8 - ldr r0, [r4] - ldr r1, _0808B538 @ =0x00000e1c - adds r0, r1 - bl sub_808AE94 - ldr r0, [r4] - ldr r1, _0808B53C @ =0x000004bc - adds r0, r1 - bl sub_808AF04 - bl sub_808AF74 -_0808B50A: - movs r0, 0x1 - bl sub_808ACC8 - ldr r2, [r4] - ldrb r0, [r2, 0x8] - movs r1, 0x1 - eors r0, r1 - strb r0, [r2, 0x8] - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] - ldr r1, [r4] - movs r0, 0x1 - strb r0, [r1, 0x9] - movs r0, 0xF3 - bl PlaySE - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0808B534: .4byte gUnknown_20397A4 -_0808B538: .4byte 0x00000e1c -_0808B53C: .4byte 0x000004bc - thumb_func_end sub_808B4D8 - - thumb_func_start sub_808B540 -sub_808B540: @ 808B540 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - mov r8, r0 - ldr r0, _0808B568 @ =gUnknown_20397A4 - ldr r0, [r0] - movs r2, 0 - strb r2, [r0, 0x9] - mov r0, r8 - ldrh r1, [r0, 0xA] - movs r3, 0xA - ldrsh r0, [r0, r3] - cmp r0, 0x5 - bgt _0808B56C - mov r4, r8 - strh r2, [r4, 0xA] - b _0808B572 - .align 2, 0 -_0808B568: .4byte gUnknown_20397A4 -_0808B56C: - subs r0, r1, 0x5 - mov r1, r8 - strh r0, [r1, 0xA] -_0808B572: - ldr r0, _0808B65C @ =gUnknown_20397A4 - ldr r0, [r0] - mov r2, r8 - ldrh r1, [r2, 0xA] - ldr r3, _0808B660 @ =0x00007bcc - adds r0, r3 - strh r1, [r0] - ldrh r0, [r2, 0xA] - bl sub_8089BD8 - mov r4, r8 - movs r0, 0xA - ldrsh r7, [r4, r0] - movs r0, 0xA0 - subs r0, r7 - mov r9, r0 - subs r4, r0, r7 - negs r0, r7 - lsls r6, r0, 16 - movs r0, 0xA0 - lsls r0, 16 - adds r1, r4, 0 - bl __udivsi3 - adds r5, r0, 0 - ldr r1, _0808B664 @ =0xffff0000 - adds r5, r1 - adds r0, r5, 0 - muls r0, r4 - adds r0, r6, r0 - str r0, [sp] - adds r0, r5, 0 - adds r1, r4, 0 - bl __udivsi3 - mov r10, r0 - lsrs r5, 1 - movs r2, 0 - cmp r2, r7 - bcs _0808B5DC - ldr r3, _0808B668 @ =gScanlineEffectRegBuffers -_0808B5C4: - lsls r0, r2, 16 - asrs r0, 16 - lsls r1, r0, 1 - adds r1, r3 - negs r2, r0 - strh r2, [r1] - adds r0, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - asrs r0, 16 - cmp r0, r7 - bcc _0808B5C4 -_0808B5DC: - lsls r1, r2, 16 - mov r3, r9 - lsls r0, r3, 16 - asrs r3, r0, 16 - ldr r4, _0808B65C @ =gUnknown_20397A4 - mov r9, r4 - ldr r4, [sp] - lsrs r7, r4, 16 - cmp r1, r0 - bge _0808B612 - ldr r0, _0808B668 @ =gScanlineEffectRegBuffers - mov r12, r0 - adds r4, r3, 0 -_0808B5F6: - lsrs r3, r6, 16 - adds r6, r5 - add r5, r10 - asrs r0, r1, 16 - lsls r1, r0, 1 - add r1, r12 - strh r3, [r1] - adds r0, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - lsls r1, r2, 16 - asrs r0, r1, 16 - cmp r0, r4 - blt _0808B5F6 -_0808B612: - adds r3, r7, 0 - lsls r1, r2, 16 - asrs r0, r1, 16 - cmp r0, 0x9F - bgt _0808B630 - ldr r2, _0808B668 @ =gScanlineEffectRegBuffers -_0808B61E: - asrs r0, r1, 16 - lsls r1, r0, 1 - adds r1, r2 - strh r3, [r1] - adds r0, 0x1 - lsls r1, r0, 16 - asrs r0, r1, 16 - cmp r0, 0x9F - ble _0808B61E -_0808B630: - mov r1, r9 - ldr r0, [r1] - movs r1, 0x1 - strb r1, [r0, 0x9] - mov r2, r8 - movs r3, 0xA - ldrsh r0, [r2, r3] - cmp r0, 0 - bgt _0808B648 - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] -_0808B648: - movs r0, 0 - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0808B65C: .4byte gUnknown_20397A4 -_0808B660: .4byte 0x00007bcc -_0808B664: .4byte 0xffff0000 -_0808B668: .4byte gScanlineEffectRegBuffers - thumb_func_end sub_808B540 - - thumb_func_start sub_808B66C -sub_808B66C: @ 808B66C - push {lr} - movs r0, 0x1 - bl ShowBg - movs r0, 0x3 - bl ShowBg - movs r0, 0 - bl SetHBlankCallback - ldr r0, _0808B694 @ =sub_808B21C - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - movs r0, 0 - pop {r1} - bx r1 - .align 2, 0 -_0808B694: .4byte sub_808B21C - thumb_func_end sub_808B66C - - thumb_func_start InitTrainerCard -InitTrainerCard: @ 808B698 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r5, _0808B6C0 @ =gUnknown_20397A4 - ldr r0, _0808B6C4 @ =0x00007bd0 - bl AllocZeroed - str r0, [r5] - movs r1, 0x8B - lsls r1, 3 - adds r0, r1 - str r4, [r0] - bl InUnionRoom - adds r1, r0, 0 - cmp r1, 0x1 - bne _0808B6C8 - ldr r0, [r5] - strb r1, [r0, 0x5] - b _0808B6CE - .align 2, 0 -_0808B6C0: .4byte gUnknown_20397A4 -_0808B6C4: .4byte 0x00007bd0 -_0808B6C8: - ldr r1, [r5] - movs r0, 0 - strb r0, [r1, 0x5] -_0808B6CE: - ldr r2, _0808B6F0 @ =gUnknown_20397A4 - ldr r0, [r2] - ldr r1, _0808B6F4 @ =0x00007bcf - adds r0, r1 - movs r1, 0x2 - strb r1, [r0] - ldr r0, [r2] - ldr r1, _0808B6F8 @ =0x0000045c - adds r0, r1 - bl sub_80898E8 - ldr r0, _0808B6FC @ =sub_80895B8 - bl SetMainCallback2 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808B6F0: .4byte gUnknown_20397A4 -_0808B6F4: .4byte 0x00007bcf -_0808B6F8: .4byte 0x0000045c -_0808B6FC: .4byte sub_80895B8 - thumb_func_end InitTrainerCard - - thumb_func_start InitLinkPartnerTrainerCard -InitLinkPartnerTrainerCard: @ 808B700 - push {r4-r6,lr} - adds r4, r0, 0 - adds r6, r1, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r5, _0808B758 @ =gUnknown_20397A4 - ldr r0, _0808B75C @ =0x00007bd0 - bl AllocZeroed - str r0, [r5] - movs r2, 0x8B - lsls r2, 3 - adds r1, r0, r2 - str r6, [r1] - movs r1, 0x1 - strb r1, [r0, 0x5] - ldr r0, [r5] - ldr r1, _0808B760 @ =0x0000045c - adds r0, r1 - ldr r2, _0808B764 @ =gTrainerCards - lsls r1, r4, 1 - adds r1, r4 - lsls r1, 5 - adds r1, r2 - movs r2, 0x60 - bl memcpy - ldr r1, [r5] - ldr r2, _0808B768 @ =gLinkPlayers - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0, 0x1A] - ldr r2, _0808B76C @ =0x00007bcf - adds r1, r2 - strb r0, [r1] - ldr r0, _0808B770 @ =sub_80895B8 - bl SetMainCallback2 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0808B758: .4byte gUnknown_20397A4 -_0808B75C: .4byte 0x00007bd0 -_0808B760: .4byte 0x0000045c -_0808B764: .4byte gTrainerCards -_0808B768: .4byte gLinkPlayers -_0808B76C: .4byte 0x00007bcf -_0808B770: .4byte sub_80895B8 - thumb_func_end InitLinkPartnerTrainerCard - - thumb_func_start sub_808B774 -sub_808B774: @ 808B774 - push {r4,r5,lr} - ldr r4, _0808B7B0 @ =gUnknown_20397A4 - ldr r0, [r4] - movs r5, 0 - strb r5, [r0] - ldr r1, [r4] - ldr r0, _0808B7B4 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x12] - strb r0, [r1, 0x6] - ldr r0, [r4] - strb r5, [r0, 0x7] - ldr r0, [r4] - strb r5, [r0, 0x8] - ldr r0, [r4] - ldr r1, _0808B7B8 @ =0x00000456 - adds r0, r1 - strb r5, [r0] - bl sub_808B800 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x1 - bne _0808B7C0 - ldr r0, [r4] - ldr r2, _0808B7BC @ =0x00000457 - adds r0, r2 - strb r1, [r0] - b _0808B7C8 - .align 2, 0 -_0808B7B0: .4byte gUnknown_20397A4 -_0808B7B4: .4byte gSaveBlock2Ptr -_0808B7B8: .4byte 0x00000456 -_0808B7BC: .4byte 0x00000457 -_0808B7C0: - ldr r0, [r4] - ldr r3, _0808B7F4 @ =0x00000457 - adds r0, r3 - strb r5, [r0] -_0808B7C8: - movs r4, 0 - ldr r5, _0808B7F8 @ =gUnknown_20397A4 -_0808B7CC: - movs r0, 0xD - muls r0, r4 - adds r0, 0x19 - ldr r1, [r5] - adds r0, r1, r0 - lsls r2, r4, 1 - ldr r3, _0808B7FC @ =0x00000484 - adds r1, r3 - adds r1, r2 - ldrh r1, [r1] - bl CopyEasyChatWord - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _0808B7CC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0808B7F4: .4byte 0x00000457 -_0808B7F8: .4byte gUnknown_20397A4 -_0808B7FC: .4byte 0x00000484 - thumb_func_end sub_808B774 - - thumb_func_start sub_808B800 -sub_808B800: @ 808B800 - push {lr} - ldr r0, _0808B810 @ =gUnknown_20397A4 - ldr r0, [r0] - cmp r0, 0 - bne _0808B818 - ldr r0, _0808B814 @ =gGameVersion - b _0808B81C - .align 2, 0 -_0808B810: .4byte gUnknown_20397A4 -_0808B814: .4byte gGameVersion -_0808B818: - ldr r1, _0808B82C @ =0x00000494 - adds r0, r1 -_0808B81C: - ldrb r0, [r0] - subs r0, 0x4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _0808B830 - movs r0, 0x1 - b _0808B832 - .align 2, 0 -_0808B82C: .4byte 0x00000494 -_0808B830: - movs r0, 0 -_0808B832: - pop {r1} - bx r1 - thumb_func_end sub_808B800 - - thumb_func_start sub_808B838 -sub_808B838: @ 808B838 - push {r4-r7,lr} - sub sp, 0x8 - ldr r2, _0808B888 @ =gUnknown_83CD8F4 - ldr r5, _0808B88C @ =gUnknown_20397A4 - ldr r0, [r5] - ldr r6, _0808B890 @ =0x0000045c - adds r1, r0, r6 - ldr r7, _0808B894 @ =0x00000457 - adds r0, r7 - ldrb r0, [r0] - lsls r0, 1 - ldrb r1, [r1] - adds r0, r1 - adds r0, r2 - ldrb r4, [r0] - bl InUnionRoom - cmp r0, 0x1 - bne _0808B8A4 - ldr r0, _0808B898 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0x1 - bne _0808B8A4 - ldr r0, [r5] - ldr r1, _0808B89C @ =0x000004ab - adds r0, r1 - ldrb r4, [r0] - adds r0, r4, 0 - bl FacilityClassToPicIndex - lsls r0, 16 - lsrs r0, 16 - ldr r4, _0808B8A0 @ =gUnknown_83CD8EC - ldr r1, [r5] - adds r2, r1, r6 - ldrb r3, [r2] - lsls r3, 1 - adds r1, r7 - b _0808B8CC - .align 2, 0 -_0808B888: .4byte gUnknown_83CD8F4 -_0808B88C: .4byte gUnknown_20397A4 -_0808B890: .4byte 0x0000045c -_0808B894: .4byte 0x00000457 -_0808B898: .4byte gReceivedRemoteLinkPlayers -_0808B89C: .4byte 0x000004ab -_0808B8A0: .4byte gUnknown_83CD8EC -_0808B8A4: - ldr r6, _0808B8EC @ =gUnknown_20397A4 - ldr r1, [r6] - ldr r2, _0808B8F0 @ =0x00000457 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _0808B8FC - adds r0, r4, 0 - bl FacilityClassToPicIndex - lsls r0, 16 - lsrs r0, 16 - ldr r4, _0808B8F4 @ =gUnknown_83CD8EC - ldr r1, [r6] - ldr r3, _0808B8F8 @ =0x0000045c - adds r2, r1, r3 - ldrb r3, [r2] - lsls r3, 1 - ldr r2, _0808B8F0 @ =0x00000457 - adds r1, r2 -_0808B8CC: - ldrb r1, [r1] - lsls r1, 2 - adds r3, r1 - adds r1, r3, r4 - ldrb r2, [r1] - adds r4, 0x1 - adds r3, r4 - ldrb r3, [r3] - movs r1, 0x8 - str r1, [sp] - movs r1, 0x2 - str r1, [sp, 0x4] - movs r1, 0x1 - bl sub_810C330 - b _0808B938 - .align 2, 0 -_0808B8EC: .4byte gUnknown_20397A4 -_0808B8F0: .4byte 0x00000457 -_0808B8F4: .4byte gUnknown_83CD8EC -_0808B8F8: .4byte 0x0000045c -_0808B8FC: - ldr r4, _0808B940 @ =0x0000045c - adds r0, r1, r4 - ldrb r0, [r0] - movs r1, 0x1 - bl PlayerGenderToFrontTrainerPicId_Debug - lsls r0, 16 - lsrs r0, 16 - ldr r5, _0808B944 @ =gUnknown_83CD8EC - ldr r1, [r6] - adds r4, r1, r4 - ldrb r3, [r4] - lsls r3, 1 - ldr r2, _0808B948 @ =0x00000457 - adds r1, r2 - ldrb r1, [r1] - lsls r1, 2 - adds r3, r1 - adds r1, r3, r5 - ldrb r2, [r1] - adds r5, 0x1 - adds r3, r5 - ldrb r3, [r3] - movs r1, 0x8 - str r1, [sp] - movs r1, 0x2 - str r1, [sp, 0x4] - movs r1, 0x1 - bl sub_810C330 -_0808B938: - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0808B940: .4byte 0x0000045c -_0808B944: .4byte gUnknown_83CD8EC -_0808B948: .4byte 0x00000457 - thumb_func_end sub_808B838 - - thumb_func_start sub_808B94C -sub_808B94C: @ 808B94C - push {lr} - bl InitTrainerCard - ldr r0, _0808B95C @ =sub_80895B8 - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_0808B95C: .4byte sub_80895B8 - thumb_func_end sub_808B94C - - thumb_func_start sub_808B960 -sub_808B960: @ 808B960 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _0808B984 @ =gTrainerCards - ldr r1, _0808B988 @ =gUnknown_83CD960 - movs r2, 0x60 - bl memcpy - movs r0, 0 - adds r1, r4, 0 - bl InitLinkPartnerTrainerCard - ldr r0, _0808B98C @ =sub_80895B8 - bl SetMainCallback2 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808B984: .4byte gTrainerCards -_0808B988: .4byte gUnknown_83CD960 -_0808B98C: .4byte sub_80895B8 - thumb_func_end sub_808B960 - - thumb_func_start sub_808B990 -sub_808B990: @ 808B990 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _0808B9B4 @ =gTrainerCards - ldr r1, _0808B9B8 @ =gUnknown_83CD9C0 - movs r2, 0x60 - bl memcpy - movs r0, 0 - adds r1, r4, 0 - bl InitLinkPartnerTrainerCard - ldr r0, _0808B9BC @ =sub_80895B8 - bl SetMainCallback2 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0808B9B4: .4byte gTrainerCards -_0808B9B8: .4byte gUnknown_83CD9C0 -_0808B9BC: .4byte sub_80895B8 - thumb_func_end sub_808B990 - - .align 2, 0 @ Don't pad with nop. diff --git a/data/graphics.s b/data/graphics.s index fd0c35c7a..2cef03408 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -16218,16 +16218,16 @@ gUnknown_8E990F8:: @ 8E990F8 gUnknown_8E99118:: @ 8E99118 .incbin "graphics/tm_case/unk_8E99118.4bpp" -gUnknown_8E99198:: +gFireRedTrainerCard_Pal:: @ 8E99198 .incbin "graphics/trainer_card/0star.gbapal" -gUnknown_8E991F8:: @ 8E991F8 +gFireRedTrainerCard_Gfx:: @ 8E991F8 .incbin "graphics/trainer_card/card.4bpp.lz" -gUnknown_8E9986C:: @ 8E9986C +gEmeraldTrainerCard_Pal:: @ 8E9986C .incbin "graphics/trainer_card/0star_em.gbapal" -gUnknown_8E998CC:: @ 8E998CC +gEmeraldTrainerCard_Gfx:: @ 8E998CC .incbin "graphics/trainer_card/card_em.4bpp.lz" gUnknown_8E99D8C:: @ 8E99D8C diff --git a/data/strings.s b/data/strings.s index 2cbcf5503..282da7a2a 100644 --- a/data/strings.s +++ b/data/strings.s @@ -2846,61 +2846,61 @@ gUnknown_8419CB9:: @ 8419CB9 .string "HM moves can't be\n" .string "forgotten now.$" -gUnknown_8419CDA:: @ 8419CDA +gText_TrainerCardName:: @ 8419CDA .string "NAME: $" -gUnknown_8419CE1:: @ 8419CE1 +gText_TrainerCardIDNo:: @ 8419CE1 .string "IDNo.$" -gUnknown_8419CE7:: @ 8419CE7 +gText_TrainerCardMoney:: @ 8419CE7 .string "MONEY$" -gUnknown_8419CED:: @ 8419CED +gText_TrainerCardYen:: @ 8419CED .string "¥$" -gUnknown_8419CEF:: @ 8419CEF +gText_TrainerCardPokedex:: @ 8419CEF .string "POKéDEX$" -gUnknown_8419CF7:: @ 8419CF7 +gText_TrainerCardNull:: @ 8419CF7 .string "$" -gUnknown_8419CF8:: @ 8419CF8 +gText_Colon2:: @ 8419CF8 .string ":$" gUnknown_8419CFA:: @ 0x8419CFA .string "てん$" -gUnknown_8419CFD:: @ 8419CFD +gText_TrainerCardTime:: @ 8419CFD .string "TIME$" gUnknown_8419D02:: @ 0x8419D02 .string "ゲ-ムポイント$" -gUnknown_8419D0A:: @ 8419D0A +gText_Var1sTrainerCard:: @ 8419D0A .string "'s TRAINER CARD$" -gUnknown_8419D1A:: @ 8419D1A +gText_HallOfFameDebut:: @ 8419D1A .string "HALL OF FAME DEBUT $" -gUnknown_8419D2F:: @ 0x8419D2F +gText_LinkBattles:: @ 0x8419D2F .string "LINK BATTLES$" -gUnknown_8419D3C:: @ 0x8419D3C +gText_LinkCableBattles:: @ 0x8419D3C .string "LINK CABLE BATTLES$" -gUnknown_8419D4F:: @ 8419D4F +gText_WinLossRatio:: @ 8419D4F .string "W:{CLEAR_TO 0x30}L:$" -gUnknown_8419D57:: @ 8419D57 +gText_PokemonTrades:: @ 8419D57 .string "POKéMON TRADES$" -gUnknown_8419D66:: @ 8419D66 +gText_UnionRoomTradesBattles:: @ 8419D66 .string "UNION TRADES & BATTLES$" -gUnknown_8419D7D:: @ 8419D7D +gText_BerryCrushes:: @ 8419D7D .string "BERRY CRUSH$" -gUnknown_8419D89:: @ 8419D89 +gText_WaitingTrainerFinishReading:: @ 8419D89 .string "Waiting for the other TRAINER to\n" .string "finish reading your TRAINER CARD.$" diff --git a/data/trainer_card.s b/data/trainer_card.s deleted file mode 100644 index de35fa192..000000000 --- a/data/trainer_card.s +++ /dev/null @@ -1,192 +0,0 @@ -#include "constants/maps.h" -#include "constants/species.h" - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnknown_83CC368:: @ 83CC368 - .incbin "baserom.gba", 0x3CC368, 0x174 - -gUnknown_83CC4DC:: @ 83CC4DC - .incbin "baserom.gba", 0x3CC4DC, 0x214 - -gUnknown_83CC6F0:: @ 83CC6F0 - .incbin "baserom.gba", 0x3CC6F0, 0x1B8 - -gUnknown_83CC8A8:: @ 83CC8A8 - .incbin "baserom.gba", 0x3CC8A8, 0xDC - -gUnknown_83CC984:: @ 83CC984 - .incbin "baserom.gba", 0x3CC984, 0x12C - -gUnknown_83CCAB0:: @ 83CCAB0 - .incbin "baserom.gba", 0x3CCAB0, 0x1F4 - -gUnknown_83CCCA4:: @ 83CCCA4 - .incbin "baserom.gba", 0x3CCCA4, 0x18C - -gUnknown_83CCE30:: @ 83CCE30 - .incbin "baserom.gba", 0x3CCE30, 0x98 - -gUnknown_83CCEC8:: @ 83CCEC8 - .incbin "baserom.gba", 0x3CCEC8, 0xB8 - -gUnknown_83CCF80:: @ 83CCF80 - .incbin "baserom.gba", 0x3CCF80, 0x60 - -gUnknown_83CCFE0:: @ 83CCFE0 - .incbin "baserom.gba", 0x3CCFE0, 0x60 - -gUnknown_83CD040:: @ 83CD040 - .incbin "baserom.gba", 0x3CD040, 0x60 - -gUnknown_83CD0A0:: @ 83CD0A0 - .incbin "baserom.gba", 0x3CD0A0, 0x60 - -gUnknown_83CD100:: @ 83CD100 - .incbin "baserom.gba", 0x3CD100, 0x60 - -gUnknown_83CD160:: @ 83CD160 - .incbin "baserom.gba", 0x3CD160, 0x60 - -gUnknown_83CD1C0:: @ 83CD1C0 - .incbin "baserom.gba", 0x3CD1C0, 0x60 - -gUnknown_83CD220:: @ 83CD220 - .incbin "baserom.gba", 0x3CD220, 0x60 - -gUnknown_83CD280:: @ 83CD280 - .incbin "baserom.gba", 0x3CD280, 0x20 - -gUnknown_83CD2A0:: @ 83CD2A0 - .incbin "baserom.gba", 0x3CD2A0, 0x20 - -gUnknown_83CD2C0:: @ 83CD2C0 - .incbin "baserom.gba", 0x3CD2C0, 0x20 - -gUnknown_83CD2E0:: @ 83CD2E0 - .incbin "baserom.gba", 0x3CD2E0, 0x20 - -gUnknown_83CD300:: @ 83CD300 - .incbin "baserom.gba", 0x3CD300, 0x20 - -gUnknown_83CD320:: @ 83CD320 - .incbin "baserom.gba", 0x3CD320, 0x20 - -gUnknown_83CD340:: @ 83CD340 - .incbin "baserom.gba", 0x3CD340, 0x20 - -gUnknown_83CD360:: @ 83CD360 - .incbin "baserom.gba", 0x3CD360, 0x20 - -gUnknown_83CD380:: @ 83CD380 - .incbin "baserom.gba", 0x3CD380, 0x268 - -gUnknown_83CD5E8:: @ 83CD5E8 - .incbin "baserom.gba", 0x3CD5E8, 0x2A0 - -gUnknown_83CD888:: @ 83CD888 - .incbin "baserom.gba", 0x3CD888, 0x10 - -gUnknown_83CD898:: @ 83CD898 - .incbin "baserom.gba", 0x3CD898, 0x20 - -gUnknown_83CD8B8:: @ 83CD8B8 - .word gUnknown_8E9986C - .word gUnknown_83CCF80 - .word gUnknown_83CD040 - .word gUnknown_83CD100 - .word gUnknown_83CD1C0 - -gUnknown_83CD8CC:: @ 83CD8CC - .word gUnknown_8E99198 - .word gUnknown_83CCFE0 - .word gUnknown_83CD0A0 - .word gUnknown_83CD160 - .word gUnknown_83CD220 - -gUnknown_83CD8E0:: @ 83CD8E0 - .incbin "baserom.gba", 0x3CD8E0, 0x3 - -gUnknown_83CD8E3:: @ 83CD8E3 - .incbin "baserom.gba", 0x3CD8E3, 0x6 - -gUnknown_83CD8E9:: @ 83CD8E9 - .incbin "baserom.gba", 0x3CD8E9, 0x3 - -gUnknown_83CD8EC:: @ 83CD8EC - .incbin "baserom.gba", 0x3CD8EC, 0x8 - -gUnknown_83CD8F4:: @ 83CD8F4 - .incbin "baserom.gba", 0x3CD8F4, 0x4 - -gUnknown_83CD8F8:: @ 83CD8F8 - .incbin "baserom.gba", 0x3CD8F8, 0x10 - -gUnknown_83CD908:: @ 83CD908 - .incbin "baserom.gba", 0x3CD908, 0x18 - -gUnknown_83CD920:: @ 83CD920 - .incbin "baserom.gba", 0x3CD920, 0x2 - -gUnknown_83CD922:: @ 83CD922 - .incbin "baserom.gba", 0x3CD922, 0x2 - -gUnknown_83CD924:: @ 83CD924 - .incbin "baserom.gba", 0x3CD924, 0x2 - -gUnknown_83CD926:: @ 83CD926 - .incbin "baserom.gba", 0x3CD926, 0x2 - -gUnknown_83CD928:: @ 83CD928 - .incbin "baserom.gba", 0x3CD928, 0x8 - -gUnknown_83CD930:: @ 83CD930 - .incbin "baserom.gba", 0x3CD930, 0x2 - -gUnknown_83CD932:: @ 83CD932 - .incbin "baserom.gba", 0x3CD932, 0x2 - -gUnknown_83CD934:: @ 83CD934 - .incbin "baserom.gba", 0x3CD934, 0x2 - -gUnknown_83CD936:: @ 83CD936 - .incbin "baserom.gba", 0x3CD936, 0x2 - -gUnknown_83CD938:: @ 83CD938 - .incbin "baserom.gba", 0x3CD938, 0x2 - -gUnknown_83CD93A:: @ 83CD93A - .incbin "baserom.gba", 0x3CD93A, 0x2 - -gUnknown_83CD93C:: @ 83CD93C - .incbin "baserom.gba", 0x3CD93C, 0x2 - -gUnknown_83CD93E:: @ 83CD93E - .incbin "baserom.gba", 0x3CD93E, 0x2 - -gUnknown_83CD940:: @ 83CD940 - .incbin "baserom.gba", 0x3CD940, 0x4 - -gUnknown_83CD944:: @ 83CD944 - .incbin "baserom.gba", 0x3CD944, 0x8 - -gUnknown_83CD94C:: @ 83CD94C - .incbin "baserom.gba", 0x3CD94C, 0x6 - -gUnknown_83CD952:: @ 83CD952 - .incbin "baserom.gba", 0x3CD952, 0x6 - -gUnknown_83CD958:: @ 83CD958 - .incbin "baserom.gba", 0x3CD958, 0x4 - -gUnknown_83CD95C:: @ 83CD95C - .incbin "baserom.gba", 0x3CD95C, 0x4 - -gUnknown_83CD960:: @ 83CD960 - .incbin "baserom.gba", 0x3CD960, 0x60 - -gUnknown_83CD9C0:: @ 83CD9C0 - .incbin "baserom.gba", 0x3CD9C0, 0x60 diff --git a/graphics/trainer_card/badges.png b/graphics/trainer_card/badges.png Binary files differnew file mode 100644 index 000000000..e9edda318 --- /dev/null +++ b/graphics/trainer_card/badges.png diff --git a/graphics/trainer_card/em_1stars_pals.pal b/graphics/trainer_card/em_1stars_pals.pal new file mode 100644 index 000000000..62c51c91f --- /dev/null +++ b/graphics/trainer_card/em_1stars_pals.pal @@ -0,0 +1,51 @@ +JASC-PAL +0100 +48 +139 98 115 +238 255 246 +213 238 230 +164 164 164 +123 123 123 +98 98 115 +41 57 65 +57 106 139 +65 139 197 +189 213 205 +148 180 164 +106 148 123 +65 115 90 +106 189 255 +205 205 205 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +106 180 213 +41 123 164 +0 0 0 +0 0 0 +98 98 115 +255 255 255 +230 230 238 +164 164 164 +123 123 123 +255 255 255 +230 230 238 +164 164 164 +123 123 123 +255 255 255 +230 230 238 +164 164 164 +123 123 123 +106 189 255 +205 205 205 +0 0 0 diff --git a/graphics/trainer_card/em_2stars_pals.pal b/graphics/trainer_card/em_2stars_pals.pal new file mode 100644 index 000000000..bacce54f5 --- /dev/null +++ b/graphics/trainer_card/em_2stars_pals.pal @@ -0,0 +1,51 @@ +JASC-PAL +0100 +48 +139 98 115 +255 246 230 +246 230 213 +205 156 90 +180 131 65 +98 98 115 +41 57 65 +57 106 139 +65 139 197 +230 189 139 +205 156 115 +180 131 82 +156 106 41 +106 189 255 +205 205 205 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +106 180 213 +41 123 164 +0 0 0 +0 0 0 +98 98 115 +255 255 255 +230 230 238 +164 164 164 +123 123 123 +255 255 255 +230 230 238 +164 164 164 +123 123 123 +255 255 255 +230 230 238 +164 164 164 +123 123 123 +106 189 255 +205 205 205 +0 0 0 diff --git a/graphics/trainer_card/em_3stars_pals.pal b/graphics/trainer_card/em_3stars_pals.pal new file mode 100644 index 000000000..21f3d83eb --- /dev/null +++ b/graphics/trainer_card/em_3stars_pals.pal @@ -0,0 +1,51 @@ +JASC-PAL +0100 +48 +139 98 115 +246 246 255 +230 230 238 +189 189 197 +156 156 156 +156 106 41 +41 57 65 +57 106 139 +65 139 197 +230 230 238 +189 189 197 +156 156 156 +123 123 123 +106 189 255 +205 205 205 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +106 180 213 +41 123 164 +0 0 0 +0 0 0 +98 98 115 +255 255 255 +230 230 238 +164 164 164 +123 123 123 +255 255 255 +230 230 238 +164 164 164 +123 123 123 +255 255 255 +230 230 238 +164 164 164 +123 123 123 +106 189 255 +205 205 205 +0 0 0 diff --git a/graphics/trainer_card/em_4stars_pals.pal b/graphics/trainer_card/em_4stars_pals.pal new file mode 100644 index 000000000..4e1d56b54 --- /dev/null +++ b/graphics/trainer_card/em_4stars_pals.pal @@ -0,0 +1,51 @@ +JASC-PAL +0100 +48 +139 98 115 +246 246 222 +246 238 172 +164 164 164 +123 123 123 +98 98 115 +41 57 65 +57 106 139 +65 139 197 +246 230 139 +230 213 49 +213 197 57 +156 115 57 +106 189 255 +205 205 205 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +106 180 213 +41 123 164 +0 0 0 +0 0 0 +98 98 115 +255 255 255 +230 230 238 +164 164 164 +123 123 123 +255 255 255 +230 230 238 +164 164 164 +123 123 123 +255 255 255 +230 230 238 +164 164 164 +123 123 123 +106 189 255 +205 205 205 +0 0 0 diff --git a/graphics/trainer_card/em_badges.pal b/graphics/trainer_card/em_badges.pal new file mode 100644 index 000000000..dd9246d9d --- /dev/null +++ b/graphics/trainer_card/em_badges.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +139 98 115 +255 255 255 +213 213 213 +180 180 180 +123 123 123 +255 139 57 +222 57 8 +106 189 255 +65 139 197 +255 213 98 +238 180 57 +197 123 197 +148 74 156 +106 189 255 +205 205 205 +0 0 0 diff --git a/graphics/trainer_card/em_badges.png b/graphics/trainer_card/em_badges.png Binary files differnew file mode 100644 index 000000000..f7013646d --- /dev/null +++ b/graphics/trainer_card/em_badges.png diff --git a/graphics/trainer_card/em_female_bg.pal b/graphics/trainer_card/em_female_bg.pal new file mode 100644 index 000000000..9df82c665 --- /dev/null +++ b/graphics/trainer_card/em_female_bg.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +230 123 139 +164 49 115 +0 0 0 +0 0 0 diff --git a/graphics/trainer_card/fr_1stars_pals.pal b/graphics/trainer_card/fr_1stars_pals.pal new file mode 100644 index 000000000..9215c7592 --- /dev/null +++ b/graphics/trainer_card/fr_1stars_pals.pal @@ -0,0 +1,51 @@ +JASC-PAL +0100 +48 +139 98 115 +222 255 230 +205 246 222 +197 238 213 +189 230 205 +246 205 148 +164 164 164 +98 98 115 +246 213 139 +180 205 148 +131 180 172 +115 156 156 +82 131 123 +255 246 189 +255 255 255 +156 205 197 +139 98 115 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +189 148 16 +255 213 82 +82 205 180 +65 172 164 +197 197 197 +90 90 90 +0 0 0 +32 65 123 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/trainer_card/fr_2stars_pals.pal b/graphics/trainer_card/fr_2stars_pals.pal new file mode 100644 index 000000000..748e17aa8 --- /dev/null +++ b/graphics/trainer_card/fr_2stars_pals.pal @@ -0,0 +1,51 @@ +JASC-PAL +0100 +48 +139 98 115 +246 246 205 +246 238 197 +238 230 189 +230 222 156 +246 205 148 +164 164 164 +98 98 115 +246 238 139 +222 197 139 +213 189 139 +197 180 123 +164 123 82 +255 255 205 +255 255 255 +230 205 156 +139 98 115 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +189 148 16 +255 213 82 +82 205 180 +65 172 164 +197 197 197 +90 90 90 +0 0 0 +32 65 123 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/trainer_card/fr_3stars_pals.pal b/graphics/trainer_card/fr_3stars_pals.pal new file mode 100644 index 000000000..e984eab42 --- /dev/null +++ b/graphics/trainer_card/fr_3stars_pals.pal @@ -0,0 +1,51 @@ +JASC-PAL +0100 +48 +139 98 115 +238 246 246 +238 246 246 +238 238 238 +230 230 230 +246 205 148 +164 164 164 +98 98 115 +255 238 131 +205 205 164 +197 205 205 +172 180 172 +131 139 156 +246 246 197 +255 255 255 +213 222 222 +139 98 115 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +189 148 16 +255 213 82 +82 205 180 +65 172 164 +197 197 197 +90 90 90 +0 0 0 +32 65 123 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/trainer_card/fr_4stars_pals.pal b/graphics/trainer_card/fr_4stars_pals.pal new file mode 100644 index 000000000..79027f0d8 --- /dev/null +++ b/graphics/trainer_card/fr_4stars_pals.pal @@ -0,0 +1,51 @@ +JASC-PAL +0100 +48 +139 98 115 +255 246 230 +246 238 213 +246 246 197 +246 238 180 +246 222 106 +164 164 164 +98 98 115 +255 255 148 +246 222 49 +246 205 8 +238 189 0 +189 148 57 +255 255 197 +255 255 255 +246 230 82 +139 98 115 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +189 148 16 +255 213 82 +82 205 180 +65 172 164 +197 197 197 +90 90 90 +0 0 0 +32 65 123 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/trainer_card/fr_badges.pal b/graphics/trainer_card/fr_badges.pal new file mode 100644 index 000000000..dd9246d9d --- /dev/null +++ b/graphics/trainer_card/fr_badges.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +139 98 115 +255 255 255 +213 213 213 +180 180 180 +123 123 123 +255 139 57 +222 57 8 +106 189 255 +65 139 197 +255 213 98 +238 180 57 +197 123 197 +148 74 156 +106 189 255 +205 205 205 +0 0 0 diff --git a/graphics/trainer_card/fr_female_bg.pal b/graphics/trainer_card/fr_female_bg.pal new file mode 100644 index 000000000..3e8a3ab52 --- /dev/null +++ b/graphics/trainer_card/fr_female_bg.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +139 98 115 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +189 148 16 +255 213 82 +230 148 82 +213 98 41 +197 197 197 +90 90 90 diff --git a/graphics/trainer_card/sticker1.pal b/graphics/trainer_card/sticker1.pal new file mode 100644 index 000000000..774dbb486 --- /dev/null +++ b/graphics/trainer_card/sticker1.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 246 189 +255 255 255 +255 197 164 +238 246 246 +222 222 230 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/trainer_card/sticker2.pal b/graphics/trainer_card/sticker2.pal new file mode 100644 index 000000000..9244e4a03 --- /dev/null +++ b/graphics/trainer_card/sticker2.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 246 189 +255 255 255 +98 197 238 +238 246 246 +222 222 230 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/trainer_card/sticker3.pal b/graphics/trainer_card/sticker3.pal new file mode 100644 index 000000000..abe9e9206 --- /dev/null +++ b/graphics/trainer_card/sticker3.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 246 189 +255 255 255 +246 230 74 +238 246 246 +222 222 230 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/trainer_card/sticker4.pal b/graphics/trainer_card/sticker4.pal new file mode 100644 index 000000000..422e986b1 --- /dev/null +++ b/graphics/trainer_card/sticker4.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 246 189 +255 255 255 +106 131 148 +238 246 246 +222 222 230 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/trainer_card/stickers.png b/graphics/trainer_card/stickers.png Binary files differnew file mode 100644 index 000000000..7c1010835 --- /dev/null +++ b/graphics/trainer_card/stickers.png diff --git a/graphics/trainer_card/unk_83CC4DC.bin b/graphics/trainer_card/unk_83CC4DC.bin Binary files differnew file mode 100644 index 000000000..0f45caec6 --- /dev/null +++ b/graphics/trainer_card/unk_83CC4DC.bin diff --git a/graphics/trainer_card/unk_83CC6F0.bin b/graphics/trainer_card/unk_83CC6F0.bin Binary files differnew file mode 100644 index 000000000..b83c43942 --- /dev/null +++ b/graphics/trainer_card/unk_83CC6F0.bin diff --git a/graphics/trainer_card/unk_83CC8A8.bin b/graphics/trainer_card/unk_83CC8A8.bin Binary files differnew file mode 100644 index 000000000..eda105eb2 --- /dev/null +++ b/graphics/trainer_card/unk_83CC8A8.bin diff --git a/graphics/trainer_card/unk_83CC984.bin b/graphics/trainer_card/unk_83CC984.bin Binary files differnew file mode 100644 index 000000000..dd54ba1c7 --- /dev/null +++ b/graphics/trainer_card/unk_83CC984.bin diff --git a/graphics/trainer_card/unk_83CCAB0.bin b/graphics/trainer_card/unk_83CCAB0.bin Binary files differnew file mode 100644 index 000000000..46e00f670 --- /dev/null +++ b/graphics/trainer_card/unk_83CCAB0.bin diff --git a/graphics/trainer_card/unk_83CCCA4.bin b/graphics/trainer_card/unk_83CCCA4.bin Binary files differnew file mode 100644 index 000000000..ef8e65b27 --- /dev/null +++ b/graphics/trainer_card/unk_83CCCA4.bin diff --git a/graphics/trainer_card/unk_83CCE30.bin b/graphics/trainer_card/unk_83CCE30.bin Binary files differnew file mode 100644 index 000000000..b3994f663 --- /dev/null +++ b/graphics/trainer_card/unk_83CCE30.bin diff --git a/graphics/trainer_card/unk_83CCEC8.bin b/graphics/trainer_card/unk_83CCEC8.bin Binary files differnew file mode 100644 index 000000000..c1c452262 --- /dev/null +++ b/graphics/trainer_card/unk_83CCEC8.bin diff --git a/graphics/trainer_card/unk_83CD300.pal b/graphics/trainer_card/unk_83CD300.pal new file mode 100644 index 000000000..ebd175e97 --- /dev/null +++ b/graphics/trainer_card/unk_83CD300.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +139 98 115 +246 197 0 +205 164 0 +246 197 0 +246 197 0 +246 197 0 +246 197 0 +246 197 0 +0 0 0 +0 0 0 +189 148 16 +255 213 82 +0 0 0 +0 0 0 +189 148 16 +246 197 0 diff --git a/include/constants/game_stat.h b/include/constants/game_stat.h index b1f3d4197..234091bff 100644 --- a/include/constants/game_stat.h +++ b/include/constants/game_stat.h @@ -51,9 +51,10 @@ #define GAME_STAT_USED_DAYCARE 47 #define GAME_STAT_RODE_CABLE_CAR 48 #define GAME_STAT_ENTERED_HOT_SPRINGS 49 +#define GAME_STAT_NUM_UNION_ROOM_BATTLES 50 +#define GAME_STAT_BERRY_CRUSH_POINTS 51 -/*TODO: add new stats added in Emerald*/ - +#define NUM_USED_GAME_STATS 52 #define NUM_GAME_STATS 64 #endif // GUARD_CONSTANTS_GAME_STAT_H diff --git a/include/global.h b/include/global.h index 8e5d90964..219c09c62 100644 --- a/include/global.h +++ b/include/global.h @@ -257,7 +257,7 @@ struct BattleTowerData // Leftover from R/S /*0x04CC, 0x057C*/ u16 currentWinStreaks[2]; /*0x04D0, 0x0580*/ u8 lastStreakLevelType; // 0 = level 50, 1 = level 100. level type of the last streak. Used by tv to report the level mode. /*0x04D1, 0x0581*/ u8 filler_4D1[0x317]; -}; +}; /* size = 0x7E8 */ struct SaveBlock2 { diff --git a/include/graphics.h b/include/graphics.h index 09b72d37d..92550520c 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -4258,4 +4258,10 @@ extern const u32 gBuyMenuFrame_Pal[]; // battle_message extern const u16 gUnknown_8D2FBB4[]; +// trainer card +extern const u16 gFireRedTrainerCard_Pal[]; +extern const u32 gFireRedTrainerCard_Gfx[]; +extern const u16 gEmeraldTrainerCard_Pal[]; +extern const u32 gEmeraldTrainerCard_Gfx[]; + #endif //GUARD_GRAPHICS_H diff --git a/include/pokedex.h b/include/pokedex.h index a08d4ed26..c132ae794 100644 --- a/include/pokedex.h +++ b/include/pokedex.h @@ -44,6 +44,9 @@ s8 GetSetPokedexFlag(u16 nationalNum, u8 caseId); u16 GetNationalPokedexCount(u8); u16 sub_80C0844(u8); u16 GetKantoPokedexCount(u8); +bool16 HasAllHoennMons(void); +bool16 HasAllKantoMons(void); +bool16 HasAllMons(void); u32 sub_8106B60(u16 species); diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h index f0e5c8b9d..5b9876677 100644 --- a/include/pokemon_icon.h +++ b/include/pokemon_icon.h @@ -3,6 +3,8 @@ #include "global.h" +extern const u16 gMonIconPalettes[][16]; + const u8 *GetMonIconPtr(u16 speciesId, u32 personality, u32 frameNo); const u8 *GetMonIconTiles(u16 iconSpecies, bool32 extra); const u16 *GetValidMonIconPalettePtr(u16 speciesId); @@ -23,5 +25,6 @@ u8 UpdateMonIconFrame(struct Sprite * sprite); void LoadMonIconPalette(u16 iconId); void FreeMonIconPalette(u16 iconId); void SetPartyHPBarSprite(struct Sprite * sprite, u8 animNum); +u8 GetMonIconPaletteIndexFromSpecies(u16 species); #endif // GUARD_POKEMON_ICON_H diff --git a/include/strings.h b/include/strings.h index d71d94d48..1bbc826b9 100644 --- a/include/strings.h +++ b/include/strings.h @@ -943,4 +943,23 @@ extern const u8 gText_Var1AndYouWantedVar2[]; extern const u8 gText_HereYouGoThankYou[]; extern const u8 gText_NoMoreRoomForThis[]; +// trainer card +extern const u8 gText_WaitingTrainerFinishReading[]; +extern const u8 gText_TrainerCardName[]; +extern const u8 gText_TrainerCardIDNo[]; +extern const u8 gText_TrainerCardMoney[]; +extern const u8 gText_TrainerCardYen[]; +extern const u8 gText_TrainerCardPokedex[]; +extern const u8 gText_TrainerCardNull[]; +extern const u8 gText_Colon2[]; +extern const u8 gText_TrainerCardTime[]; +extern const u8 gText_Var1sTrainerCard[]; +extern const u8 gText_HallOfFameDebut[]; +extern const u8 gText_WinLossRatio[]; +extern const u8 gText_PokemonTrades[]; +extern const u8 gText_BerryCrushes[]; +extern const u8 gText_UnionRoomTradesBattles[]; +extern const u8 gText_LinkBattles[]; +extern const u8 gText_LinkCableBattles[]; + #endif //GUARD_STRINGS_H diff --git a/include/trainer_card.h b/include/trainer_card.h index b38754988..06844dc2e 100644 --- a/include/trainer_card.h +++ b/include/trainer_card.h @@ -24,23 +24,26 @@ struct TrainerCard /*0x20*/ u16 pokemonTrades; /*0x24*/ u32 money; /*0x28*/ u16 var_28[4]; - /*0x30*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; + /*0x30*/ u8 playerName[PLAYER_NAME_LENGTH]; /*0x38*/ u8 version; /*0x3A*/ u16 var_3A; /*0x3C*/ u32 berryCrushPoints; /*0x40*/ u32 unionRoomNum; - /*0x44*/ u8 filler44[0x8]; - /*0x4C*/ u8 var_4C; - /*0x4D*/ u8 var_4D; + /*0x44*/ u32 berriesPicked; + /*0x48*/ u32 jumpsInRow; + /*0x4C*/ bool8 var_4C; + /*0x4D*/ bool8 hasAllMons; /*0x4E*/ u8 var_4E; /*0x4F*/ u8 var_4F; - /*0x50*/ u8 var_50[0x4]; + /*0x50*/ u8 var_50[4]; /*0x54*/ u16 monSpecies[PARTY_SIZE]; }; extern struct TrainerCard gTrainerCards[4]; -void InitTrainerCard(MainCallback callback); -void InitLinkPartnerTrainerCard(u8 whoseCard, MainCallback callback); +void ShowPlayerTrainerCard(void (*callback)(void)); +void ShowTrainerCardInLink(u8 whoseCard, MainCallback callback); +u8 GetTrainerCardStars(u8 cardId); +void TrainerCard_GenerateCardForLinkPlayer(struct TrainerCard *trainerCard); #endif //GUARD_TRAINER_CARD_H diff --git a/include/trainer_pokemon_sprites.h b/include/trainer_pokemon_sprites.h index 3e27f58e4..aba978e8d 100644 --- a/include/trainer_pokemon_sprites.h +++ b/include/trainer_pokemon_sprites.h @@ -3,13 +3,14 @@ #include "global.h" +u16 sub_810C330(u16 species, bool8 isFrontPic, u16 destX, u16 destY, u8 paletteSlot, u8 windowId); + bool16 ResetAllPicSprites(void); u16 sub_818D3E4(u16 species, u32 otId, u32 personality, u8 flags, s16 x, s16 y, u8 paletteSlot, u16 paletteTag); u16 sub_818D7D8(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag); u16 sub_818D820(u16 spriteId); u16 sub_818D8AC(u16 species, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag); u16 sub_818D8F0(u16 spriteId); -u16 sub_818D938(u16 species, bool8 isFrontPic, u16 destX, u16 destY, u8 paletteSlot, u8 windowId); u8 sub_818D97C(u8 a0, u8 a1); u16 CreateTrainerPicSprite(u16 species, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag); u16 FreeAndDestroyMonPicSprite(u16); @@ -18,4 +19,6 @@ u16 PlayerGenderToFrontTrainerPicId_Debug(u8 gender, bool8 getClass); u16 CreateMonPicSprite_HandleDeoxys(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag); u16 LoadMonPicInWindow(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId); + + #endif // GUARD_TRAINER_POKEMON_SPRITES_H diff --git a/ld_script.txt b/ld_script.txt index 55e82c1ab..bd0ad6430 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -130,8 +130,8 @@ SECTIONS { src/scanline_effect.o(.text); src/option_menu.o(.text); src/pokedex.o(.text); - asm/trainer_card.o(.text); - asm/pokemon_storage_system.o(.text); + src/trainer_card.o(.text); + asm/pokemon_storage_system.o(.text); src/pokemon_icon.o(.text); asm/script_movement.o(.text); asm/fldeff_cut.o(.text); @@ -434,7 +434,7 @@ SECTIONS { src/wild_encounter.o(.rodata); data/field_effect.o(.rodata); src/option_menu.o(.rodata); - data/trainer_card.o(.rodata); + src/trainer_card.o(.rodata); data/pokemon_storage_system.o(.rodata); src/pokemon_icon.o(.rodata); data/fldeff_cut.o(.rodata); diff --git a/src/money.c b/src/money.c index 39e5aaa32..0bc1e7016 100644 --- a/src/money.c +++ b/src/money.c @@ -6,7 +6,7 @@ #include "text_window.h" extern const u8 gText_PokedollarVar1[]; -extern const u8 gUnknown_8419CE7[]; +extern const u8 gText_TrainerCardMoney[]; #define MAX_MONEY 999999 @@ -110,7 +110,7 @@ void PrintMoneyAmount(u8 windowId, u8 x, u8 y, int amount, u8 speed) void PrintMoneyAmountInMoneyBoxWithBorder(u8 windowId, u16 tileStart, u8 pallete, int amount) { DrawStdFrameWithCustomTileAndPalette(windowId, FALSE, tileStart, pallete); - AddTextPrinterParameterized(windowId, 2, gUnknown_8419CE7, 0, 0, 0xFF, 0); + AddTextPrinterParameterized(windowId, 2, gText_TrainerCardMoney, 0, 0, 0xFF, 0); PrintMoneyAmountInMoneyBox(windowId, amount, 0); } diff --git a/src/pokedex.c b/src/pokedex.c index 84ca59549..1354aac8c 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -88,7 +88,7 @@ bool16 HasAllHoennMons(void) return TRUE; } -bool8 HasAllKantoMons(void) +bool16 HasAllKantoMons(void) { u16 i; diff --git a/src/start_menu.c b/src/start_menu.c index 2a1713902..31bb3beb7 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -504,7 +504,7 @@ static bool8 StartMenuPlayerCallback(void) PlayRainStoppingSoundEffect(); DestroySafariZoneStatsWindow(); CleanupOverworldWindowsAndTilemaps(); - InitTrainerCard(CB2_ReturnToFieldWithOpenMenu); + ShowPlayerTrainerCard(CB2_ReturnToFieldWithOpenMenu); return TRUE; } return FALSE; @@ -554,7 +554,7 @@ static bool8 StartMenuLinkPlayerCallback(void) { PlayRainStoppingSoundEffect(); CleanupOverworldWindowsAndTilemaps(); - InitLinkPartnerTrainerCard(gUnknown_300502C, CB2_ReturnToFieldWithOpenMenu); + ShowTrainerCardInLink(gUnknown_300502C, CB2_ReturnToFieldWithOpenMenu); return TRUE; } return FALSE; diff --git a/src/trainer_card.c b/src/trainer_card.c index 095a21685..88ea21d8d 100644 --- a/src/trainer_card.c +++ b/src/trainer_card.c @@ -8,189 +8,229 @@ #include "link.h" #include "bg.h" #include "sound.h" -#include "frontier_pass.h" #include "overworld.h" #include "menu.h" #include "text.h" #include "event_data.h" #include "easy_chat.h" #include "money.h" +#include "window.h" #include "strings.h" #include "string_util.h" #include "trainer_card.h" #include "gpu_regs.h" -#include "international_string_util.h" #include "pokedex.h" #include "pokemon_icon.h" #include "graphics.h" #include "pokemon_icon.h" +#include "help_system.h" #include "trainer_pokemon_sprites.h" -#include "script_pokemon_util_80F87D8.h" +#include "new_menu_helpers.h" #include "constants/songs.h" #include "constants/flags.h" #include "constants/game_stat.h" -#include "constants/battle_frontier.h" -#include "constants/rgb.h" +#include "constants/vars.h" +#include "constants/species.h" + +#define BADGE_COUNT 8 enum { CARD_TYPE_FRLG, - CARD_TYPE_RS, CARD_TYPE_EMERALD, }; struct TrainerCardData { - u8 var_0; - u8 printState; - u8 gfxLoadState; - u8 bgPalLoadState; - u8 var_4; - bool8 isLink; - u8 var_6; - u8 var_7; - u8 var_8; - bool8 allowDMACopy; - bool8 hasPokedex; - bool8 hasHofResult; - bool8 hasLinkResults; - bool8 hasBattleTowerWins; - u8 var_E; - u8 var_F; - bool8 hasTrades; - u8 badgeCount[8]; - u8 var_19[4][0xD]; - u8 var_4D[0x46]; - u8 var_93[0x46]; - u8 var_D9[0x8C]; - u8 var_165[0x46]; - u8 var_1AB[0x8C]; - u8 var_237[0x8C]; - u8 var_2C3[0x8C]; - u8 var_34F[0x46]; - u8 var_395[0x46]; - u8 var_3DB[0x46]; - u8 var_421[0x46]; - u16 var_468[0x60]; - s8 var_528; - u8 var_529; - u8 cardType; - bool8 isHoenn; - u16 var_52C; - void (*callback2)(void); - struct TrainerCard trainerCard; - u16 var_598[0x4B0 / 2]; - u16 var_A48[0x4B0 / 2]; - u16 var_EF8[0x4B0 / 2]; - u8 var_13A8[0x400]; - u8 var_17A8[0x200]; - u8 var_19A8[0x2300]; - u16 var_3CA8[0x2000 / 2]; - u16 var_5CA8[0x2000 / 2]; - u16 var_7CA8; - u8 language; -}; - + /*0x0000*/ u8 taskState; + /*0x0001*/ u8 printState; + /*0x0002*/ u8 gfxLoadState; + /*0x0003*/ u8 bgPalLoadState; + /*0x0004*/ u8 var_4; + /*0x0005*/ bool8 isLink; + /*0x0006*/ u8 var_6; + /*0x0007*/ u8 var_7; + /*0x0008*/ u8 var_8; + /*0x0009*/ bool8 allowDMACopy; + /*0x000A*/ bool8 hasPokedex; + /*0x000B*/ bool8 hasHofResult; + /*0x000C*/ bool8 hasLinkResults; + /*0x000D*/ bool8 hasBattleTowerWins; + /*0x000E*/ u8 var_E; + /*0x000F*/ u8 var_F; + /*0x0010*/ bool8 hasTrades; + /*0x0011*/ u8 hasBadge[BADGE_COUNT]; + /*0x0019*/ u8 var_19[4][0xD]; + /*0x004D*/ u8 var_4D[0x46]; + /*0x0093*/ u8 var_93[0x46]; + /*0x00D9*/ u8 var_D9[0x46]; + /*0x011F*/ u8 var_11F[0x46]; + /*0x0165*/ u8 var_165[0x46]; + /*0x01AB*/ u8 var_1AB[0x46]; + /*0x01F1*/ u8 var_1F1[0x46]; + /*0x0237*/ u8 var_237[0x46]; + /*0x027D*/ u8 var_27D[0x46]; + /*0x02C3*/ u8 var_2C3[0x46]; + /*0x0309*/ u8 var_309[0x46]; + /*0x034F*/ u8 var_34F[0x46]; + /*0x0395*/ u8 var_395; + /*0x0396*/ u16 monIconPals[0x30]; + /*0x03F6*/ u8 var_3DB[0x60]; + /*0x0456*/ s8 var_456; + /*0x0457*/ u8 cardType; + /*0x0458*/ void (*callback2)(void); + /*0x045C*/ struct TrainerCard trainerCard; + // /*0x045C*/ u8 gender; + // /*0x045D*/ u8 stars; + // /*0x045E*/ bool8 hasPokedex; + // /*0x045F*/ bool8 caughtAllHoenn; + // /*0x0460*/ bool8 hasAllPaintings; + // /*0x0462*/ u16 hofDebutHours; + // /*0x0464*/ u16 hofDebutMinutes; + // /*0x0466*/ u16 hofDebutSeconds; + // /*0x0468*/ u16 caughtMonsCount; + // /*0x046A*/ u16 trainerId; + // /*0x046C*/ u16 playTimeHours; + // /*0x046E*/ u16 playTimeMinutes; + // /*0x0470*/ u16 linkBattleWins; + // /*0x0472*/ u16 linkBattleLosses; + // /*0x0474*/ u16 battleTowerWins; + // /*0x0476*/ u16 battleTowerStraightWins; + // /*0x0478*/ u16 contestsWithFriends; + // /*0x047A*/ u16 pokeblocksWithFriends; + // /*0x047C*/ u16 pokemonTrades; + // /*0x0480*/ u32 money; + // /*0x0484*/ u16 var_28[4]; + // /*0x048C*/ u8 playerName[PLAYER_NAME_LENGTH]; + // /*0x0494*/ u8 version; + // /*0x0496*/ u16 var_3A; + // /*0x0498*/ u32 berryCrushPoints; + // /*0x049C*/ u32 unionRoomNum; + // /*0x04A0*/ u32 berriesPicked; + // /*0x04A4*/ u32 jumpsInRow; + // /*0x04A8*/ bool8 var_4C; + // /*0x04A9*/ bool8 hasAllMons; + // /*0x04AA*/ u8 var_4E; + // /*0x04AB*/ u8 var_4F; + // /*0x04AC*/ u8 var_50[4]; + // /*0x04B0*/ u16 monSpecies[PARTY_SIZE]; + /*0x04BC*/ u16 var_4BC; + /*0x04BE*/ u8 var_4BE[0x4AE]; + /*0x096C*/ u16 var_96C[0x258]; + /*0x0E1C*/ u16 var_E1C; + /*0x0E1E*/ u8 unk_E1E[0x4AE]; + /*0x12CC*/ u16 cardTiles[0x200]; + /*0x16CC*/ u16 bgTiles[0x100]; + /*0x18CC*/ u16 var_18CC[0x1180]; + /*0x3BCC*/ u16 bgTilemap0[0x1000]; + /*0x5BCC*/ u16 bgTilemap2[0x1000]; + /*0x7BCC*/ u16 var_7BCC; + /*0x7BCE*/ bool8 var_7BCE; + /*0x7BCF*/ u8 language; +}; /* size = 0x7BD0 */ + +// RAM EWRAM_DATA struct TrainerCard gTrainerCards[4] = {0}; EWRAM_DATA static struct TrainerCardData *sTrainerCardDataPtr = NULL; // Function Declaration static void VblankCb_TrainerCard(void); static void HblankCb_TrainerCard(void); -static void sub_80C48C8(void); static void CB2_TrainerCard(void); -static void CloseTrainerCard(u8 task); -static bool8 PrintAllOnCardPage1(void); -static void sub_80C438C(u8); -static void sub_80C4FF0(void); -static void sub_80C4550(u16*); -static void sub_80C45C0(u16*); -static void TrainerCard_PrintStarsAndBadgesOnCard(void); -static void PrintTimeOnCard(void); -static void sub_80C4918(void); -static bool8 sub_80C4940(void); +static void CloseTrainerCard(u8 taskId); +static void Task_TrainerCard(u8 taskId); static bool8 LoadCardGfx(void); static void CB2_InitTrainerCard(void); static u32 GetCappedGameStat(u8 statId, u32 maxValue); -static bool8 HasAllFrontierSymbols(void); -static u8 GetRubyTrainerStars(struct TrainerCard*); -static u16 GetCaughtMonsCount(void); -static void SetPlayerCardData(struct TrainerCard*, u8); -static void TrainerCard_GenerateCardForLinkPlayer(struct TrainerCard*); -static u8 VersionToCardType(u8); +static u8 GetTrainerStarCount(struct TrainerCard *trainerCard); +static void SetPlayerCardData(struct TrainerCard *trainerCard, u8 cardType); static void SetDataFromTrainerCard(void); static void HandleGpuRegs(void); +static void sub_8089BD8(u16 arg0); static void ResetGpuRegs(void); -static void InitBgsAndWindows(void); +static void TrainerCardNull(void); +static void sub_8089C5C(void); +static void sub_8089C80(void); +static void sub_8089CA4(void); +static void ResetTrainerCard(void); static void SetTrainerCardCb2(void); -static void sub_80C3414(void); -static void sub_80C4EE4(void); -static u8 GetSetCardType(void); +static void sub_8089DA4(void); +static bool8 PrintAllOnCardPage1(void); +static bool8 PrintStringsOnCardPage2(void); +static void sub_8089ECC(void); static void PrintNameOnCard(void); static void PrintIdOnCard(void); static void PrintMoneyOnCard(void); +static u16 GetCaughtMonsCount(void); static void PrintPokedexOnCard(void); +static void PrintTimeOnCard(void); static void PrintProfilePhraseOnCard(void); -static bool8 PrintStringsOnCardPage2(void); -static void sub_80C3B50(void); -static void PrintHofDebutStringOnCard(void); -static void PrintWinsLossesStringOnCard(void); -static void PrintTradesStringOnCard(void); -static void PrintBerryCrushStringOnCard(void); -static void PrintPokeblockStringOnCard(void); -static void PrintUnionStringOnCard(void); -static void PrintContestStringOnCard(void); -static void TrainerCard_PrintPokemonIconsOnCard(void); -static void PrintBattleFacilityStringOnCard(void); -static void sub_80C42A4(void); -static void PrintAllVariableNumsOnCardPage2(void); static void PrintNameOnCard2(void); +static void sub_808A4FC(void); static void PrintHofTimeOnCard(void); +static void PrintHofDebutStringOnCard(void); static void PrintLinkResultsNumsOnCard(void); +static void PrintWinsLossesStringOnCard(void); static void PrintTradesNumOnCard(void); +static void PrintTradesStringOnCard(void); static void PrintBerryCrushNumOnCard(void); +static void PrintBerryCrushStringOnCard(void); static void PrintUnionNumOnCard(void); -static void PrintPokeblocksNumOnCard(void); -static void PrintContestNumOnCard(void); -static void PrintBattleFacilityNumsOnCard(void); -static void PrintString(u8 top, const u8* str1, u8* str2, const u8* color); -static void sub_80C4330(void); -static u8 SetCardBgsAndPals(void); -static void sub_80C474C(void); -static void sub_80C4960(u8); -static bool8 sub_80C4998(struct Task* task); -static bool8 sub_80C49D8(struct Task* task); -static bool8 sub_80C4B08(struct Task* task); -static bool8 sub_80C4C1C(struct Task* task); -static bool8 sub_80C4C84(struct Task* task); -static bool8 sub_80C4DB0(struct Task* task); -static void sub_80C32EC(u16); -static void sub_80C41D8(void); - -// const rom data -static const u32 gUnknown_0856F018[] = INCBIN_U32("graphics/trainer_card/stickers_fr.4bpp.lz"); -static const u16 gUnknown_0856F18C[] = INCBIN_U16("graphics/trainer_card/unknown_56F18C.gbapal"); -static const u16 gEmeraldTrainerCard1Star_Pal[] = INCBIN_U16("graphics/trainer_card/one_star.gbapal"); -static const u16 gFireRedTrainerCard1Star_Pal[] = INCBIN_U16("graphics/trainer_card/one_star_fr.gbapal"); -static const u16 gEmeraldTrainerCard2Star_Pal[] = INCBIN_U16("graphics/trainer_card/two_stars.gbapal"); -static const u16 gFireRedTrainerCard2Star_Pal[] = INCBIN_U16("graphics/trainer_card/two_stars_fr.gbapal"); -static const u16 gEmeraldTrainerCard3Star_Pal[] = INCBIN_U16("graphics/trainer_card/three_stars.gbapal"); -static const u16 gFireRedTrainerCard3Star_Pal[] = INCBIN_U16("graphics/trainer_card/three_stars_fr.gbapal"); -static const u16 gEmeraldTrainerCard4Star_Pal[] = INCBIN_U16("graphics/trainer_card/four_stars.gbapal"); -static const u16 gFireRedTrainerCard4Star_Pal[] = INCBIN_U16("graphics/trainer_card/four_stars_fr.gbapal"); -static const u16 sEmeraldTrainerCardFemaleBackground_Pal[] = INCBIN_U16("graphics/trainer_card/female_bg.gbapal"); -static const u16 sFireRedTrainerCardFemaleBackground_Pal[] = INCBIN_U16("graphics/trainer_card/female_bg_fr.gbapal"); -static const u16 sEmeraldTrainerCardBadges_Pal[] = INCBIN_U16("graphics/trainer_card/badges.gbapal"); -static const u16 sFireRedTrainerCardBadges_Pal[] = INCBIN_U16("graphics/trainer_card/badges_fr.gbapal"); -static const u16 gUnknown_0856F52C[] = INCBIN_U16("graphics/trainer_card/gold.gbapal"); -static const u16 gUnknown_0856F54C[] = INCBIN_U16("graphics/trainer_card/stickers_fr1.gbapal"); -static const u16 gUnknown_0856F56C[] = INCBIN_U16("graphics/trainer_card/stickers_fr2.gbapal"); -static const u16 gUnknown_0856F58C[] = INCBIN_U16("graphics/trainer_card/stickers_fr3.gbapal"); -static const u16 gUnknown_0856F5AC[] = INCBIN_U16("graphics/trainer_card/stickers_fr4.gbapal"); -static const u32 sEmeraldTrainerCardBadges_Tile[] = INCBIN_U32("graphics/trainer_card/badges.4bpp.lz"); -static const u32 sFireRedTrainerCardBadges_Tile[] = INCBIN_U32("graphics/trainer_card/badges_fr.4bpp.lz"); - -static const struct BgTemplate gUnknown_0856FAB4[4] = +static void PrintUnionStringOnCard(void); +static void TrainerCard_PrintPokemonIconsOnCard(void); +static void sub_808AB10(void); +static void sub_808ABE0(void); +static void TrainerCardLoadStickerPals(void); +static void PutTrainerCardWindow(u8 windowId); +static bool8 SetTrainerCardBgsAndPals(void); +static void LoadTrainerCardTilemap2(u16* ptr); +static void LoadTrainerCardTilemap0(u16* ptr); +static void TrainerCard_PrintStarsAndBadgesOnCard(void); +static void sub_808B090(void); +static void sub_808B180(void); +static void sub_808B1D4(void); +static bool8 sub_808B1FC(void); +static void sub_808B21C(u8 taskId); +static bool8 sub_808B254(struct Task* task); +static bool8 sub_808B294(struct Task* task); +static bool8 sub_808B3C4(struct Task* task); +static bool8 sub_808B4D8(struct Task* task); +static bool8 sub_808B540(struct Task* task); +static bool8 sub_808B66C(struct Task *task); +static void sub_808B774(void); +static u8 GetCardType(void); +static void sub_808B838(void); + +// Data +static const u32 sTrainerCardStickers[] = INCBIN_U32("graphics/trainer_card/stickers.4bpp.lz"); +static const u32 sUnknown_83CC4DC[] = INCBIN_U32("graphics/trainer_card/unk_83CC4DC.bin"); +static const u32 sUnknown_83CC6F0[] = INCBIN_U32("graphics/trainer_card/unk_83CC6F0.bin"); +static const u32 sUnknown_83CC8A8[] = INCBIN_U32("graphics/trainer_card/unk_83CC8A8.bin"); +static const u32 sUnknown_83CC984[] = INCBIN_U32("graphics/trainer_card/unk_83CC984.bin"); +static const u32 sUnknown_83CCAB0[] = INCBIN_U32("graphics/trainer_card/unk_83CCAB0.bin"); +static const u32 sUnknown_83CCCA4[] = INCBIN_U32("graphics/trainer_card/unk_83CCCA4.bin"); +static const u32 sUnknown_83CCE30[] = INCBIN_U32("graphics/trainer_card/unk_83CCE30.bin"); +static const u32 sUnknown_83CCEC8[] = INCBIN_U32("graphics/trainer_card/unk_83CCEC8.bin"); +static const u16 sEmeraldTrainerCard1Stars_Pals[] = INCBIN_U16("graphics/trainer_card/em_1stars_pals.gbapal"); +static const u16 sFireRedTrainerCard1Stars_Pals[] = INCBIN_U16("graphics/trainer_card/fr_1stars_pals.gbapal"); +static const u16 sEmeraldTrainerCard2Stars_Pals[] = INCBIN_U16("graphics/trainer_card/em_2stars_pals.gbapal"); +static const u16 sFireRedTrainerCard2Stars_Pals[] = INCBIN_U16("graphics/trainer_card/fr_2stars_pals.gbapal"); +static const u16 sEmeraldTrainerCard3Stars_Pals[] = INCBIN_U16("graphics/trainer_card/em_3stars_pals.gbapal"); +static const u16 sFireRedTrainerCard3Stars_Pals[] = INCBIN_U16("graphics/trainer_card/fr_3stars_pals.gbapal"); +static const u16 sEmeraldTrainerCard4Stars_Pals[] = INCBIN_U16("graphics/trainer_card/em_4stars_pals.gbapal"); +static const u16 sFireRedTrainerCard4Stars_Pals[] = INCBIN_U16("graphics/trainer_card/fr_4stars_pals.gbapal"); +static const u16 sEmeraldTrainerCardFemaleBackground_Pal[] = INCBIN_U16("graphics/trainer_card/em_female_bg.gbapal"); +static const u16 sFireRedTrainerCardFemaleBackground_Pal[] = INCBIN_U16("graphics/trainer_card/fr_female_bg.gbapal"); +static const u16 sEmeraldTrainerCardBadges_Pal[] = INCBIN_U16("graphics/trainer_card/em_badges.gbapal"); +static const u16 sFireRedTrainerCardBadges_Pal[] = INCBIN_U16("graphics/trainer_card/fr_badges.gbapal"); +static const u16 sUnknown_83CD300[] = INCBIN_U16("graphics/trainer_card/unk_83CD300.gbapal"); +static const u16 sTrainerCardStickerPal1[] = INCBIN_U16("graphics/trainer_card/sticker1.gbapal"); +static const u16 sTrainerCardStickerPal2[] = INCBIN_U16("graphics/trainer_card/sticker2.gbapal"); +static const u16 sTrainerCardStickerPal3[] = INCBIN_U16("graphics/trainer_card/sticker3.gbapal"); +static const u16 sTrainerCardStickerPal4[] = INCBIN_U16("graphics/trainer_card/sticker4.gbapal"); +static const u32 sEmeraldTrainerCardBadges_Tile[] = INCBIN_U32("graphics/trainer_card/em_badges.4bpp.lz"); +static const u32 sFireRedTrainerCardBadges_Tile[] = INCBIN_U32("graphics/trainer_card/badges.4bpp.lz"); +static const struct BgTemplate sTrainerCardBgTemplates[4] = { { .bg = 0, @@ -227,28 +267,28 @@ static const struct BgTemplate gUnknown_0856FAB4[4] = .paletteMode = 0, .priority = 1, .baseTile = 192 - }, + } }; -static const struct WindowTemplate gUnknown_0856FAC4[] = +static const struct WindowTemplate sTrainerCardWindowTemplates[4] = { { .bg = 1, .tilemapLeft = 2, .tilemapTop = 15, - .width = 27, + .width = 26, .height = 4, .paletteNum = 15, - .baseBlock = 0x253, + .baseBlock = 0x241 }, { .bg = 1, .tilemapLeft = 1, .tilemapTop = 1, - .width = 28, + .width = 27, .height = 18, .paletteNum = 15, - .baseBlock = 0x1, + .baseBlock = 0x1 }, { .bg = 3, @@ -257,49 +297,155 @@ static const struct WindowTemplate gUnknown_0856FAC4[] = .width = 9, .height = 10, .paletteNum = 8, - .baseBlock = 0x150, + .baseBlock = 0x150 }, DUMMY_WIN_TEMPLATE }; -static const u16 *const gEmeraldTrainerCardStarPals[] = +static const u16 *const sEmeraldTrainerCardStarPals[] = { - gEmeraldTrainerCard0Star_Pal, - gEmeraldTrainerCard1Star_Pal, - gEmeraldTrainerCard2Star_Pal, - gEmeraldTrainerCard3Star_Pal, - gEmeraldTrainerCard4Star_Pal, + gEmeraldTrainerCard_Pal, + sEmeraldTrainerCard1Stars_Pals, + sEmeraldTrainerCard2Stars_Pals, + sEmeraldTrainerCard3Stars_Pals, + sEmeraldTrainerCard4Stars_Pals }; -static const u16 *const gFireRedTrainerCardStarPals[] = +static const u16 *const sFireRedTrainerCardStarPals[] = { - gFireRedTrainerCard0Star_Pal, - gFireRedTrainerCard1Star_Pal, - gFireRedTrainerCard2Star_Pal, - gFireRedTrainerCard3Star_Pal, - gFireRedTrainerCard4Star_Pal, + gFireRedTrainerCard_Pal, + sFireRedTrainerCard1Stars_Pals, + sFireRedTrainerCard2Stars_Pals, + sFireRedTrainerCard3Stars_Pals, + sFireRedTrainerCard4Stars_Pals }; -static const u8 gUnknown_0856FB0C[] = {0, 2, 3}; -static const u8 gUnknown_0856FB0F[] = {0, 4, 5}; -static const u8 gUnknown_0856FB12[6] = {0}; +static const u8 sFireRedTrainerCardPage1TextColors[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY}; +static const u8 sTrainerCardPage2TextColors[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_RED, TEXT_COLOR_LIGHT_RED}; +static const u8 sEmeraldTrainerCardPage1TextColors[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_TRANSPARENT, TEXT_COLOR_TRANSPARENT}; +static const u8 sTrainerCardFontIds[] = {0, 2, 0}; +static const u8 sTrainerCardPicPositions[][2][2] = +{ + {{13, 4}, {13, 4}}, + {{1, 0}, {1, 0}} +}; -static const u8 gUnknown_0856FB18[][2][2] = +static const u8 sLinkTrainerCardFrontPics[][2] = { - {{0xD, 4}, {0xD, 4}}, - {{1, 0}, {1, 0}}, + {TRAINER_PIC_RS_MAY_2, TRAINER_PIC_RED}, + {TRAINER_PIC_PROFESSOR_OAK, TRAINER_PIC_RS_BRENDAN_2}, }; -static const u8 gUnknown_0856FB20[][2] = {{0x4E, 0x4F}, {0x50, 0x51}, {0x3C, 0x3F}}; +static const u8 sLinkTrainerCardFacilityClasses[][8] = +{ + {0x74, 0x6F, 0x5C, 0x58, 0x6A, 0x59, 0x6D, 0x6C}, + {0x75, 0x7D, 0x5D, 0x5A, 0x16, 0x30, 0x41, 0x68} +}; -static bool8 (*const gUnknown_0856FB28[])(struct Task *) = +static bool8 (*const sTrainerCardTasks[])(struct Task *) = { - sub_80C4998, - sub_80C49D8, - sub_80C4B08, - sub_80C4C1C, - sub_80C4C84, - sub_80C4DB0, + sub_808B254, + sub_808B294, + sub_808B3C4, + sub_808B4D8, + sub_808B540, + sub_808B66C +}; + +static const u8 sTrainerCardPlayerNameXPositions[] = {0x14, 0x10}; +static const u8 sTrainerCardPlayerNameYPositions[] = {0x1D, 0x21}; +static const u8 sTrainerCardIdXPositions[] = {0x8E, 0x80}; +static const u8 sTrainerCardIdYPositions[] = {0xA, 0x9}; +static const u8 *const sTrainerCardTextColors[] = {sFireRedTrainerCardPage1TextColors, sEmeraldTrainerCardPage1TextColors}; +static const u8 sTrainerCardTimeHoursXPositions[] = {0x65, 0x55}; +static const u8 sTrainerCardTimeHoursYPositions[] = {0x77, 0x67}; +static const u8 sTrainerCardTimeMinutesXPositions[] = {0x7C, 0x6C}; +static const u8 sTrainerCardTimeMinutesYPositions[] = {0x58, 0x59}; +static const u8 sTrainerCardProfilePhraseXPositions[] = {0x73, 0x69}; +static const u8 sTrainerCardProfilePhraseYPositions[] = {0x82, 0x78}; +static const u8 sUnknown_83CD93C[] = {0x8A, 0xD8}; +static const u8 sUnknown_83CD93E[] = {0xB, 0xA}; +static const u8 sTrainerCardHofDebutXPositions[] = {0xA, 0x10, 0x0, 0x0}; +static const u8 *const sLinkTrainerCardRecordStrings[] = {gText_LinkBattles, gText_LinkCableBattles}; +static const u8 sUnknown_83CD94C[] = {5, 6, 7, 8, 9, 10}; +static const u8 sUnknown_83CD952[] = {0, 4, 8, 12, 16, 20}; +static const u8 sUnknown_83CD958[] = {11, 12, 13, 14}; +static const u8 sUnknown_83CD95C[] = {7, 6, 0, 0}; + +static const struct TrainerCard sLinkPlayerTrainerCardTemplate1 = +{ + .gender = MALE, + .stars = 4, + .hasPokedex = TRUE, + .caughtAllHoenn = TRUE, + .hasAllPaintings = TRUE, + .hofDebutHours = 999, + .hofDebutMinutes = 59, + .hofDebutSeconds = 59, + .caughtMonsCount = 200, + .trainerId = 0x6072, + .playTimeHours = 999, + .playTimeMinutes = 59, + .linkBattleWins = 5535, + .linkBattleLosses = 5535, + .battleTowerWins = 5535, + .battleTowerStraightWins = 5535, + .contestsWithFriends = 55555, + .pokeblocksWithFriends = 44444, + .pokemonTrades = 33333, + .money = 999999, + .var_28 = {0, 0, 0, 0}, + .playerName = _("あかみ どりお"), //{0x1, 0x6, 0x20, 0x0, 0x45, 0x28, 0x5, 0xFF}, + .version = VERSION_FIRE_RED, + .var_3A = 0, + .berryCrushPoints = 5555, + .unionRoomNum = 8500, + .berriesPicked = 5456, + .jumpsInRow = 6300, + .var_4C = TRUE, + .hasAllMons = TRUE, + .var_4E = 2, + .var_4F = 0, + .var_50 = {1, 2, 3, 0}, + .monSpecies = {SPECIES_CHARIZARD, SPECIES_DIGLETT, SPECIES_NIDORINA, SPECIES_FEAROW, SPECIES_PARAS, SPECIES_SLOWBRO} +}; + +static const struct TrainerCard sLinkPlayerTrainerCardTemplate2 = +{ + .gender = FEMALE, + .stars = 2, + .hasPokedex = TRUE, + .caughtAllHoenn = TRUE, + .hasAllPaintings = TRUE, + .hofDebutHours = 999, + .hofDebutMinutes = 59, + .hofDebutSeconds = 59, + .caughtMonsCount = 200, + .trainerId = 0x6072, + .playTimeHours = 999, + .playTimeMinutes = 59, + .linkBattleWins = 5535, + .linkBattleLosses = 5535, + .battleTowerWins = 65535, + .battleTowerStraightWins = 65535, + .contestsWithFriends = 55555, + .pokeblocksWithFriends = 44444, + .pokemonTrades = 33333 , + .money = 999999, + .var_28 = {0, 0, 0, 0}, + .playerName = _("るびさふぁこ!"), + .version = 0, + .var_3A = 0, + .berryCrushPoints = 555, + .unionRoomNum = 500, + .berriesPicked = 456, + .jumpsInRow = 300, + .var_4C = TRUE, + .hasAllMons = TRUE, + .var_4E = 2, + .var_4F = 0, + .var_50 = {1, 2, 3, 0}, + .monSpecies = {SPECIES_CHARIZARD, SPECIES_DIGLETT, SPECIES_NIDORINA, SPECIES_FEAROW, SPECIES_PARAS, SPECIES_SLOWBRO} }; // Functions @@ -308,7 +454,7 @@ static void VblankCb_TrainerCard(void) LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); - sub_80C48C8(); + sub_808B180(); if (sTrainerCardDataPtr->allowDMACopy) DmaCopy16(3, &gScanlineEffectRegBuffers[0], &gScanlineEffectRegBuffers[1], 0x140); } @@ -343,40 +489,40 @@ static void CloseTrainerCard(u8 taskId) static void Task_TrainerCard(u8 taskId) { - switch (sTrainerCardDataPtr->var_0) + switch (sTrainerCardDataPtr->taskState) { case 0: if (!IsDma3ManagerBusyWithBgCopy()) { FillWindowPixelBuffer(1, PIXEL_FILL(0)); - sTrainerCardDataPtr->var_0++; + sTrainerCardDataPtr->taskState++; } break; case 1: if (PrintAllOnCardPage1()) - sTrainerCardDataPtr->var_0++; + sTrainerCardDataPtr->taskState++; break; case 2: - sub_80C438C(1); - sTrainerCardDataPtr->var_0++; + PutTrainerCardWindow(1); + sTrainerCardDataPtr->taskState++; break; case 3: FillWindowPixelBuffer(2, PIXEL_FILL(0)); - sub_80C4FF0(); - sub_80C438C(2); - sTrainerCardDataPtr->var_0++; + sub_808B838(); + PutTrainerCardWindow(2); + sTrainerCardDataPtr->taskState++; break; case 4: - sub_80C4550(sTrainerCardDataPtr->var_EF8); - sTrainerCardDataPtr->var_0++; + LoadTrainerCardTilemap2(&sTrainerCardDataPtr->var_E1C); + sTrainerCardDataPtr->taskState++; break; case 5: - sub_80C45C0(sTrainerCardDataPtr->var_598); - sTrainerCardDataPtr->var_0++; + LoadTrainerCardTilemap0(&sTrainerCardDataPtr->var_4BC); + sTrainerCardDataPtr->taskState++; break; case 6: TrainerCard_PrintStarsAndBadgesOnCard(); - sTrainerCardDataPtr->var_0++; + sTrainerCardDataPtr->taskState++; break; case 7: if (gWirelessCommType == 1 && gReceivedRemoteLinkPlayers == TRUE) @@ -384,99 +530,101 @@ static void Task_TrainerCard(u8 taskId) LoadWirelessStatusIndicatorSpriteGfx(); CreateWirelessStatusIndicatorSprite(230, 150); } - BlendPalettes(0xFFFFFFFF, 16, sTrainerCardDataPtr->var_52C); - BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, sTrainerCardDataPtr->var_52C); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); SetVBlankCallback(VblankCb_TrainerCard); - sTrainerCardDataPtr->var_0++; + sTrainerCardDataPtr->taskState++; break; case 8: if (!UpdatePaletteFade() && !IsDma3ManagerBusyWithBgCopy()) { - PlaySE(SE_RG_CARD3); - sTrainerCardDataPtr->var_0 = 10; + PlaySE(SE_CARD3); + sTrainerCardDataPtr->taskState = 10; } break; case 9: if (!IsSEPlaying()) - sTrainerCardDataPtr->var_0++; + sTrainerCardDataPtr->taskState++; break; case 10: - if (!gReceivedRemoteLinkPlayers && sTrainerCardDataPtr->var_529) + if (!gReceivedRemoteLinkPlayers && sTrainerCardDataPtr->var_7BCE) { PrintTimeOnCard(); - sub_80C438C(1); - sTrainerCardDataPtr->var_529 = 0; + PutTrainerCardWindow(1); + sTrainerCardDataPtr->var_7BCE = 0; } - if (gMain.newKeys & A_BUTTON) + + if (JOY_NEW(A_BUTTON)) { - sub_80C4918(); - PlaySE(SE_RG_CARD1); - sTrainerCardDataPtr->var_0 = 12; + HelpSystem_SetSomeVariable2(11); + sub_808B1D4(); + PlaySE(SE_CARD1); + sTrainerCardDataPtr->taskState = 12; } - else if (gMain.newKeys & B_BUTTON) + else if (JOY_NEW(B_BUTTON)) { if (gReceivedRemoteLinkPlayers && sTrainerCardDataPtr->isLink && InUnionRoom() == TRUE) { - sTrainerCardDataPtr->var_0 = 15; + sTrainerCardDataPtr->taskState = 15; } else { - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, sTrainerCardDataPtr->var_52C); - sTrainerCardDataPtr->var_0 = 14; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + sTrainerCardDataPtr->taskState = 14; } } break; case 12: - if (sub_80C4940() && sub_8087598() != TRUE) + if (sub_808B1FC() && sub_8058244() != TRUE) { - PlaySE(SE_RG_CARD3); - sTrainerCardDataPtr->var_0 = 11; + PlaySE(SE_CARD3); + sTrainerCardDataPtr->taskState = 11; } break; case 11: - if (gMain.newKeys & B_BUTTON) + if (JOY_NEW(B_BUTTON)) { if (gReceivedRemoteLinkPlayers && sTrainerCardDataPtr->isLink && InUnionRoom() == TRUE) { - sTrainerCardDataPtr->var_0 = 15; + sTrainerCardDataPtr->taskState = 15; } else if (gReceivedRemoteLinkPlayers) { - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, sTrainerCardDataPtr->var_52C); - sTrainerCardDataPtr->var_0 = 14; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + sTrainerCardDataPtr->taskState = 14; } else { - sub_80C4918(); - sTrainerCardDataPtr->var_0 = 13; - PlaySE(SE_RG_CARD1); + HelpSystem_SetSomeVariable2(10); + sub_808B1D4(); + sTrainerCardDataPtr->taskState = 13; + PlaySE(SE_CARD1); } } - else if (gMain.newKeys & A_BUTTON) + else if (JOY_NEW(A_BUTTON)) { if (gReceivedRemoteLinkPlayers && sTrainerCardDataPtr->isLink && InUnionRoom() == TRUE) { - sTrainerCardDataPtr->var_0 = 15; + sTrainerCardDataPtr->taskState = 15; } else { - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, sTrainerCardDataPtr->var_52C); - sTrainerCardDataPtr->var_0 = 14; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + sTrainerCardDataPtr->taskState = 14; } } break; case 15: - sub_800AC34(); + sub_800AAC0(); DrawDialogueFrame(0, 1); - AddTextPrinterParameterized(0, 1, gText_WaitingTrainerFinishReading, 0, 1, 255, 0); + AddTextPrinterParameterized(0, 2, gText_WaitingTrainerFinishReading, 0, 1, TEXT_SPEED_FF, 0); CopyWindowToVram(0, 3); - sTrainerCardDataPtr->var_0 = 16; + sTrainerCardDataPtr->taskState = 16; break; case 16: if (!gReceivedRemoteLinkPlayers) { - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, sTrainerCardDataPtr->var_52C); - sTrainerCardDataPtr->var_0 = 14; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + sTrainerCardDataPtr->taskState = 14; } break; case 14: @@ -484,10 +632,10 @@ static void Task_TrainerCard(u8 taskId) CloseTrainerCard(taskId); break; case 13: - if (sub_80C4940() && sub_8087598() != TRUE) + if (sub_808B1FC() && sub_8058244() != TRUE) { - sTrainerCardDataPtr->var_0 = 10; - PlaySE(SE_RG_CARD3); + sTrainerCardDataPtr->taskState = 10; + PlaySE(SE_CARD3); } break; } @@ -498,45 +646,45 @@ static bool8 LoadCardGfx(void) switch (sTrainerCardDataPtr->gfxLoadState) { case 0: - if (sTrainerCardDataPtr->cardType == CARD_TYPE_RS) - LZ77UnCompWram(gUnknown_83CCE30, sTrainerCardDataPtr->unk_E1C); + if (sTrainerCardDataPtr->cardType == CARD_TYPE_EMERALD) + LZ77UnCompWram(sUnknown_83CCE30, &sTrainerCardDataPtr->var_E1C); else - LZ77UnCompWram(gUnknown_83CCEC8, sTrainerCardDataPtr->unk_E1C); + LZ77UnCompWram(sUnknown_83CCEC8, &sTrainerCardDataPtr->var_E1C); break; case 1: - if (sTrainerCardDataPtr->cardType == CARD_TYPE_RS) - LZ77UnCompWram(gUnknown_83CC8A8, sTrainerCardDataPtr->unk_96C); + if (sTrainerCardDataPtr->cardType == CARD_TYPE_EMERALD) + LZ77UnCompWram(sUnknown_83CC8A8, &sTrainerCardDataPtr->var_96C); else - LZ77UnCompWram(gUnknown_83CC984, sTrainerCardDataPtr->unk_96C); + LZ77UnCompWram(sUnknown_83CC984, &sTrainerCardDataPtr->var_96C); break; case 2: if (!sTrainerCardDataPtr->isLink) { - if (sTrainerCardDataPtr->cardType == CARD_TYPE_RS) - LZ77UnCompWram(gUnknown_83CC4DC, sTrainerCardDataPtr->unk_4BC); + if (sTrainerCardDataPtr->cardType == CARD_TYPE_EMERALD) + LZ77UnCompWram(sUnknown_83CC4DC, &sTrainerCardDataPtr->var_4BC); else - LZ77UnCompWram(gUnknown_83CC6F0, sTrainerCardDataPtr->unk_4BC); + LZ77UnCompWram(sUnknown_83CC6F0, &sTrainerCardDataPtr->var_4BC); } else { - if (sTrainerCardDataPtr->cardType == CARD_TYPE_RS) - LZ77UnCompWram(gUnknown_83CCAB0, sTrainerCardDataPtr->unk_4BC); + if (sTrainerCardDataPtr->cardType == CARD_TYPE_EMERALD) + LZ77UnCompWram(sUnknown_83CCAB0, &sTrainerCardDataPtr->var_4BC); else - LZ77UnCompWram(gUnknown_83CCCA4, sTrainerCardDataPtr->unk_4BC); + LZ77UnCompWram(sUnknown_83CCCA4, &sTrainerCardDataPtr->var_4BC); } break; case 3: - LZ77UnCompWram(sTrainerCardBadges_Tile, sTrainerCardDataPtr->var_12CC); - break; + LZ77UnCompWram(sFireRedTrainerCardBadges_Tile, &sTrainerCardDataPtr->cardTiles); + break; case 4: - if (sTrainerCardDataPtr->cardType == CARD_TYPE_RS) - LZ77UnCompWram(gEmeraldTrainerCard_Gfx, sTrainerCardDataPtr->var_18CC); + if (sTrainerCardDataPtr->cardType == CARD_TYPE_EMERALD) + LZ77UnCompWram(gEmeraldTrainerCard_Gfx, &sTrainerCardDataPtr->var_18CC); else - LZ77UnCompWram(gFireRedTrainerCard_Gfx, sTrainerCardDataPtr->var_18CC); + LZ77UnCompWram(gFireRedTrainerCard_Gfx, &sTrainerCardDataPtr->var_18CC); break; case 5: if (sTrainerCardDataPtr->cardType == CARD_TYPE_FRLG) - LZ77UnCompWram(gTrainerCardIcons, sTrainerCardDataPtr->var_16CC); + LZ77UnCompWram(sTrainerCardStickers, &sTrainerCardDataPtr->bgTiles); break; default: sTrainerCardDataPtr->gfxLoadState = 0; @@ -552,51 +700,60 @@ static void CB2_InitTrainerCard(void) { case 0: ResetGpuRegs(); - sub_80C3414(); + sub_8089DA4(); gMain.state++; break; case 1: - DmaClear32(3, (void *)OAM, OAM_SIZE); + TrainerCardNull(); gMain.state++; break; case 2: - if (!sTrainerCardDataPtr->var_52C) - DmaClear16(3, (void *)PLTT, PLTT_SIZE); + sub_8089C5C(); gMain.state++; break; case 3: - ResetSpriteData(); - FreeAllSpritePalettes(); - ResetPaletteFade(); + sub_8089C80(); gMain.state++; + // fallthrough case 4: - InitBgsAndWindows(); + sub_8089CA4(); gMain.state++; break; case 5: - sub_80C41D8(); + ResetTrainerCard(); gMain.state++; break; case 6: - if (LoadCardGfx() == TRUE) - gMain.state++; + LoadStdWindowFrameGfx(); + gMain.state++; break; case 7: - sub_80C4330(); + sub_808AB10(); gMain.state++; break; case 8: - HandleGpuRegs(); - gMain.state++; + if (LoadCardGfx() == TRUE) + gMain.state++; break; case 9: - PrintAllVariableNumsOnCardPage2(); + TrainerCardLoadStickerPals(); gMain.state++; break; case 10: - if (SetCardBgsAndPals() == TRUE) + HandleGpuRegs(); + gMain.state++; + break; + case 11: + sub_8089ECC(); + gMain.state++; + break; + case 12: + if (SetTrainerCardBgsAndPals() == TRUE) gMain.state++; break; + case 13: + gMain.state++; + break; default: SetTrainerCardCb2(); break; @@ -606,47 +763,22 @@ static void CB2_InitTrainerCard(void) static u32 GetCappedGameStat(u8 statId, u32 maxValue) { u32 statValue = GetGameStat(statId); - return min(maxValue, statValue); } -static bool8 HasAllFrontierSymbols(void) -{ - u8 i; - for (i = 0; i < NUM_FRONTIER_FACILITIES; i++) - { - if (!FlagGet(FLAG_SYS_TOWER_SILVER + 2 * i) || !FlagGet(FLAG_SYS_TOWER_GOLD + 2 * i)) - return FALSE; - } - return TRUE; -} - -u32 CountPlayerTrainerStars(void) +static u8 GetTrainerStarCount(struct TrainerCard *trainerCard) { u8 stars = 0; - if (GetGameStat(GAME_STAT_ENTERED_HOF)) - stars++; - if (HasAllHoennMons()) - stars++; - if (CountPlayerContestPaintings() > 4) - stars++; - if (HasAllFrontierSymbols()) - stars++; - - return stars; -} - -static u8 GetRubyTrainerStars(struct TrainerCard *trainerCard) -{ - u8 stars = 0; - - if (trainerCard->hofDebutHours || trainerCard->hofDebutMinutes || trainerCard->hofDebutSeconds) + if (trainerCard->hofDebutHours != 0 || trainerCard->hofDebutMinutes != 0 || trainerCard->hofDebutSeconds != 0) stars++; + if (trainerCard->caughtAllHoenn) stars++; + if (trainerCard->battleTowerStraightWins > 49) stars++; + if (trainerCard->hasAllPaintings) stars++; @@ -657,7 +789,7 @@ static void SetPlayerCardData(struct TrainerCard *trainerCard, u8 cardType) { u32 playTime; u8 i; - + trainerCard->gender = gSaveBlock2Ptr->playerGender; trainerCard->playTimeHours = gSaveBlock2Ptr->playTimeHours; trainerCard->playTimeMinutes = gSaveBlock2Ptr->playTimeMinutes; @@ -684,8 +816,14 @@ static void SetPlayerCardData(struct TrainerCard *trainerCard, u8 cardType) trainerCard->linkBattleWins = GetCappedGameStat(GAME_STAT_LINK_BATTLE_WINS, 9999); trainerCard->linkBattleLosses = GetCappedGameStat(GAME_STAT_LINK_BATTLE_LOSSES, 9999); - trainerCard->pokemonTrades = GetCappedGameStat(GAME_STAT_POKEMON_TRADES, 0xFFFF); + + trainerCard->battleTowerWins = 0; + trainerCard->battleTowerStraightWins = 0; + trainerCard->contestsWithFriends = 0; + trainerCard->pokeblocksWithFriends = 0; + + trainerCard->hasAllPaintings = FALSE; trainerCard->money = GetMoney(&gSaveBlock1Ptr->money); @@ -694,147 +832,139 @@ static void SetPlayerCardData(struct TrainerCard *trainerCard, u8 cardType) StringCopy(trainerCard->playerName, gSaveBlock2Ptr->playerName); - switch (cardType) + if (cardType == CARD_TYPE_FRLG) + { + trainerCard->stars = GetTrainerStarCount(trainerCard); + } + else if (cardType == CARD_TYPE_EMERALD) { - case CARD_TYPE_EMERALD: - trainerCard->battleTowerWins = 0; - trainerCard->battleTowerStraightWins = 0; - // Seems like GF got CARD_TYPE_FRLG and CARD_TYPE_RS wrong. - case CARD_TYPE_FRLG: - trainerCard->contestsWithFriends = GetCappedGameStat(GAME_STAT_WON_LINK_CONTEST, 999); - trainerCard->pokeblocksWithFriends = GetCappedGameStat(GAME_STAT_POKEBLOCKS_WITH_FRIENDS, 0xFFFF); - if (CountPlayerContestPaintings() > 4) - trainerCard->hasAllPaintings = TRUE; - trainerCard->stars = GetRubyTrainerStars(trainerCard); - break; - case CARD_TYPE_RS: - trainerCard->battleTowerWins = 0; - trainerCard->battleTowerStraightWins = 0; - trainerCard->contestsWithFriends = 0; - trainerCard->pokeblocksWithFriends = 0; - trainerCard->hasAllPaintings = 0; trainerCard->stars = 0; - break; + if (trainerCard->hofDebutHours != 0 || (trainerCard->hofDebutMinutes != 0 || trainerCard->hofDebutSeconds != 0)) + trainerCard->stars = cardType; + + if (HasAllKantoMons() != 0) + trainerCard->stars++; + + if (HasAllMons() != 0) + trainerCard->stars++; } } -static void TrainerCard_GenerateCardForLinkPlayer(struct TrainerCard *trainerCard) +void TrainerCard_GenerateCardForLinkPlayer(struct TrainerCard *trainerCard) { - memset(trainerCard, 0, sizeof(struct TrainerCard)); - trainerCard->version = GAME_VERSION; + u8 id = 0; + + trainerCard->version = VERSION_FIRE_RED; SetPlayerCardData(trainerCard, CARD_TYPE_EMERALD); - trainerCard->hasAllSymbols = HasAllFrontierSymbols(); - trainerCard->frontierBP = gSaveBlock2Ptr->frontier.cardBattlePoints; - if (trainerCard->hasAllSymbols) + if (GetCardType() != CARD_TYPE_FRLG) + return; + + trainerCard->stars = id; + if (trainerCard->hofDebutHours != 0 || trainerCard->hofDebutMinutes != 0 || trainerCard->hofDebutSeconds != 0) + trainerCard->stars = 1; + + trainerCard->caughtAllHoenn = HasAllKantoMons(); + trainerCard->hasAllMons = HasAllMons(); + trainerCard->berriesPicked = gSaveBlock2Ptr->berryPick.berriesPicked; + trainerCard->jumpsInRow = gSaveBlock2Ptr->pokeJump.jumpsInRow; + + trainerCard->berryCrushPoints = GetCappedGameStat(GAME_STAT_BERRY_CRUSH_POINTS, 0xFFFF); + trainerCard->unionRoomNum = GetCappedGameStat(GAME_STAT_NUM_UNION_ROOM_BATTLES, 0xFFFF); + trainerCard->var_4C = TRUE; + + if (trainerCard->caughtAllHoenn) trainerCard->stars++; - - if (trainerCard->gender == FEMALE) - trainerCard->var_4F = gLinkPlayerFacilityClasses[(trainerCard->trainerId % 8) + 8]; - else - trainerCard->var_4F = gLinkPlayerFacilityClasses[trainerCard->trainerId % 8]; -} - -void TrainerCard_GenerateCardForPlayer(struct TrainerCard *trainerCard) -{ - memset(trainerCard, 0, 0x60); - trainerCard->version = GAME_VERSION; - SetPlayerCardData(trainerCard, CARD_TYPE_EMERALD); - trainerCard->var_3A = HasAllFrontierSymbols(); - *((u16*)&trainerCard->berryCrushPoints) = gSaveBlock2Ptr->frontier.cardBattlePoints; - if (trainerCard->var_3A) + + if (trainerCard->hasAllMons) trainerCard->stars++; - + + if (trainerCard->berriesPicked >= 200 && trainerCard->jumpsInRow >= 200) + trainerCard->stars++; + + id = ((u16)trainerCard->trainerId) % 8; if (trainerCard->gender == FEMALE) - trainerCard->var_4F = gLinkPlayerFacilityClasses[(trainerCard->trainerId % 8) + 8]; + trainerCard->var_4F = sLinkTrainerCardFacilityClasses[1][id]; else - trainerCard->var_4F = gLinkPlayerFacilityClasses[trainerCard->trainerId % 8]; -} - -void CopyTrainerCardData(struct TrainerCard *dst, u16 *src, u8 gameVersion) -{ - memset(dst, 0, sizeof(struct TrainerCard)); - dst->version = gameVersion; - - switch (VersionToCardType(gameVersion)) - { - case CARD_TYPE_FRLG: - memcpy(dst, src, 0x60); - break; - case CARD_TYPE_RS: - memcpy(dst, src, 0x38); - break; - case CARD_TYPE_EMERALD: - memcpy(dst, src, 0x60); - dst->berryCrushPoints = 0; - dst->hasAllSymbols = src[29]; - dst->frontierBP = src[30]; - break; - } + trainerCard->var_4F = sLinkTrainerCardFacilityClasses[0][id]; + + trainerCard->var_50[0] = VarGet(VAR_HOF_BRAG_STATE); + trainerCard->var_50[1] = VarGet(VAR_EGG_BRAG_STATE); + trainerCard->var_50[2] = VarGet(VAR_LINK_WIN_BRAG_STATE); + + trainerCard->var_4E = VarGet(VAR_TRAINER_CARD_MON_ICON_TINT_IDX); + + trainerCard->monSpecies[0] = MailSpeciesToIconSpecies(VarGet(VAR_TRAINER_CARD_MON_ICON_1)); + trainerCard->monSpecies[1] = MailSpeciesToIconSpecies(VarGet(VAR_TRAINER_CARD_MON_ICON_2)); + trainerCard->monSpecies[2] = MailSpeciesToIconSpecies(VarGet(VAR_TRAINER_CARD_MON_ICON_3)); + trainerCard->monSpecies[3] = MailSpeciesToIconSpecies(VarGet(VAR_TRAINER_CARD_MON_ICON_4)); + trainerCard->monSpecies[4] = MailSpeciesToIconSpecies(VarGet(VAR_TRAINER_CARD_MON_ICON_5)); + trainerCard->monSpecies[5] = MailSpeciesToIconSpecies(VarGet(VAR_TRAINER_CARD_MON_ICON_6)); } static void SetDataFromTrainerCard(void) { - u8 i; u32 badgeFlag; - + u8 i; + sTrainerCardDataPtr->hasPokedex = FALSE; sTrainerCardDataPtr->hasHofResult = FALSE; sTrainerCardDataPtr->hasLinkResults = FALSE; sTrainerCardDataPtr->hasBattleTowerWins = FALSE; - sTrainerCardDataPtr->var_E = 0; - sTrainerCardDataPtr->var_F = 0; + sTrainerCardDataPtr->var_E = FALSE; + sTrainerCardDataPtr->var_F = FALSE; sTrainerCardDataPtr->hasTrades = FALSE; - memset(sTrainerCardDataPtr->badgeCount, 0, sizeof(sTrainerCardDataPtr->badgeCount)); - if (sTrainerCardDataPtr->trainerCard.hasPokedex) + + memset(&sTrainerCardDataPtr->hasBadge, 0, BADGE_COUNT); + if (sTrainerCardDataPtr->trainerCard.hasPokedex != 0) sTrainerCardDataPtr->hasPokedex++; - - if (sTrainerCardDataPtr->trainerCard.hofDebutHours - || sTrainerCardDataPtr->trainerCard.hofDebutMinutes - || sTrainerCardDataPtr->trainerCard.hofDebutSeconds) + + if (sTrainerCardDataPtr->trainerCard.hofDebutHours != 0 + || sTrainerCardDataPtr->trainerCard.hofDebutMinutes != 0 + || sTrainerCardDataPtr->trainerCard.hofDebutSeconds != 0) sTrainerCardDataPtr->hasHofResult++; - - if (sTrainerCardDataPtr->trainerCard.linkBattleWins || sTrainerCardDataPtr->trainerCard.linkBattleLosses) + + if (sTrainerCardDataPtr->trainerCard.linkBattleWins != 0 || sTrainerCardDataPtr->trainerCard.linkBattleLosses != 0) sTrainerCardDataPtr->hasLinkResults++; - if (sTrainerCardDataPtr->trainerCard.pokemonTrades) + + if (sTrainerCardDataPtr->trainerCard.pokemonTrades != 0) sTrainerCardDataPtr->hasTrades++; - if (sTrainerCardDataPtr->trainerCard.battleTowerWins || sTrainerCardDataPtr->trainerCard.battleTowerStraightWins) - sTrainerCardDataPtr->hasBattleTowerWins++; for (i = 0, badgeFlag = FLAG_BADGE01_GET; badgeFlag <= FLAG_BADGE08_GET; badgeFlag++, i++) { if (FlagGet(badgeFlag)) - sTrainerCardDataPtr->badgeCount[i]++; + sTrainerCardDataPtr->hasBadge[i]++; } } static void HandleGpuRegs(void) { - SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON | DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP); ShowBg(0); ShowBg(1); ShowBg(2); ShowBg(3); + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON | DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON); SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_DARKEN); SetGpuReg(REG_OFFSET_BLDY, 0); SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR); SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ); - SetGpuReg(REG_OFFSET_WIN0V, 160); - SetGpuReg(REG_OFFSET_WIN0H, 240); + SetGpuReg(REG_OFFSET_WIN0V, WININ_WIN0_CLR | WIN_RANGE(0, 0x80)); + SetGpuReg(REG_OFFSET_WIN0H, WININ_WIN0_CLR | WININ_WIN0_OBJ | WIN_RANGE(0, 0xC0)); if (gReceivedRemoteLinkPlayers) EnableInterrupts(INTR_FLAG_VBLANK | INTR_FLAG_HBLANK | INTR_FLAG_VCOUNT | INTR_FLAG_TIMER3 | INTR_FLAG_SERIAL); else EnableInterrupts(INTR_FLAG_VBLANK | INTR_FLAG_HBLANK); } -static void sub_80C32EC(u16 arg0) +static void sub_8089BD8(u16 arg0) { s8 quotient = (arg0 + 40) / 10; if (quotient <= 4) quotient = 0; - sTrainerCardDataPtr->var_528 = quotient; - SetGpuReg(REG_OFFSET_BLDY, sTrainerCardDataPtr->var_528); - SetGpuReg(REG_OFFSET_WIN0V, (sTrainerCardDataPtr->var_7CA8 * 256) | (160 - sTrainerCardDataPtr->var_7CA8)); + + sTrainerCardDataPtr->var_456 = quotient; + SetGpuReg(REG_OFFSET_BLDY, sTrainerCardDataPtr->var_456); + SetGpuReg(REG_OFFSET_WIN0V, (sTrainerCardDataPtr->var_7BCC * 256) | (160 - sTrainerCardDataPtr->var_7BCC)); } static void ResetGpuRegs(void) @@ -842,16 +972,44 @@ static void ResetGpuRegs(void) SetVBlankCallback(NULL); SetHBlankCallback(NULL); SetGpuReg(REG_OFFSET_DISPCNT, 0); - SetGpuReg(REG_OFFSET_BG0CNT, 0); - SetGpuReg(REG_OFFSET_BG1CNT, 0); - SetGpuReg(REG_OFFSET_BG2CNT, 0); - SetGpuReg(REG_OFFSET_BG3CNT, 0); } -static void InitBgsAndWindows(void) +static void TrainerCardNull(void) +{ +} + +static void sub_8089C5C(void) +{ + DmaClear32(3, (void *)OAM, OAM_SIZE); +} + +static void sub_8089C80(void) +{ + DmaClear16(3, (void *)PLTT, PLTT_SIZE); +} + +static void sub_8089CA4(void) +{ + SetGpuReg(REG_OFFSET_BG0CNT, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BG1CNT, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BG2CNT, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BG3CNT, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BG0HOFS, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BG0VOFS, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BG1HOFS, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BG1VOFS, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BG2HOFS, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BG2VOFS, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BG3HOFS, DISPCNT_MODE_0); + SetGpuReg(REG_OFFSET_BG3VOFS, DISPCNT_MODE_0); +} + +static void ResetTrainerCard(void) { + ResetSpriteData(); + ResetPaletteFade(); ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, gUnknown_0856FAB4, ARRAY_COUNT(gUnknown_0856FAB4)); + InitBgsFromTemplates(0, sTrainerCardBgTemplates, NELEMS(sTrainerCardBgTemplates)); ChangeBgX(0, 0, 0); ChangeBgY(0, 0, 0); ChangeBgX(1, 0, 0); @@ -860,22 +1018,22 @@ static void InitBgsAndWindows(void) ChangeBgY(2, 0, 0); ChangeBgX(3, 0, 0); ChangeBgY(3, 0, 0); - InitWindows(gUnknown_0856FAC4); + InitWindows(sTrainerCardWindowTemplates); DeactivateAllTextPrinters(); - sub_81973A4(); } static void SetTrainerCardCb2(void) { SetMainCallback2(CB2_TrainerCard); + HelpSystem_SetSomeVariable2(10); } -static void sub_80C3414(void) +static void sub_8089DA4(void) { ResetTasks(); ScanlineEffect_Stop(); CreateTask(Task_TrainerCard, 0); - sub_80C4EE4(); + sub_808B774(); SetDataFromTrainerCard(); } @@ -908,13 +1066,13 @@ static bool8 PrintAllOnCardPage1(void) sTrainerCardDataPtr->printState++; return FALSE; } - + static bool8 PrintStringsOnCardPage2(void) { switch (sTrainerCardDataPtr->printState) { case 0: - sub_80C3B50(); + sub_808A4FC(); break; case 1: PrintHofDebutStringOnCard(); @@ -927,18 +1085,15 @@ static bool8 PrintStringsOnCardPage2(void) break; case 4: PrintBerryCrushStringOnCard(); - PrintPokeblockStringOnCard(); break; case 5: PrintUnionStringOnCard(); - PrintContestStringOnCard(); break; case 6: TrainerCard_PrintPokemonIconsOnCard(); - PrintBattleFacilityStringOnCard(); break; case 7: - sub_80C42A4(); + sub_808ABE0(); break; default: sTrainerCardDataPtr->printState = 0; @@ -948,7 +1103,7 @@ static bool8 PrintStringsOnCardPage2(void) return FALSE; } -static void PrintAllVariableNumsOnCardPage2(void) +static void sub_8089ECC(void) { PrintNameOnCard2(); PrintHofTimeOnCard(); @@ -956,69 +1111,51 @@ static void PrintAllVariableNumsOnCardPage2(void) PrintTradesNumOnCard(); PrintBerryCrushNumOnCard(); PrintUnionNumOnCard(); - PrintPokeblocksNumOnCard(); - PrintContestNumOnCard(); - PrintBattleFacilityNumsOnCard(); } static void PrintNameOnCard(void) { - u8 buffer[32]; + u8 buffer[2][32]; u8* txtPtr; - txtPtr = StringCopy(buffer, gText_TrainerCardName); + + txtPtr = StringCopy(buffer[0], gText_TrainerCardName); + txtPtr = buffer[1]; StringCopy(txtPtr, sTrainerCardDataPtr->trainerCard.playerName); ConvertInternationalString(txtPtr, sTrainerCardDataPtr->language); - if (sTrainerCardDataPtr->cardType == CARD_TYPE_FRLG) - AddTextPrinterParameterized3(1, 1, 20, 28, gUnknown_0856FB0C, TEXT_SPEED_FF, buffer); - else - AddTextPrinterParameterized3(1, 1, 16, 33, gUnknown_0856FB0C, TEXT_SPEED_FF, buffer); + StringAppend(buffer[0], txtPtr); + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], sTrainerCardPlayerNameXPositions[sTrainerCardDataPtr->cardType], sTrainerCardPlayerNameYPositions[sTrainerCardDataPtr->cardType], sFireRedTrainerCardPage1TextColors, TEXT_SPEED_FF, buffer[0]); } - + static void PrintIdOnCard(void) { u8 buffer[32]; u8* txtPtr; - s32 xPos; - u32 top; + txtPtr = StringCopy(buffer, gText_TrainerCardIDNo); ConvertIntToDecimalStringN(txtPtr, sTrainerCardDataPtr->trainerCard.trainerId, STR_CONV_MODE_LEADING_ZEROS, 5); - if (sTrainerCardDataPtr->cardType == CARD_TYPE_FRLG) - { - xPos = GetStringCenterAlignXOffset(1, buffer, 80) + 132; - top = 9; - } - else - { - xPos = GetStringCenterAlignXOffset(1, buffer, 96) + 120; - top = 9; - } - - AddTextPrinterParameterized3(1, 1, xPos, top, gUnknown_0856FB0C, TEXT_SPEED_FF, buffer); + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], sTrainerCardIdXPositions[sTrainerCardDataPtr->cardType], sTrainerCardIdYPositions[sTrainerCardDataPtr->cardType], sFireRedTrainerCardPage1TextColors, TEXT_SPEED_FF, buffer); } static void PrintMoneyOnCard(void) { - s32 xOffset; - u8 top; - - if (!sTrainerCardDataPtr->isHoenn) - AddTextPrinterParameterized3(1, 1, 20, 56, gUnknown_0856FB0C, TEXT_SPEED_FF, gText_TrainerCardMoney); - else - AddTextPrinterParameterized3(1, 1, 16, 57, gUnknown_0856FB0C, TEXT_SPEED_FF, gText_TrainerCardMoney); + u8 buffer[10]; + u8* txtPtr; + u8 x; - ConvertIntToDecimalStringN(gStringVar1, sTrainerCardDataPtr->trainerCard.money, STR_CONV_MODE_LEFT_ALIGN, 6); - StringExpandPlaceholders(gStringVar4, gText_PokedollarVar1); - if (!sTrainerCardDataPtr->isHoenn) + txtPtr = StringCopy(buffer, gText_TrainerCardYen); + ConvertIntToDecimalStringN(txtPtr, sTrainerCardDataPtr->trainerCard.money, STR_CONV_MODE_LEFT_ALIGN, 6); + if (sTrainerCardDataPtr->cardType != CARD_TYPE_EMERALD) { - xOffset = GetStringRightAlignXOffset(1, gStringVar4, 144); - top = 56; + x = -122 - 6 * StringLength(buffer); + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], 20, 56, sFireRedTrainerCardPage1TextColors, TEXT_SPEED_FF, gText_TrainerCardMoney); + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], x, 56, sFireRedTrainerCardPage1TextColors, TEXT_SPEED_FF, buffer); } else { - xOffset = GetStringRightAlignXOffset(1, gStringVar4, 128); - top = 57; - } - AddTextPrinterParameterized3(1, 1, xOffset, top, gUnknown_0856FB0C, TEXT_SPEED_FF, gStringVar4); + x = 118 - 6 * StringLength(buffer); + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], 16, 57, sFireRedTrainerCardPage1TextColors, TEXT_SPEED_FF, gText_TrainerCardMoney); + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], x, 57, sFireRedTrainerCardPage1TextColors, TEXT_SPEED_FF, buffer); + } } static u16 GetCaughtMonsCount(void) @@ -1026,99 +1163,85 @@ static u16 GetCaughtMonsCount(void) if (IsNationalPokedexEnabled()) return GetNationalPokedexCount(FLAG_GET_CAUGHT); else - return GetHoennPokedexCount(FLAG_GET_CAUGHT); + return GetKantoPokedexCount(FLAG_GET_CAUGHT); } static void PrintPokedexOnCard(void) { - s32 xOffset; - u8 top; + u8 buffer[10]; + u8 x; + if (FlagGet(FLAG_SYS_POKEDEX_GET)) { - if (!sTrainerCardDataPtr->isHoenn) - AddTextPrinterParameterized3(1, 1, 20, 72, gUnknown_0856FB0C, TEXT_SPEED_FF, gText_TrainerCardPokedex); - else - AddTextPrinterParameterized3(1, 1, 16, 73, gUnknown_0856FB0C, TEXT_SPEED_FF, gText_TrainerCardPokedex); - StringCopy(ConvertIntToDecimalStringN(gStringVar4, sTrainerCardDataPtr->trainerCard.caughtMonsCount, STR_CONV_MODE_LEFT_ALIGN, 3), gText_EmptyString6); - if (!sTrainerCardDataPtr->isHoenn) + ConvertIntToDecimalStringN(buffer, sTrainerCardDataPtr->trainerCard.caughtMonsCount, 0, 3); + if (sTrainerCardDataPtr->cardType != CARD_TYPE_EMERALD) { - xOffset = GetStringRightAlignXOffset(1, gStringVar4, 144); - top = 72; + x = -120 - 6 * StringLength(buffer); + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], 20, 72, sFireRedTrainerCardPage1TextColors, TEXT_SPEED_FF, gText_TrainerCardPokedex); + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], x, 72, sFireRedTrainerCardPage1TextColors, TEXT_SPEED_FF, buffer); + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], 138, 72, sFireRedTrainerCardPage1TextColors, TEXT_SPEED_FF, gText_TrainerCardNull); } else { - xOffset = GetStringRightAlignXOffset(1, gStringVar4, 128); - top = 73; + x = 120 - 6 * StringLength(buffer); + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], 16, 73, sFireRedTrainerCardPage1TextColors, TEXT_SPEED_FF, gText_TrainerCardPokedex); + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], x, 73, sFireRedTrainerCardPage1TextColors, TEXT_SPEED_FF, buffer); + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], 138, 73, sFireRedTrainerCardPage1TextColors, TEXT_SPEED_FF, gText_TrainerCardNull); } - AddTextPrinterParameterized3(1, 1, xOffset, top, gUnknown_0856FB0C, TEXT_SPEED_FF, gStringVar4); } } -static const u8 *const gUnknown_0856FB40[] = {gUnknown_0856FB0C, gUnknown_0856FB12}; - static void PrintTimeOnCard(void) { u16 hours; u16 minutes; - s32 width; - u32 r7, r4, r10; - - if (!sTrainerCardDataPtr->isHoenn) - AddTextPrinterParameterized3(1, 1, 20, 88, gUnknown_0856FB0C, TEXT_SPEED_FF, gText_TrainerCardTime); - else - AddTextPrinterParameterized3(1, 1, 16, 89, gUnknown_0856FB0C, TEXT_SPEED_FF, gText_TrainerCardTime); + u8 buffer[6]; + hours = gSaveBlock2Ptr->playTimeHours; + minutes = gSaveBlock2Ptr->playTimeMinutes; if (sTrainerCardDataPtr->isLink) { hours = sTrainerCardDataPtr->trainerCard.playTimeHours; minutes = sTrainerCardDataPtr->trainerCard.playTimeMinutes; } - else - { - hours = gSaveBlock2Ptr->playTimeHours; - minutes = gSaveBlock2Ptr->playTimeMinutes; - } if (hours > 999) hours = 999; + if (minutes > 59) minutes = 59; - width = GetStringWidth(1, gText_Colon2, 0); - - if (!sTrainerCardDataPtr->isHoenn) - { - r7 = 144; - r4 = 88; - } + + FillWindowPixelRect(1, PIXEL_FILL(0), sTrainerCardTimeHoursXPositions[sTrainerCardDataPtr->cardType], sTrainerCardTimeMinutesYPositions[sTrainerCardDataPtr->cardType], 50, 12); + if (sTrainerCardDataPtr->cardType != CARD_TYPE_EMERALD) + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], 20, 88, sFireRedTrainerCardPage1TextColors, TEXT_SPEED_FF, gText_TrainerCardTime); else - { - r7 = 128; - r4 = 89; - } - r10 = width + 30; - r7 -= r10; - - FillWindowPixelRect(1, PIXEL_FILL(0), r7, r4, r10, 15); - ConvertIntToDecimalStringN(gStringVar4, hours, STR_CONV_MODE_RIGHT_ALIGN, 3); - AddTextPrinterParameterized3(1, 1, r7, r4, gUnknown_0856FB0C, TEXT_SPEED_FF, gStringVar4); - r7 += 18; - AddTextPrinterParameterized3(1, 1, r7, r4, gUnknown_0856FB40[sTrainerCardDataPtr->var_7], TEXT_SPEED_FF, gText_Colon2); - r7 += width; - ConvertIntToDecimalStringN(gStringVar4, minutes, STR_CONV_MODE_LEADING_ZEROS, 2); - AddTextPrinterParameterized3(1, 1, r7, r4, gUnknown_0856FB0C, TEXT_SPEED_FF, gStringVar4); + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], 16, 89, sFireRedTrainerCardPage1TextColors, TEXT_SPEED_FF, gText_TrainerCardTime); + + ConvertIntToDecimalStringN(buffer, hours, STR_CONV_MODE_RIGHT_ALIGN, 3); + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], sTrainerCardTimeHoursXPositions[sTrainerCardDataPtr->cardType], + sTrainerCardTimeMinutesYPositions[sTrainerCardDataPtr->cardType], sFireRedTrainerCardPage1TextColors, TEXT_SPEED_FF, buffer); + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], sTrainerCardTimeHoursYPositions[sTrainerCardDataPtr->cardType], + sTrainerCardTimeMinutesYPositions[sTrainerCardDataPtr->cardType], sTrainerCardTextColors[sTrainerCardDataPtr->var_7], TEXT_SPEED_FF, gText_Colon2); + + ConvertIntToDecimalStringN(buffer, minutes, STR_CONV_MODE_LEADING_ZEROS, 2); + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], sTrainerCardTimeMinutesXPositions[sTrainerCardDataPtr->cardType], sTrainerCardTimeMinutesYPositions[sTrainerCardDataPtr->cardType], sFireRedTrainerCardPage1TextColors, TEXT_SPEED_FF, buffer); } -static const u8 gUnknown_0856FB48[] = {0x71, 0x68}; -static const u8 gUnknown_0856FB4A[] = {0x81, 0x78}; - static void PrintProfilePhraseOnCard(void) { if (sTrainerCardDataPtr->isLink) { - AddTextPrinterParameterized3(1, 1, 8, gUnknown_0856FB48[sTrainerCardDataPtr->isHoenn], gUnknown_0856FB0C, TEXT_SPEED_FF, sTrainerCardDataPtr->var_19[0]); - AddTextPrinterParameterized3(1, 1, GetStringWidth(1, sTrainerCardDataPtr->var_19[0], 0) + 14, gUnknown_0856FB48[sTrainerCardDataPtr->isHoenn], gUnknown_0856FB0C, TEXT_SPEED_FF, sTrainerCardDataPtr->var_19[1]); - AddTextPrinterParameterized3(1, 1, 8, gUnknown_0856FB4A[sTrainerCardDataPtr->isHoenn], gUnknown_0856FB0C, TEXT_SPEED_FF, sTrainerCardDataPtr->var_19[2]); - AddTextPrinterParameterized3(1, 1, GetStringWidth(1, sTrainerCardDataPtr->var_19[2], 0) + 14, gUnknown_0856FB4A[sTrainerCardDataPtr->isHoenn], gUnknown_0856FB0C, TEXT_SPEED_FF, sTrainerCardDataPtr->var_19[3]); + AddTextPrinterParameterized3(1, 2, 10, sTrainerCardProfilePhraseXPositions[sTrainerCardDataPtr->cardType], + sFireRedTrainerCardPage1TextColors, TEXT_SPEED_FF, sTrainerCardDataPtr->var_19[0]); + + AddTextPrinterParameterized3(1, 2, GetStringWidth(2, sTrainerCardDataPtr->var_19[0], 0) + 16, sTrainerCardProfilePhraseXPositions[sTrainerCardDataPtr->cardType], + sFireRedTrainerCardPage1TextColors, TEXT_SPEED_FF, sTrainerCardDataPtr->var_19[1]); + + AddTextPrinterParameterized3(1, 2, 10, sTrainerCardProfilePhraseYPositions[sTrainerCardDataPtr->cardType], + sFireRedTrainerCardPage1TextColors, TEXT_SPEED_FF, sTrainerCardDataPtr->var_19[2]); + + AddTextPrinterParameterized3(1, 2, GetStringWidth(2, sTrainerCardDataPtr->var_19[2], 0) + 16, sTrainerCardProfilePhraseYPositions[sTrainerCardDataPtr->cardType], + sFireRedTrainerCardPage1TextColors, TEXT_SPEED_FF, sTrainerCardDataPtr->var_19[3]); } } @@ -1126,183 +1249,147 @@ static void PrintNameOnCard2(void) { StringCopy(sTrainerCardDataPtr->var_4D, sTrainerCardDataPtr->trainerCard.playerName); ConvertInternationalString(sTrainerCardDataPtr->var_4D, sTrainerCardDataPtr->language); - if (sTrainerCardDataPtr->cardType != CARD_TYPE_FRLG) + if (sTrainerCardDataPtr->cardType == CARD_TYPE_EMERALD) { - StringCopy(gStringVar1, sTrainerCardDataPtr->var_4D); - StringExpandPlaceholders(sTrainerCardDataPtr->var_4D, gText_Var1sTrainerCard); + StringAppend(sTrainerCardDataPtr->var_4D, gText_Var1sTrainerCard); } } -static void sub_80C3B50(void) +static void sub_808A4FC(void) { - if (!sTrainerCardDataPtr->isHoenn) - AddTextPrinterParameterized3(1, 1, 136, 9, gUnknown_0856FB0C, TEXT_SPEED_FF, sTrainerCardDataPtr->var_4D); + u8 x; + + if (sTrainerCardDataPtr->cardType == CARD_TYPE_FRLG) + { + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], sUnknown_83CD93C[sTrainerCardDataPtr->cardType], + sUnknown_83CD93E[sTrainerCardDataPtr->cardType], sFireRedTrainerCardPage1TextColors, TEXT_SPEED_FF, sTrainerCardDataPtr->var_4D); + } else - AddTextPrinterParameterized3(1, 1, GetStringRightAlignXOffset(1, sTrainerCardDataPtr->var_4D, 216), 9, gUnknown_0856FB0C, TEXT_SPEED_FF, sTrainerCardDataPtr->var_4D); + { + x = sUnknown_83CD93C[sTrainerCardDataPtr->cardType] - GetStringWidth(sTrainerCardFontIds[1], sTrainerCardDataPtr->var_4D, GetFontAttribute(sTrainerCardFontIds[1], FONTATTR_LETTER_SPACING)); + + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], x, sUnknown_83CD93E[sTrainerCardDataPtr->cardType], + sFireRedTrainerCardPage1TextColors, TEXT_SPEED_FF, sTrainerCardDataPtr->var_4D); + } } -static const u8 gUnknown_0856FB4C[] = {0xfd, 0x02, 0xf0, 0xfd, 0x03, 0xf0, 0xfd, 0x04, 0xff}; - static void PrintHofTimeOnCard(void) { + u8 buffer[10]; + u8* txtPtr; + if (sTrainerCardDataPtr->hasHofResult) { - ConvertIntToDecimalStringN(gStringVar1, sTrainerCardDataPtr->trainerCard.hofDebutHours, STR_CONV_MODE_RIGHT_ALIGN, 3); - ConvertIntToDecimalStringN(gStringVar2, sTrainerCardDataPtr->trainerCard.hofDebutMinutes, STR_CONV_MODE_LEADING_ZEROS, 2); - ConvertIntToDecimalStringN(gStringVar3, sTrainerCardDataPtr->trainerCard.hofDebutSeconds, STR_CONV_MODE_LEADING_ZEROS, 2); - StringExpandPlaceholders(sTrainerCardDataPtr->var_93, gUnknown_0856FB4C); + ConvertIntToDecimalStringN(buffer, sTrainerCardDataPtr->trainerCard.hofDebutHours, STR_CONV_MODE_RIGHT_ALIGN, 3); + txtPtr = StringCopy(sTrainerCardDataPtr->var_93, buffer); + StringAppendN(sTrainerCardDataPtr->var_93, gText_Colon2, 2); + ConvertIntToDecimalStringN(buffer, sTrainerCardDataPtr->trainerCard.hofDebutMinutes, STR_CONV_MODE_LEADING_ZEROS, 2); + StringAppendN(sTrainerCardDataPtr->var_93, buffer, 3); + StringAppendN(sTrainerCardDataPtr->var_93, gText_Colon2, 2); + ConvertIntToDecimalStringN(buffer, sTrainerCardDataPtr->trainerCard.hofDebutSeconds, STR_CONV_MODE_LEADING_ZEROS, 2); + StringAppendN(sTrainerCardDataPtr->var_93, buffer, 3); } } -static const u8 gUnknown_0856FB55[] = {0x08, 0x10}; -static const u8 gUnknown_0856FB57[] = {0xd8, 0xd8}; - -static void PrintString(u8 top, const u8* str1, u8* str2, const u8* color) -{ - AddTextPrinterParameterized3(1, 1, gUnknown_0856FB55[sTrainerCardDataPtr->isHoenn], top * 16 + 33, gUnknown_0856FB0C, TEXT_SPEED_FF, str1); - AddTextPrinterParameterized3(1, 1, GetStringRightAlignXOffset(1, str2, gUnknown_0856FB57[sTrainerCardDataPtr->isHoenn]), top * 16 + 33, color, TEXT_SPEED_FF, str2); -} - static void PrintHofDebutStringOnCard(void) { if (sTrainerCardDataPtr->hasHofResult) - PrintString(0, gText_HallOfFameDebut, sTrainerCardDataPtr->var_93, gUnknown_0856FB0F); + { + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], sTrainerCardHofDebutXPositions[sTrainerCardDataPtr->cardType], 35, sFireRedTrainerCardPage1TextColors, TEXT_SPEED_FF, gText_HallOfFameDebut); + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], 164, 35, sTrainerCardPage2TextColors, TEXT_SPEED_FF, sTrainerCardDataPtr->var_93); + } } -static const u8 *const gUnknown_0856FB5C[] = {gText_LinkBattles, gText_LinkCableBattles, gText_LinkBattles}; - static void PrintLinkResultsNumsOnCard(void) { + u8 buffer[30]; + if (sTrainerCardDataPtr->hasLinkResults) { - StringCopy(sTrainerCardDataPtr->var_D9, gUnknown_0856FB5C[sTrainerCardDataPtr->cardType]); - ConvertIntToDecimalStringN(sTrainerCardDataPtr->var_165, sTrainerCardDataPtr->trainerCard.linkBattleWins, STR_CONV_MODE_LEFT_ALIGN, 4); - ConvertIntToDecimalStringN(sTrainerCardDataPtr->var_1AB, sTrainerCardDataPtr->trainerCard.linkBattleLosses, STR_CONV_MODE_LEFT_ALIGN, 4); + StringCopy(sTrainerCardDataPtr->var_D9, sLinkTrainerCardRecordStrings[sTrainerCardDataPtr->cardType]); + StringCopy(sTrainerCardDataPtr->var_11F, gText_WinLossRatio); + ConvertIntToDecimalStringN(buffer, sTrainerCardDataPtr->trainerCard.linkBattleWins, STR_CONV_MODE_RIGHT_ALIGN, 4); + StringCopy(sTrainerCardDataPtr->var_165, buffer); + ConvertIntToDecimalStringN(buffer, sTrainerCardDataPtr->trainerCard.linkBattleLosses, STR_CONV_MODE_RIGHT_ALIGN, 4); + StringCopy(sTrainerCardDataPtr->var_1AB, buffer); } } static void PrintWinsLossesStringOnCard(void) -{ +{ if (sTrainerCardDataPtr->hasLinkResults) { - StringCopy(gStringVar1, sTrainerCardDataPtr->var_165); - StringCopy(gStringVar2, sTrainerCardDataPtr->var_1AB); - StringExpandPlaceholders(gStringVar4, gText_WinsLosses); - PrintString(1, sTrainerCardDataPtr->var_D9, gStringVar4, gUnknown_0856FB0C); + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], sTrainerCardHofDebutXPositions[sTrainerCardDataPtr->cardType], 51, + sFireRedTrainerCardPage1TextColors, TEXT_SPEED_FF, sTrainerCardDataPtr->var_D9); + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], 130, 51, sFireRedTrainerCardPage1TextColors, TEXT_SPEED_FF, sTrainerCardDataPtr->var_11F); + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], 144, 51, sTrainerCardPage2TextColors, TEXT_SPEED_FF, sTrainerCardDataPtr->var_165); + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], 192, 51, sTrainerCardPage2TextColors, TEXT_SPEED_FF, sTrainerCardDataPtr->var_1AB); } } static void PrintTradesNumOnCard(void) { if (sTrainerCardDataPtr->hasTrades) + { + StringCopy(sTrainerCardDataPtr->var_1F1, gText_PokemonTrades); ConvertIntToDecimalStringN(sTrainerCardDataPtr->var_237, sTrainerCardDataPtr->trainerCard.pokemonTrades, STR_CONV_MODE_RIGHT_ALIGN, 5); + } } static void PrintTradesStringOnCard(void) { if (sTrainerCardDataPtr->hasTrades) - PrintString(2, gText_PokemonTrades, sTrainerCardDataPtr->var_237, gUnknown_0856FB0F); + { + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], sTrainerCardHofDebutXPositions[sTrainerCardDataPtr->cardType], 67, sFireRedTrainerCardPage1TextColors, TEXT_SPEED_FF, sTrainerCardDataPtr->var_1F1); + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], 186, 67, sTrainerCardPage2TextColors, TEXT_SPEED_FF, sTrainerCardDataPtr->var_237); + } } static void PrintBerryCrushNumOnCard(void) { - if (sTrainerCardDataPtr->cardType == CARD_TYPE_FRLG && sTrainerCardDataPtr->trainerCard.berryCrushPoints) + if (sTrainerCardDataPtr->cardType != CARD_TYPE_EMERALD) + { + StringCopy(sTrainerCardDataPtr->var_27D, gText_BerryCrushes); ConvertIntToDecimalStringN(sTrainerCardDataPtr->var_2C3, sTrainerCardDataPtr->trainerCard.berryCrushPoints, STR_CONV_MODE_RIGHT_ALIGN, 5); + } } static void PrintBerryCrushStringOnCard(void) { - if (sTrainerCardDataPtr->cardType == CARD_TYPE_FRLG && sTrainerCardDataPtr->trainerCard.berryCrushPoints) - PrintString(4, gText_BerryCrush, sTrainerCardDataPtr->var_2C3, gUnknown_0856FB0F); -} - -static void PrintUnionNumOnCard(void) -{ - if (sTrainerCardDataPtr->cardType == CARD_TYPE_FRLG && sTrainerCardDataPtr->trainerCard.unionRoomNum) - ConvertIntToDecimalStringN(sTrainerCardDataPtr->var_34F, sTrainerCardDataPtr->trainerCard.unionRoomNum, STR_CONV_MODE_RIGHT_ALIGN, 5); -} - -static void PrintUnionStringOnCard(void) -{ - if (sTrainerCardDataPtr->cardType == CARD_TYPE_FRLG && sTrainerCardDataPtr->trainerCard.unionRoomNum) - PrintString(3, gText_UnionTradesAndBattles, sTrainerCardDataPtr->var_34F, gUnknown_0856FB0F); -} - -static void PrintPokeblocksNumOnCard(void) -{ - if (sTrainerCardDataPtr->cardType != CARD_TYPE_FRLG && sTrainerCardDataPtr->trainerCard.pokeblocksWithFriends) + if (sTrainerCardDataPtr->cardType != CARD_TYPE_EMERALD && sTrainerCardDataPtr->trainerCard.berryCrushPoints) { - ConvertIntToDecimalStringN(gStringVar1, sTrainerCardDataPtr->trainerCard.pokeblocksWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 5); - StringExpandPlaceholders(sTrainerCardDataPtr->var_395, gText_Var1DarkGreyShadowLightGrey); + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], sTrainerCardHofDebutXPositions[sTrainerCardDataPtr->cardType], 99, sFireRedTrainerCardPage1TextColors, TEXT_SPEED_FF, sTrainerCardDataPtr->var_27D); + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], 186, 99, sTrainerCardPage2TextColors, TEXT_SPEED_FF, sTrainerCardDataPtr->var_2C3); } } -static void PrintPokeblockStringOnCard(void) -{ - if (sTrainerCardDataPtr->cardType != CARD_TYPE_FRLG && sTrainerCardDataPtr->trainerCard.pokeblocksWithFriends) - PrintString(3, gText_PokeblocksWithFriends, sTrainerCardDataPtr->var_395, gUnknown_0856FB0F); -} - -static void PrintContestNumOnCard(void) -{ - if (sTrainerCardDataPtr->cardType != CARD_TYPE_FRLG && sTrainerCardDataPtr->trainerCard.contestsWithFriends) - ConvertIntToDecimalStringN(sTrainerCardDataPtr->var_3DB, sTrainerCardDataPtr->trainerCard.contestsWithFriends, STR_CONV_MODE_RIGHT_ALIGN, 5); -} - -static void PrintContestStringOnCard(void) -{ - if (sTrainerCardDataPtr->cardType != CARD_TYPE_FRLG && sTrainerCardDataPtr->trainerCard.contestsWithFriends) - PrintString(4, gText_WonContestsWFriends, sTrainerCardDataPtr->var_3DB, gUnknown_0856FB0F); -} - -static void PrintBattleFacilityNumsOnCard(void) +static void PrintUnionNumOnCard(void) { - switch (sTrainerCardDataPtr->cardType) + if (sTrainerCardDataPtr->cardType != CARD_TYPE_EMERALD) { - case CARD_TYPE_RS: - if (sTrainerCardDataPtr->hasBattleTowerWins) - { - ConvertIntToDecimalStringN(gStringVar1, sTrainerCardDataPtr->trainerCard.battleTowerWins, STR_CONV_MODE_RIGHT_ALIGN, 4); - ConvertIntToDecimalStringN(gStringVar2, sTrainerCardDataPtr->trainerCard.battleTowerStraightWins, STR_CONV_MODE_RIGHT_ALIGN, 4); - StringExpandPlaceholders(sTrainerCardDataPtr->var_421, gText_WSlashStraightSlash); - } - break; - case CARD_TYPE_EMERALD: - if (sTrainerCardDataPtr->trainerCard.frontierBP) - { - ConvertIntToDecimalStringN(gStringVar1, sTrainerCardDataPtr->trainerCard.frontierBP, STR_CONV_MODE_RIGHT_ALIGN, 5); - StringExpandPlaceholders(sTrainerCardDataPtr->var_421, gText_Var1DarkLightGreyBP); - } - break; - case CARD_TYPE_FRLG: - break; + StringCopy(sTrainerCardDataPtr->var_309, gText_UnionRoomTradesBattles); + ConvertIntToDecimalStringN(sTrainerCardDataPtr->var_34F, sTrainerCardDataPtr->trainerCard.unionRoomNum, STR_CONV_MODE_RIGHT_ALIGN, 5); } } -static void PrintBattleFacilityStringOnCard(void) +static void PrintUnionStringOnCard(void) { - switch (sTrainerCardDataPtr->cardType) + if (sTrainerCardDataPtr->cardType != CARD_TYPE_EMERALD && sTrainerCardDataPtr->trainerCard.unionRoomNum) { - case CARD_TYPE_RS: - if (sTrainerCardDataPtr->hasBattleTowerWins) - PrintString(5, gText_BattleTower, sTrainerCardDataPtr->var_421, gUnknown_0856FB0C); - break; - case CARD_TYPE_EMERALD: - if (sTrainerCardDataPtr->trainerCard.frontierBP) - PrintString(5, gText_BattlePtsWon, sTrainerCardDataPtr->var_421, gUnknown_0856FB0F); - break; - case CARD_TYPE_FRLG: - break; + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], sTrainerCardHofDebutXPositions[sTrainerCardDataPtr->cardType], 83, sFireRedTrainerCardPage1TextColors, TEXT_SPEED_FF, sTrainerCardDataPtr->var_309); + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], 186, 83, sTrainerCardPage2TextColors, TEXT_SPEED_FF, sTrainerCardDataPtr->var_34F); } } static void TrainerCard_PrintPokemonIconsOnCard(void) { u8 i; - u8 buffer[] = {0x05, 0x06, 0x07, 0x08, 0x09, 0x0a}; - u8 buffer2[] = {0x00, 0x04, 0x08, 0x0c, 0x10, 0x14}; + u8 buffer[6]; + u8 buffer2[6]; - if (sTrainerCardDataPtr->cardType == CARD_TYPE_FRLG) + memcpy(buffer, sUnknown_83CD94C, 6); + memcpy(buffer2, sUnknown_83CD952, 6); + if (sTrainerCardDataPtr->cardType != CARD_TYPE_EMERALD) { for (i = 0; i < 6; i++) { @@ -1315,39 +1402,40 @@ static void TrainerCard_PrintPokemonIconsOnCard(void) } } -static void sub_80C41D8(void) + +static void sub_808AB10(void) { u8 i; - CpuSet(gMonIconPalettes, sTrainerCardDataPtr->var_468, 0x60); + CpuSet(gMonIconPalettes, sTrainerCardDataPtr->monIconPals, 32 * 3); switch (sTrainerCardDataPtr->trainerCard.var_4E) { case 0: break; case 1: - TintPalette_CustomTone(sTrainerCardDataPtr->var_468, 96, 0, 0, 0); + TintPalette_CustomTone(sTrainerCardDataPtr->monIconPals, 96, 0, 0, 0); break; case 2: - TintPalette_CustomTone(sTrainerCardDataPtr->var_468, 96, 500, 330, 310); + TintPalette_CustomTone(sTrainerCardDataPtr->monIconPals, 96, 500, 330, 310); break; case 3: - TintPalette_SepiaTone(sTrainerCardDataPtr->var_468, 96); + TintPalette_SepiaTone(sTrainerCardDataPtr->monIconPals, 96); break; } - LoadPalette(sTrainerCardDataPtr->var_468, 80, 192); - + + LoadPalette(sTrainerCardDataPtr->monIconPals, 80, 192); for (i = 0; i < 6; i++) { - if (sTrainerCardDataPtr->trainerCard.monSpecies[i]) - LoadBgTiles(3, GetMonIconTiles(sTrainerCardDataPtr->trainerCard.monSpecies[i], 0), 512, 16 * i + 32); + LoadBgTiles(3, GetMonIconTiles(sTrainerCardDataPtr->trainerCard.monSpecies[i], 0), 512, 16 * i + 32); } } -static void sub_80C42A4(void) +static void sub_808ABE0(void) { u8 i; - u8 buffer[4] = {0x0b, 0x0c, 0x0d, 0x0e}; - + u8 buffer[4]; + + memcpy(buffer, sUnknown_83CD958, 4); if (sTrainerCardDataPtr->cardType == CARD_TYPE_FRLG && sTrainerCardDataPtr->trainerCard.var_4C == 1) { for (i = 0; i < 3; i++) @@ -1359,67 +1447,71 @@ static void sub_80C42A4(void) } } -static void sub_80C4330(void) +static void TrainerCardLoadStickerPals(void) { - LoadPalette(gUnknown_0856F54C, 176, 32); - LoadPalette(gUnknown_0856F56C, 192, 32); - LoadPalette(gUnknown_0856F58C, 208, 32); - LoadPalette(gUnknown_0856F5AC, 224, 32); - LoadBgTiles(3, sTrainerCardDataPtr->var_17A8, 1024, 128); + LoadPalette(sTrainerCardStickerPal1, 176, 32); + LoadPalette(sTrainerCardStickerPal2, 192, 32); + LoadPalette(sTrainerCardStickerPal3, 208, 32); + LoadPalette(sTrainerCardStickerPal4, 224, 32); + LoadBgTiles(3, sTrainerCardDataPtr->bgTiles, 1024, 128); } -static void sub_80C438C(u8 windowId) +static void PutTrainerCardWindow(u8 windowId) { PutWindowTilemap(windowId); CopyWindowToVram(windowId, 3); } -static u8 SetCardBgsAndPals(void) +static bool8 SetTrainerCardBgsAndPals(void) { switch (sTrainerCardDataPtr->bgPalLoadState) { case 0: - LoadBgTiles(3, sTrainerCardDataPtr->var_13A8, 1024, 0); + LoadBgTiles(3, sTrainerCardDataPtr->cardTiles, 1024, 0); break; case 1: - LoadBgTiles(0, sTrainerCardDataPtr->var_19A8, 6144, 0); + LoadBgTiles(0, sTrainerCardDataPtr->var_18CC, 6144, 0); break; case 2: - if (sTrainerCardDataPtr->cardType != CARD_TYPE_FRLG) - { - LoadPalette(gEmeraldTrainerCardStarPals[sTrainerCardDataPtr->trainerCard.stars], 0, 96); - LoadPalette(sEmeraldTrainerCardBadges_Pal, 48, 32); - if (sTrainerCardDataPtr->trainerCard.gender) - LoadPalette(sEmeraldTrainerCardFemaleBackground_Pal, 16, 32); - } + if (sTrainerCardDataPtr->cardType == CARD_TYPE_EMERALD) + LoadPalette(sEmeraldTrainerCardStarPals[sTrainerCardDataPtr->trainerCard.stars], 0, 96); else - { - LoadPalette(gFireRedTrainerCardStarPals[sTrainerCardDataPtr->trainerCard.stars], 0, 96); - LoadPalette(sFireRedTrainerCardBadges_Pal, 48, 32); - if (sTrainerCardDataPtr->trainerCard.gender) - LoadPalette(sFireRedTrainerCardFemaleBackground_Pal, 16, 32); - } - LoadPalette(gUnknown_0856F52C, 64, 32); + LoadPalette(sFireRedTrainerCardStarPals[sTrainerCardDataPtr->trainerCard.stars], 0, 96); break; case 3: - SetBgTilemapBuffer(0, sTrainerCardDataPtr->var_3CA8); - SetBgTilemapBuffer(2, sTrainerCardDataPtr->var_5CA8); + if (sTrainerCardDataPtr->cardType == CARD_TYPE_EMERALD) + LoadPalette(sEmeraldTrainerCardBadges_Pal, 48, 32); + else + LoadPalette(sFireRedTrainerCardBadges_Pal, 48, 32); break; case 4: + if (sTrainerCardDataPtr->cardType == CARD_TYPE_EMERALD && sTrainerCardDataPtr->trainerCard.gender != MALE) + LoadPalette(sEmeraldTrainerCardFemaleBackground_Pal, 16, 32); + else if (sTrainerCardDataPtr->trainerCard.gender != MALE) + LoadPalette(sFireRedTrainerCardFemaleBackground_Pal, 16, 32); + break; + case 5: + LoadPalette(sUnknown_83CD300, 64, 32); + break; + case 6: + SetBgTilemapBuffer(0, sTrainerCardDataPtr->bgTilemap0); + SetBgTilemapBuffer(2, sTrainerCardDataPtr->bgTilemap2); + break; + default: FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 32, 32); FillBgTilemapBufferRect_Palette0(2, 0, 0, 0, 32, 32); FillBgTilemapBufferRect_Palette0(3, 0, 0, 0, 32, 32); - default: - return 1; + return TRUE; } + sTrainerCardDataPtr->bgPalLoadState++; - return 0; + return FALSE; } -static void sub_80C4550(u16 *ptr) +static void LoadTrainerCardTilemap2(u16* ptr) { s16 i, j; - u16 *dst = sTrainerCardDataPtr->var_5CA8; + u16 *dst = sTrainerCardDataPtr->bgTilemap2; for (i = 0; i < 20; i++) { @@ -1431,13 +1523,14 @@ static void sub_80C4550(u16 *ptr) dst[32 * i + j] = ptr[0]; } } + CopyBgTilemapBufferToVram(2); } -static void sub_80C45C0(u16* ptr) +static void LoadTrainerCardTilemap0(u16* ptr) { s16 i, j; - u16 *dst = sTrainerCardDataPtr->var_3CA8; + u16 *dst = sTrainerCardDataPtr->bgTilemap0; for (i = 0; i < 20; i++) { @@ -1449,49 +1542,51 @@ static void sub_80C45C0(u16* ptr) dst[32 * i + j] = ptr[0]; } } + CopyBgTilemapBufferToVram(0); } -static const u8 gUnknown_0856FB78[] = {7, 7}; - static void TrainerCard_PrintStarsAndBadgesOnCard(void) { s16 i, x; u16 tileNum = 192; u8 palNum = 3; - FillBgTilemapBufferRect(3, 143, 15, gUnknown_0856FB78[sTrainerCardDataPtr->isHoenn], sTrainerCardDataPtr->trainerCard.stars, 1, 4); + FillBgTilemapBufferRect(3, 143, 15, sUnknown_83CD95C[sTrainerCardDataPtr->cardType], sTrainerCardDataPtr->trainerCard.stars, 1, 4); if (!sTrainerCardDataPtr->isLink) { x = 4; - for (i = 0; i < 8; i++, tileNum += 2, x += 3) + for (i = 0; i < BADGE_COUNT; i++, tileNum += 2, x += 3) { - if (sTrainerCardDataPtr->badgeCount[i]) + if (sTrainerCardDataPtr->hasBadge[i]) { - FillBgTilemapBufferRect(3, tileNum, x, 15, 1, 1, palNum); - FillBgTilemapBufferRect(3, tileNum + 1, x + 1, 15, 1, 1, palNum); - FillBgTilemapBufferRect(3, tileNum + 16, x, 16, 1, 1, palNum); - FillBgTilemapBufferRect(3, tileNum + 17, x + 1, 16, 1, 1, palNum); + FillBgTilemapBufferRect(3, tileNum, x, 16, 1, 1, palNum); + FillBgTilemapBufferRect(3, tileNum + 1, x + 1, 16, 1, 1, palNum); + FillBgTilemapBufferRect(3, tileNum + 16, x, 17, 1, 1, palNum); + FillBgTilemapBufferRect(3, tileNum + 17, x + 1, 17, 1, 1, palNum); } } } + CopyBgTilemapBufferToVram(3); } -static void sub_80C474C(void) +static void sub_808B090(void) { - if (sTrainerCardDataPtr->cardType == CARD_TYPE_FRLG) + if (sTrainerCardDataPtr->cardType != CARD_TYPE_EMERALD) { if (sTrainerCardDataPtr->hasTrades) { - FillBgTilemapBufferRect(3, 141, 27, 9, 1, 1, 1); - FillBgTilemapBufferRect(3, 157, 27, 10, 1, 1, 1); + FillBgTilemapBufferRect(3, 141, 26, 9, 1, 1, 1); + FillBgTilemapBufferRect(3, 157, 26, 10, 1, 1, 1); } + if (sTrainerCardDataPtr->trainerCard.berryCrushPoints) { FillBgTilemapBufferRect(3, 141, 21, 13, 1, 1, 1); FillBgTilemapBufferRect(3, 157, 21, 14, 1, 1, 1); } + if (sTrainerCardDataPtr->trainerCard.unionRoomNum) { FillBgTilemapBufferRect(3, 141, 27, 11, 1, 1, 1); @@ -1502,63 +1597,53 @@ static void sub_80C474C(void) { if (sTrainerCardDataPtr->hasTrades) { - FillBgTilemapBufferRect(3, 141, 27, 9, 1, 1, 0); - FillBgTilemapBufferRect(3, 157, 27, 10, 1, 1, 0); - } - if (sTrainerCardDataPtr->trainerCard.contestsWithFriends) - { - FillBgTilemapBufferRect(3, 141, 27, 13, 1, 1, 0); - FillBgTilemapBufferRect(3, 157, 27, 14, 1, 1, 0); - } - if (sTrainerCardDataPtr->hasBattleTowerWins) - { - FillBgTilemapBufferRect(3, 141, 17, 15, 1, 1, 0); - FillBgTilemapBufferRect(3, 157, 17, 16, 1, 1, 0); - FillBgTilemapBufferRect(3, 140, 27, 15, 1, 1, 0); - FillBgTilemapBufferRect(3, 156, 27, 16, 1, 1, 0); + FillBgTilemapBufferRect(3, 141, 26, 9, 1, 1, 0); + FillBgTilemapBufferRect(3, 157, 26, 10, 1, 1, 0); } } + CopyBgTilemapBufferToVram(3); } -static void sub_80C48C8(void) +static void sub_808B180(void) { if (++sTrainerCardDataPtr->var_6 > 60) { sTrainerCardDataPtr->var_6 = 0; sTrainerCardDataPtr->var_7 ^= 1; - sTrainerCardDataPtr->var_529 = 1; + sTrainerCardDataPtr->var_7BCE = 1; } } u8 GetTrainerCardStars(u8 cardId) { struct TrainerCard* trainerCards = gTrainerCards; + return trainerCards[cardId].stars; } -static void sub_80C4918(void) +static void sub_808B1D4(void) { - u8 taskId = CreateTask(sub_80C4960, 0); - sub_80C4960(taskId); + u8 taskId = CreateTask(sub_808B21C, 0); + sub_808B21C(taskId); SetHBlankCallback(HblankCb_TrainerCard); } -static bool8 sub_80C4940(void) +static bool8 sub_808B1FC(void) { - if (FindTaskIdByFunc(sub_80C4960) == 0xFF) + if (FindTaskIdByFunc(sub_808B21C) == 0xFF) return TRUE; else return FALSE; } -static void sub_80C4960(u8 taskId) +static void sub_808B21C(u8 taskId) { - while(gUnknown_0856FB28[gTasks[taskId].data[0]](&gTasks[taskId])) + while(sTrainerCardTasks[gTasks[taskId].data[0]](&gTasks[taskId])) ; } -static bool8 sub_80C4998(struct Task* task) +static bool8 sub_808B254(struct Task* task) { u32 i; @@ -1567,12 +1652,15 @@ static bool8 sub_80C4998(struct Task* task) ScanlineEffect_Stop(); ScanlineEffect_Clear(); for (i = 0; i < 160; i++) + { gScanlineEffectRegBuffers[1][i] = 0; + } + task->data[0]++; return FALSE; } -static bool8 sub_80C49D8(struct Task* task) +static bool8 sub_808B294(struct Task* task) { u32 r4, r5, r10, r7, r6, var_24, r9, var; s16 i; @@ -1583,10 +1671,9 @@ static bool8 sub_80C49D8(struct Task* task) else task->data[1] += 7; - sTrainerCardDataPtr->var_7CA8 = task->data[1]; - sub_80C32EC(task->data[1]); - - // ??? + sTrainerCardDataPtr->var_7BCC = task->data[1]; + sub_8089BD8(task->data[1]); + r7 = task->data[1]; r9 = 160 - r7; r4 = r9 - r7; @@ -1599,7 +1686,10 @@ static bool8 sub_80C49D8(struct Task* task) r5 *= 2; for (i = 0; i < r7; i++) + { gScanlineEffectRegBuffers[0][i] = -i; + } + for (; i < (s16)(r9); i++) { var = r6 >> 16; @@ -1607,10 +1697,13 @@ static bool8 sub_80C49D8(struct Task* task) r5 -= r10; gScanlineEffectRegBuffers[0][i] = var; } + var = var_24 >> 16; for (; i < 160; i++) + { gScanlineEffectRegBuffers[0][i] = var; - + } + sTrainerCardDataPtr->allowDMACopy = TRUE; if (task->data[1] >= 77) task->data[0]++; @@ -1618,10 +1711,10 @@ static bool8 sub_80C49D8(struct Task* task) return FALSE; } -static bool8 sub_80C4B08(struct Task* task) +static bool8 sub_808B3C4(struct Task* task) { sTrainerCardDataPtr->allowDMACopy = FALSE; - if (sub_8087598() == TRUE) + if (sub_8058244() == TRUE) return FALSE; do @@ -1630,7 +1723,7 @@ static bool8 sub_80C4B08(struct Task* task) { case 0: FillWindowPixelBuffer(1, PIXEL_FILL(0)); - FillBgTilemapBufferRect_Palette0(3, 0, 0, 0, 0x20, 0x20); + FillBgTilemapBufferRect_Palette0(3, 0, 0, 0, 32, 32); break; case 1: if (!sTrainerCardDataPtr->var_8) @@ -1646,19 +1739,19 @@ static bool8 sub_80C4B08(struct Task* task) break; case 2: if (!sTrainerCardDataPtr->var_8) - sub_80C45C0(sTrainerCardDataPtr->var_A48); + LoadTrainerCardTilemap0(sTrainerCardDataPtr->var_96C); else - sub_80C438C(1); + PutTrainerCardWindow(1); break; case 3: if (!sTrainerCardDataPtr->var_8) - sub_80C474C(); + sub_808B090(); else FillWindowPixelBuffer(2, PIXEL_FILL(0)); break; case 4: if (sTrainerCardDataPtr->var_8) - sub_80C4FF0(); + sub_808B838(); break; default: task->data[0]++; @@ -1672,25 +1765,26 @@ static bool8 sub_80C4B08(struct Task* task) return FALSE; } -static bool8 sub_80C4C1C(struct Task* task) +static bool8 sub_808B4D8(struct Task* task) { sTrainerCardDataPtr->allowDMACopy = FALSE; if (sTrainerCardDataPtr->var_8) { - sub_80C438C(2); - sub_80C4550(sTrainerCardDataPtr->var_EF8); - sub_80C45C0(sTrainerCardDataPtr->var_598); + PutTrainerCardWindow(2); + LoadTrainerCardTilemap2(&sTrainerCardDataPtr->var_E1C); + LoadTrainerCardTilemap0(&sTrainerCardDataPtr->var_4BC); TrainerCard_PrintStarsAndBadgesOnCard(); } - sub_80C438C(1); + + PutTrainerCardWindow(1); sTrainerCardDataPtr->var_8 ^= 1; task->data[0]++; sTrainerCardDataPtr->allowDMACopy = TRUE; - PlaySE(SE_RG_CARD2); + PlaySE(SE_CARD2); return FALSE; } -static bool8 sub_80C4C84(struct Task* task) +static bool8 sub_808B540(struct Task* task) { u32 r4, r5, r10, r7, r6, var_24, r9, var; s16 i; @@ -1701,10 +1795,9 @@ static bool8 sub_80C4C84(struct Task* task) else task->data[1] -= 5; - sTrainerCardDataPtr->var_7CA8 = task->data[1]; - sub_80C32EC(task->data[1]); - - // ??? + sTrainerCardDataPtr->var_7BCC = task->data[1]; + sub_8089BD8(task->data[1]); + r7 = task->data[1]; r9 = 160 - r7; r4 = r9 - r7; @@ -1717,7 +1810,10 @@ static bool8 sub_80C4C84(struct Task* task) r5 /= 2; for (i = 0; i < r7; i++) + { gScanlineEffectRegBuffers[0][i] = -i; + } + for (; i < (s16)(r9); i++) { var = r6 >> 16; @@ -1725,10 +1821,13 @@ static bool8 sub_80C4C84(struct Task* task) r5 += r10; gScanlineEffectRegBuffers[0][i] = var; } + var = var_24 >> 16; for (; i < 160; i++) + { gScanlineEffectRegBuffers[0][i] = var; - + } + sTrainerCardDataPtr->allowDMACopy = TRUE; if (task->data[1] <= 0) task->data[0]++; @@ -1736,12 +1835,12 @@ static bool8 sub_80C4C84(struct Task* task) return FALSE; } -static bool8 sub_80C4DB0(struct Task *task) +static bool8 sub_808B66C(struct Task *task) { ShowBg(1); ShowBg(3); SetHBlankCallback(NULL); - DestroyTask(FindTaskIdByFunc(sub_80C4960)); + DestroyTask(FindTaskIdByFunc(sub_808B21C)); return FALSE; } @@ -1749,16 +1848,11 @@ void ShowPlayerTrainerCard(void (*callback)(void)) { sTrainerCardDataPtr = AllocZeroed(sizeof(*sTrainerCardDataPtr)); sTrainerCardDataPtr->callback2 = callback; - if (callback == CB2_ReshowFrontierPass) - sTrainerCardDataPtr->var_52C = 0x7FFF; - else - sTrainerCardDataPtr->var_52C = 0; - if (InUnionRoom() == TRUE) sTrainerCardDataPtr->isLink = TRUE; else sTrainerCardDataPtr->isLink = FALSE; - + sTrainerCardDataPtr->language = GAME_LANGUAGE; TrainerCard_GenerateCardForLinkPlayer(&sTrainerCardDataPtr->trainerCard); SetMainCallback2(CB2_InitTrainerCard); @@ -1774,79 +1868,91 @@ void ShowTrainerCardInLink(u8 cardId, void (*callback)(void)) SetMainCallback2(CB2_InitTrainerCard); } -static void sub_80C4EE4(void) +static void sub_808B774(void) { u8 i; - sTrainerCardDataPtr->var_0 = 0; + sTrainerCardDataPtr->taskState = 0; sTrainerCardDataPtr->var_6 = gSaveBlock2Ptr->playTimeVBlanks; sTrainerCardDataPtr->var_7 = 0; sTrainerCardDataPtr->var_8 = 0; - sTrainerCardDataPtr->var_528 = 0; - sTrainerCardDataPtr->cardType = GetSetCardType(); + sTrainerCardDataPtr->var_456 = 0; + if (GetCardType() == CARD_TYPE_EMERALD) + sTrainerCardDataPtr->cardType = CARD_TYPE_EMERALD; + else + sTrainerCardDataPtr->cardType = CARD_TYPE_FRLG; + for (i = 0; i < 4; i++) + { CopyEasyChatWord(sTrainerCardDataPtr->var_19[i], sTrainerCardDataPtr->trainerCard.var_28[i]); + } } -static u8 GetSetCardType(void) +static u8 GetCardType(void) { if (sTrainerCardDataPtr == NULL) { if (gGameVersion == VERSION_FIRE_RED || gGameVersion == VERSION_LEAF_GREEN) return CARD_TYPE_FRLG; - else if (gGameVersion == VERSION_EMERALD) - return CARD_TYPE_EMERALD; else - return CARD_TYPE_RS; + return CARD_TYPE_EMERALD; } else { if (sTrainerCardDataPtr->trainerCard.version == VERSION_FIRE_RED || sTrainerCardDataPtr->trainerCard.version == VERSION_LEAF_GREEN) - { - sTrainerCardDataPtr->isHoenn = FALSE; return CARD_TYPE_FRLG; - } - else if (sTrainerCardDataPtr->trainerCard.version == VERSION_EMERALD) - { - sTrainerCardDataPtr->isHoenn = TRUE; + else return CARD_TYPE_EMERALD; + } +} + +static void sub_808B838(void) +{ + u8 val = sLinkTrainerCardFrontPics[sTrainerCardDataPtr->cardType][sTrainerCardDataPtr->trainerCard.gender]; + + if (InUnionRoom() == TRUE && gReceivedRemoteLinkPlayers == 1) + { + val = sTrainerCardDataPtr->trainerCard.var_4F; + sub_810C330(FacilityClassToPicIndex(val), TRUE, sTrainerCardPicPositions[sTrainerCardDataPtr->cardType][sTrainerCardDataPtr->trainerCard.gender][0], + sTrainerCardPicPositions[sTrainerCardDataPtr->cardType][sTrainerCardDataPtr->trainerCard.gender][1], 8, 2); + } + else + { + if (sTrainerCardDataPtr->cardType != CARD_TYPE_FRLG) + { + sub_810C330(FacilityClassToPicIndex(val), TRUE, sTrainerCardPicPositions[sTrainerCardDataPtr->cardType][sTrainerCardDataPtr->trainerCard.gender][0], + sTrainerCardPicPositions[sTrainerCardDataPtr->cardType][sTrainerCardDataPtr->trainerCard.gender][1], 8, 2); } else { - sTrainerCardDataPtr->isHoenn = TRUE; - return CARD_TYPE_RS; + sub_810C330(PlayerGenderToFrontTrainerPicId_Debug(sTrainerCardDataPtr->trainerCard.gender, TRUE), TRUE, + sTrainerCardPicPositions[sTrainerCardDataPtr->cardType][sTrainerCardDataPtr->trainerCard.gender][0], + sTrainerCardPicPositions[sTrainerCardDataPtr->cardType][sTrainerCardDataPtr->trainerCard.gender][1], + 8, 2); } } } -static u8 VersionToCardType(u8 version) +// Unused +static void Unref_InitTrainerCard(void (*callback)(void)) { - if (version == VERSION_FIRE_RED || version == VERSION_LEAF_GREEN) - return CARD_TYPE_FRLG; - else if (version == VERSION_EMERALD) - return CARD_TYPE_EMERALD; - else - return CARD_TYPE_RS; + ShowPlayerTrainerCard(callback); + SetMainCallback2(CB2_InitTrainerCard); } -static void sub_80C4FF0(void) +// Unused +static void Unref_InitTrainerCardLink(void (*callback)(void)) { - if (InUnionRoom() == TRUE && gReceivedRemoteLinkPlayers == 1) - { - sub_818D938(FacilityClassToPicIndex(sTrainerCardDataPtr->trainerCard.var_4F), - TRUE, - gUnknown_0856FB18[sTrainerCardDataPtr->isHoenn][sTrainerCardDataPtr->trainerCard.gender][0], - gUnknown_0856FB18[sTrainerCardDataPtr->isHoenn][sTrainerCardDataPtr->trainerCard.gender][1], - 8, - 2); - } - else - { - sub_818D938(FacilityClassToPicIndex(gUnknown_0856FB20[sTrainerCardDataPtr->cardType][sTrainerCardDataPtr->trainerCard.gender]), - TRUE, - gUnknown_0856FB18[sTrainerCardDataPtr->isHoenn][sTrainerCardDataPtr->trainerCard.gender][0], - gUnknown_0856FB18[sTrainerCardDataPtr->isHoenn][sTrainerCardDataPtr->trainerCard.gender][1], - 8, - 2); - } + memcpy(gTrainerCards, &sLinkPlayerTrainerCardTemplate1, 0x60); + ShowTrainerCardInLink(CARD_TYPE_FRLG, callback); + SetMainCallback2(CB2_InitTrainerCard); +} + +// Unused +static void Unref_InitTrainerCardLink2(void (*callback)(void)) +{ + memcpy(gTrainerCards, &sLinkPlayerTrainerCardTemplate2, 0x60); + ShowTrainerCardInLink(CARD_TYPE_FRLG, callback); + SetMainCallback2(CB2_InitTrainerCard); } + diff --git a/sym_ewram.txt b/sym_ewram.txt index d2c5b4543..a2ceeb575 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -227,12 +227,8 @@ gFieldEffectArguments: @ 20386E0 .align 2 .include "src/option_menu.o" - -gTrainerCards: @ 2039624 - .space 0x180 - -gUnknown_20397A4: @ 20397A4 - .space 0x4 + .align 2 + .include "src/trainer_card.o" gUnknown_20397A8: @ 20397A8 .space 0x4 |