summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-07-13 14:00:58 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2019-07-13 14:00:58 -0400
commitb4677561d52e862c4e5ff060904067ed26acca08 (patch)
tree52756c972d6318630ad6332482f73efaa784a5dd
parentbe422beca672a776ad2b9b8025c5d828150a3314 (diff)
battle_record: through sub_80CD98C
-rw-r--r--asm/battle_records.s997
-rw-r--r--asm/battle_tower.s8
-rw-r--r--asm/cable_club.s8
-rw-r--r--asm/link_rfu_3.s8
-rw-r--r--asm/overworld.s8
-rw-r--r--asm/post_battle_event_funcs.s2
-rw-r--r--asm/trainer_card.s16
-rw-r--r--data/strings.s82
-rw-r--r--include/overworld.h3
-rw-r--r--include/trainer_card.h43
-rw-r--r--include/trainer_tower.h6
-rw-r--r--ld_script.txt1
-rw-r--r--src/battle_records.c420
-rw-r--r--sym_ewram.txt2
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