diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2019-07-13 14:00:58 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2019-07-13 14:00:58 -0400 |
commit | b4677561d52e862c4e5ff060904067ed26acca08 (patch) | |
tree | 52756c972d6318630ad6332482f73efaa784a5dd | |
parent | be422beca672a776ad2b9b8025c5d828150a3314 (diff) |
battle_record: through sub_80CD98C
-rw-r--r-- | asm/battle_records.s | 997 | ||||
-rw-r--r-- | asm/battle_tower.s | 8 | ||||
-rw-r--r-- | asm/cable_club.s | 8 | ||||
-rw-r--r-- | asm/link_rfu_3.s | 8 | ||||
-rw-r--r-- | asm/overworld.s | 8 | ||||
-rw-r--r-- | asm/post_battle_event_funcs.s | 2 | ||||
-rw-r--r-- | asm/trainer_card.s | 16 | ||||
-rw-r--r-- | data/strings.s | 82 | ||||
-rw-r--r-- | include/overworld.h | 3 | ||||
-rw-r--r-- | include/trainer_card.h | 43 | ||||
-rw-r--r-- | include/trainer_tower.h | 6 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/battle_records.c | 420 | ||||
-rw-r--r-- | sym_ewram.txt | 2 |
14 files changed, 539 insertions, 1065 deletions
diff --git a/asm/battle_records.s b/asm/battle_records.s index d0a99b4cf..0d5db750c 100644 --- a/asm/battle_records.s +++ b/asm/battle_records.s @@ -5,1003 +5,6 @@ .text - thumb_func_start sub_80CD228 -sub_80CD228: @ 80CD228 - push {lr} - movs r0, 0 - bl SetVBlankCallback - ldr r0, _080CD23C @ =sub_80CD240 - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_080CD23C: .4byte sub_80CD240 - thumb_func_end sub_80CD228 - - thumb_func_start sub_80CD240 -sub_80CD240: @ 80CD240 - push {r4,lr} - sub sp, 0x4 - ldr r0, _080CD260 @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x7 - bls _080CD254 - b _080CD376 -_080CD254: - lsls r0, 2 - ldr r1, _080CD264 @ =_080CD268 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080CD260: .4byte gMain -_080CD264: .4byte _080CD268 - .align 2, 0 -_080CD268: - .4byte _080CD288 - .4byte _080CD294 - .4byte _080CD29A - .4byte _080CD2CC - .4byte _080CD2E2 - .4byte _080CD302 - .4byte _080CD314 - .4byte _080CD338 -_080CD288: - movs r0, 0 - bl SetVBlankCallback - bl sub_80CD4D0 - b _080CD324 -_080CD294: - bl sub_80CD608 - b _080CD324 -_080CD29A: - ldr r4, _080CD2C4 @ =gUnknown_2039A1C - movs r0, 0x80 - lsls r0, 4 - bl AllocZeroed - str r0, [r4] - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, _080CD2C8 @ =gUnknown_83F6C7C - movs r0, 0 - movs r2, 0x2 - bl InitBgsFromTemplates - ldr r1, [r4] - movs r0, 0x3 - bl SetBgTilemapBuffer - bl sub_80CD638 - b _080CD324 - .align 2, 0 -_080CD2C4: .4byte gUnknown_2039A1C -_080CD2C8: .4byte gUnknown_83F6C7C -_080CD2CC: - movs r0, 0x3 - bl sub_80CDCD0 - movs r0, 0 - bl stdpal_get - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - b _080CD324 -_080CD2E2: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080CD376 - movs r0, 0 - bl ShowBg - movs r0, 0x3 - bl ShowBg - movs r0, 0x3 - bl CopyBgTilemapBufferToVram - b _080CD324 -_080CD302: - ldr r0, _080CD310 @ =gUnknown_83F6C68 - bl InitWindows - bl DeactivateAllTextPrinters - b _080CD324 - .align 2, 0 -_080CD310: .4byte gUnknown_83F6C68 -_080CD314: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade -_080CD324: - ldr r1, _080CD334 @ =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080CD376 - .align 2, 0 -_080CD334: .4byte gMain -_080CD338: - bl sub_80CD628 - ldr r0, _080CD350 @ =sub_80CD38C - bl SetVBlankCallback - ldr r0, _080CD354 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - cmp r0, 0 - beq _080CD358 - bl sub_815EC8C - b _080CD35C - .align 2, 0 -_080CD350: .4byte sub_80CD38C -_080CD354: .4byte gSpecialVar_0x8004 -_080CD358: - bl sub_80CDBE4 -_080CD35C: - ldr r0, _080CD380 @ =sub_80CD3B8 - movs r1, 0x8 - bl CreateTask - ldr r0, _080CD384 @ =sub_80CD3A0 - bl SetMainCallback2 - ldr r0, _080CD388 @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r0, r1 - movs r1, 0 - strb r1, [r0] -_080CD376: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CD380: .4byte sub_80CD3B8 -_080CD384: .4byte sub_80CD3A0 -_080CD388: .4byte gMain - thumb_func_end sub_80CD240 - - thumb_func_start sub_80CD38C -sub_80CD38C: @ 80CD38C - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_80CD38C - - thumb_func_start sub_80CD3A0 -sub_80CD3A0: @ 80CD3A0 - push {lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_80CD3A0 - - thumb_func_start sub_80CD3B8 -sub_80CD3B8: @ 80CD3B8 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _080CD3DC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080CD3D8 - ldr r0, _080CD3E0 @ =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldr r0, _080CD3E4 @ =sub_80CD3E8 - str r0, [r1] -_080CD3D8: - pop {r0} - bx r0 - .align 2, 0 -_080CD3DC: .4byte gPaletteFade -_080CD3E0: .4byte gTasks -_080CD3E4: .4byte sub_80CD3E8 - thumb_func_end sub_80CD3B8 - - thumb_func_start sub_80CD3E8 -sub_80CD3E8: @ 80CD3E8 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080CD41C @ =gTasks - adds r4, r1, r0 - ldr r0, _080CD420 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080CD40C - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080CD416 -_080CD40C: - movs r0, 0x5 - bl PlaySE - ldr r0, _080CD424 @ =sub_80CD428 - str r0, [r4] -_080CD416: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CD41C: .4byte gTasks -_080CD420: .4byte gMain -_080CD424: .4byte sub_80CD428 - thumb_func_end sub_80CD3E8 - - thumb_func_start sub_80CD428 -sub_80CD428: @ 80CD428 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _080CD458 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080CD45C @ =sub_80CD460 - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CD458: .4byte gTasks -_080CD45C: .4byte sub_80CD460 - thumb_func_end sub_80CD428 - - thumb_func_start sub_80CD460 -sub_80CD460: @ 80CD460 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080CD498 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080CD490 - ldr r0, _080CD49C @ =CB2_ReturnToFieldContinueScriptPlayMapMusic - bl SetMainCallback2 - ldr r0, _080CD4A0 @ =gUnknown_2039A1C - ldr r0, [r0] - bl Free - movs r0, 0 - bl sub_80CD4A4 - bl FreeAllWindowBuffers - adds r0, r4, 0 - bl DestroyTask -_080CD490: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CD498: .4byte gPaletteFade -_080CD49C: .4byte CB2_ReturnToFieldContinueScriptPlayMapMusic -_080CD4A0: .4byte gUnknown_2039A1C - thumb_func_end sub_80CD460 - - thumb_func_start sub_80CD4A4 -sub_80CD4A4: @ 80CD4A4 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - movs r1, 0 - bl FillWindowPixelBuffer - adds r0, r4, 0 - bl ClearWindowTilemap - adds r0, r4, 0 - movs r1, 0x2 - bl CopyWindowToVram - adds r0, r4, 0 - bl RemoveWindow - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80CD4A4 - - thumb_func_start sub_80CD4D0 -sub_80CD4D0: @ 80CD4D0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - movs r3, 0xC0 - lsls r3, 19 - movs r4, 0xC0 - lsls r4, 9 - add r0, sp, 0x4 - mov r8, r0 - mov r2, sp - movs r6, 0 - ldr r1, _080CD600 @ =0x040000d4 - movs r5, 0x80 - lsls r5, 5 - ldr r7, _080CD604 @ =0x81000800 - movs r0, 0x81 - lsls r0, 24 - mov r12, r0 -_080CD4F6: - strh r6, [r2] - mov r0, sp - str r0, [r1] - str r3, [r1, 0x4] - str r7, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r5 - subs r4, r5 - cmp r4, r5 - bhi _080CD4F6 - strh r6, [r2] - mov r2, sp - str r2, [r1] - str r3, [r1, 0x4] - lsrs r0, r4, 1 - mov r2, r12 - orrs r0, r2 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r0, 0xE0 - lsls r0, 19 - movs r3, 0x80 - lsls r3, 3 - movs r4, 0 - str r4, [sp, 0x4] - ldr r2, _080CD600 @ =0x040000d4 - mov r1, r8 - str r1, [r2] - str r0, [r2, 0x4] - lsrs r0, r3, 2 - movs r1, 0x85 - lsls r1, 24 - orrs r0, r1 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] - movs r1, 0xA0 - lsls r1, 19 - mov r0, sp - strh r4, [r0] - str r0, [r2] - str r1, [r2, 0x4] - lsrs r3, 1 - movs r0, 0x81 - lsls r0, 24 - orrs r3, r0 - str r3, [r2, 0x8] - ldr r0, [r2, 0x8] - movs r0, 0 - movs r1, 0 - bl SetGpuReg - movs r0, 0x8 - movs r1, 0 - bl SetGpuReg - movs r0, 0x10 - movs r1, 0 - bl SetGpuReg - movs r0, 0x12 - movs r1, 0 - bl SetGpuReg - movs r0, 0xA - movs r1, 0 - bl SetGpuReg - movs r0, 0x14 - movs r1, 0 - bl SetGpuReg - movs r0, 0x16 - movs r1, 0 - bl SetGpuReg - movs r0, 0xC - movs r1, 0 - bl SetGpuReg - movs r0, 0x18 - movs r1, 0 - bl SetGpuReg - movs r0, 0x1A - movs r1, 0 - bl SetGpuReg - movs r0, 0xE - movs r1, 0 - bl SetGpuReg - movs r0, 0x1C - movs r1, 0 - bl SetGpuReg - movs r0, 0x1E - movs r1, 0 - bl SetGpuReg - movs r0, 0x40 - movs r1, 0 - bl SetGpuReg - movs r0, 0x44 - movs r1, 0 - bl SetGpuReg - movs r0, 0x48 - movs r1, 0 - bl SetGpuReg - movs r0, 0x4A - movs r1, 0 - bl SetGpuReg - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080CD600: .4byte 0x040000d4 -_080CD604: .4byte 0x81000800 - thumb_func_end sub_80CD4D0 - - thumb_func_start sub_80CD608 -sub_80CD608: @ 80CD608 - push {lr} - bl ScanlineEffect_Stop - bl ResetTasks - bl ResetSpriteData - bl ResetAllPicSprites - bl ResetPaletteFade - bl FreeAllSpritePalettes - pop {r0} - bx r0 - thumb_func_end sub_80CD608 - - thumb_func_start sub_80CD628 -sub_80CD628: @ 80CD628 - push {lr} - movs r1, 0x94 - lsls r1, 4 - movs r0, 0 - bl SetGpuReg - pop {r0} - bx r0 - thumb_func_end sub_80CD628 - - thumb_func_start sub_80CD638 -sub_80CD638: @ 80CD638 - push {lr} - 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 - pop {r0} - bx r0 - thumb_func_end sub_80CD638 - - thumb_func_start InitLinkBattleRecord -InitLinkBattleRecord: @ 80CD690 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - mov r1, sp - movs r0, 0 - strh r0, [r1] - ldr r2, _080CD6BC @ =0x01000008 - mov r0, sp - adds r1, r4, 0 - bl CpuSet - movs r0, 0xFF - strb r0, [r4] - movs r0, 0 - strh r0, [r4, 0x8] - strh r0, [r4, 0xA] - strh r0, [r4, 0xC] - strh r0, [r4, 0xE] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CD6BC: .4byte 0x01000008 - thumb_func_end InitLinkBattleRecord - - thumb_func_start InitLinkBattleRecords_ -InitLinkBattleRecords_: @ 80CD6C0 - push {r4,r5,lr} - adds r4, r0, 0 - movs r5, 0x4 -_080CD6C6: - adds r0, r4, 0 - bl InitLinkBattleRecord - adds r4, 0x10 - subs r5, 0x1 - cmp r5, 0 - bge _080CD6C6 - movs r0, 0x17 - movs r1, 0 - bl sub_8054F00 - movs r0, 0x18 - movs r1, 0 - bl sub_8054F00 - movs r0, 0x19 - movs r1, 0 - bl sub_8054F00 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end InitLinkBattleRecords_ - - thumb_func_start GetLinkBattleRecordTotalBattles -GetLinkBattleRecordTotalBattles: @ 80CD6F4 - adds r1, r0, 0 - ldrh r0, [r1, 0xA] - ldrh r2, [r1, 0xC] - adds r0, r2 - ldrh r1, [r1, 0xE] - adds r0, r1 - bx lr - thumb_func_end GetLinkBattleRecordTotalBattles - - thumb_func_start sub_80CD704 -sub_80CD704: @ 80CD704 - push {r4-r7,lr} - adds r7, r1, 0 - lsls r2, 16 - lsrs r6, r2, 16 - movs r5, 0 - adds r4, r0, 0 -_080CD710: - adds r0, r4, 0 - adds r1, r7, 0 - movs r2, 0x7 - bl StringCompareN - cmp r0, 0 - bne _080CD728 - ldrh r0, [r4, 0x8] - cmp r0, r6 - bne _080CD728 - adds r0, r5, 0 - b _080CD732 -_080CD728: - adds r4, 0x10 - adds r5, 0x1 - cmp r5, 0x4 - ble _080CD710 - movs r0, 0x5 -_080CD732: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80CD704 - - thumb_func_start SortLinkBattleRecords -SortLinkBattleRecords: @ 80CD738 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x14 - mov r8, r0 - movs r0, 0x4 -_080CD746: - subs r2, r0, 0x1 - mov r9, r2 - cmp r2, 0 - blt _080CD7A0 - lsls r0, 4 - mov r1, r8 - adds r6, r1, r0 - lsls r0, r2, 4 - adds r5, r0, r1 -_080CD758: - adds r0, r6, 0 - str r2, [sp, 0x10] - bl GetLinkBattleRecordTotalBattles - adds r4, r0, 0 - adds r0, r5, 0 - bl GetLinkBattleRecordTotalBattles - ldr r2, [sp, 0x10] - cmp r4, r0 - ble _080CD792 - mov r1, sp - adds r0, r6, 0 - ldm r0!, {r3,r4,r7} - stm r1!, {r3,r4,r7} - ldr r0, [r0] - str r0, [r1] - adds r1, r6, 0 - adds r0, r5, 0 - ldm r0!, {r3,r4,r7} - stm r1!, {r3,r4,r7} - ldr r0, [r0] - str r0, [r1] - adds r1, r5, 0 - mov r0, sp - ldm r0!, {r3,r4,r7} - stm r1!, {r3,r4,r7} - ldr r0, [r0] - str r0, [r1] -_080CD792: - subs r5, 0x10 - movs r0, 0x1 - negs r0, r0 - add r9, r0 - mov r1, r9 - cmp r1, 0 - bge _080CD758 -_080CD7A0: - adds r0, r2, 0 - cmp r0, 0 - bgt _080CD746 - add sp, 0x14 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end SortLinkBattleRecords - - thumb_func_start UpdateLinkBattleRecord -UpdateLinkBattleRecord: @ 80CD7B4 - push {lr} - adds r2, r0, 0 - cmp r1, 0x2 - beq _080CD7E4 - cmp r1, 0x2 - bgt _080CD7C6 - cmp r1, 0x1 - beq _080CD7CC - b _080CD80E -_080CD7C6: - cmp r1, 0x3 - beq _080CD7FC - b _080CD80E -_080CD7CC: - ldrh r0, [r2, 0xA] - adds r0, 0x1 - strh r0, [r2, 0xA] - lsls r0, 16 - lsrs r0, 16 - ldr r1, _080CD7E0 @ =0x0000270f - cmp r0, r1 - bls _080CD80E - strh r1, [r2, 0xA] - b _080CD80E - .align 2, 0 -_080CD7E0: .4byte 0x0000270f -_080CD7E4: - ldrh r0, [r2, 0xC] - adds r0, 0x1 - strh r0, [r2, 0xC] - lsls r0, 16 - lsrs r0, 16 - ldr r1, _080CD7F8 @ =0x0000270f - cmp r0, r1 - bls _080CD80E - strh r1, [r2, 0xC] - b _080CD80E - .align 2, 0 -_080CD7F8: .4byte 0x0000270f -_080CD7FC: - ldrh r0, [r2, 0xE] - adds r0, 0x1 - strh r0, [r2, 0xE] - lsls r0, 16 - lsrs r0, 16 - ldr r1, _080CD814 @ =0x0000270f - cmp r0, r1 - bls _080CD80E - strh r1, [r2, 0xE] -_080CD80E: - pop {r0} - bx r0 - .align 2, 0 -_080CD814: .4byte 0x0000270f - thumb_func_end UpdateLinkBattleRecord - - thumb_func_start UpdateLinkBattleGameStats -UpdateLinkBattleGameStats: @ 80CD818 - push {r4,lr} - cmp r0, 0x2 - beq _080CD832 - cmp r0, 0x2 - bgt _080CD828 - cmp r0, 0x1 - beq _080CD82E - b _080CD84A -_080CD828: - cmp r0, 0x3 - beq _080CD836 - b _080CD84A -_080CD82E: - movs r4, 0x17 - b _080CD838 -_080CD832: - movs r4, 0x18 - b _080CD838 -_080CD836: - movs r4, 0x19 -_080CD838: - adds r0, r4, 0 - bl GetGameStat - ldr r1, _080CD850 @ =0x0000270e - cmp r0, r1 - bhi _080CD84A - adds r0, r4, 0 - bl IncrementGameStat -_080CD84A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CD850: .4byte 0x0000270e - thumb_func_end UpdateLinkBattleGameStats - - thumb_func_start sub_80CD854 -sub_80CD854: @ 80CD854 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - adds r6, r0, 0 - adds r4, r1, 0 - mov r8, r3 - ldr r0, [sp, 0x20] - lsls r2, 16 - lsrs r7, r2, 16 - cmp r0, 0x1 - bne _080CD882 - mov r1, sp - movs r0, 0xFC - strb r0, [r1] - movs r0, 0x15 - strb r0, [r1, 0x1] - mov r0, sp - adds r0, 0x2 - adds r1, r4, 0 - bl StringCopy - b _080CD88A -_080CD882: - mov r0, sp - adds r1, r4, 0 - bl StringCopy -_080CD88A: - mov r0, r8 - bl UpdateLinkBattleGameStats - adds r0, r6, 0 - bl SortLinkBattleRecords - adds r0, r6, 0 - mov r1, sp - adds r2, r7, 0 - bl sub_80CD704 - adds r5, r0, 0 - cmp r5, 0x5 - bne _080CD8BE - movs r5, 0x4 - adds r4, r6, 0 - adds r4, 0x40 - adds r0, r4, 0 - bl InitLinkBattleRecord - adds r0, r4, 0 - mov r1, sp - movs r2, 0x7 - bl StringCopyN - strh r7, [r4, 0x8] -_080CD8BE: - lsls r0, r5, 4 - adds r0, r6, r0 - mov r1, r8 - bl UpdateLinkBattleRecord - adds r0, r6, 0 - bl SortLinkBattleRecords - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80CD854 - - thumb_func_start InitLinkBattleRecords -InitLinkBattleRecords: @ 80CD8DC - push {lr} - ldr r0, _080CD8F0 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldr r1, _080CD8F4 @ =0x00000a98 - adds r0, r1 - bl InitLinkBattleRecords_ - pop {r0} - bx r0 - .align 2, 0 -_080CD8F0: .4byte gSaveBlock2Ptr -_080CD8F4: .4byte 0x00000a98 - thumb_func_end InitLinkBattleRecords - - thumb_func_start sub_80CD8F8 -sub_80CD8F8: @ 80CD8F8 - push {lr} - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 5 - ldr r0, _080CD91C @ =gUnknown_2039638 - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - ldr r2, _080CD920 @ =0x0000270f - cmp r0, r2 - bls _080CD916 - strh r2, [r1] -_080CD916: - pop {r0} - bx r0 - .align 2, 0 -_080CD91C: .4byte gUnknown_2039638 -_080CD920: .4byte 0x0000270f - thumb_func_end sub_80CD8F8 - - thumb_func_start sub_80CD924 -sub_80CD924: @ 80CD924 - push {lr} - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 5 - ldr r0, _080CD948 @ =gUnknown_203963A - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - ldr r2, _080CD94C @ =0x0000270f - cmp r0, r2 - bls _080CD942 - strh r2, [r1] -_080CD942: - pop {r0} - bx r0 - .align 2, 0 -_080CD948: .4byte gUnknown_203963A -_080CD94C: .4byte 0x0000270f - thumb_func_end sub_80CD924 - - thumb_func_start sub_80CD950 -sub_80CD950: @ 80CD950 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080CD964 @ =gBattleOutcome - ldrb r0, [r0] - cmp r0, 0x1 - beq _080CD968 - cmp r0, 0x2 - beq _080CD976 - b _080CD984 - .align 2, 0 -_080CD964: .4byte gBattleOutcome -_080CD968: - eors r0, r4 - bl sub_80CD8F8 - adds r0, r4, 0 - bl sub_80CD924 - b _080CD984 -_080CD976: - movs r0, 0x1 - eors r0, r4 - bl sub_80CD924 - adds r0, r4, 0 - bl sub_80CD8F8 -_080CD984: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80CD950 - - thumb_func_start sub_80CD98C -sub_80CD98C: @ 80CD98C - push {r4-r6,lr} - sub sp, 0x4 - adds r6, r0, 0 - ldr r0, _080CD9DC @ =gSaveBlock1Ptr - ldr r0, [r0] - ldrh r1, [r0, 0x4] - movs r0, 0x80 - lsls r0, 3 - cmp r1, r0 - beq _080CD9D4 - adds r0, r6, 0 - bl sub_80CD950 - ldr r0, _080CD9E0 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldr r1, _080CD9E4 @ =0x00000a98 - adds r0, r1 - lsls r2, r6, 1 - adds r2, r6 - lsls r2, 5 - ldr r3, _080CD9E8 @ =gUnknown_2039654 - adds r1, r2, r3 - subs r3, 0x30 - adds r2, r3 - ldrh r2, [r2, 0xE] - ldr r3, _080CD9EC @ =gBattleOutcome - ldrb r3, [r3] - ldr r5, _080CD9F0 @ =gLinkPlayers - lsls r4, r6, 3 - subs r4, r6 - lsls r4, 2 - adds r4, r5 - ldrh r4, [r4, 0x1A] - str r4, [sp] - bl sub_80CD854 -_080CD9D4: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080CD9DC: .4byte gSaveBlock1Ptr -_080CD9E0: .4byte gSaveBlock2Ptr -_080CD9E4: .4byte 0x00000a98 -_080CD9E8: .4byte gUnknown_2039654 -_080CD9EC: .4byte gBattleOutcome -_080CD9F0: .4byte gLinkPlayers - thumb_func_end sub_80CD98C - thumb_func_start sub_80CD9F4 sub_80CD9F4: @ 80CD9F4 push {r4-r7,lr} diff --git a/asm/battle_tower.s b/asm/battle_tower.s index 01ac780a2..779fef0db 100644 --- a/asm/battle_tower.s +++ b/asm/battle_tower.s @@ -2407,7 +2407,7 @@ _080E6C00: adds r0, r2 ldrh r1, [r0] movs r0, 0x20 - bl sub_8054F00 + bl SetGameStat b _080E6C80 .align 2, 0 _080E6C10: .4byte 0x0000057a @@ -2599,7 +2599,7 @@ _080E6D9C: adds r0, r1 ldrh r1, [r0] movs r0, 0x20 - bl sub_8054F00 + bl SetGameStat b _080E6E08 .align 2, 0 _080E6DAC: .4byte 0x0000057a @@ -2717,7 +2717,7 @@ _080E6E76: adds r5, r0, 0 movs r0, 0x20 adds r1, r5, 0 - bl sub_8054F00 + bl SetGameStat ldr r1, _080E6EA4 @ =0x0000270f cmp r5, r1 bhi _080E6EB8 @@ -2731,7 +2731,7 @@ _080E6EA8: ldrh r5, [r1] movs r0, 0x20 adds r1, r5, 0 - bl sub_8054F00 + bl SetGameStat ldr r1, _080E6EC4 @ =0x0000270f cmp r5, r1 bls _080E6ECC diff --git a/asm/cable_club.s b/asm/cable_club.s index 85f6243b4..abc51ce29 100644 --- a/asm/cable_club.s +++ b/asm/cable_club.s @@ -943,7 +943,7 @@ _08080E9A: lsls r1, r5, 8 ldr r0, _08080ED4 @ =gBlockRecvBuffer adds r1, r0 - ldr r0, _08080ED8 @ =gUnknown_2039624 + ldr r0, _08080ED8 @ =gTrainerCards lsls r4, r5, 1 adds r4, r5 lsls r4, 5 @@ -958,12 +958,12 @@ _08080E9A: .align 2, 0 _08080ED0: .4byte gLinkPlayers _08080ED4: .4byte gBlockRecvBuffer -_08080ED8: .4byte gUnknown_2039624 +_08080ED8: .4byte gTrainerCards _08080EDC: lsls r1, r5, 8 ldr r0, _08080F3C @ =gBlockRecvBuffer adds r1, r0 - ldr r2, _08080F40 @ =gUnknown_2039624 + ldr r2, _08080F40 @ =gTrainerCards lsls r0, r5, 1 adds r0, r5 lsls r0, 5 @@ -1004,7 +1004,7 @@ _08080EF8: b _08080F66 .align 2, 0 _08080F3C: .4byte gBlockRecvBuffer -_08080F40: .4byte gUnknown_2039624 +_08080F40: .4byte gTrainerCards _08080F44: .4byte gSpecialVar_Result _08080F48: .4byte gLinkType _08080F4C: .4byte 0x00004411 diff --git a/asm/link_rfu_3.s b/asm/link_rfu_3.s index 78c09b0ff..3124c8d56 100644 --- a/asm/link_rfu_3.s +++ b/asm/link_rfu_3.s @@ -3154,14 +3154,14 @@ _081172C0: cmp r4, r0 bne _0811734A movs r4, 0 - ldr r0, _081172E0 @ =gUnknown_2039624 + ldr r0, _081172E0 @ =gTrainerCards adds r7, r0, 0 adds r7, 0x38 ldr r6, _081172E4 @ =gLinkPlayers adds r5, r0, 0 b _08117302 .align 2, 0 -_081172E0: .4byte gUnknown_2039624 +_081172E0: .4byte gTrainerCards _081172E4: .4byte gLinkPlayers _081172E8: lsls r0, r4, 8 @@ -10949,7 +10949,7 @@ sub_811B31C: @ 811B31C lsls r1, r0, 1 adds r1, r0 lsls r1, 5 - ldr r0, _0811B4B0 @ =gUnknown_2039624 + ldr r0, _0811B4B0 @ =gTrainerCards adds r1, r0 mov r8, r1 bl DynamicPlaceholderTextUtil_Reset @@ -11108,7 +11108,7 @@ _0811B45E: bl StringAppend b _0811B4F0 .align 2, 0 -_0811B4B0: .4byte gUnknown_2039624 +_0811B4B0: .4byte gTrainerCards _0811B4B4: .4byte gTrainerClassNames _0811B4B8: .4byte gUnknown_84594B0 _0811B4BC: .4byte gUnknown_84594C4 diff --git a/asm/overworld.s b/asm/overworld.s index 5e50a5d05..abe4fd8cd 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -334,7 +334,7 @@ _08054EB0: ldr r1, _08054EC0 @ =0x00ffffff _08054EB2: adds r0, r4, 0 - bl sub_8054F00 + bl SetGameStat _08054EB8: pop {r4} pop {r0} @@ -376,8 +376,8 @@ _08054EFA: bx r1 thumb_func_end GetGameStat - thumb_func_start sub_8054F00 -sub_8054F00: @ 8054F00 + thumb_func_start SetGameStat +SetGameStat: @ 8054F00 push {lr} adds r3, r1, 0 lsls r0, 24 @@ -405,7 +405,7 @@ _08054F2A: .align 2, 0 _08054F30: .4byte gSaveBlock1Ptr _08054F34: .4byte gSaveBlock2Ptr - thumb_func_end sub_8054F00 + thumb_func_end SetGameStat thumb_func_start sub_8054F38 sub_8054F38: @ 8054F38 diff --git a/asm/post_battle_event_funcs.s b/asm/post_battle_event_funcs.s index 14703e26e..264ca380d 100644 --- a/asm/post_battle_event_funcs.s +++ b/asm/post_battle_event_funcs.s @@ -44,7 +44,7 @@ _080CA318: ldrb r0, [r2, 0x11] orrs r1, r0 movs r0, 0x1 - bl sub_8054F00 + bl SetGameStat _080CA33A: bl sub_804C1AC movs r0, 0x1 diff --git a/asm/trainer_card.s b/asm/trainer_card.s index e8a591264..694f11600 100644 --- a/asm/trainer_card.s +++ b/asm/trainer_card.s @@ -4090,7 +4090,7 @@ _0808B1B8: .4byte 0x00007bce sub_808B1BC: @ 808B1BC lsls r0, 24 lsrs r0, 24 - ldr r2, _0808B1D0 @ =gUnknown_2039624 + ldr r2, _0808B1D0 @ =gTrainerCards lsls r1, r0, 1 adds r1, r0 lsls r1, 5 @@ -4098,7 +4098,7 @@ sub_808B1BC: @ 808B1BC ldrb r0, [r1, 0x1] bx lr .align 2, 0 -_0808B1D0: .4byte gUnknown_2039624 +_0808B1D0: .4byte gTrainerCards thumb_func_end sub_808B1BC thumb_func_start sub_808B1D4 @@ -4792,7 +4792,7 @@ sub_808B700: @ 808B700 ldr r0, [r5] ldr r1, _0808B760 @ =0x0000045c adds r0, r1 - ldr r2, _0808B764 @ =gUnknown_2039624 + ldr r2, _0808B764 @ =gTrainerCards lsls r1, r4, 1 adds r1, r4 lsls r1, 5 @@ -4818,7 +4818,7 @@ sub_808B700: @ 808B700 _0808B758: .4byte gUnknown_20397A4 _0808B75C: .4byte 0x00007bd0 _0808B760: .4byte 0x0000045c -_0808B764: .4byte gUnknown_2039624 +_0808B764: .4byte gTrainerCards _0808B768: .4byte gLinkPlayers _0808B76C: .4byte 0x00007bcf _0808B770: .4byte sub_80895B8 @@ -5070,7 +5070,7 @@ _0808B95C: .4byte sub_80895B8 sub_808B960: @ 808B960 push {r4,lr} adds r4, r0, 0 - ldr r0, _0808B984 @ =gUnknown_2039624 + ldr r0, _0808B984 @ =gTrainerCards ldr r1, _0808B988 @ =gUnknown_83CD960 movs r2, 0x60 bl memcpy @@ -5083,7 +5083,7 @@ sub_808B960: @ 808B960 pop {r0} bx r0 .align 2, 0 -_0808B984: .4byte gUnknown_2039624 +_0808B984: .4byte gTrainerCards _0808B988: .4byte gUnknown_83CD960 _0808B98C: .4byte sub_80895B8 thumb_func_end sub_808B960 @@ -5092,7 +5092,7 @@ _0808B98C: .4byte sub_80895B8 sub_808B990: @ 808B990 push {r4,lr} adds r4, r0, 0 - ldr r0, _0808B9B4 @ =gUnknown_2039624 + ldr r0, _0808B9B4 @ =gTrainerCards ldr r1, _0808B9B8 @ =gUnknown_83CD9C0 movs r2, 0x60 bl memcpy @@ -5105,7 +5105,7 @@ sub_808B990: @ 808B990 pop {r0} bx r0 .align 2, 0 -_0808B9B4: .4byte gUnknown_2039624 +_0808B9B4: .4byte gTrainerCards _0808B9B8: .4byte gUnknown_83CD9C0 _0808B9BC: .4byte sub_80895B8 thumb_func_end sub_808B990 diff --git a/data/strings.s b/data/strings.s index 83b86558c..3e56bfe50 100644 --- a/data/strings.s +++ b/data/strings.s @@ -670,7 +670,7 @@ gUnknown_8416741:: @ 0x8416741 .string "SEE YA!$" gUnknown_8416749:: @ 8416749 - .string "IN BAG:{SIZE 0x00} {STR_VAR_1}$" + .string "IN BAG:{SMALL} {STR_VAR_1}$" gUnknown_8416757:: @ 8416757 .string "Quit shopping.$" @@ -1293,19 +1293,19 @@ gUnknown_841797F:: @ 0x841797F .string "INFO$" gUnknown_8417984:: @ 0x8417984 - .string "FRESH WATER{CLEAR_TO 0x57}{SIZE 0x00}¥200$" + .string "FRESH WATER{CLEAR_TO 0x57}{SMALL}¥200$" gUnknown_841799A:: @ 0x841799A - .string "SODA POP{CLEAR_TO 0x57}{SIZE 0x00}¥300$" + .string "SODA POP{CLEAR_TO 0x57}{SMALL}¥300$" gUnknown_84179AD:: @ 0x84179AD - .string "LEMONADE{CLEAR_TO 0x57}{SIZE 0x00}¥350$" + .string "LEMONADE{CLEAR_TO 0x57}{SMALL}¥350$" gUnknown_84179C0:: @ 0x84179C0 - .string "{SIZE 0x00} 50 COINS{CLEAR_TO 0x45}¥1,000$" + .string "{SMALL} 50 COINS{CLEAR_TO 0x45}¥1,000$" gUnknown_84179D6:: @ 0x84179D6 - .string "{SIZE 0x00}500 COINS{CLEAR_TO 0x40}¥10,000$" + .string "{SMALL}500 COINS{CLEAR_TO 0x40}¥10,000$" gUnknown_84179ED:: @ 0x84179ED .string "Excellent$" @@ -1335,19 +1335,19 @@ gUnknown_8417A3D:: @ 0x8417A3D .string "Left$" gUnknown_8417A42:: @ 0x8417A42 - .string "TM13{CLEAR_TO 0x48}{SIZE 0x00}4,000 COINS$" + .string "TM13{CLEAR_TO 0x48}{SMALL}4,000 COINS$" gUnknown_8417A58:: @ 0x8417A58 - .string "TM23{CLEAR_TO 0x48}{SIZE 0x00}3,500 COINS$" + .string "TM23{CLEAR_TO 0x48}{SMALL}3,500 COINS$" gUnknown_8417A6E:: @ 0x8417A6E - .string "TM24{CLEAR_TO 0x48}{SIZE 0x00}4,000 COINS$" + .string "TM24{CLEAR_TO 0x48}{SMALL}4,000 COINS$" gUnknown_8417A84:: @ 0x8417A84 - .string "TM30{CLEAR_TO 0x48}{SIZE 0x00}4,500 COINS$" + .string "TM30{CLEAR_TO 0x48}{SMALL}4,500 COINS$" gUnknown_8417A9A:: @ 0x8417A9A - .string "TM35{CLEAR_TO 0x48}{SIZE 0x00}4,000 COINS$" + .string "TM35{CLEAR_TO 0x48}{SMALL}4,000 COINS$" gUnknown_8417AB0:: @ 0x8417AB0 .string "1F$" @@ -1491,40 +1491,40 @@ gUnknown_8417C2D:: @ 8417C2D .string "COINS$" gUnknown_8417C33:: @ 0x8417C33 - .string "BICYCLE{CLEAR_TO 0x49}{SIZE 0x00}¥1,000,000$" + .string "BICYCLE{CLEAR_TO 0x49}{SMALL}¥1,000,000$" gUnknown_8417C4B:: @ 0x8417C4B .string "NO THANKS$" gUnknown_8417C55:: @ 0x8417C55 - .string "ABRA{CLEAR_TO 0x55}{SIZE 0x00} 180 COINS$" + .string "ABRA{CLEAR_TO 0x55}{SMALL} 180 COINS$" gUnknown_8417C6A:: @ 0x8417C6A - .string "CLEFAIRY{CLEAR_TO 0x55}{SIZE 0x00} 500 COINS$" + .string "CLEFAIRY{CLEAR_TO 0x55}{SMALL} 500 COINS$" gUnknown_8417C83:: @ 0x8417C83 - .string "DRATINI{CLEAR_TO 0x4B}{SIZE 0x00} 2,800 COINS$" + .string "DRATINI{CLEAR_TO 0x4B}{SMALL} 2,800 COINS$" gUnknown_8417C9D:: @ 0x8417C9D - .string "SCYTHER{CLEAR_TO 0x4B}{SIZE 0x00} 5,500 COINS$" + .string "SCYTHER{CLEAR_TO 0x4B}{SMALL} 5,500 COINS$" gUnknown_8417CB7:: @ 0x8417CB7 - .string "PORYGON{CLEAR_TO 0x4B}{SIZE 0x00} 9,999 COINS$" + .string "PORYGON{CLEAR_TO 0x4B}{SMALL} 9,999 COINS$" gUnknown_8417CD1:: @ 0x8417CD1 - .string "ABRA{CLEAR_TO 0x55}{SIZE 0x00} 120 COINS$" + .string "ABRA{CLEAR_TO 0x55}{SMALL} 120 COINS$" gUnknown_8417CE6:: @ 0x8417CE6 - .string "CLEFAIRY{CLEAR_TO 0x55}{SIZE 0x00} 750 COINS$" + .string "CLEFAIRY{CLEAR_TO 0x55}{SMALL} 750 COINS$" gUnknown_8417CFF:: @ 0x8417CFF - .string "PINSIR{CLEAR_TO 0x4B}{SIZE 0x00} 2,500 COINS$" + .string "PINSIR{CLEAR_TO 0x4B}{SMALL} 2,500 COINS$" gUnknown_8417D18:: @ 0x8417D18 - .string "DRATINI{CLEAR_TO 0x4B}{SIZE 0x00} 4,600 COINS$" + .string "DRATINI{CLEAR_TO 0x4B}{SMALL} 4,600 COINS$" gUnknown_8417D32:: @ 0x8417D32 - .string "PORYGON{CLEAR_TO 0x4B}{SIZE 0x00} 6,500 COINS$" + .string "PORYGON{CLEAR_TO 0x4B}{SMALL} 6,500 COINS$" gUnknown_8417D4C:: @ 0x8417D4C .string "NO THANKS$" @@ -1632,19 +1632,19 @@ gUnknown_8417ECC:: @ 0x8417ECC .string "BIRTH ISLAND$" gUnknown_8417ED9:: @ 0x8417ED9 - .string "MIRACLE SEED{CLEAR_TO 0x50}{SIZE 0x00}1,000 COINS$" + .string "MIRACLE SEED{CLEAR_TO 0x50}{SMALL}1,000 COINS$" gUnknown_8417EF7:: @ 0x8417EF7 - .string "CHARCOAL{CLEAR_TO 0x50}{SIZE 0x00}1,000 COINS$" + .string "CHARCOAL{CLEAR_TO 0x50}{SMALL}1,000 COINS$" gUnknown_8417F11:: @ 0x8417F11 - .string "MYSTIC WATER{CLEAR_TO 0x50}{SIZE 0x00}1,000 COINS$" + .string "MYSTIC WATER{CLEAR_TO 0x50}{SMALL}1,000 COINS$" gUnknown_8417F2F:: @ 0x8417F2F - .string "YELLOW FLUTE{CLEAR_TO 0x50}{SIZE 0x00}1,600 COINS$" + .string "YELLOW FLUTE{CLEAR_TO 0x50}{SMALL}1,600 COINS$" gUnknown_8417F4D:: @ 0x8417F4D - .string "SMOKE BALL{CLEAR_TO 0x5A}{SIZE 0x00}800 COINS$" + .string "SMOKE BALL{CLEAR_TO 0x5A}{SMALL}800 COINS$" gUnknown_8417F67:: @ 0x8417F67 .string "$" @@ -1782,37 +1782,37 @@ gUnknown_841809C:: @ 0x841809C .string "UNION ROOM$" gUnknown_84180A7:: @ 0x84180A7 - .string "ENERGYPOWDER{CLEAR_TO 0x74}{SIZE 0x00}50$" + .string "ENERGYPOWDER{CLEAR_TO 0x74}{SMALL}50$" gUnknown_84180BC:: @ 0x84180BC - .string "ENERGY ROOT{CLEAR_TO 0x74}{SIZE 0x00}80$" + .string "ENERGY ROOT{CLEAR_TO 0x74}{SMALL}80$" gUnknown_84180D0:: @ 0x84180D0 - .string "HEAL POWDER{CLEAR_TO 0x74}{SIZE 0x00}50$" + .string "HEAL POWDER{CLEAR_TO 0x74}{SMALL}50$" gUnknown_84180E4:: @ 0x84180E4 - .string "REVIVAL HERB{CLEAR_TO 0x6F}{SIZE 0x00}300$" + .string "REVIVAL HERB{CLEAR_TO 0x6F}{SMALL}300$" gUnknown_84180FA:: @ 0x84180FA - .string "PROTEIN{CLEAR_TO 0x65}{SIZE 0x00}1,000$" + .string "PROTEIN{CLEAR_TO 0x65}{SMALL}1,000$" gUnknown_841810D:: @ 0x841810D - .string "IRON{CLEAR_TO 0x65}{SIZE 0x00}1,000$" + .string "IRON{CLEAR_TO 0x65}{SMALL}1,000$" gUnknown_841811D:: @ 0x841811D - .string "CARBOS{CLEAR_TO 0x65}{SIZE 0x00}1,000$" + .string "CARBOS{CLEAR_TO 0x65}{SMALL}1,000$" gUnknown_841812F:: @ 0x841812F - .string "CALCIUM{CLEAR_TO 0x65}{SIZE 0x00}1,000$" + .string "CALCIUM{CLEAR_TO 0x65}{SMALL}1,000$" gUnknown_8418142:: @ 0x8418142 - .string "ZINC{CLEAR_TO 0x65}{SIZE 0x00}1,000$" + .string "ZINC{CLEAR_TO 0x65}{SMALL}1,000$" gUnknown_8418152:: @ 0x8418152 - .string "HP UP{CLEAR_TO 0x65}{SIZE 0x00}1,000$" + .string "HP UP{CLEAR_TO 0x65}{SMALL}1,000$" gUnknown_8418163:: @ 0x8418163 - .string "PP UP{CLEAR_TO 0x65}{SIZE 0x00}3,000$" + .string "PP UP{CLEAR_TO 0x65}{SMALL}3,000$" gUnknown_8418174:: @ 8418174 .string "{PLAYER}'s BATTLE RESULTS$" @@ -2870,7 +2870,7 @@ gUnknown_841B2A7:: @ 841B2A7 .string ".$" gUnknown_841B2A9:: @ 0x841B2A9 - .string "{SIZE 0x00}MAX.{SIZE 0x02} HP$" + .string "{SMALL}MAX.{SIZE 0x02} HP$" gUnknown_841B2B7:: @ 0x841B2B7 .string "ATTACK$" @@ -2888,10 +2888,10 @@ gUnknown_841B2D4:: @ 0x841B2D4 .string "SP. DEF$" gUnknown_841B2DC:: @ 841B2DC - .string "{SIZE 0x00}{EXTRA_PLUS}{SIZE 0x02}$" + .string "{SMALL}{EXTRA_PLUS}{SIZE 0x02}$" gUnknown_841B2E5:: @ 841B2E5 - .string "{SIZE 0x00}-{SIZE 0x02}$" + .string "{SMALL}-{SIZE 0x02}$" gUnknown_841B2ED:: @ 841B2ED .string "1, $" diff --git a/include/overworld.h b/include/overworld.h index 799389353..9a9657006 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -78,7 +78,8 @@ void c2_load_new_map(void); void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused); void mapldr_default(void); -u32 GetGameStat(u8); +u32 GetGameStat(u8 statId); +u32 SetGameStat(u8 statId, u32 value); void CB2_ContinueSavedGame(void); void sub_8055D5C(struct WarpData *); diff --git a/include/trainer_card.h b/include/trainer_card.h new file mode 100644 index 000000000..e8531cef5 --- /dev/null +++ b/include/trainer_card.h @@ -0,0 +1,43 @@ +#ifndef GUARD_TRAINER_CARD_H +#define GUARD_TRAINER_CARD_H + +struct TrainerCard +{ + /*0x00*/ u8 gender; + /*0x01*/ u8 stars; + /*0x02*/ bool8 hasPokedex; + /*0x03*/ bool8 caughtAllHoenn; + /*0x04*/ bool8 hasAllPaintings; + /*0x06*/ u16 hofDebutHours; + /*0x08*/ u16 hofDebutMinutes; + /*0x0A*/ u16 hofDebutSeconds; + /*0x0C*/ u16 caughtMonsCount; + /*0x0E*/ u16 trainerId; + /*0x10*/ u16 playTimeHours; + /*0x12*/ u16 playTimeMinutes; + /*0x14*/ u16 linkBattleWins; + /*0x16*/ u16 linkBattleLosses; + /*0x18*/ u16 battleTowerWins; + /*0x1A*/ u16 battleTowerStraightWins; + /*0x1C*/ u16 contestsWithFriends; + /*0x1E*/ u16 pokeblocksWithFriends; + /*0x20*/ u16 pokemonTrades; + /*0x24*/ u32 money; + /*0x28*/ u16 var_28[4]; + /*0x30*/ u8 playerName[PLAYER_NAME_LENGTH + 1]; + /*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; + /*0x4E*/ u8 var_4E; + /*0x4F*/ u8 var_4F; + /*0x50*/ u8 var_50[0x4]; + /*0x54*/ u16 monSpecies[PARTY_SIZE]; +}; + +extern struct TrainerCard gTrainerCards[4]; + +#endif //GUARD_TRAINER_CARD_H diff --git a/include/trainer_tower.h b/include/trainer_tower.h new file mode 100644 index 000000000..bbc0b2faf --- /dev/null +++ b/include/trainer_tower.h @@ -0,0 +1,6 @@ +#ifndef GUARD_TRAINER_TOWER_H +#define GUARD_TRAINER_TOWER_H + +void sub_815EC8C(void); + +#endif //GUARD_TRAINER_TOWER_H diff --git a/ld_script.txt b/ld_script.txt index a08b30947..f10d4427f 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -188,6 +188,7 @@ SECTIONS { src/prof_pc.o(.text); src/hof_pc.o(.text); asm/field_specials.o(.text); + src/battle_records.o(.text); asm/battle_records.o(.text); asm/evolution_scene.o(.text); src/coins.o(.text); diff --git a/src/battle_records.c b/src/battle_records.c new file mode 100644 index 000000000..bd63ba06b --- /dev/null +++ b/src/battle_records.c @@ -0,0 +1,420 @@ +#include "global.h" +#include "malloc.h" +#include "main.h" +#include "bg.h" +#include "gpu_regs.h" +#include "event_data.h" +#include "palette.h" +#include "task.h" +#include "text.h" +#include "window.h" +#include "text_window.h" +#include "battle.h" +#include "trainer_tower.h" +#include "trainer_pokemon_sprites.h" +#include "scanline_effect.h" +#include "sound.h" +#include "string_util.h" +#include "link.h" +#include "overworld.h" +#include "trainer_card.h" +#include "constants/battle.h" +#include "constants/songs.h" +#include "constants/maps.h" + +struct LinkBattleRecordState +{ + u16 unk_00; + u16 unk_02; + u8 filler_04[92]; +}; + +EWRAM_DATA struct LinkBattleRecordState gUnknown_2039638[10] = {}; +EWRAM_DATA u16 * gUnknown_2039A1C = NULL; + +void sub_80CD240(void); +void sub_80CD38C(void); +void sub_80CD3A0(void); +void sub_80CD3B8(u8 taskId); +void sub_80CD3E8(u8 taskId); +void sub_80CD428(u8 taskId); +void sub_80CD460(u8 taskId); +void sub_80CD4A4(u8 winddowId); +void sub_80CD4D0(void); +void sub_80CD608(void); +void sub_80CD628(void); +void sub_80CD638(void); +void sub_80CDBE4(void); +void sub_80CDCD0(u8 bgId); + +extern const struct WindowTemplate gUnknown_83F6C68[]; +extern const struct BgTemplate gUnknown_83F6C7C[2]; + +void sub_80CD228(void) +{ + SetVBlankCallback(NULL); + SetMainCallback2(sub_80CD240); +} + +void sub_80CD240(void) +{ + switch (gMain.state) + { + case 0: + SetVBlankCallback(NULL); + sub_80CD4D0(); + gMain.state++; + break; + case 1: + sub_80CD608(); + gMain.state++; + break; + case 2: + gUnknown_2039A1C = AllocZeroed(0x800); + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, gUnknown_83F6C7C, NELEMS(gUnknown_83F6C7C)); + SetBgTilemapBuffer(3, gUnknown_2039A1C); + sub_80CD638(); + gMain.state++; + break; + case 3: + sub_80CDCD0(3); + LoadPalette(stdpal_get(0), 0xF0, 0x20); + gMain.state++; + break; + case 4: + if (IsDma3ManagerBusyWithBgCopy() != TRUE) + { + ShowBg(0); + ShowBg(3); + CopyBgTilemapBufferToVram(3); + gMain.state++; + } + break; + case 5: + InitWindows(gUnknown_83F6C68); + DeactivateAllTextPrinters(); + gMain.state++; + break; + case 6: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); + gMain.state++; + break; + case 7: + sub_80CD628(); + SetVBlankCallback(sub_80CD38C); + if (gSpecialVar_0x8004) + sub_815EC8C(); + else + sub_80CDBE4(); + CreateTask(sub_80CD3B8, 8); + SetMainCallback2(sub_80CD3A0); + gMain.state = 0; + break; + } +} + +void sub_80CD38C(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void sub_80CD3A0(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void sub_80CD3B8(u8 taskId) +{ + if (!gPaletteFade.active) + gTasks[taskId].func = sub_80CD3E8; +} + +void sub_80CD3E8(u8 taskId) +{ + struct Task * task = &gTasks[taskId]; + + if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + task->func = sub_80CD428; + } +} + +void sub_80CD428(u8 taskId) +{ + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + gTasks[taskId].func = sub_80CD460; +} + +void sub_80CD460(u8 taskId) +{ + if (!gPaletteFade.active) + { + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); + Free(gUnknown_2039A1C); + sub_80CD4A4(0); + FreeAllWindowBuffers(); + DestroyTask(taskId); + } +} + +void sub_80CD4A4(u8 windowId) +{ + FillWindowPixelBuffer(windowId, PIXEL_FILL(0)); + ClearWindowTilemap(windowId); + CopyWindowToVram(windowId, 2); + RemoveWindow(windowId); +} + +void sub_80CD4D0(void) +{ + { + void * dest = (void *)VRAM; + u32 size = VRAM_SIZE; + DmaClearLarge16(3, dest, size, 0x1000); + } + + { + void * dest = (void *)OAM; + u32 size = OAM_SIZE; + DmaClear32(3, dest, size); + } + + { + void * dest = (void *)PLTT; + u32 size = PLTT_SIZE; + DmaClear16(3, dest, size); + } + + SetGpuReg(REG_OFFSET_DISPCNT, 0); + SetGpuReg(REG_OFFSET_BG0CNT, 0); + SetGpuReg(REG_OFFSET_BG0HOFS, 0); + SetGpuReg(REG_OFFSET_BG0VOFS, 0); + SetGpuReg(REG_OFFSET_BG1CNT, 0); + SetGpuReg(REG_OFFSET_BG1HOFS, 0); + SetGpuReg(REG_OFFSET_BG1VOFS, 0); + SetGpuReg(REG_OFFSET_BG2CNT, 0); + SetGpuReg(REG_OFFSET_BG2HOFS, 0); + SetGpuReg(REG_OFFSET_BG2VOFS, 0); + SetGpuReg(REG_OFFSET_BG3CNT, 0); + SetGpuReg(REG_OFFSET_BG3HOFS, 0); + SetGpuReg(REG_OFFSET_BG3VOFS, 0); + SetGpuReg(REG_OFFSET_WIN0H, 0); + SetGpuReg(REG_OFFSET_WIN0V, 0); + SetGpuReg(REG_OFFSET_WININ, 0); + SetGpuReg(REG_OFFSET_WINOUT, 0); + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetGpuReg(REG_OFFSET_BLDY, 0); +} + +void sub_80CD608(void) +{ + ScanlineEffect_Stop(); + ResetTasks(); + ResetSpriteData(); + ResetAllPicSprites(); + ResetPaletteFade(); + FreeAllSpritePalettes(); +} + +void sub_80CD628(void) +{ + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG3_ON); +} + +void sub_80CD638(void) +{ + 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); +} + +void InitLinkBattleRecord(struct LinkBattleRecord * record) +{ + CpuFill16(0, record, sizeof(*record)); + record->name[0] = EOS; + record->trainerId = 0; + record->wins = 0; + record->losses = 0; + record->draws = 0; +} + +void InitLinkBattleRecords_(struct LinkBattleRecords * records) +{ + s32 i; + + for (i = 0; i < LINK_B_RECORDS_COUNT; i++) + InitLinkBattleRecord(&records->entries[i]); + SetGameStat(GAME_STAT_LINK_BATTLE_WINS, 0); + SetGameStat(GAME_STAT_LINK_BATTLE_LOSSES, 0); + SetGameStat(GAME_STAT_LINK_BATTLE_DRAWS, 0); +} + +s32 GetLinkBattleRecordTotalBattles(struct LinkBattleRecord * record) +{ + return record->wins + record->losses + record->draws; +} + +s32 sub_80CD704(struct LinkBattleRecords * records, const u8 * name, u16 trainerId) +{ + s32 i; + + for (i = 0; i < LINK_B_RECORDS_COUNT; i++) + { + if (StringCompareN(records->entries[i].name, name, OT_NAME_LENGTH) == 0 && records->entries[i].trainerId == trainerId) + return i; + } + + return LINK_B_RECORDS_COUNT; +} + +void SortLinkBattleRecords(struct LinkBattleRecords * records) +{ + struct LinkBattleRecord tmp; + s32 i; + s32 j; + + for (i = LINK_B_RECORDS_COUNT - 1; i > 0; i--) + { + for (j = i - 1; j >= 0; j--) + { + if (GetLinkBattleRecordTotalBattles(&records->entries[i]) > GetLinkBattleRecordTotalBattles(&records->entries[j])) + { + tmp = records->entries[i]; + records->entries[i] = records->entries[j]; + records->entries[j] = tmp; + } + } + } +} + +void UpdateLinkBattleRecord(struct LinkBattleRecord * record, s32 outcome) +{ + switch (outcome) + { + case B_OUTCOME_WON: + record->wins++; + if (record->wins > 9999) + record->wins = 9999; + break; + case B_OUTCOME_LOST: + record->losses++; + if (record->losses > 9999) + record->losses = 9999; + break; + case B_OUTCOME_DREW: + record->draws++; + if (record->draws > 9999) + record->draws = 9999; + break; + } +} + +void UpdateLinkBattleGameStats(s32 outcome) +{ + u8 statId; + + switch (outcome) + { + case B_OUTCOME_WON: + statId = GAME_STAT_LINK_BATTLE_WINS; + break; + case B_OUTCOME_LOST: + statId = GAME_STAT_LINK_BATTLE_LOSSES; + break; + case B_OUTCOME_DREW: + statId = GAME_STAT_LINK_BATTLE_DRAWS; + break; + default: + return; + } + + if (GetGameStat(statId) < 9999) + IncrementGameStat(statId); +} + +void sub_80CD854(struct LinkBattleRecords * records, const u8 * name, u16 trainerId, s32 outcome, u32 language) +{ + u8 namebuf[OT_NAME_LENGTH + 1]; + s32 i; + struct LinkBattleRecord * record; + + if (language == LANGUAGE_JAPANESE) + { + namebuf[0] = EXT_CTRL_CODE_BEGIN; + namebuf[1] = EXT_CTRL_CODE_JPN; + StringCopy(&namebuf[2], name); + } + else + StringCopy(namebuf, name); + UpdateLinkBattleGameStats(outcome); + SortLinkBattleRecords(records); + i = sub_80CD704(records, namebuf, trainerId); + if (i == LINK_B_RECORDS_COUNT) + { + i = LINK_B_RECORDS_COUNT - 1; + record = &records->entries[LINK_B_RECORDS_COUNT - 1]; + InitLinkBattleRecord(record); + StringCopyN(record->name, namebuf, OT_NAME_LENGTH); + record->trainerId = trainerId; + } + UpdateLinkBattleRecord(&records->entries[i], outcome); + SortLinkBattleRecords(records); +} + +void InitLinkBattleRecords(void) +{ + InitLinkBattleRecords_(&gSaveBlock2Ptr->linkBattleRecords); +} + +void sub_80CD8F8(s32 battlerId) +{ + u16 *wins = &gTrainerCards[battlerId].linkBattleWins; + (*wins)++; + if (*wins > 9999) + *wins = 9999; +} + +void sub_80CD924(s32 battlerId) +{ + u16 *losses = &gTrainerCards[battlerId].linkBattleLosses; + (*losses)++; + if (*losses > 9999) + *losses = 9999; +} + +void sub_80CD950(s32 battlerId) +{ + switch (gBattleOutcome) + { + case B_OUTCOME_WON: + sub_80CD8F8(battlerId ^ 1); + sub_80CD924(battlerId); + break; + case B_OUTCOME_LOST: + sub_80CD924(battlerId ^ 1); + sub_80CD8F8(battlerId); + break; + } +} + +void sub_80CD98C(s32 battlerId) +{ + if (gSaveBlock1Ptr->location.mapGroup != MAP_GROUP(UNKNOWN_MAP_00_04) || gSaveBlock1Ptr->location.mapNum != MAP_NUM(UNKNOWN_MAP_00_04)) + { + sub_80CD950(battlerId); + sub_80CD854(&gSaveBlock2Ptr->linkBattleRecords, gTrainerCards[battlerId].playerName, gTrainerCards[battlerId].trainerId, gBattleOutcome, gLinkPlayers[battlerId].language); + } +} diff --git a/sym_ewram.txt b/sym_ewram.txt index ff7823e1d..a13a9fe9a 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -841,7 +841,7 @@ gFieldEffectArguments: @ 20386E0 gUnknown_2039620: @ 2039620 .space 0x4 -gUnknown_2039624: @ 2039624 +gTrainerCards: @ 2039624 .space 0x14 gUnknown_2039638: @ 2039638 |