diff options
author | PikalaxALT <PikalaxALT@users.noreply.github.com> | 2019-07-16 08:47:35 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-07-16 08:47:35 -0400 |
commit | 96a39a14bd99d7100246bac68a9965e55ab1e34a (patch) | |
tree | 1b5493034d8be68a7b8315c0da312413af85be8c | |
parent | 53b950019aca8896d70c4d5e4f9e2a1d5143e489 (diff) | |
parent | 7e238443712a68188d0ca0fcee75dc273f8dcb70 (diff) |
Merge pull request #81 from pret/battle_records
Battle records
-rwxr-xr-x[-rw-r--r--] | .travis/calcrom/webhook.sh | 0 | ||||
-rw-r--r-- | asm/battle_records.s | 1398 | ||||
-rw-r--r-- | asm/battle_tower.s | 8 | ||||
-rw-r--r-- | asm/cable_club.s | 10 | ||||
-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-- | baserom.ips | bin | 2327998 -> 2325687 bytes | |||
-rw-r--r-- | data/data_83F5738.s | 23 | ||||
-rw-r--r-- | data/maps/SevenIsland_TrainerTower_Lobby/scripts.inc | 2 | ||||
-rw-r--r-- | data/specials.inc | 2 | ||||
-rw-r--r-- | data/strings.s | 92 | ||||
-rw-r--r-- | graphics/battle_records/bg_tiles.png | bin | 0 -> 135 bytes | |||
-rw-r--r-- | graphics/battle_records/palette.pal | 19 | ||||
-rw-r--r-- | graphics/battle_records/tilemap.bin | bin | 0 -> 2048 bytes | |||
-rw-r--r-- | include/overworld.h | 3 | ||||
-rw-r--r-- | include/strings.h | 7 | ||||
-rw-r--r-- | include/trainer_card.h | 43 | ||||
-rw-r--r-- | include/trainer_tower.h | 6 | ||||
-rw-r--r-- | ld_script.txt | 4 | ||||
-rw-r--r-- | src/battle_records.c | 576 | ||||
-rw-r--r-- | src/trainer_tower.c | 6 | ||||
-rw-r--r-- | sym_ewram.txt | 16 |
24 files changed, 739 insertions, 1510 deletions
diff --git a/.travis/calcrom/webhook.sh b/.travis/calcrom/webhook.sh index 86da74c87..86da74c87 100644..100755 --- a/.travis/calcrom/webhook.sh +++ b/.travis/calcrom/webhook.sh diff --git a/asm/battle_records.s b/asm/battle_records.s deleted file mode 100644 index d0a99b4cf..000000000 --- a/asm/battle_records.s +++ /dev/null @@ -1,1398 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .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} - sub sp, 0x14 - movs r0, 0x17 - bl GetGameStat - adds r4, r0, 0 - movs r0, 0x18 - bl GetGameStat - adds r5, r0, 0 - movs r0, 0x19 - bl GetGameStat - adds r6, r0, 0 - ldr r0, _080CDAB0 @ =0x0000270f - cmp r4, r0 - bls _080CDA18 - adds r4, r0, 0 -_080CDA18: - cmp r5, r0 - bls _080CDA1E - adds r5, r0, 0 -_080CDA1E: - cmp r6, r0 - bls _080CDA24 - adds r6, r0, 0 -_080CDA24: - ldr r0, _080CDAB4 @ =gStringVar1 - adds r1, r4, 0 - movs r2, 0 - movs r3, 0x4 - bl ConvertIntToDecimalStringN - ldr r0, _080CDAB8 @ =gStringVar2 - adds r1, r5, 0 - movs r2, 0 - movs r3, 0x4 - bl ConvertIntToDecimalStringN - ldr r0, _080CDABC @ =gStringVar3 - adds r1, r6, 0 - movs r2, 0 - movs r3, 0x4 - bl ConvertIntToDecimalStringN - movs r3, 0 - ldr r6, _080CDAC0 @ =gUnknown_83F6C84 - ldr r7, _080CDAC4 @ =gStringVar4 - ldr r0, _080CDAC8 @ =gUnknown_8418188 - mov r12, r0 - movs r5, 0 -_080CDA54: - lsls r0, r3, 2 - adds r0, r6 - ldr r2, [r0] - movs r1, 0 - adds r4, r3, 0x1 - movs r3, 0x3 -_080CDA60: - cmp r1, 0 - bne _080CDA70 - ldrb r0, [r2] - cmp r0, 0xFF - bne _080CDA6C - movs r1, 0x1 -_080CDA6C: - cmp r1, 0 - beq _080CDA72 -_080CDA70: - strb r5, [r2] -_080CDA72: - adds r2, 0x1 - subs r3, 0x1 - cmp r3, 0 - bge _080CDA60 - movs r0, 0xFF - strb r0, [r2] - adds r3, r4, 0 - cmp r3, 0x2 - bls _080CDA54 - adds r0, r7, 0 - mov r1, r12 - bl StringExpandPlaceholders - movs r0, 0 - str r0, [sp] - movs r1, 0x2 - str r1, [sp, 0x4] - ldr r1, _080CDACC @ =gUnknown_83F6C78 - str r1, [sp, 0x8] - str r0, [sp, 0xC] - str r7, [sp, 0x10] - movs r1, 0x2 - movs r2, 0xC - movs r3, 0x18 - bl AddTextPrinterParameterized4 - add sp, 0x14 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080CDAB0: .4byte 0x0000270f -_080CDAB4: .4byte gStringVar1 -_080CDAB8: .4byte gStringVar2 -_080CDABC: .4byte gStringVar3 -_080CDAC0: .4byte gUnknown_83F6C84 -_080CDAC4: .4byte gStringVar4 -_080CDAC8: .4byte gUnknown_8418188 -_080CDACC: .4byte gUnknown_83F6C78 - thumb_func_end sub_80CD9F4 - - thumb_func_start sub_80CDAD0 -sub_80CDAD0: @ 80CDAD0 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x14 - adds r6, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - movs r5, 0 - ldrh r0, [r6, 0xA] - cmp r0, 0 - bne _080CDB50 - ldr r0, [r6, 0xC] - cmp r0, 0 - bne _080CDB50 - str r5, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - ldr r0, _080CDB44 @ =gUnknown_83F6C78 - str r0, [sp, 0x8] - str r5, [sp, 0xC] - ldr r0, _080CDB48 @ =gUnknown_84181B6 - str r0, [sp, 0x10] - movs r0, 0 - movs r1, 0x2 - movs r2, 0 - mov r3, r8 - bl AddTextPrinterParameterized4 - movs r6, 0 -_080CDB0E: - movs r4, 0x54 - cmp r5, 0 - beq _080CDB1C - movs r4, 0xB4 - cmp r5, 0x1 - bne _080CDB1C - movs r4, 0x84 -_080CDB1C: - adds r2, r4, 0 - str r6, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - ldr r0, _080CDB44 @ =gUnknown_83F6C78 - str r0, [sp, 0x8] - str r6, [sp, 0xC] - ldr r0, _080CDB4C @ =gUnknown_84181BE - str r0, [sp, 0x10] - movs r0, 0 - movs r1, 0x2 - mov r3, r8 - bl AddTextPrinterParameterized4 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x2 - bls _080CDB0E - b _080CDBCE - .align 2, 0 -_080CDB44: .4byte gUnknown_83F6C78 -_080CDB48: .4byte gUnknown_84181B6 -_080CDB4C: .4byte gUnknown_84181BE -_080CDB50: - movs r5, 0 - ldr r7, _080CDB70 @ =gStringVar1 - mov r9, r5 -_080CDB56: - cmp r5, 0 - bne _080CDB74 - movs r4, 0 - adds r0, r7, 0 - movs r1, 0x8 - bl StringFillWithTerminator - adds r0, r7, 0 - adds r1, r6, 0 - movs r2, 0x7 - bl StringCopyN - b _080CDBA6 - .align 2, 0 -_080CDB70: .4byte gStringVar1 -_080CDB74: - cmp r5, 0x1 - bne _080CDB7E - movs r4, 0x54 - ldrh r1, [r6, 0xA] - b _080CDB86 -_080CDB7E: - cmp r5, 0x2 - bne _080CDB98 - movs r4, 0x84 - ldrh r1, [r6, 0xC] -_080CDB86: - ldr r0, _080CDB94 @ =gStringVar1 - movs r2, 0x1 - movs r3, 0x4 - bl ConvertIntToDecimalStringN - b _080CDBA6 - .align 2, 0 -_080CDB94: .4byte gStringVar1 -_080CDB98: - movs r4, 0xB4 - ldrh r1, [r6, 0xE] - ldr r0, _080CDBDC @ =gStringVar1 - movs r2, 0x1 - movs r3, 0x4 - bl ConvertIntToDecimalStringN -_080CDBA6: - adds r2, r4, 0 - mov r0, r9 - str r0, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - ldr r0, _080CDBE0 @ =gUnknown_83F6C78 - str r0, [sp, 0x8] - mov r0, r9 - str r0, [sp, 0xC] - str r7, [sp, 0x10] - movs r0, 0 - movs r1, 0x2 - mov r3, r8 - bl AddTextPrinterParameterized4 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x3 - bls _080CDB56 -_080CDBCE: - add sp, 0x14 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080CDBDC: .4byte gStringVar1 -_080CDBE0: .4byte gUnknown_83F6C78 - thumb_func_end sub_80CDAD0 - - thumb_func_start sub_80CDBE4 -sub_80CDBE4: @ 80CDBE4 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x14 - movs r0, 0xD8 - str r0, [sp] - movs r0, 0x90 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillWindowPixelRect - ldr r5, _080CDC9C @ =gStringVar4 - ldr r1, _080CDCA0 @ =gUnknown_8418174 - adds r0, r5, 0 - bl StringExpandPlaceholders - movs r2, 0x1 - negs r2, r2 - movs r0, 0x2 - adds r1, r5, 0 - bl GetStringWidth - movs r2, 0xD0 - subs r2, r0 - lsrs r2, 1 - lsls r2, 24 - lsrs r2, 24 - movs r4, 0 - str r4, [sp] - movs r0, 0x2 - mov r9, r0 - str r0, [sp, 0x4] - ldr r6, _080CDCA4 @ =gUnknown_83F6C78 - str r6, [sp, 0x8] - str r4, [sp, 0xC] - str r5, [sp, 0x10] - movs r0, 0 - movs r1, 0x2 - movs r3, 0x4 - bl AddTextPrinterParameterized4 - ldr r5, _080CDCA8 @ =gSaveBlock2Ptr - ldr r0, [r5] - ldr r1, _080CDCAC @ =0x00000a98 - mov r8, r1 - add r0, r8 - bl sub_80CD9F4 - str r4, [sp] - mov r0, r9 - str r0, [sp, 0x4] - str r6, [sp, 0x8] - str r4, [sp, 0xC] - ldr r0, _080CDCB0 @ =gUnknown_84181A4 - str r0, [sp, 0x10] - movs r0, 0 - movs r1, 0x2 - movs r2, 0x54 - movs r3, 0x30 - bl AddTextPrinterParameterized4 - adds r7, r5, 0 - movs r5, 0xF4 - lsls r5, 22 - mov r6, r8 - movs r4, 0x4 -_080CDC70: - ldr r0, [r7] - adds r0, r6 - lsrs r1, r5, 24 - bl sub_80CDAD0 - movs r1, 0xE0 - lsls r1, 20 - adds r5, r1 - adds r6, 0x10 - subs r4, 0x1 - cmp r4, 0 - bge _080CDC70 - movs r0, 0 - bl sub_80CDCB4 - add sp, 0x14 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080CDC9C: .4byte gStringVar4 -_080CDCA0: .4byte gUnknown_8418174 -_080CDCA4: .4byte gUnknown_83F6C78 -_080CDCA8: .4byte gSaveBlock2Ptr -_080CDCAC: .4byte 0x00000a98 -_080CDCB0: .4byte gUnknown_84181A4 - thumb_func_end sub_80CDBE4 - - thumb_func_start sub_80CDCB4 -sub_80CDCB4: @ 80CDCB4 - 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_80CDCB4 - - thumb_func_start sub_80CDCD0 -sub_80CDCD0: @ 80CDCD0 - push {r4,lr} - sub sp, 0x8 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _080CDD0C @ =gUnknown_83F6388 - adds r0, r4, 0 - movs r2, 0xC0 - movs r3, 0 - bl LoadBgTiles - ldr r1, _080CDD10 @ =gUnknown_83F6468 - movs r0, 0x20 - str r0, [sp] - str r0, [sp, 0x4] - adds r0, r4, 0 - movs r2, 0 - movs r3, 0 - bl CopyToBgTilemapBufferRect - ldr r0, _080CDD14 @ =gUnknown_83F6448 - movs r1, 0 - movs r2, 0x20 - bl LoadPalette - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080CDD0C: .4byte gUnknown_83F6388 -_080CDD10: .4byte gUnknown_83F6468 -_080CDD14: .4byte gUnknown_83F6448 - thumb_func_end sub_80CDCD0 - - .align 2, 0 @ Don't pad with nop. 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..28cbfc49c 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 @@ -1935,7 +1935,7 @@ sub_8081668: @ 8081668 ldrb r0, [r0] movs r5, 0x1 eors r0, r5 - bl sub_80CD98C + bl TryRecordLinkBattleOutcome ldr r0, _080816C0 @ =gWirelessCommType ldrb r0, [r0] cmp r0, 0 diff --git a/asm/link_rfu_3.s b/asm/link_rfu_3.s index d4a88c18f..17d761a3d 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/baserom.ips b/baserom.ips Binary files differindex f70a84768..d9f256fbb 100644 --- a/baserom.ips +++ b/baserom.ips diff --git a/data/data_83F5738.s b/data/data_83F5738.s index c14edc5c8..a466ffd45 100644 --- a/data/data_83F5738.s +++ b/data/data_83F5738.s @@ -105,26 +105,9 @@ gUnknown_83F6366:: @ 83F6366 gUnknown_83F637C:: @ 83F637C .incbin "baserom.gba", 0x3F637C, 0xC -gUnknown_83F6388:: @ 83F6388 - .incbin "baserom.gba", 0x3F6388, 0xC0 - -gUnknown_83F6448:: @ 83F6448 - .incbin "baserom.gba", 0x3F6448, 0x20 - -gUnknown_83F6468:: @ 83F6468 - .incbin "baserom.gba", 0x3F6468, 0x800 - -gUnknown_83F6C68:: @ 83F6C68 - .incbin "baserom.gba", 0x3F6C68, 0x10 - -gUnknown_83F6C78:: @ 83F6C78 - .incbin "baserom.gba", 0x3F6C78, 0x4 - -gUnknown_83F6C7C:: @ 83F6C7C - .incbin "baserom.gba", 0x3F6C7C, 0x8 - -gUnknown_83F6C84:: @ 83F6C84 - .incbin "baserom.gba", 0x3F6C84, 0x2C + .section .rodata.83F6C90 +gUnknown_83F6C90:: @ 83F6C90 + .incbin "baserom.gba", 0x3F6C90, 0x20 gUnknown_83F6CB0:: @ 83F6CB0 .incbin "baserom.gba", 0x3F6CB0, 0x6F8 diff --git a/data/maps/SevenIsland_TrainerTower_Lobby/scripts.inc b/data/maps/SevenIsland_TrainerTower_Lobby/scripts.inc index 0b6b930c7..5acb601dc 100644 --- a/data/maps/SevenIsland_TrainerTower_Lobby/scripts.inc +++ b/data/maps/SevenIsland_TrainerTower_Lobby/scripts.inc @@ -223,7 +223,7 @@ SevenIsland_TrainerTower_Lobby_EventScript_164AD8:: @ 8164AD8 lockall fadescreen 1 setvar VAR_0x8004, 1 - special sub_80CD228 + special Special_BattleRecords waitstate releaseall end diff --git a/data/specials.inc b/data/specials.inc index 4c7ad327d..dcd996bbc 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -205,7 +205,7 @@ gSpecials:: @ 815FD60 def_special ScriptHatchMon def_special EggHatch def_special sub_8046EAC - def_special sub_80CD228 + def_special Special_BattleRecords def_special IsEnoughForCostInVar0x8005 def_special SubtractMoneyFromVar0x8005 def_special ExecuteWhiteOut diff --git a/data/strings.s b/data/strings.s index 83b86558c..e1804aae0 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,51 +1782,51 @@ 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 +gString_BattleRecords_PlayersBattleResults:: @ 8418174 .string "{PLAYER}'s BATTLE RESULTS$" -gUnknown_8418188:: @ 8418188 +gString_BattleRecords_TotalRecord:: @ 8418188 .string "TOTAL RECORD W:{STR_VAR_1} L:{STR_VAR_2} D:{STR_VAR_3}$" -gUnknown_84181A4:: @ 84181A4 +gString_BattleRecords_ColumnHeaders:: @ 84181A4 .string "WIN{CLEAR_TO 0x30}LOSE{CLEAR_TO 0x60}DRAW$" -gUnknown_84181B6:: @ 84181B6 +gString_BattleRecords_7Dashes:: @ 84181B6 .string "-------$" -gUnknown_84181BE:: @ 84181BE +gString_BattleRecords_4Dashes:: @ 84181BE .string "----$" gFameCheckerText_FameCheckerWillBeClosed:: @ 84181C3 @@ -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/graphics/battle_records/bg_tiles.png b/graphics/battle_records/bg_tiles.png Binary files differnew file mode 100644 index 000000000..bbe9de321 --- /dev/null +++ b/graphics/battle_records/bg_tiles.png diff --git a/graphics/battle_records/palette.pal b/graphics/battle_records/palette.pal new file mode 100644 index 000000000..d6994a324 --- /dev/null +++ b/graphics/battle_records/palette.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 197 164 +74 74 74 +189 131 156 +230 156 213 +222 238 255 +230 246 255 +148 115 139 +197 213 222 +172 164 189 +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/battle_records/tilemap.bin b/graphics/battle_records/tilemap.bin Binary files differnew file mode 100644 index 000000000..a3691cfd7 --- /dev/null +++ b/graphics/battle_records/tilemap.bin 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/strings.h b/include/strings.h index 8fb15be76..2cb57e19d 100644 --- a/include/strings.h +++ b/include/strings.h @@ -185,4 +185,11 @@ extern const u8 gUnknown_841B684[]; extern const u8 gUnknown_841B68F[]; extern const u8 gUnknown_841B698[]; +// battle_records +extern const u8 gString_BattleRecords_PlayersBattleResults[]; +extern const u8 gString_BattleRecords_TotalRecord[]; +extern const u8 gString_BattleRecords_ColumnHeaders[]; +extern const u8 gString_BattleRecords_7Dashes[]; +extern const u8 gString_BattleRecords_4Dashes[]; + #endif //GUARD_STRINGS_H 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..b9c16d958 --- /dev/null +++ b/include/trainer_tower.h @@ -0,0 +1,6 @@ +#ifndef GUARD_TRAINER_TOWER_H +#define GUARD_TRAINER_TOWER_H + +void PrintTrainerTowerRecords(void); + +#endif //GUARD_TRAINER_TOWER_H diff --git a/ld_script.txt b/ld_script.txt index 6dddecf0c..bf6ddadc4 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -188,7 +188,7 @@ SECTIONS { src/prof_pc.o(.text); src/hof_pc.o(.text); asm/field_specials.o(.text); - asm/battle_records.o(.text); + src/battle_records.o(.text); asm/evolution_scene.o(.text); src/coins.o(.text); src/fldeff_strength.o(.text); @@ -416,6 +416,8 @@ SECTIONS { data/data_835B488.o(.rodata.83EEC98); src/battle_ai_script_commands.o(.rodata); data/data_83F5738.o(.rodata); + src/battle_records.o(.rodata); + data/data_83F5738.o(.rodata.83F6C90); src/save.o(.rodata); data/data_83FECCC.o(.rodata); src/intro.o(.rodata); diff --git a/src/battle_records.c b/src/battle_records.c new file mode 100644 index 000000000..79f29eb8a --- /dev/null +++ b/src/battle_records.c @@ -0,0 +1,576 @@ +#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 "menu.h" +#include "overworld.h" +#include "strings.h" +#include "trainer_card.h" +#include "constants/battle.h" +#include "constants/songs.h" +#include "constants/maps.h" + +static EWRAM_DATA u16 * sBg3TilemapBuffer_p = NULL; + +static void MainCB2_SetUp(void); +static void VBlankCB(void); +static void MainCB2(void); +static void Task_WaitFadeIn(u8 taskId); +static void Task_WaitButton(u8 taskId); +static void Task_FadeOut(u8 taskId); +static void Task_DestroyAndReturnToField(u8 taskId); +static void ClearWindowCommitAndRemove(u8 winddowId); +static void ResetGpu(void); +static void StopAllRunningTasks(void); +static void EnableDisplay(void); +static void ResetBGPos(void); +static void PrintBattleRecords(void); +static void CommitWindow(u8 windowId); +static void LoadFrameGfxOnBg(u8 bgId); + +static const u16 sTiles[] = INCBIN_U16("graphics/battle_records/bg_tiles.4bpp"); +static const u16 sPalette[] = INCBIN_U16("graphics/battle_records/palette.gbapal"); +static const u16 sTilemap[] = INCBIN_U16("graphics/battle_records/tilemap.bin"); + +static const struct WindowTemplate sWindowTemplates[] = { + { + .bg = 0, + .tilemapLeft = 2, + .tilemapTop = 1, + .width = 27, + .height = 18, + .paletteNum = 0xF, + .baseBlock = 0x014 + }, DUMMY_WIN_TEMPLATE +}; + +static const struct TextColor sTextColor = { + 0, 2, 3 +}; + +static const struct BgTemplate sBgTemplates[2] = { + { + .bg = 0, + .charBaseIndex = 0, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, // 4bpp + .priority = 0, + .baseTile = 0x000 + }, { + .bg = 3, + .charBaseIndex = 1, + .mapBaseIndex = 30, + .screenSize = 0, + .paletteMode = 0, // 4bpp + .priority = 3, + .baseTile = 0x000 + } +}; + +static u8 *const sStringVars[3] = { + gStringVar1, + gStringVar2, + gStringVar3 +}; + +void Special_BattleRecords(void) +{ + SetVBlankCallback(NULL); + SetMainCallback2(MainCB2_SetUp); +} + +static void MainCB2_SetUp(void) +{ + switch (gMain.state) + { + case 0: + SetVBlankCallback(NULL); + ResetGpu(); + gMain.state++; + break; + case 1: + StopAllRunningTasks(); + gMain.state++; + break; + case 2: + sBg3TilemapBuffer_p = AllocZeroed(0x800); + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, sBgTemplates, NELEMS(sBgTemplates)); + SetBgTilemapBuffer(3, sBg3TilemapBuffer_p); + ResetBGPos(); + gMain.state++; + break; + case 3: + LoadFrameGfxOnBg(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(sWindowTemplates); + DeactivateAllTextPrinters(); + gMain.state++; + break; + case 6: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); + gMain.state++; + break; + case 7: + EnableDisplay(); + SetVBlankCallback(VBlankCB); + if (gSpecialVar_0x8004) + PrintTrainerTowerRecords(); + else + PrintBattleRecords(); + CreateTask(Task_WaitFadeIn, 8); + SetMainCallback2(MainCB2); + gMain.state = 0; + break; + } +} + +static void VBlankCB(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +static void MainCB2(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void Task_WaitFadeIn(u8 taskId) +{ + if (!gPaletteFade.active) + gTasks[taskId].func = Task_WaitButton; +} + +static void Task_WaitButton(u8 taskId) +{ + struct Task * task = &gTasks[taskId]; + + if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + task->func = Task_FadeOut; + } +} + +static void Task_FadeOut(u8 taskId) +{ + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + gTasks[taskId].func = Task_DestroyAndReturnToField; +} + +static void Task_DestroyAndReturnToField(u8 taskId) +{ + if (!gPaletteFade.active) + { + SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); + Free(sBg3TilemapBuffer_p); + ClearWindowCommitAndRemove(0); + FreeAllWindowBuffers(); + DestroyTask(taskId); + } +} + +static void ClearWindowCommitAndRemove(u8 windowId) +{ + FillWindowPixelBuffer(windowId, PIXEL_FILL(0)); + ClearWindowTilemap(windowId); + CopyWindowToVram(windowId, 2); + RemoveWindow(windowId); +} + +static void ResetGpu(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); +} + +static void StopAllRunningTasks(void) +{ + ScanlineEffect_Stop(); + ResetTasks(); + ResetSpriteData(); + ResetAllPicSprites(); + ResetPaletteFade(); + FreeAllSpritePalettes(); +} + +static void EnableDisplay(void) +{ + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG3_ON); +} + +static void ResetBGPos(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); +} + +static 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; +} + +static 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); +} + +static s32 GetLinkBattleRecordTotalBattles(struct LinkBattleRecord * record) +{ + return record->wins + record->losses + record->draws; +} + +static s32 IndexOfOpponentLinkBattleRecord(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; +} + +static 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; + } + } + } +} + +static 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; + } +} + +static 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); +} + +static void AddOpponentLinkBattleRecord(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 = IndexOfOpponentLinkBattleRecord(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); +} + +static void IncTrainerCardWinCount(s32 battlerId) +{ + u16 *wins = &gTrainerCards[battlerId].linkBattleWins; + (*wins)++; + if (*wins > 9999) + *wins = 9999; +} + +static void IncTrainerCardLossCount(s32 battlerId) +{ + u16 *losses = &gTrainerCards[battlerId].linkBattleLosses; + (*losses)++; + if (*losses > 9999) + *losses = 9999; +} + +static void UpdateBattleOutcomeOnTrainerCards(s32 battlerId) +{ + switch (gBattleOutcome) + { + case B_OUTCOME_WON: + IncTrainerCardWinCount(battlerId ^ 1); + IncTrainerCardLossCount(battlerId); + break; + case B_OUTCOME_LOST: + IncTrainerCardLossCount(battlerId ^ 1); + IncTrainerCardWinCount(battlerId); + break; + } +} + +void TryRecordLinkBattleOutcome(s32 battlerId) +{ + if (gSaveBlock1Ptr->location.mapGroup != MAP_GROUP(UNKNOWN_MAP_00_04) || gSaveBlock1Ptr->location.mapNum != MAP_NUM(UNKNOWN_MAP_00_04)) + { + UpdateBattleOutcomeOnTrainerCards(battlerId); + AddOpponentLinkBattleRecord(&gSaveBlock2Ptr->linkBattleRecords, gTrainerCards[battlerId].playerName, gTrainerCards[battlerId].trainerId, gBattleOutcome, gLinkPlayers[battlerId].language); + } +} + +static void PrintTotalRecord(struct LinkBattleRecords * records) +{ + u32 nwins = GetGameStat(GAME_STAT_LINK_BATTLE_WINS); + u32 nlosses = GetGameStat(GAME_STAT_LINK_BATTLE_LOSSES); + u32 ndraws = GetGameStat(GAME_STAT_LINK_BATTLE_DRAWS); + s32 i; + s32 j; + bool32 foundEnd; + u8 * strvar; + + if (nwins > 9999) + nwins = 9999; + if (nlosses > 9999) + nlosses = 9999; + if (ndraws > 9999) + ndraws = 9999; + + ConvertIntToDecimalStringN(gStringVar1, nwins, STR_CONV_MODE_LEFT_ALIGN, 4); + ConvertIntToDecimalStringN(gStringVar2, nlosses, STR_CONV_MODE_LEFT_ALIGN, 4); + ConvertIntToDecimalStringN(gStringVar3, ndraws, STR_CONV_MODE_LEFT_ALIGN, 4); + + for (i = 0; i < NELEMS(sStringVars); i++) + { + strvar = sStringVars[i]; + foundEnd = FALSE; + for (j = 0; j < 4; j++) + { + if (!foundEnd && *strvar == EOS) + foundEnd = TRUE; + if (foundEnd) + *strvar = CHAR_SPACE; + strvar++; + } + *strvar = 0xFF; + } + + StringExpandPlaceholders(gStringVar4, gString_BattleRecords_TotalRecord); + AddTextPrinterParameterized4(0, 2, 12, 24, 0, 2, &sTextColor, 0, gStringVar4); +} + +static void PrintOpponentBattleRecord(struct LinkBattleRecord * record, u8 y) +{ + u8 i = 0; + s32 x; + + if (record->wins == 0 && record->losses == 0 && record->draws == 0) + { + AddTextPrinterParameterized4(0, 2, 0, y, 0, 2, &sTextColor, 0, gString_BattleRecords_7Dashes); + for (i = 0; i < 3; i++) + { + if (i == 0) + x = 0x54; + else if (i == 1) + x = 0x84; + else + x = 0xB4; + AddTextPrinterParameterized4(0, 2, x, y, 0, 2, &sTextColor, 0, gString_BattleRecords_4Dashes); + } + } + else + { + for (i = 0; i < 4; i++) + { + if (i == 0) + { + x = 0; + StringFillWithTerminator(gStringVar1, OT_NAME_LENGTH + 1); + StringCopyN(gStringVar1, record->name, OT_NAME_LENGTH); + } + else if (i == 1) + { + x = 0x54; + ConvertIntToDecimalStringN(gStringVar1, record->wins, STR_CONV_MODE_RIGHT_ALIGN, 4); + } + else if (i == 2) + { + x = 0x84; + ConvertIntToDecimalStringN(gStringVar1, record->losses, STR_CONV_MODE_RIGHT_ALIGN, 4); + } + else + { + x = 0xB4; + ConvertIntToDecimalStringN(gStringVar1, record->draws, STR_CONV_MODE_RIGHT_ALIGN, 4); + } + AddTextPrinterParameterized4(0, 2, x, y, 0, 2, &sTextColor, 0, gStringVar1); + } + } +} + +static void PrintBattleRecords(void) +{ + u32 left; + s32 i; + + FillWindowPixelRect(0, PIXEL_FILL(0), 0, 0, 0xD8, 0x90); + StringExpandPlaceholders(gStringVar4, gString_BattleRecords_PlayersBattleResults); + left = 0xD0 - GetStringWidth(2, gStringVar4, -1); + AddTextPrinterParameterized4(0, 2, left / 2, 4, 0, 2, &sTextColor, 0, gStringVar4); + PrintTotalRecord(&gSaveBlock2Ptr->linkBattleRecords); + AddTextPrinterParameterized4(0, 2, 0x54, 0x30, 0, 2, &sTextColor, 0, gString_BattleRecords_ColumnHeaders); + for (i = 0; i < LINK_B_RECORDS_COUNT; i++) + PrintOpponentBattleRecord(&gSaveBlock2Ptr->linkBattleRecords.entries[i], 0x3D + 14 * i); + CommitWindow(0); +} + +static void CommitWindow(u8 windowId) +{ + PutWindowTilemap(windowId); + CopyWindowToVram(windowId, 3); +} + +static void LoadFrameGfxOnBg(u8 bg) +{ + LoadBgTiles(bg, sTiles, 0xC0, 0); + CopyToBgTilemapBufferRect(bg, sTilemap, 0, 0, 32, 32); + LoadPalette(sPalette, 0, 0x20); +} diff --git a/src/trainer_tower.c b/src/trainer_tower.c index b7b9c096d..6ef7157af 100644 --- a/src/trainer_tower.c +++ b/src/trainer_tower.c @@ -566,10 +566,10 @@ void sub_815D8C8(void) } } -void sub_815D8F8(void) // fakematching +void sub_815D8F8(void) { u8 i; - register u32 found_map asm("r4") = 0xFF; + u8 found_map = 0xFF; for (i = 0; i < 15; i++) { if (gUnknown_8479D34[i].mapGroup == gSaveBlock1Ptr->location.mapGroup && gUnknown_8479D34[i].mapNum == gSaveBlock1Ptr->location.mapNum) @@ -1425,7 +1425,7 @@ void sub_815EC0C(void) } } -void sub_815EC8C(void) +void PrintTrainerTowerRecords(void) { s32 i; u8 windowId = 0; diff --git a/sym_ewram.txt b/sym_ewram.txt index b968e31ee..f757982ff 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -841,17 +841,8 @@ gFieldEffectArguments: @ 20386E0 gUnknown_2039620: @ 2039620 .space 0x4 -gUnknown_2039624: @ 2039624 - .space 0x14 - -gUnknown_2039638: @ 2039638 - .space 0x2 - -gUnknown_203963A: @ 203963A - .space 0x1A - -gUnknown_2039654: @ 2039654 - .space 0x150 +gTrainerCards: @ 2039624 + .space 0x180 gUnknown_20397A4: @ 20397A4 .space 0x4 @@ -1061,8 +1052,7 @@ gUnknown_2039A1A: @ 2039A1A gUnknown_2039A1B: @ 2039A1B .space 0x1 -gUnknown_2039A1C: @ 2039A1C - .space 0x4 + .include "src/battle_records.o" gUnknown_2039A20: @ 2039A20 .space 0x4 |