diff options
48 files changed, 2593 insertions, 5358 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 c5eae9753..570b73636 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 1725f16e6..710942f58 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 bb501ffb0..89541e748 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -4848,4 +4848,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 8ad1dc533..498d6802d 100644 --- a/include/strings.h +++ b/include/strings.h @@ -976,4 +976,23 @@ extern const u8 gUnknown_8415F3D[]; extern const u8 gUnknown_8415F4A[]; extern const u8 gUnknown_8415F66[]; +// 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..436a791e9 100644 --- a/include/trainer_pokemon_sprites.h +++ b/include/trainer_pokemon_sprites.h @@ -3,13 +3,13 @@ #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); diff --git a/ld_script.txt b/ld_script.txt index f6da871fb..42fc57437 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -130,7 +130,7 @@ SECTIONS { src/scanline_effect.o(.text); src/option_menu.o(.text); src/pokedex.o(.text); - asm/trainer_card.o(.text); + src/trainer_card.o(.text); asm/pokemon_storage_system.o(.text); src/pokemon_icon.o(.text); asm/script_movement.o(.text); @@ -435,7 +435,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..323b2e5f6 100644 --- a/src/money.c +++ b/src/money.c @@ -4,9 +4,7 @@ #include "string_util.h" #include "menu.h" #include "text_window.h" - -extern const u8 gText_PokedollarVar1[]; -extern const u8 gUnknown_8419CE7[]; +#include "strings.h" #define MAX_MONEY 999999 @@ -110,7 +108,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 fc9781c48..683b605d4 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -87,7 +87,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 new file mode 100644 index 000000000..766935244 --- /dev/null +++ b/src/trainer_card.c @@ -0,0 +1,1932 @@ +#include "global.h" +#include "scanline_effect.h" +#include "palette.h" +#include "task.h" +#include "main.h" +#include "window.h" +#include "malloc.h" +#include "link.h" +#include "bg.h" +#include "sound.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 "pokedex.h" +#include "pokemon_icon.h" +#include "graphics.h" +#include "pokemon_icon.h" +#include "help_system.h" +#include "trainer_pokemon_sprites.h" +#include "new_menu_helpers.h" +#include "constants/songs.h" +#include "constants/flags.h" +#include "constants/game_stat.h" +#include "constants/vars.h" +#include "constants/species.h" + +#define BADGE_COUNT 8 + +// Trainer Card Types +enum +{ + CARD_TYPE_FRLG, + CARD_TYPE_EMERALD, +}; + +// Trainer Card Strings +enum +{ + TRAINER_CARD_STRING_NAME = 0, + TRAINER_CARD_STRING_HOF_TIME, + TRAINER_CARD_STRING_LINK_RECORD, + TRAINER_CARD_STRING_WIN_LOSS, + TRAINER_CARD_STRING_LINK_WINS, + TRAINER_CARD_STRING_LINK_LOSSES, + TRAINER_CARD_STRING_TRADES, + TRAINER_CARD_STRING_TRADE_COUNT, + TRAINER_CARD_STRING_BERRY_CRUSH, + TRAINER_CARD_STRING_BERRY_CRUSH_COUNT, + TRAINER_CARD_STRING_UNION_ROOM, + TRAINER_CARD_STRING_UNION_ROOM_NUM, + TRAINER_CARD_STRING_COUNT, +}; + +struct TrainerCardData +{ + /*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*/ bool8 hasBadge[BADGE_COUNT]; + /*0x0019*/ u8 var_19[4][13]; + /*0x004D*/ u8 strings[TRAINER_CARD_STRING_COUNT][70]; + /*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; + /*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 CB2_TrainerCard(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 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 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_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 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 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(const u16* ptr); +static void LoadTrainerCardTilemap0(const 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, + .charBaseIndex = 0, + .mapBaseIndex = 27, + .screenSize = 2, + .paletteMode = 0, + .priority = 2, + .baseTile = 0 + }, + { + .bg = 1, + .charBaseIndex = 2, + .mapBaseIndex = 29, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0 + }, + { + .bg = 2, + .charBaseIndex = 0, + .mapBaseIndex = 30, + .screenSize = 0, + .paletteMode = 0, + .priority = 3, + .baseTile = 0 + }, + { + .bg = 3, + .charBaseIndex = 0, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 192 + } +}; + +static const struct WindowTemplate sTrainerCardWindowTemplates[4] = +{ + { + .bg = 1, + .tilemapLeft = 2, + .tilemapTop = 15, + .width = 26, + .height = 4, + .paletteNum = 15, + .baseBlock = 0x241 + }, + { + .bg = 1, + .tilemapLeft = 1, + .tilemapTop = 1, + .width = 27, + .height = 18, + .paletteNum = 15, + .baseBlock = 0x1 + }, + { + .bg = 3, + .tilemapLeft = 19, + .tilemapTop = 5, + .width = 9, + .height = 10, + .paletteNum = 8, + .baseBlock = 0x150 + }, + DUMMY_WIN_TEMPLATE +}; + +static const u16 *const sEmeraldTrainerCardStarPals[] = +{ + gEmeraldTrainerCard_Pal, + sEmeraldTrainerCard1Stars_Pals, + sEmeraldTrainerCard2Stars_Pals, + sEmeraldTrainerCard3Stars_Pals, + sEmeraldTrainerCard4Stars_Pals +}; + +static const u16 *const sFireRedTrainerCardStarPals[] = +{ + gFireRedTrainerCard_Pal, + sFireRedTrainerCard1Stars_Pals, + sFireRedTrainerCard2Stars_Pals, + sFireRedTrainerCard3Stars_Pals, + sFireRedTrainerCard4Stars_Pals +}; + +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 sLinkTrainerCardFrontPics[][2] = +{ + {TRAINER_PIC_RS_MAY_2, TRAINER_PIC_RED}, + {TRAINER_PIC_PROFESSOR_OAK, TRAINER_PIC_RS_BRENDAN_2}, +}; + +static const u8 sLinkTrainerCardFacilityClasses[][8] = +{ + {0x74, 0x6F, 0x5C, 0x58, 0x6A, 0x59, 0x6D, 0x6C}, + {0x75, 0x7D, 0x5D, 0x5A, 0x16, 0x30, 0x41, 0x68} +}; + +static bool8 (*const sTrainerCardTasks[])(struct Task *) = +{ + 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 = _("あかみ どりお"), + .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 +static void VBlankCB_TrainerCard(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + sub_808B180(); + if (sTrainerCardDataPtr->allowDMACopy) + DmaCopy16(3, &gScanlineEffectRegBuffers[0], &gScanlineEffectRegBuffers[1], 0x140); +} + +static void HBlankCB_TrainerCard(void) +{ + u16 backup; + u16 bgVOffset; + + backup = REG_IME; + REG_IME = 0; + bgVOffset = gScanlineEffectRegBuffers[1][REG_VCOUNT & 0xFF]; + REG_BG0VOFS = bgVOffset; + REG_IME = backup; +} + +static void CB2_TrainerCard(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void CloseTrainerCard(u8 taskId) +{ + SetMainCallback2(sTrainerCardDataPtr->callback2); + FreeAllWindowBuffers(); + FREE_AND_SET_NULL(sTrainerCardDataPtr); + DestroyTask(taskId); +} + +static void Task_TrainerCard(u8 taskId) +{ + switch (sTrainerCardDataPtr->taskState) + { + case 0: + if (!IsDma3ManagerBusyWithBgCopy()) + { + FillWindowPixelBuffer(1, PIXEL_FILL(0)); + sTrainerCardDataPtr->taskState++; + } + break; + case 1: + if (PrintAllOnCardPage1()) + sTrainerCardDataPtr->taskState++; + break; + case 2: + PutTrainerCardWindow(1); + sTrainerCardDataPtr->taskState++; + break; + case 3: + FillWindowPixelBuffer(2, PIXEL_FILL(0)); + sub_808B838(); + PutTrainerCardWindow(2); + sTrainerCardDataPtr->taskState++; + break; + case 4: + LoadTrainerCardTilemap2(&sTrainerCardDataPtr->var_E1C); + sTrainerCardDataPtr->taskState++; + break; + case 5: + LoadTrainerCardTilemap0(&sTrainerCardDataPtr->var_4BC); + sTrainerCardDataPtr->taskState++; + break; + case 6: + TrainerCard_PrintStarsAndBadgesOnCard(); + sTrainerCardDataPtr->taskState++; + break; + case 7: + if (gWirelessCommType == 1 && gReceivedRemoteLinkPlayers == TRUE) + { + LoadWirelessStatusIndicatorSpriteGfx(); + CreateWirelessStatusIndicatorSprite(230, 150); + } + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); + SetVBlankCallback(VBlankCB_TrainerCard); + sTrainerCardDataPtr->taskState++; + break; + case 8: + if (!UpdatePaletteFade() && !IsDma3ManagerBusyWithBgCopy()) + { + PlaySE(SE_CARD3); + sTrainerCardDataPtr->taskState = 10; + } + break; + case 9: + if (!IsSEPlaying()) + sTrainerCardDataPtr->taskState++; + break; + case 10: + if (!gReceivedRemoteLinkPlayers && sTrainerCardDataPtr->var_7BCE) + { + PrintTimeOnCard(); + PutTrainerCardWindow(1); + sTrainerCardDataPtr->var_7BCE = FALSE; + } + + if (JOY_NEW(A_BUTTON)) + { + HelpSystem_SetSomeVariable2(11); + sub_808B1D4(); + PlaySE(SE_CARD1); + sTrainerCardDataPtr->taskState = 12; + } + else if (JOY_NEW(B_BUTTON)) + { + if (gReceivedRemoteLinkPlayers && sTrainerCardDataPtr->isLink && InUnionRoom() == TRUE) + { + sTrainerCardDataPtr->taskState = 15; + } + else + { + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + sTrainerCardDataPtr->taskState = 14; + } + } + break; + case 12: + if (sub_808B1FC() && sub_8058244() != TRUE) + { + PlaySE(SE_CARD3); + sTrainerCardDataPtr->taskState = 11; + } + break; + case 11: + if (JOY_NEW(B_BUTTON)) + { + if (gReceivedRemoteLinkPlayers && sTrainerCardDataPtr->isLink && InUnionRoom() == TRUE) + { + sTrainerCardDataPtr->taskState = 15; + } + else if (gReceivedRemoteLinkPlayers) + { + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + sTrainerCardDataPtr->taskState = 14; + } + else + { + HelpSystem_SetSomeVariable2(10); + sub_808B1D4(); + sTrainerCardDataPtr->taskState = 13; + PlaySE(SE_CARD1); + } + } + else if (JOY_NEW(A_BUTTON)) + { + if (gReceivedRemoteLinkPlayers && sTrainerCardDataPtr->isLink && InUnionRoom() == TRUE) + { + sTrainerCardDataPtr->taskState = 15; + } + else + { + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + sTrainerCardDataPtr->taskState = 14; + } + } + break; + case 15: + sub_800AAC0(); + DrawDialogueFrame(0, 1); + AddTextPrinterParameterized(0, 2, gText_WaitingTrainerFinishReading, 0, 1, TEXT_SPEED_FF, 0); + CopyWindowToVram(0, 3); + sTrainerCardDataPtr->taskState = 16; + break; + case 16: + if (!gReceivedRemoteLinkPlayers) + { + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + sTrainerCardDataPtr->taskState = 14; + } + break; + case 14: + if (!UpdatePaletteFade()) + CloseTrainerCard(taskId); + break; + case 13: + if (sub_808B1FC() && sub_8058244() != TRUE) + { + sTrainerCardDataPtr->taskState = 10; + PlaySE(SE_CARD3); + } + break; + } +} + +static bool8 LoadCardGfx(void) +{ + switch (sTrainerCardDataPtr->gfxLoadState) + { + case 0: + if (sTrainerCardDataPtr->cardType == CARD_TYPE_EMERALD) + LZ77UnCompWram(sUnknown_83CCE30, &sTrainerCardDataPtr->var_E1C); + else + LZ77UnCompWram(sUnknown_83CCEC8, &sTrainerCardDataPtr->var_E1C); + break; + case 1: + if (sTrainerCardDataPtr->cardType == CARD_TYPE_EMERALD) + LZ77UnCompWram(sUnknown_83CC8A8, &sTrainerCardDataPtr->var_96C); + else + LZ77UnCompWram(sUnknown_83CC984, &sTrainerCardDataPtr->var_96C); + break; + case 2: + if (!sTrainerCardDataPtr->isLink) + { + if (sTrainerCardDataPtr->cardType == CARD_TYPE_EMERALD) + LZ77UnCompWram(sUnknown_83CC4DC, &sTrainerCardDataPtr->var_4BC); + else + LZ77UnCompWram(sUnknown_83CC6F0, &sTrainerCardDataPtr->var_4BC); + } + else + { + if (sTrainerCardDataPtr->cardType == CARD_TYPE_EMERALD) + LZ77UnCompWram(sUnknown_83CCAB0, &sTrainerCardDataPtr->var_4BC); + else + LZ77UnCompWram(sUnknown_83CCCA4, &sTrainerCardDataPtr->var_4BC); + } + break; + case 3: + LZ77UnCompWram(sFireRedTrainerCardBadges_Tile, &sTrainerCardDataPtr->cardTiles); + break; + case 4: + if (sTrainerCardDataPtr->cardType == CARD_TYPE_EMERALD) + LZ77UnCompWram(gEmeraldTrainerCard_Gfx, &sTrainerCardDataPtr->var_18CC); + else + LZ77UnCompWram(gFireRedTrainerCard_Gfx, &sTrainerCardDataPtr->var_18CC); + break; + case 5: + if (sTrainerCardDataPtr->cardType == CARD_TYPE_FRLG) + LZ77UnCompWram(sTrainerCardStickers, &sTrainerCardDataPtr->bgTiles); + break; + default: + sTrainerCardDataPtr->gfxLoadState = 0; + return TRUE; + } + sTrainerCardDataPtr->gfxLoadState++; + return FALSE; +} + +static void CB2_InitTrainerCard(void) +{ + switch (gMain.state) + { + case 0: + ResetGpuRegs(); + sub_8089DA4(); + gMain.state++; + break; + case 1: + TrainerCardNull(); + gMain.state++; + break; + case 2: + sub_8089C5C(); + gMain.state++; + break; + case 3: + sub_8089C80(); + gMain.state++; + // fallthrough + case 4: + sub_8089CA4(); + gMain.state++; + break; + case 5: + ResetTrainerCard(); + gMain.state++; + break; + case 6: + LoadStdWindowFrameGfx(); + gMain.state++; + break; + case 7: + sub_808AB10(); + gMain.state++; + break; + case 8: + if (LoadCardGfx() == TRUE) + gMain.state++; + break; + case 9: + TrainerCardLoadStickerPals(); + gMain.state++; + break; + case 10: + 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; + } +} + +static u32 GetCappedGameStat(u8 statId, u32 maxValue) +{ + u32 statValue = GetGameStat(statId); + return min(maxValue, statValue); +} + +static u8 GetTrainerStarCount(struct TrainerCard *trainerCard) +{ + u8 stars = 0; + + if (trainerCard->hofDebutHours != 0 || trainerCard->hofDebutMinutes != 0 || trainerCard->hofDebutSeconds != 0) + stars++; + + if (trainerCard->caughtAllHoenn) + stars++; + + if (trainerCard->battleTowerStraightWins > 49) + stars++; + + if (trainerCard->hasAllPaintings) + stars++; + + return stars; +} + +static void SetPlayerCardData(struct TrainerCard *trainerCard, u8 cardType) +{ + u32 playTime; + u8 i; + + trainerCard->gender = gSaveBlock2Ptr->playerGender; + trainerCard->playTimeHours = gSaveBlock2Ptr->playTimeHours; + trainerCard->playTimeMinutes = gSaveBlock2Ptr->playTimeMinutes; + + playTime = GetGameStat(GAME_STAT_FIRST_HOF_PLAY_TIME); + if (!GetGameStat(GAME_STAT_ENTERED_HOF)) + playTime = 0; + + trainerCard->hofDebutHours = playTime >> 16; + trainerCard->hofDebutMinutes = (playTime >> 8) & 0xFF; + trainerCard->hofDebutSeconds = playTime & 0xFF; + if ((playTime >> 16) > 999) + { + trainerCard->hofDebutHours = 999; + trainerCard->hofDebutMinutes = 59; + trainerCard->hofDebutSeconds = 59; + } + + trainerCard->hasPokedex = FlagGet(FLAG_SYS_POKEDEX_GET); + trainerCard->caughtAllHoenn = HasAllHoennMons(); + trainerCard->caughtMonsCount = GetCaughtMonsCount(); + + trainerCard->trainerId = (gSaveBlock2Ptr->playerTrainerId[1] << 8) | gSaveBlock2Ptr->playerTrainerId[0]; + + 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); + + for (i = 0; i < 4; i++) + trainerCard->var_28[i] = gSaveBlock1Ptr->easyChatProfile[i]; + + StringCopy(trainerCard->playerName, gSaveBlock2Ptr->playerName); + + if (cardType == CARD_TYPE_FRLG) + { + trainerCard->stars = GetTrainerStarCount(trainerCard); + } + else if (cardType == CARD_TYPE_EMERALD) + { + trainerCard->stars = 0; + if (trainerCard->hofDebutHours != 0 || (trainerCard->hofDebutMinutes != 0 || trainerCard->hofDebutSeconds != 0)) + trainerCard->stars = cardType; + + if (HasAllKantoMons()) + trainerCard->stars++; + + if (HasAllMons()) + trainerCard->stars++; + } +} + +void TrainerCard_GenerateCardForLinkPlayer(struct TrainerCard *trainerCard) +{ + u8 id = 0; + + trainerCard->version = VERSION_FIRE_RED; + SetPlayerCardData(trainerCard, CARD_TYPE_EMERALD); + 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->hasAllMons) + trainerCard->stars++; + + if (trainerCard->berriesPicked >= 200 && trainerCard->jumpsInRow >= 200) + trainerCard->stars++; + + id = ((u16)trainerCard->trainerId) % 8; + if (trainerCard->gender == FEMALE) + trainerCard->var_4F = sLinkTrainerCardFacilityClasses[1][id]; + else + 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) +{ + u32 badgeFlag; + u8 i; + + sTrainerCardDataPtr->hasPokedex = FALSE; + sTrainerCardDataPtr->hasHofResult = FALSE; + sTrainerCardDataPtr->hasLinkResults = FALSE; + sTrainerCardDataPtr->hasBattleTowerWins = FALSE; + sTrainerCardDataPtr->var_E = FALSE; + sTrainerCardDataPtr->var_F = FALSE; + sTrainerCardDataPtr->hasTrades = FALSE; + + memset(&sTrainerCardDataPtr->hasBadge, FALSE, BADGE_COUNT); + if (sTrainerCardDataPtr->trainerCard.hasPokedex) + sTrainerCardDataPtr->hasPokedex++; + + if (sTrainerCardDataPtr->trainerCard.hofDebutHours != 0 + || sTrainerCardDataPtr->trainerCard.hofDebutMinutes != 0 + || sTrainerCardDataPtr->trainerCard.hofDebutSeconds != 0) + sTrainerCardDataPtr->hasHofResult++; + + if (sTrainerCardDataPtr->trainerCard.linkBattleWins != 0 || sTrainerCardDataPtr->trainerCard.linkBattleLosses != 0) + sTrainerCardDataPtr->hasLinkResults++; + + if (sTrainerCardDataPtr->trainerCard.pokemonTrades != 0) + sTrainerCardDataPtr->hasTrades++; + + for (i = 0, badgeFlag = FLAG_BADGE01_GET; badgeFlag <= FLAG_BADGE08_GET; badgeFlag++, i++) + { + if (FlagGet(badgeFlag)) + sTrainerCardDataPtr->hasBadge[i]++; + } +} + +static void HandleGpuRegs(void) +{ + 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, 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_8089BD8(u16 arg0) +{ + s8 quotient = (arg0 + 40) / 10; + + if (quotient <= 4) + quotient = 0; + + sTrainerCardDataPtr->var_456 = quotient; + SetGpuReg(REG_OFFSET_BLDY, sTrainerCardDataPtr->var_456); + SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(sTrainerCardDataPtr->var_7BCC, 160 - sTrainerCardDataPtr->var_7BCC)); +} + +static void ResetGpuRegs(void) +{ + SetVBlankCallback(NULL); + SetHBlankCallback(NULL); + SetGpuReg(REG_OFFSET_DISPCNT, 0); +} + +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, sTrainerCardBgTemplates, NELEMS(sTrainerCardBgTemplates)); + ChangeBgX(0, 0, 0); + ChangeBgY(0, 0, 0); + ChangeBgX(1, 0, 0); + ChangeBgY(1, 0, 0); + ChangeBgX(2, 0, 0); + ChangeBgY(2, 0, 0); + ChangeBgX(3, 0, 0); + ChangeBgY(3, 0, 0); + InitWindows(sTrainerCardWindowTemplates); + DeactivateAllTextPrinters(); +} + +static void SetTrainerCardCB2(void) +{ + SetMainCallback2(CB2_TrainerCard); + HelpSystem_SetSomeVariable2(10); +} + +static void sub_8089DA4(void) +{ + ResetTasks(); + ScanlineEffect_Stop(); + CreateTask(Task_TrainerCard, 0); + sub_808B774(); + SetDataFromTrainerCard(); +} + +static bool8 PrintAllOnCardPage1(void) +{ + switch (sTrainerCardDataPtr->printState) + { + case 0: + PrintNameOnCard(); + break; + case 1: + PrintIdOnCard(); + break; + case 2: + PrintMoneyOnCard(); + break; + case 3: + PrintPokedexOnCard(); + break; + case 4: + PrintTimeOnCard(); + break; + case 5: + PrintProfilePhraseOnCard(); + break; + default: + sTrainerCardDataPtr->printState = 0; + return TRUE; + } + sTrainerCardDataPtr->printState++; + return FALSE; +} + +static bool8 PrintStringsOnCardPage2(void) +{ + switch (sTrainerCardDataPtr->printState) + { + case 0: + sub_808A4FC(); + break; + case 1: + PrintHofDebutStringOnCard(); + break; + case 2: + PrintWinsLossesStringOnCard(); + break; + case 3: + PrintTradesStringOnCard(); + break; + case 4: + PrintBerryCrushStringOnCard(); + break; + case 5: + PrintUnionStringOnCard(); + break; + case 6: + TrainerCard_PrintPokemonIconsOnCard(); + break; + case 7: + sub_808ABE0(); + break; + default: + sTrainerCardDataPtr->printState = 0; + return TRUE; + } + sTrainerCardDataPtr->printState++; + return FALSE; +} + +static void sub_8089ECC(void) +{ + PrintNameOnCard2(); + PrintHofTimeOnCard(); + PrintLinkResultsNumsOnCard(); + PrintTradesNumOnCard(); + PrintBerryCrushNumOnCard(); + PrintUnionNumOnCard(); +} + +static void PrintNameOnCard(void) +{ + u8 buffer[2][32]; + u8* txtPtr; + + txtPtr = StringCopy(buffer[0], gText_TrainerCardName); + txtPtr = buffer[1]; + StringCopy(txtPtr, sTrainerCardDataPtr->trainerCard.playerName); + ConvertInternationalString(txtPtr, sTrainerCardDataPtr->language); + 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; + + txtPtr = StringCopy(buffer, gText_TrainerCardIDNo); + ConvertIntToDecimalStringN(txtPtr, sTrainerCardDataPtr->trainerCard.trainerId, STR_CONV_MODE_LEADING_ZEROS, 5); + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], sTrainerCardIdXPositions[sTrainerCardDataPtr->cardType], sTrainerCardIdYPositions[sTrainerCardDataPtr->cardType], sFireRedTrainerCardPage1TextColors, TEXT_SPEED_FF, buffer); +} + +static void PrintMoneyOnCard(void) +{ + u8 buffer[10]; + u8* txtPtr; + u8 x; + + txtPtr = StringCopy(buffer, gText_TrainerCardYen); + ConvertIntToDecimalStringN(txtPtr, sTrainerCardDataPtr->trainerCard.money, STR_CONV_MODE_LEFT_ALIGN, 6); + if (sTrainerCardDataPtr->cardType != CARD_TYPE_EMERALD) + { + 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 + { + 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) +{ + if (IsNationalPokedexEnabled()) + return GetNationalPokedexCount(FLAG_GET_CAUGHT); + else + return GetKantoPokedexCount(FLAG_GET_CAUGHT); +} + +static void PrintPokedexOnCard(void) +{ + u8 buffer[10]; + u8 x; + + if (FlagGet(FLAG_SYS_POKEDEX_GET)) + { + ConvertIntToDecimalStringN(buffer, sTrainerCardDataPtr->trainerCard.caughtMonsCount, 0, 3); + if (sTrainerCardDataPtr->cardType != CARD_TYPE_EMERALD) + { + 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 + { + 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); + } + } +} + +static void PrintTimeOnCard(void) +{ + u16 hours; + u16 minutes; + u8 buffer[6]; + + hours = gSaveBlock2Ptr->playTimeHours; + minutes = gSaveBlock2Ptr->playTimeMinutes; + if (sTrainerCardDataPtr->isLink) + { + hours = sTrainerCardDataPtr->trainerCard.playTimeHours; + minutes = sTrainerCardDataPtr->trainerCard.playTimeMinutes; + } + + if (hours > 999) + hours = 999; + + if (minutes > 59) + minutes = 59; + + 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 + 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 void PrintProfilePhraseOnCard(void) +{ + if (sTrainerCardDataPtr->isLink) + { + 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]); + } +} + +static void PrintNameOnCard2(void) +{ + StringCopy(sTrainerCardDataPtr->strings[TRAINER_CARD_STRING_NAME], sTrainerCardDataPtr->trainerCard.playerName); + ConvertInternationalString(sTrainerCardDataPtr->strings[TRAINER_CARD_STRING_NAME], sTrainerCardDataPtr->language); + if (sTrainerCardDataPtr->cardType == CARD_TYPE_EMERALD) + { + StringAppend(sTrainerCardDataPtr->strings[TRAINER_CARD_STRING_NAME], gText_Var1sTrainerCard); + } +} + +static void sub_808A4FC(void) +{ + 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->strings[TRAINER_CARD_STRING_NAME]); + } + else + { + x = sUnknown_83CD93C[sTrainerCardDataPtr->cardType] - GetStringWidth(sTrainerCardFontIds[1], sTrainerCardDataPtr->strings[TRAINER_CARD_STRING_NAME], GetFontAttribute(sTrainerCardFontIds[1], FONTATTR_LETTER_SPACING)); + + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], x, sUnknown_83CD93E[sTrainerCardDataPtr->cardType], + sFireRedTrainerCardPage1TextColors, TEXT_SPEED_FF, sTrainerCardDataPtr->strings[TRAINER_CARD_STRING_NAME]); + } +} + +static void PrintHofTimeOnCard(void) +{ + u8 buffer[10]; + u8* txtPtr; + + if (sTrainerCardDataPtr->hasHofResult) + { + ConvertIntToDecimalStringN(buffer, sTrainerCardDataPtr->trainerCard.hofDebutHours, STR_CONV_MODE_RIGHT_ALIGN, 3); + txtPtr = StringCopy(sTrainerCardDataPtr->strings[TRAINER_CARD_STRING_HOF_TIME], buffer); + StringAppendN(sTrainerCardDataPtr->strings[TRAINER_CARD_STRING_HOF_TIME], gText_Colon2, 2); + ConvertIntToDecimalStringN(buffer, sTrainerCardDataPtr->trainerCard.hofDebutMinutes, STR_CONV_MODE_LEADING_ZEROS, 2); + StringAppendN(sTrainerCardDataPtr->strings[TRAINER_CARD_STRING_HOF_TIME], buffer, 3); + StringAppendN(sTrainerCardDataPtr->strings[TRAINER_CARD_STRING_HOF_TIME], gText_Colon2, 2); + ConvertIntToDecimalStringN(buffer, sTrainerCardDataPtr->trainerCard.hofDebutSeconds, STR_CONV_MODE_LEADING_ZEROS, 2); + StringAppendN(sTrainerCardDataPtr->strings[TRAINER_CARD_STRING_HOF_TIME], buffer, 3); + } +} + +static void PrintHofDebutStringOnCard(void) +{ + if (sTrainerCardDataPtr->hasHofResult) + { + 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->strings[TRAINER_CARD_STRING_HOF_TIME]); + } +} + +static void PrintLinkResultsNumsOnCard(void) +{ + u8 buffer[30]; + + if (sTrainerCardDataPtr->hasLinkResults) + { + StringCopy(sTrainerCardDataPtr->strings[TRAINER_CARD_STRING_LINK_RECORD], sLinkTrainerCardRecordStrings[sTrainerCardDataPtr->cardType]); + StringCopy(sTrainerCardDataPtr->strings[TRAINER_CARD_STRING_WIN_LOSS], gText_WinLossRatio); + ConvertIntToDecimalStringN(buffer, sTrainerCardDataPtr->trainerCard.linkBattleWins, STR_CONV_MODE_RIGHT_ALIGN, 4); + StringCopy(sTrainerCardDataPtr->strings[TRAINER_CARD_STRING_LINK_WINS], buffer); + ConvertIntToDecimalStringN(buffer, sTrainerCardDataPtr->trainerCard.linkBattleLosses, STR_CONV_MODE_RIGHT_ALIGN, 4); + StringCopy(sTrainerCardDataPtr->strings[TRAINER_CARD_STRING_LINK_LOSSES], buffer); + } +} + +static void PrintWinsLossesStringOnCard(void) +{ + if (sTrainerCardDataPtr->hasLinkResults) + { + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], sTrainerCardHofDebutXPositions[sTrainerCardDataPtr->cardType], 51, + sFireRedTrainerCardPage1TextColors, TEXT_SPEED_FF, sTrainerCardDataPtr->strings[TRAINER_CARD_STRING_LINK_RECORD]); + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], 130, 51, sFireRedTrainerCardPage1TextColors, TEXT_SPEED_FF, sTrainerCardDataPtr->strings[TRAINER_CARD_STRING_WIN_LOSS]); + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], 144, 51, sTrainerCardPage2TextColors, TEXT_SPEED_FF, sTrainerCardDataPtr->strings[TRAINER_CARD_STRING_LINK_WINS]); + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], 192, 51, sTrainerCardPage2TextColors, TEXT_SPEED_FF, sTrainerCardDataPtr->strings[TRAINER_CARD_STRING_LINK_LOSSES]); + } +} + +static void PrintTradesNumOnCard(void) +{ + if (sTrainerCardDataPtr->hasTrades) + { + StringCopy(sTrainerCardDataPtr->strings[TRAINER_CARD_STRING_TRADES], gText_PokemonTrades); + ConvertIntToDecimalStringN(sTrainerCardDataPtr->strings[TRAINER_CARD_STRING_TRADE_COUNT], sTrainerCardDataPtr->trainerCard.pokemonTrades, STR_CONV_MODE_RIGHT_ALIGN, 5); + } +} + +static void PrintTradesStringOnCard(void) +{ + if (sTrainerCardDataPtr->hasTrades) + { + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], sTrainerCardHofDebutXPositions[sTrainerCardDataPtr->cardType], 67, sFireRedTrainerCardPage1TextColors, TEXT_SPEED_FF, sTrainerCardDataPtr->strings[TRAINER_CARD_STRING_TRADES]); + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], 186, 67, sTrainerCardPage2TextColors, TEXT_SPEED_FF, sTrainerCardDataPtr->strings[TRAINER_CARD_STRING_TRADE_COUNT]); + } +} + +static void PrintBerryCrushNumOnCard(void) +{ + if (sTrainerCardDataPtr->cardType != CARD_TYPE_EMERALD) + { + StringCopy(sTrainerCardDataPtr->strings[TRAINER_CARD_STRING_BERRY_CRUSH], gText_BerryCrushes); + ConvertIntToDecimalStringN(sTrainerCardDataPtr->strings[TRAINER_CARD_STRING_BERRY_CRUSH_COUNT], sTrainerCardDataPtr->trainerCard.berryCrushPoints, STR_CONV_MODE_RIGHT_ALIGN, 5); + } +} + +static void PrintBerryCrushStringOnCard(void) +{ + if (sTrainerCardDataPtr->cardType != CARD_TYPE_EMERALD && sTrainerCardDataPtr->trainerCard.berryCrushPoints) + { + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], sTrainerCardHofDebutXPositions[sTrainerCardDataPtr->cardType], 99, sFireRedTrainerCardPage1TextColors, TEXT_SPEED_FF, sTrainerCardDataPtr->strings[TRAINER_CARD_STRING_BERRY_CRUSH]); + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], 186, 99, sTrainerCardPage2TextColors, TEXT_SPEED_FF, sTrainerCardDataPtr->strings[TRAINER_CARD_STRING_BERRY_CRUSH_COUNT]); + } +} + +static void PrintUnionNumOnCard(void) +{ + if (sTrainerCardDataPtr->cardType != CARD_TYPE_EMERALD) + { + StringCopy(sTrainerCardDataPtr->strings[TRAINER_CARD_STRING_UNION_ROOM], gText_UnionRoomTradesBattles); + ConvertIntToDecimalStringN(sTrainerCardDataPtr->strings[TRAINER_CARD_STRING_UNION_ROOM_NUM], sTrainerCardDataPtr->trainerCard.unionRoomNum, STR_CONV_MODE_RIGHT_ALIGN, 5); + } +} + +static void PrintUnionStringOnCard(void) +{ + if (sTrainerCardDataPtr->cardType != CARD_TYPE_EMERALD && sTrainerCardDataPtr->trainerCard.unionRoomNum) + { + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], sTrainerCardHofDebutXPositions[sTrainerCardDataPtr->cardType], 83, sFireRedTrainerCardPage1TextColors, TEXT_SPEED_FF, sTrainerCardDataPtr->strings[TRAINER_CARD_STRING_UNION_ROOM]); + AddTextPrinterParameterized3(1, sTrainerCardFontIds[1], 186, 83, sTrainerCardPage2TextColors, TEXT_SPEED_FF, sTrainerCardDataPtr->strings[TRAINER_CARD_STRING_UNION_ROOM_NUM]); + } +} + +static void TrainerCard_PrintPokemonIconsOnCard(void) +{ + u8 i; + u8 buffer[6]; + u8 buffer2[6]; + + memcpy(buffer, sUnknown_83CD94C, sizeof(sUnknown_83CD94C)); + memcpy(buffer2, sUnknown_83CD952, sizeof(sUnknown_83CD952)); + if (sTrainerCardDataPtr->cardType != CARD_TYPE_EMERALD) + { + for (i = 0; i < 6; i++) + { + if (sTrainerCardDataPtr->trainerCard.monSpecies[i]) + { + u8 monSpecies = GetMonIconPaletteIndexFromSpecies(sTrainerCardDataPtr->trainerCard.monSpecies[i]); + WriteSequenceToBgTilemapBuffer(3, 16 * i + 224, buffer2[i] + 3, 15, 4, 4, buffer[monSpecies], 1); + } + } + } +} + + +static void sub_808AB10(void) +{ + u8 i; + + CpuSet(gMonIconPalettes, sTrainerCardDataPtr->monIconPals, 32 * 3); + switch (sTrainerCardDataPtr->trainerCard.var_4E) + { + case 0: + break; + case 1: + TintPalette_CustomTone(sTrainerCardDataPtr->monIconPals, 96, 0, 0, 0); + break; + case 2: + TintPalette_CustomTone(sTrainerCardDataPtr->monIconPals, 96, 500, 330, 310); + break; + case 3: + TintPalette_SepiaTone(sTrainerCardDataPtr->monIconPals, 96); + break; + } + + LoadPalette(sTrainerCardDataPtr->monIconPals, 80, 192); + for (i = 0; i < 6; i++) + { + LoadBgTiles(3, GetMonIconTiles(sTrainerCardDataPtr->trainerCard.monSpecies[i], 0), 512, 16 * i + 32); + } +} + +static void sub_808ABE0(void) +{ + u8 i; + u8 buffer[4]; + + memcpy(buffer, sUnknown_83CD958, sizeof(sUnknown_83CD958)); + if (sTrainerCardDataPtr->cardType == CARD_TYPE_FRLG && sTrainerCardDataPtr->trainerCard.var_4C == 1) + { + for (i = 0; i < 3; i++) + { + u8 var_50 = sTrainerCardDataPtr->trainerCard.var_50[i]; + if (sTrainerCardDataPtr->trainerCard.var_50[i]) + WriteSequenceToBgTilemapBuffer(3, i * 4 + 320, i * 3 + 2, 2, 2, 2, buffer[var_50 - 1], 1); + } + } +} + +static void TrainerCardLoadStickerPals(void) +{ + LoadPalette(sTrainerCardStickerPal1, 176, 32); + LoadPalette(sTrainerCardStickerPal2, 192, 32); + LoadPalette(sTrainerCardStickerPal3, 208, 32); + LoadPalette(sTrainerCardStickerPal4, 224, 32); + LoadBgTiles(3, sTrainerCardDataPtr->bgTiles, 1024, 128); +} + +static void PutTrainerCardWindow(u8 windowId) +{ + PutWindowTilemap(windowId); + CopyWindowToVram(windowId, 3); +} + +static bool8 SetTrainerCardBgsAndPals(void) +{ + switch (sTrainerCardDataPtr->bgPalLoadState) + { + case 0: + LoadBgTiles(3, sTrainerCardDataPtr->cardTiles, 1024, 0); + break; + case 1: + LoadBgTiles(0, sTrainerCardDataPtr->var_18CC, 6144, 0); + break; + case 2: + if (sTrainerCardDataPtr->cardType == CARD_TYPE_EMERALD) + LoadPalette(sEmeraldTrainerCardStarPals[sTrainerCardDataPtr->trainerCard.stars], 0, 96); + else + LoadPalette(sFireRedTrainerCardStarPals[sTrainerCardDataPtr->trainerCard.stars], 0, 96); + break; + case 3: + 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); + return TRUE; + } + + sTrainerCardDataPtr->bgPalLoadState++; + return FALSE; +} + +static void LoadTrainerCardTilemap2(const u16* ptr) +{ + s16 i, j; + u16 *dst = sTrainerCardDataPtr->bgTilemap2; + + for (i = 0; i < 20; i++) + { + for (j = 0; j < 32; j++) + { + if (j < 30) + dst[32 * i + j] = ptr[30 * i + j]; + else + dst[32 * i + j] = ptr[0]; + } + } + + CopyBgTilemapBufferToVram(2); +} + +static void LoadTrainerCardTilemap0(const u16* ptr) +{ + s16 i, j; + u16 *dst = sTrainerCardDataPtr->bgTilemap0; + + for (i = 0; i < 20; i++) + { + for (j = 0; j < 32; j++) + { + if (j < 30) + dst[32 * i + j] = ptr[30 * i + j]; + else + dst[32 * i + j] = ptr[0]; + } + } + + CopyBgTilemapBufferToVram(0); +} + +static void TrainerCard_PrintStarsAndBadgesOnCard(void) +{ + s16 i, x; + u16 tileNum = 192; + u8 palNum = 3; + + FillBgTilemapBufferRect(3, 143, 15, sUnknown_83CD95C[sTrainerCardDataPtr->cardType], sTrainerCardDataPtr->trainerCard.stars, 1, 4); + if (!sTrainerCardDataPtr->isLink) + { + x = 4; + for (i = 0; i < BADGE_COUNT; i++, tileNum += 2, x += 3) + { + if (sTrainerCardDataPtr->hasBadge[i]) + { + 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_808B090(void) +{ + if (sTrainerCardDataPtr->cardType != CARD_TYPE_EMERALD) + { + if (sTrainerCardDataPtr->hasTrades) + { + 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); + FillBgTilemapBufferRect(3, 157, 27, 12, 1, 1, 1); + } + } + else + { + if (sTrainerCardDataPtr->hasTrades) + { + FillBgTilemapBufferRect(3, 141, 26, 9, 1, 1, 0); + FillBgTilemapBufferRect(3, 157, 26, 10, 1, 1, 0); + } + } + + CopyBgTilemapBufferToVram(3); +} + +static void sub_808B180(void) +{ + if (++sTrainerCardDataPtr->var_6 > 60) + { + sTrainerCardDataPtr->var_6 = 0; + sTrainerCardDataPtr->var_7 ^= 1; + sTrainerCardDataPtr->var_7BCE = TRUE; + } +} + +u8 GetTrainerCardStars(u8 cardId) +{ + return gTrainerCards[cardId].stars; +} + +static void sub_808B1D4(void) +{ + u8 taskId = CreateTask(sub_808B21C, 0); + sub_808B21C(taskId); + SetHBlankCallback(HBlankCB_TrainerCard); +} + +static bool8 sub_808B1FC(void) +{ + if (FindTaskIdByFunc(sub_808B21C) == 0xFF) + return TRUE; + else + return FALSE; +} + +static void sub_808B21C(u8 taskId) +{ + while(sTrainerCardTasks[gTasks[taskId].data[0]](&gTasks[taskId])) + ; +} + +static bool8 sub_808B254(struct Task* task) +{ + u32 i; + + HideBg(1); + HideBg(3); + ScanlineEffect_Stop(); + ScanlineEffect_Clear(); + for (i = 0; i < 160; i++) + { + gScanlineEffectRegBuffers[1][i] = 0; + } + + task->data[0]++; + return FALSE; +} + +static bool8 sub_808B294(struct Task* task) +{ + u32 r4, r5, r10, r7, r6, var_24, r9, var; + s16 i; + + sTrainerCardDataPtr->allowDMACopy = FALSE; + if (task->data[1] >= 77) + task->data[1] = 77; + else + task->data[1] += 7; + + sTrainerCardDataPtr->var_7BCC = task->data[1]; + sub_8089BD8(task->data[1]); + + r7 = task->data[1]; + r9 = 160 - r7; + r4 = r9 - r7; + r6 = -r7 << 16; + r5 = 0xA00000 / r4; + r5 += 0xFFFF0000; + var_24 = r6; + var_24 += r5 * r4; + r10 = r5 / r4; + r5 *= 2; + + for (i = 0; i < r7; i++) + { + gScanlineEffectRegBuffers[0][i] = -i; + } + + for (; i < (s16)r9; i++) + { + var = r6 >> 16; + r6 += r5; + 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]++; + + return FALSE; +} + +static bool8 sub_808B3C4(struct Task* task) +{ + sTrainerCardDataPtr->allowDMACopy = FALSE; + if (sub_8058244() == TRUE) + return FALSE; + + do + { + switch (sTrainerCardDataPtr->var_4) + { + case 0: + FillWindowPixelBuffer(1, PIXEL_FILL(0)); + FillBgTilemapBufferRect_Palette0(3, 0, 0, 0, 32, 32); + break; + case 1: + if (!sTrainerCardDataPtr->var_8) + { + if (!PrintStringsOnCardPage2()) + return FALSE; + } + else + { + if (!PrintAllOnCardPage1()) + return FALSE; + } + break; + case 2: + if (!sTrainerCardDataPtr->var_8) + LoadTrainerCardTilemap0(sTrainerCardDataPtr->var_96C); + else + PutTrainerCardWindow(1); + break; + case 3: + if (!sTrainerCardDataPtr->var_8) + sub_808B090(); + else + FillWindowPixelBuffer(2, PIXEL_FILL(0)); + break; + case 4: + if (sTrainerCardDataPtr->var_8) + sub_808B838(); + break; + default: + task->data[0]++; + sTrainerCardDataPtr->allowDMACopy = TRUE; + sTrainerCardDataPtr->var_4 = 0; + return FALSE; + } + sTrainerCardDataPtr->var_4++; + } while (gReceivedRemoteLinkPlayers == 0); + + return FALSE; +} + +static bool8 sub_808B4D8(struct Task* task) +{ + sTrainerCardDataPtr->allowDMACopy = FALSE; + if (sTrainerCardDataPtr->var_8) + { + PutTrainerCardWindow(2); + LoadTrainerCardTilemap2(&sTrainerCardDataPtr->var_E1C); + LoadTrainerCardTilemap0(&sTrainerCardDataPtr->var_4BC); + TrainerCard_PrintStarsAndBadgesOnCard(); + } + + PutTrainerCardWindow(1); + sTrainerCardDataPtr->var_8 ^= 1; + task->data[0]++; + sTrainerCardDataPtr->allowDMACopy = TRUE; + PlaySE(SE_CARD2); + return FALSE; +} + +static bool8 sub_808B540(struct Task* task) +{ + u32 r4, r5, r10, r7, r6, var_24, r9, var; + s16 i; + + sTrainerCardDataPtr->allowDMACopy = FALSE; + if (task->data[1] <= 5) + task->data[1] = 0; + else + task->data[1] -= 5; + + sTrainerCardDataPtr->var_7BCC = task->data[1]; + sub_8089BD8(task->data[1]); + + r7 = task->data[1]; + r9 = 160 - r7; + r4 = r9 - r7; + r6 = -r7 << 16; + r5 = 0xA00000 / r4; + r5 += 0xFFFF0000; + var_24 = r6; + var_24 += r5 * r4; + r10 = r5 / r4; + r5 /= 2; + + for (i = 0; i < r7; i++) + { + gScanlineEffectRegBuffers[0][i] = -i; + } + + for (; i < (s16)(r9); i++) + { + var = r6 >> 16; + r6 += r5; + 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]++; + + return FALSE; +} + +static bool8 sub_808B66C(struct Task *task) +{ + ShowBg(1); + ShowBg(3); + SetHBlankCallback(NULL); + DestroyTask(FindTaskIdByFunc(sub_808B21C)); + return FALSE; +} + +void ShowPlayerTrainerCard(void (*callback)(void)) +{ + sTrainerCardDataPtr = AllocZeroed(sizeof(*sTrainerCardDataPtr)); + sTrainerCardDataPtr->callback2 = callback; + if (InUnionRoom() == TRUE) + sTrainerCardDataPtr->isLink = TRUE; + else + sTrainerCardDataPtr->isLink = FALSE; + + sTrainerCardDataPtr->language = GAME_LANGUAGE; + TrainerCard_GenerateCardForLinkPlayer(&sTrainerCardDataPtr->trainerCard); + SetMainCallback2(CB2_InitTrainerCard); +} + +void ShowTrainerCardInLink(u8 cardId, void (*callback)(void)) +{ + sTrainerCardDataPtr = AllocZeroed(sizeof(*sTrainerCardDataPtr)); + sTrainerCardDataPtr->callback2 = callback; + sTrainerCardDataPtr->isLink = TRUE; + sTrainerCardDataPtr->trainerCard = gTrainerCards[cardId]; + sTrainerCardDataPtr->language = gLinkPlayers[cardId].language; + SetMainCallback2(CB2_InitTrainerCard); +} + +static void sub_808B774(void) +{ + u8 i; + + sTrainerCardDataPtr->taskState = 0; + sTrainerCardDataPtr->var_6 = gSaveBlock2Ptr->playTimeVBlanks; + sTrainerCardDataPtr->var_7 = 0; + sTrainerCardDataPtr->var_8 = 0; + 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 GetCardType(void) +{ + if (sTrainerCardDataPtr == NULL) + { + if (gGameVersion == VERSION_FIRE_RED || gGameVersion == VERSION_LEAF_GREEN) + return CARD_TYPE_FRLG; + else + return CARD_TYPE_EMERALD; + } + else + { + if (sTrainerCardDataPtr->trainerCard.version == VERSION_FIRE_RED || sTrainerCardDataPtr->trainerCard.version == VERSION_LEAF_GREEN) + return CARD_TYPE_FRLG; + 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 + { + 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); + } + } +} + +// Unused +static void Unref_InitTrainerCard(void (*callback)(void)) +{ + ShowPlayerTrainerCard(callback); + SetMainCallback2(CB2_InitTrainerCard); +} + +// Unused +static void Unref_InitTrainerCardLink(void (*callback)(void)) +{ + memcpy(gTrainerCards, &sLinkPlayerTrainerCardTemplate1, sizeof(sLinkPlayerTrainerCardTemplate1)); + ShowTrainerCardInLink(CARD_TYPE_FRLG, callback); + SetMainCallback2(CB2_InitTrainerCard); +} + +// Unused +static void Unref_InitTrainerCardLink2(void (*callback)(void)) +{ + memcpy(gTrainerCards, &sLinkPlayerTrainerCardTemplate2, sizeof(sLinkPlayerTrainerCardTemplate2)); + ShowTrainerCardInLink(CARD_TYPE_FRLG, callback); + SetMainCallback2(CB2_InitTrainerCard); +} + diff --git a/sym_ewram.txt b/sym_ewram.txt index 973b74ec4..ba4f765d0 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -158,12 +158,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 |