From f9a2f6c4a2bd8ce60d2c7a720eddf5cdde7446a9 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Tue, 1 May 2018 12:38:55 +0200 Subject: start decompiling battle records --- asm/battle_records.s | 126 ++++++++++++++++++++++---------------------- asm/cable_club.s | 2 +- data/battle_records.s | 37 ------------- data/scripts/cable_club.inc | 2 +- data/specials.inc | 2 +- include/battle_records.h | 9 ++++ ld_script.txt | 3 +- src/battle_records.c | 48 +++++++++++++++++ 8 files changed, 125 insertions(+), 104 deletions(-) delete mode 100644 data/battle_records.s create mode 100644 include/battle_records.h create mode 100644 src/battle_records.c diff --git a/asm/battle_records.s b/asm/battle_records.s index 1880e7b45..5b6b0814a 100644 --- a/asm/battle_records.s +++ b/asm/battle_records.s @@ -5,8 +5,8 @@ .text - thumb_func_start sub_813BF94 -sub_813BF94: @ 813BF94 + thumb_func_start InitLinkBattleRecord +InitLinkBattleRecord: @ 813BF94 push {r4,lr} sub sp, 0x4 adds r4, r0, 0 @@ -29,16 +29,16 @@ sub_813BF94: @ 813BF94 pop {r0} bx r0 .pool - thumb_func_end sub_813BF94 + thumb_func_end InitLinkBattleRecord - thumb_func_start sub_813BFC4 -sub_813BFC4: @ 813BFC4 + thumb_func_start InitLinkBattleRecords_ +InitLinkBattleRecords_: @ 813BFC4 push {r4,r5,lr} adds r4, r0, 0 movs r5, 0x4 _0813BFCA: adds r0, r4, 0 - bl sub_813BF94 + bl InitLinkBattleRecord adds r4, 0x10 subs r5, 0x1 cmp r5, 0 @@ -55,10 +55,10 @@ _0813BFCA: pop {r4,r5} pop {r0} bx r0 - thumb_func_end sub_813BFC4 + thumb_func_end InitLinkBattleRecords_ - thumb_func_start sub_813BFF8 -sub_813BFF8: @ 813BFF8 + thumb_func_start GetLinkBattleRecordTotalBattles +GetLinkBattleRecordTotalBattles: @ 813BFF8 adds r1, r0, 0 ldrh r0, [r1, 0xA] ldrh r2, [r1, 0xC] @@ -66,10 +66,10 @@ sub_813BFF8: @ 813BFF8 ldrh r1, [r1, 0xE] adds r0, r1 bx lr - thumb_func_end sub_813BFF8 + thumb_func_end GetLinkBattleRecordTotalBattles - thumb_func_start sub_813C008 -sub_813C008: @ 813C008 + thumb_func_start FindLinkBattleRecord +FindLinkBattleRecord: @ 813C008 push {r4-r7,lr} adds r7, r1, 0 lsls r2, 16 @@ -98,10 +98,10 @@ _0813C036: pop {r4-r7} pop {r1} bx r1 - thumb_func_end sub_813C008 + thumb_func_end FindLinkBattleRecord - thumb_func_start sub_813C03C -sub_813C03C: @ 813C03C + thumb_func_start SortLinkBattleRecords +SortLinkBattleRecords: @ 813C03C push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -129,10 +129,10 @@ _0813C04C: _0813C06A: ldr r0, [sp, 0x14] str r3, [sp, 0x10] - bl sub_813BFF8 + bl GetLinkBattleRecordTotalBattles adds r4, r0, 0 adds r0, r5, 0 - bl sub_813BFF8 + bl GetLinkBattleRecordTotalBattles ldr r3, [sp, 0x10] cmp r4, r0 ble _0813C0B2 @@ -178,10 +178,10 @@ _0813C0BA: pop {r4-r7} pop {r0} bx r0 - thumb_func_end sub_813C03C + thumb_func_end SortLinkBattleRecords - thumb_func_start sub_813C0D0 -sub_813C0D0: @ 813C0D0 + thumb_func_start UpdateLinkBattleRecord +UpdateLinkBattleRecord: @ 813C0D0 push {lr} adds r2, r0, 0 cmp r1, 0x2 @@ -233,10 +233,10 @@ _0813C12A: pop {r0} bx r0 .pool - thumb_func_end sub_813C0D0 + thumb_func_end UpdateLinkBattleRecord - thumb_func_start sub_813C134 -sub_813C134: @ 813C134 + thumb_func_start UpdateLinkBattleGameStats +UpdateLinkBattleGameStats: @ 813C134 push {r4,lr} cmp r0, 0x2 beq _0813C14E @@ -270,10 +270,10 @@ _0813C166: pop {r0} bx r0 .pool - thumb_func_end sub_813C134 + thumb_func_end UpdateLinkBattleGameStats - thumb_func_start sub_813C170 -sub_813C170: @ 813C170 + thumb_func_start UpdateLinkBattleRecords_ +UpdateLinkBattleRecords_: @ 813C170 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -289,13 +289,13 @@ sub_813C170: @ 813C170 lsrs r0, 24 mov r9, r0 mov r0, r10 - bl sub_813C134 + bl UpdateLinkBattleGameStats adds r0, r6, 0 - bl sub_813C03C + bl SortLinkBattleRecords adds r0, r6, 0 mov r1, r8 adds r2, r7, 0 - bl sub_813C008 + bl FindLinkBattleRecord adds r5, r0, 0 cmp r5, 0x5 bne _0813C1D4 @@ -303,7 +303,7 @@ sub_813C170: @ 813C170 adds r4, r6, 0 adds r4, 0x40 adds r0, r4, 0 - bl sub_813BF94 + bl InitLinkBattleRecord adds r0, r4, 0 mov r1, r8 movs r2, 0x7 @@ -323,9 +323,9 @@ _0813C1D4: lsls r0, r5, 4 adds r0, r6, r0 mov r1, r10 - bl sub_813C0D0 + bl UpdateLinkBattleRecord adds r0, r6, 0 - bl sub_813C03C + bl SortLinkBattleRecords pop {r3-r5} mov r8, r3 mov r9, r4 @@ -334,7 +334,7 @@ _0813C1D4: pop {r0} bx r0 .pool - thumb_func_end sub_813C170 + thumb_func_end UpdateLinkBattleRecords_ thumb_func_start InitLinkBattleRecords InitLinkBattleRecords: @ 813C1F8 @@ -343,14 +343,14 @@ InitLinkBattleRecords: @ 813C1F8 ldr r0, [r0] ldr r1, =0x00003150 adds r0, r1 - bl sub_813BFC4 + bl InitLinkBattleRecords_ pop {r0} bx r0 .pool thumb_func_end InitLinkBattleRecords - thumb_func_start sub_813C214 -sub_813C214: @ 813C214 + thumb_func_start IncTrainerCardWins +IncTrainerCardWins: @ 813C214 push {lr} movs r1, 0x64 muls r1, r0 @@ -369,10 +369,10 @@ _0813C230: pop {r0} bx r0 .pool - thumb_func_end sub_813C214 + thumb_func_end IncTrainerCardWins - thumb_func_start sub_813C23C -sub_813C23C: @ 813C23C + thumb_func_start IncTrainerCardLosses +IncTrainerCardLosses: @ 813C23C push {lr} movs r1, 0x64 muls r1, r0 @@ -391,10 +391,10 @@ _0813C258: pop {r0} bx r0 .pool - thumb_func_end sub_813C23C + thumb_func_end IncTrainerCardLosses - thumb_func_start sub_813C264 -sub_813C264: @ 813C264 + thumb_func_start UpdateTrainerCardWinsLosses +UpdateTrainerCardWinsLosses: @ 813C264 push {r4,lr} adds r4, r0, 0 ldr r0, =gBattleOutcome @@ -407,24 +407,24 @@ sub_813C264: @ 813C264 .pool _0813C27C: eors r0, r4 - bl sub_813C214 + bl IncTrainerCardWins adds r0, r4, 0 - bl sub_813C23C + bl IncTrainerCardLosses b _0813C298 _0813C28A: movs r0, 0x1 eors r0, r4 - bl sub_813C23C + bl IncTrainerCardLosses adds r0, r4, 0 - bl sub_813C214 + bl IncTrainerCardWins _0813C298: pop {r4} pop {r0} bx r0 - thumb_func_end sub_813C264 + thumb_func_end UpdateTrainerCardWinsLosses - thumb_func_start sub_813C2A0 -sub_813C2A0: @ 813C2A0 + thumb_func_start UpdateLinkBattleRecords +UpdateLinkBattleRecords: @ 813C2A0 push {r4,lr} sub sp, 0x4 adds r4, r0, 0 @@ -432,7 +432,7 @@ sub_813C2A0: @ 813C2A0 cmp r0, 0x1 beq _0813C2DA adds r0, r4, 0 - bl sub_813C264 + bl UpdateTrainerCardWinsLosses ldr r0, =gSaveBlock1Ptr ldr r0, [r0] ldr r1, =0x00003150 @@ -450,17 +450,17 @@ sub_813C2A0: @ 813C2A0 lsls r4, 24 lsrs r4, 24 str r4, [sp] - bl sub_813C170 + bl UpdateLinkBattleRecords_ _0813C2DA: add sp, 0x4 pop {r4} pop {r0} bx r0 .pool - thumb_func_end sub_813C2A0 + thumb_func_end UpdateLinkBattleRecords - thumb_func_start sub_813C2F4 -sub_813C2F4: @ 813C2F4 + thumb_func_start PrintLinkBattleWinsLossesDraws +PrintLinkBattleWinsLossesDraws: @ 813C2F4 push {r4,lr} sub sp, 0xC ldr r4, =gStringVar1 @@ -513,10 +513,10 @@ sub_813C2F4: @ 813C2F4 pop {r0} bx r0 .pool - thumb_func_end sub_813C2F4 + thumb_func_end PrintLinkBattleWinsLossesDraws - thumb_func_start sub_813C384 -sub_813C384: @ 813C384 + thumb_func_start PrintLinkBattleRecord +PrintLinkBattleRecord: @ 813C384 push {r4-r7,lr} mov r7, r8 push {r7} @@ -652,10 +652,10 @@ _0813C4A8: pop {r0} bx r0 .pool - thumb_func_end sub_813C384 + thumb_func_end PrintLinkBattleRecord - thumb_func_start sub_813C4BC -sub_813C4BC: @ 813C4BC + thumb_func_start ShowLinkBattleRecords +ShowLinkBattleRecords: @ 813C4BC push {r4-r7,lr} mov r7, r9 mov r6, r8 @@ -696,7 +696,7 @@ sub_813C4BC: @ 813C4BC ldr r1, =0x00003150 mov r9, r1 add r0, r9 - bl sub_813C2F4 + bl PrintLinkBattleWinsLossesDraws ldr r1, =gText_WinLoseDraw adds r0, r5, 0 bl StringExpandPlaceholders @@ -721,7 +721,7 @@ _0813C540: adds r2, r3 adds r2, r4 ldrb r2, [r2] - bl sub_813C384 + bl PrintLinkBattleRecord movs r0, 0x80 lsls r0, 18 adds r6, r0 @@ -743,7 +743,7 @@ _0813C540: pop {r0} bx r0 .pool - thumb_func_end sub_813C4BC + thumb_func_end ShowLinkBattleRecords thumb_func_start sub_813C5A0 sub_813C5A0: @ 813C5A0 diff --git a/asm/cable_club.s b/asm/cable_club.s index e6fbd1886..3b8277f49 100644 --- a/asm/cable_club.s +++ b/asm/cable_club.s @@ -2171,7 +2171,7 @@ sub_80B360C: @ 80B360C ldrb r0, [r0] movs r5, 0x1 eors r0, r5 - bl sub_813C2A0 + bl UpdateLinkBattleRecords ldr r0, =gWirelessCommType ldrb r0, [r0] cmp r0, 0 diff --git a/data/battle_records.s b/data/battle_records.s deleted file mode 100644 index 86dc9d8b9..000000000 --- a/data/battle_records.s +++ /dev/null @@ -1,37 +0,0 @@ - - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gUnknown_085B3484:: @ 85B3484 - .incbin "graphics/unknown/unknown_5B3484.4bpp" - - .align 2 -gUnknown_085B3544:: @ 85B3544 - .incbin "graphics/unknown/unknown_5B3484.gbapal" - - .align 2 -gUnknown_085B3564:: @ 85B3564 - .incbin "graphics/unknown/unknown_5B3564.bin" - - .align 2 -gUnknown_085B3D64:: @ 85B3D64 - .4byte 0x000001f0, 0x000031e7 - - .align 2 -gUnknown_085B3D6C:: @ 85B3D6C - window_template 0x00, 0x02, 0x01, 0x1a, 0x12, 0x0f, 0x0014 - null_window_template - - .align 2 -gUnknown_085B3D7C:: @ 85B3D7C - window_template 0x00, 0x02, 0x01, 0x1a, 0x11, 0x0f, 0x0001 - -gUnknown_085B3D84:: @ 85B3D84 - .string "-------$" - -gUnknown_085B3D8C:: @ 85B3D8C - .string "----$" - diff --git a/data/scripts/cable_club.inc b/data/scripts/cable_club.inc index e5b330bf3..870e4e305 100644 --- a/data/scripts/cable_club.inc +++ b/data/scripts/cable_club.inc @@ -787,7 +787,7 @@ MossdeepCity_GameCorner_1F_Movement_277360: @ 8277360 gUnknown_08277365:: @ 8277365 lockall setvar VAR_0x8004, 0 - special sub_813C4BC + special ShowLinkBattleRecords waitbuttonpress special sub_813C5A0 releaseall diff --git a/data/specials.inc b/data/specials.inc index 2290c9d21..366413eaf 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -207,7 +207,7 @@ gSpecials:: @ 81DBA64 def_special ScriptHatchMon def_special EggHatch def_special sub_8071614 - def_special sub_813C4BC + def_special ShowLinkBattleRecords def_special IsEnoughForCostInVar0x8005 def_special SubtractMoneyFromVar0x8005 def_special sub_80F972C diff --git a/include/battle_records.h b/include/battle_records.h new file mode 100644 index 000000000..ac6c3cbdb --- /dev/null +++ b/include/battle_records.h @@ -0,0 +1,9 @@ +#ifndef GUARD_BATTLE_RECORDS_H +#define GUARD_BATTLE_RECORDS_H + +void InitLinkBattleRecords(void); +void UpdateLinkBattleRecords(int id); +void ShowLinkBattleRecords(void); +void ShowBattleTowerRecords(void); + +#endif // GUARD_BATTLE_RECORDS_H diff --git a/ld_script.txt b/ld_script.txt index 2832bcada..3318bb521 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -185,6 +185,7 @@ SECTIONS { src/hof_pc.o(.text); asm/field_specials.o(.text); asm/battle_records.o(.text); + src/battle_records.o(.text); asm/pokedex_area_screen.o(.text); src/evolution_scene.o(.text); asm/roulette.o(.text); @@ -473,7 +474,7 @@ SECTIONS { src/fldeff_flash.o(.rodata); src/time_events.o(.rodata); data/field_specials.o(.rodata); - data/battle_records.o(.rodata); + src/battle_records.o(.rodata); data/pokedex_area_screen.o(.rodata); src/evolution_scene.o(.rodata); data/roulette.o(.rodata); diff --git a/src/battle_records.c b/src/battle_records.c new file mode 100644 index 000000000..b21b07341 --- /dev/null +++ b/src/battle_records.c @@ -0,0 +1,48 @@ +#include "global.h" +#include "battle_records.h" +#include "bg.h" +#include "window.h" +#include "link.h" +#include "battle.h" +#include "overworld.h" +#include "constants/game_stat.h" + +// const rom data +const u32 gUnknown_085B3484[] = INCBIN_U32("graphics/unknown/unknown_5B3484.4bpp"); +const u16 gUnknown_085B3544[] = INCBIN_U16("graphics/unknown/unknown_5B3484.gbapal"); +const u32 gUnknown_085B3564[] = INCBIN_U32("graphics/unknown/unknown_5B3564.bin"); + +const struct BgTemplate gUnknown_085B3D64[] = +{ + { + .bg = 0, + .charBaseIndex = 0, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0 + }, + { + .bg = 3, + .charBaseIndex = 1, + .mapBaseIndex = 30, + .screenSize = 0, + .paletteMode = 0, + .priority = 3, + .baseTile = 0 + } +}; + +const struct WindowTemplate gUnknown_085B3D6C[] = +{ + {0x0, 0x2, 0x1, 0x1A, 0x12, 0xF, 0x14}, + DUMMY_WIN_TEMPLATE +}; + +const struct WindowTemplate gUnknown_085B3D7C = {0x0, 0x2, 0x1, 0x1A, 0x11, 0xF, 0x1}; + +const u8 gUnknown_085B3D84[] = _("-------"); +const u8 gUnknown_085B3D8C[] = _("----"); + +// code -- cgit v1.2.3 From 95cf853762e4202dbfece323c5cf454984ca37c5 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Tue, 1 May 2018 14:01:54 +0200 Subject: battle records more decomp and subtle name changes --- asm/battle_records.s | 740 ----------------------------------------------- asm/cable_club.s | 6 +- asm/rom_8011DC0.s | 4 +- asm/trainer_card.s | 4 +- include/battle_records.h | 4 +- include/global.h | 12 +- include/strings.h | 3 + include/trainer_card.h | 35 +++ ld_script.txt | 2 +- src/battle_records.c | 257 ++++++++++++++++ src/new_game.c | 4 +- sym_ewram.txt | 2 +- 12 files changed, 317 insertions(+), 756 deletions(-) create mode 100644 include/trainer_card.h diff --git a/asm/battle_records.s b/asm/battle_records.s index 5b6b0814a..69e207b61 100644 --- a/asm/battle_records.s +++ b/asm/battle_records.s @@ -5,746 +5,6 @@ .text - thumb_func_start InitLinkBattleRecord -InitLinkBattleRecord: @ 813BF94 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - mov r1, sp - movs r0, 0 - strh r0, [r1] - ldr r2, =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 - .pool - thumb_func_end InitLinkBattleRecord - - thumb_func_start InitLinkBattleRecords_ -InitLinkBattleRecords_: @ 813BFC4 - push {r4,r5,lr} - adds r4, r0, 0 - movs r5, 0x4 -_0813BFCA: - adds r0, r4, 0 - bl InitLinkBattleRecord - adds r4, 0x10 - subs r5, 0x1 - cmp r5, 0 - bge _0813BFCA - movs r0, 0x17 - movs r1, 0 - bl SetGameStat - movs r0, 0x18 - movs r1, 0 - bl SetGameStat - movs r0, 0x19 - movs r1, 0 - bl SetGameStat - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end InitLinkBattleRecords_ - - thumb_func_start GetLinkBattleRecordTotalBattles -GetLinkBattleRecordTotalBattles: @ 813BFF8 - 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 FindLinkBattleRecord -FindLinkBattleRecord: @ 813C008 - push {r4-r7,lr} - adds r7, r1, 0 - lsls r2, 16 - lsrs r6, r2, 16 - movs r5, 0 - adds r4, r0, 0 -_0813C014: - adds r0, r4, 0 - adds r1, r7, 0 - movs r2, 0x7 - bl StringCompareN - cmp r0, 0 - bne _0813C02C - ldrh r0, [r4, 0x8] - cmp r0, r6 - bne _0813C02C - adds r0, r5, 0 - b _0813C036 -_0813C02C: - adds r4, 0x10 - adds r5, 0x1 - cmp r5, 0x4 - ble _0813C014 - movs r0, 0x5 -_0813C036: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end FindLinkBattleRecord - - thumb_func_start SortLinkBattleRecords -SortLinkBattleRecords: @ 813C03C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - mov r10, r0 - movs r1, 0x4 -_0813C04C: - subs r3, r1, 0x1 - adds r6, r3, 0 - cmp r3, 0 - blt _0813C0BA - lsls r0, r1, 4 - add r0, r10 - str r0, [sp, 0x14] - lsls r0, r3, 4 - mov r2, r10 - adds r5, r0, r2 - movs r4, 0x50 - add r4, r10 - mov r9, r4 - add r1, r9 - mov r8, r1 -_0813C06A: - ldr r0, [sp, 0x14] - str r3, [sp, 0x10] - bl GetLinkBattleRecordTotalBattles - adds r4, r0, 0 - adds r0, r5, 0 - bl GetLinkBattleRecordTotalBattles - ldr r3, [sp, 0x10] - cmp r4, r0 - ble _0813C0B2 - mov r1, sp - ldr r0, [sp, 0x14] - ldm r0!, {r2,r4,r7} - stm r1!, {r2,r4,r7} - ldr r0, [r0] - str r0, [r1] - ldr r1, [sp, 0x14] - adds r0, r5, 0 - ldm r0!, {r2,r4,r7} - stm r1!, {r2,r4,r7} - ldr r0, [r0] - str r0, [r1] - adds r1, r5, 0 - mov r0, sp - ldm r0!, {r2,r4,r7} - stm r1!, {r2,r4,r7} - ldr r0, [r0] - str r0, [r1] - mov r7, r8 - ldrb r2, [r7] - mov r0, r9 - adds r1, r0, r6 - ldrb r0, [r1] - strb r0, [r7] - strb r2, [r1] -_0813C0B2: - subs r5, 0x10 - subs r6, 0x1 - cmp r6, 0 - bge _0813C06A -_0813C0BA: - adds r1, r3, 0 - cmp r1, 0 - bgt _0813C04C - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end SortLinkBattleRecords - - thumb_func_start UpdateLinkBattleRecord -UpdateLinkBattleRecord: @ 813C0D0 - push {lr} - adds r2, r0, 0 - cmp r1, 0x2 - beq _0813C100 - cmp r1, 0x2 - bgt _0813C0E2 - cmp r1, 0x1 - beq _0813C0E8 - b _0813C12A -_0813C0E2: - cmp r1, 0x3 - beq _0813C118 - b _0813C12A -_0813C0E8: - ldrh r0, [r2, 0xA] - adds r0, 0x1 - strh r0, [r2, 0xA] - lsls r0, 16 - lsrs r0, 16 - ldr r1, =0x0000270f - cmp r0, r1 - bls _0813C12A - strh r1, [r2, 0xA] - b _0813C12A - .pool -_0813C100: - ldrh r0, [r2, 0xC] - adds r0, 0x1 - strh r0, [r2, 0xC] - lsls r0, 16 - lsrs r0, 16 - ldr r1, =0x0000270f - cmp r0, r1 - bls _0813C12A - strh r1, [r2, 0xC] - b _0813C12A - .pool -_0813C118: - ldrh r0, [r2, 0xE] - adds r0, 0x1 - strh r0, [r2, 0xE] - lsls r0, 16 - lsrs r0, 16 - ldr r1, =0x0000270f - cmp r0, r1 - bls _0813C12A - strh r1, [r2, 0xE] -_0813C12A: - pop {r0} - bx r0 - .pool - thumb_func_end UpdateLinkBattleRecord - - thumb_func_start UpdateLinkBattleGameStats -UpdateLinkBattleGameStats: @ 813C134 - push {r4,lr} - cmp r0, 0x2 - beq _0813C14E - cmp r0, 0x2 - bgt _0813C144 - cmp r0, 0x1 - beq _0813C14A - b _0813C166 -_0813C144: - cmp r0, 0x3 - beq _0813C152 - b _0813C166 -_0813C14A: - movs r4, 0x17 - b _0813C154 -_0813C14E: - movs r4, 0x18 - b _0813C154 -_0813C152: - movs r4, 0x19 -_0813C154: - adds r0, r4, 0 - bl GetGameStat - ldr r1, =0x0000270e - cmp r0, r1 - bhi _0813C166 - adds r0, r4, 0 - bl IncrementGameStat -_0813C166: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end UpdateLinkBattleGameStats - - thumb_func_start UpdateLinkBattleRecords_ -UpdateLinkBattleRecords_: @ 813C170 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r6, r0, 0 - mov r8, r1 - mov r10, r3 - ldr r0, [sp, 0x20] - lsls r2, 16 - lsrs r7, r2, 16 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - mov r0, r10 - bl UpdateLinkBattleGameStats - adds r0, r6, 0 - bl SortLinkBattleRecords - adds r0, r6, 0 - mov r1, r8 - adds r2, r7, 0 - bl FindLinkBattleRecord - adds r5, r0, 0 - cmp r5, 0x5 - bne _0813C1D4 - movs r5, 0x4 - adds r4, r6, 0 - adds r4, 0x40 - adds r0, r4, 0 - bl InitLinkBattleRecord - adds r0, r4, 0 - mov r1, r8 - movs r2, 0x7 - bl StringCopyN - strh r7, [r4, 0x8] - adds r2, r6, 0 - adds r2, 0x54 - ldr r1, =gLinkPlayers - mov r3, r9 - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - adds r0, r1 - ldrh r0, [r0, 0x1A] - strb r0, [r2] -_0813C1D4: - lsls r0, r5, 4 - adds r0, r6, r0 - mov r1, r10 - bl UpdateLinkBattleRecord - adds r0, r6, 0 - bl SortLinkBattleRecords - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end UpdateLinkBattleRecords_ - - thumb_func_start InitLinkBattleRecords -InitLinkBattleRecords: @ 813C1F8 - push {lr} - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, =0x00003150 - adds r0, r1 - bl InitLinkBattleRecords_ - pop {r0} - bx r0 - .pool - thumb_func_end InitLinkBattleRecords - - thumb_func_start IncTrainerCardWins -IncTrainerCardWins: @ 813C214 - push {lr} - movs r1, 0x64 - muls r1, r0 - ldr r0, =gUnknown_02039B6C - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - ldr r2, =0x0000270f - cmp r0, r2 - bls _0813C230 - strh r2, [r1] -_0813C230: - pop {r0} - bx r0 - .pool - thumb_func_end IncTrainerCardWins - - thumb_func_start IncTrainerCardLosses -IncTrainerCardLosses: @ 813C23C - push {lr} - movs r1, 0x64 - muls r1, r0 - ldr r0, =gUnknown_02039B6E - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - ldr r2, =0x0000270f - cmp r0, r2 - bls _0813C258 - strh r2, [r1] -_0813C258: - pop {r0} - bx r0 - .pool - thumb_func_end IncTrainerCardLosses - - thumb_func_start UpdateTrainerCardWinsLosses -UpdateTrainerCardWinsLosses: @ 813C264 - push {r4,lr} - adds r4, r0, 0 - ldr r0, =gBattleOutcome - ldrb r0, [r0] - cmp r0, 0x1 - beq _0813C27C - cmp r0, 0x2 - beq _0813C28A - b _0813C298 - .pool -_0813C27C: - eors r0, r4 - bl IncTrainerCardWins - adds r0, r4, 0 - bl IncTrainerCardLosses - b _0813C298 -_0813C28A: - movs r0, 0x1 - eors r0, r4 - bl IncTrainerCardLosses - adds r0, r4, 0 - bl IncTrainerCardWins -_0813C298: - pop {r4} - pop {r0} - bx r0 - thumb_func_end UpdateTrainerCardWinsLosses - - thumb_func_start UpdateLinkBattleRecords -UpdateLinkBattleRecords: @ 813C2A0 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - bl InUnionRoom - cmp r0, 0x1 - beq _0813C2DA - adds r0, r4, 0 - bl UpdateTrainerCardWinsLosses - ldr r0, =gSaveBlock1Ptr - ldr r0, [r0] - ldr r1, =0x00003150 - adds r0, r1 - movs r1, 0x64 - adds r3, r4, 0 - muls r3, r1 - ldr r2, =gUnknown_02039B88 - adds r1, r3, r2 - subs r2, 0x30 - adds r3, r2 - ldrh r2, [r3, 0xE] - ldr r3, =gBattleOutcome - ldrb r3, [r3] - lsls r4, 24 - lsrs r4, 24 - str r4, [sp] - bl UpdateLinkBattleRecords_ -_0813C2DA: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end UpdateLinkBattleRecords - - thumb_func_start PrintLinkBattleWinsLossesDraws -PrintLinkBattleWinsLossesDraws: @ 813C2F4 - push {r4,lr} - sub sp, 0xC - ldr r4, =gStringVar1 - movs r0, 0x17 - bl GetGameStat - adds r1, r0, 0 - adds r0, r4, 0 - movs r2, 0 - movs r3, 0x4 - bl ConvertIntToDecimalStringN - ldr r4, =gStringVar2 - movs r0, 0x18 - bl GetGameStat - adds r1, r0, 0 - adds r0, r4, 0 - movs r2, 0 - movs r3, 0x4 - bl ConvertIntToDecimalStringN - ldr r4, =gStringVar3 - movs r0, 0x19 - bl GetGameStat - adds r1, r0, 0 - adds r0, r4, 0 - movs r2, 0 - movs r3, 0x4 - bl ConvertIntToDecimalStringN - ldr r4, =gStringVar4 - ldr r1, =gText_TotalRecordWLD - adds r0, r4, 0 - bl StringExpandPlaceholders - movs r0, 0x1 - adds r1, r4, 0 - movs r2, 0xD0 - bl GetStringCenterAlignXOffset - adds r3, r0, 0 - ldr r0, =gResultsWindowId - ldrb r0, [r0] - lsls r3, 24 - lsrs r3, 24 - movs r1, 0x11 - str r1, [sp] - movs r1, 0 - str r1, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0x1 - adds r2, r4, 0 - bl PrintTextOnWindow - add sp, 0xC - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end PrintLinkBattleWinsLossesDraws - - thumb_func_start PrintLinkBattleRecord -PrintLinkBattleRecord: @ 813C384 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xC - adds r6, r0, 0 - adds r5, r2, 0 - lsls r1, 24 - lsrs r4, r1, 24 - ldrh r0, [r6, 0xA] - cmp r0, 0 - bne _0813C40C - ldr r7, [r6, 0xC] - cmp r7, 0 - bne _0813C40C - ldr r0, =gResultsWindowId - mov r8, r0 - ldrb r0, [r0] - ldr r2, =gUnknown_085B3D84 - lsls r4, 3 - adds r4, 0x1 - lsls r4, 24 - lsrs r4, 24 - str r4, [sp] - str r7, [sp, 0x4] - str r7, [sp, 0x8] - movs r1, 0x1 - movs r3, 0x8 - bl PrintTextOnWindow - mov r1, r8 - ldrb r0, [r1] - ldr r5, =gUnknown_085B3D8C - str r4, [sp] - str r7, [sp, 0x4] - str r7, [sp, 0x8] - movs r1, 0x1 - adds r2, r5, 0 - movs r3, 0x50 - bl PrintTextOnWindow - mov r1, r8 - ldrb r0, [r1] - str r4, [sp] - str r7, [sp, 0x4] - str r7, [sp, 0x8] - movs r1, 0x1 - adds r2, r5, 0 - movs r3, 0x80 - bl PrintTextOnWindow - mov r1, r8 - ldrb r0, [r1] - str r4, [sp] - str r7, [sp, 0x4] - str r7, [sp, 0x8] - movs r1, 0x1 - adds r2, r5, 0 - movs r3, 0xB0 - bl PrintTextOnWindow - b _0813C4A8 - .pool -_0813C40C: - ldr r0, =gStringVar1 - movs r1, 0x8 - bl StringFillWithTerminator - ldr r0, =gStringVar1 - adds r1, r6, 0 - movs r2, 0x7 - bl StringCopyN - lsls r1, r5, 24 - lsrs r1, 24 - ldr r0, =gStringVar1 - bl ConvertInternationalString - ldr r0, =gResultsWindowId - mov r8, r0 - ldrb r0, [r0] - lsls r4, 3 - adds r4, 0x1 - lsls r4, 24 - lsrs r4, 24 - str r4, [sp] - movs r5, 0 - str r5, [sp, 0x4] - str r5, [sp, 0x8] - movs r1, 0x1 - ldr r2, =gStringVar1 - movs r3, 0x8 - bl PrintTextOnWindow - ldrh r1, [r6, 0xA] - ldr r0, =gStringVar1 - movs r2, 0x1 - movs r3, 0x4 - bl ConvertIntToDecimalStringN - mov r1, r8 - ldrb r0, [r1] - str r4, [sp] - str r5, [sp, 0x4] - str r5, [sp, 0x8] - movs r1, 0x1 - ldr r2, =gStringVar1 - movs r3, 0x50 - bl PrintTextOnWindow - ldrh r1, [r6, 0xC] - ldr r0, =gStringVar1 - movs r2, 0x1 - movs r3, 0x4 - bl ConvertIntToDecimalStringN - mov r1, r8 - ldrb r0, [r1] - str r4, [sp] - str r5, [sp, 0x4] - str r5, [sp, 0x8] - movs r1, 0x1 - ldr r2, =gStringVar1 - movs r3, 0x80 - bl PrintTextOnWindow - ldrh r1, [r6, 0xE] - ldr r0, =gStringVar1 - movs r2, 0x1 - movs r3, 0x4 - bl ConvertIntToDecimalStringN - mov r1, r8 - ldrb r0, [r1] - str r4, [sp] - str r5, [sp, 0x4] - str r5, [sp, 0x8] - movs r1, 0x1 - ldr r2, =gStringVar1 - movs r3, 0xB0 - bl PrintTextOnWindow -_0813C4A8: - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end PrintLinkBattleRecord - - thumb_func_start ShowLinkBattleRecords -ShowLinkBattleRecords: @ 813C4BC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0xC - ldr r6, =gResultsWindowId - ldr r0, =gUnknown_085B3D7C - bl AddWindow - strb r0, [r6] - ldrb r0, [r6] - movs r1, 0 - bl NewMenuHelpers_DrawStdWindowFrame - ldrb r0, [r6] - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r5, =gStringVar4 - ldr r1, =gText_PlayersBattleResults - adds r0, r5, 0 - bl StringExpandPlaceholders - movs r0, 0x1 - adds r1, r5, 0 - movs r2, 0xD0 - bl GetStringCenterAlignXOffset - adds r3, r0, 0 - ldrb r0, [r6] - lsls r3, 24 - lsrs r3, 24 - movs r1, 0x1 - str r1, [sp] - movs r4, 0 - str r4, [sp, 0x4] - str r4, [sp, 0x8] - adds r2, r5, 0 - bl PrintTextOnWindow - ldr r0, =gSaveBlock1Ptr - mov r8, r0 - ldr r0, [r0] - ldr r1, =0x00003150 - mov r9, r1 - add r0, r9 - bl PrintLinkBattleWinsLossesDraws - ldr r1, =gText_WinLoseDraw - adds r0, r5, 0 - bl StringExpandPlaceholders - ldrb r0, [r6] - movs r1, 0x29 - str r1, [sp] - str r4, [sp, 0x4] - str r4, [sp, 0x8] - movs r1, 0x1 - adds r2, r5, 0 - movs r3, 0 - bl PrintTextOnWindow - mov r7, r8 - movs r6, 0xE0 - lsls r6, 19 - mov r5, r9 -_0813C540: - ldr r2, [r7] - adds r0, r2, r5 - lsrs r1, r6, 24 - ldr r3, =0x000031a0 - adds r2, r3 - adds r2, r4 - ldrb r2, [r2] - bl PrintLinkBattleRecord - movs r0, 0x80 - lsls r0, 18 - adds r6, r0 - adds r5, 0x10 - adds r4, 0x1 - cmp r4, 0x4 - ble _0813C540 - ldr r4, =gResultsWindowId - ldrb r0, [r4] - bl PutWindowTilemap - ldrb r0, [r4] - movs r1, 0x3 - bl CopyWindowToVram - add sp, 0xC - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end ShowLinkBattleRecords - thumb_func_start sub_813C5A0 sub_813C5A0: @ 813C5A0 push {r4,lr} diff --git a/asm/cable_club.s b/asm/cable_club.s index 3b8277f49..0ace58f4e 100644 --- a/asm/cable_club.s +++ b/asm/cable_club.s @@ -960,7 +960,7 @@ task_map_chg_seq_0807EC34: @ 80B2B94 push {r4,r5,lr} adds r5, r0, 0 adds r4, r1, 0 - ldr r1, =gUnknown_02039B58 + ldr r1, =gTrainerCards ldrh r0, [r5] cmp r0, 0x1 bne _080B2C10 @@ -1044,7 +1044,7 @@ sub_80B2C30: @ 80B2C30 _080B2C5C: movs r0, 0x64 muls r0, r4 - ldr r1, =gUnknown_02039B58 + ldr r1, =gTrainerCards adds r0, r1 lsls r1, r4, 8 ldr r2, =gBlockRecvBuffer @@ -2171,7 +2171,7 @@ sub_80B360C: @ 80B360C ldrb r0, [r0] movs r5, 0x1 eors r0, r5 - bl UpdateLinkBattleRecords + bl UpdatePlayerLinkBattleRecords ldr r0, =gWirelessCommType ldrb r0, [r0] cmp r0, 0 diff --git a/asm/rom_8011DC0.s b/asm/rom_8011DC0.s index 3a7f41d0b..0cdcc45d0 100644 --- a/asm/rom_8011DC0.s +++ b/asm/rom_8011DC0.s @@ -3181,7 +3181,7 @@ _08014138: adds r3, r1, r0 movs r0, 0x64 muls r0, r4 - ldr r1, =gUnknown_02039B58 + ldr r1, =gTrainerCards adds r0, r1 ldrb r2, [r5] adds r1, r3, 0 @@ -10615,7 +10615,7 @@ sub_8018220: @ 8018220 lsrs r0, 24 movs r1, 0x64 muls r1, r0 - ldr r0, =gUnknown_02039B58 + ldr r0, =gTrainerCards adds r1, r0 mov r8, r1 bl UnkTextUtil_Reset diff --git a/asm/trainer_card.s b/asm/trainer_card.s index a56dbd157..6d1be17cb 100644 --- a/asm/trainer_card.s +++ b/asm/trainer_card.s @@ -3894,7 +3894,7 @@ _080C48F6: sub_80C4904: @ 80C4904 lsls r0, 24 lsrs r0, 24 - ldr r2, =gUnknown_02039B58 + ldr r2, =gTrainerCards movs r1, 0x64 muls r0, r1 adds r0, r2 @@ -4578,7 +4578,7 @@ sub_80C4E74: @ 80C4E74 ldr r0, [r5] ldr r1, =0x00000534 adds r0, r1 - ldr r2, =gUnknown_02039B58 + ldr r2, =gTrainerCards movs r1, 0x64 muls r1, r4 adds r1, r2 diff --git a/include/battle_records.h b/include/battle_records.h index ac6c3cbdb..5db24f3c8 100644 --- a/include/battle_records.h +++ b/include/battle_records.h @@ -1,8 +1,8 @@ #ifndef GUARD_BATTLE_RECORDS_H #define GUARD_BATTLE_RECORDS_H -void InitLinkBattleRecords(void); -void UpdateLinkBattleRecords(int id); +void ClearPlayerLinkBattleRecords(void); +void UpdatePlayerLinkBattleRecords(s32 battlerId); void ShowLinkBattleRecords(void); void ShowBattleTowerRecords(void); diff --git a/include/global.h b/include/global.h index f88203c90..a223f9762 100644 --- a/include/global.h +++ b/include/global.h @@ -480,6 +480,8 @@ struct RecordMixing_UnknownStruct u16 unk74[0x2]; }; +#define LINK_B_RECORDS_COUNT 5 + struct LinkBattleRecord { u8 name[8]; @@ -489,6 +491,12 @@ struct LinkBattleRecord u16 draws; }; +struct LinkBattleRecords +{ + struct LinkBattleRecord entries[LINK_B_RECORDS_COUNT]; + u8 languages[LINK_B_RECORDS_COUNT]; +}; + struct RecordMixingGiftData { u8 unk0; @@ -703,9 +711,7 @@ struct SaveBlock1 /*0x2e64*/ struct EasyChatPair easyChatPairs[5]; //Dewford trend [0] and some other stuff /*0x2e90*/ struct ContestWinner contestWinners[13]; // 0 - 5 used in contest hall, 6 - 7 unused?, 8 - 12 museum /*0x3030*/ struct DayCare daycare; - /*0x3150*/ struct LinkBattleRecord linkBattleRecords[5]; - /*0x31A0*/ u8 unk_31A0; - /*0x31A1*/ u8 filler_31A1[7]; + /*0x3150*/ struct LinkBattleRecords linkBattleRecords; /*0x31A8*/ u8 giftRibbons[52]; /*0x31DC*/ struct Roamer roamer; /*0x31F8*/ struct EnigmaBerry enigmaBerry; diff --git a/include/strings.h b/include/strings.h index 7c81dbcfb..6ebbd7d73 100644 --- a/include/strings.h +++ b/include/strings.h @@ -429,5 +429,8 @@ extern const u8 gText_TooImportantToToss[]; extern const u8 gText_ConfirmTossItems[]; extern const u8 gText_MoveVar1Where[]; +extern const u8 gText_TotalRecordWLD[]; +extern const u8 gText_PlayersBattleResults[]; +extern const u8 gText_WinLoseDraw[]; #endif //GUARD_STRINGS_H diff --git a/include/trainer_card.h b/include/trainer_card.h new file mode 100644 index 000000000..5cb93dba0 --- /dev/null +++ b/include/trainer_card.h @@ -0,0 +1,35 @@ +#ifndef GUARD_TRAINER_CARD_H +#define GUARD_TRAINER_CARD_H + +struct TrainerCard +{ + /*0x00*/ u8 gender; + /*0x01*/ u8 stars; + /*0x02*/ bool8 hasPokedex; + /*0x03*/ bool8 var_3; + /*0x04*/ bool8 var_4; + /*0x05*/ u8 var_5; + /*0x06*/ u16 firstHallOfFameA; + /*0x08*/ u16 firstHallOfFameB; + /*0x0A*/ u16 firstHallOfFameC; + /*0x0C*/ u16 pokedexSeen; + /*0x0E*/ u16 trainerId; + /*0x10*/ u16 playTimeHours; + /*0x12*/ u16 playTimeMinutes; + /*0x14*/ u16 linkBattleWins; + /*0x16*/ u16 linkBattleLosses; + /*0x18*/ u16 battleTowerWins; + /*0x1A*/ u16 battleTowerLosses; + /*0x1C*/ u16 contestsWithFriends; + /*0x1E*/ u16 pokeblocksWithFriends; + /*0x20*/ u16 pokemonTrades; + /*0x22*/ u16 var_22; + /*0x24*/ u32 money; + /*0x28*/ u16 var_28[4]; + /*0x30*/ u8 playerName[8]; + /*0x38*/ u8 emeraldAddedUnknownFields[0x64-0x38]; +}; + +extern struct TrainerCard gTrainerCards[4]; + +#endif // GUARD_TRAINER_CARD_H diff --git a/ld_script.txt b/ld_script.txt index 3318bb521..3af52896b 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -184,8 +184,8 @@ SECTIONS { src/birch_pc.o(.text); src/hof_pc.o(.text); asm/field_specials.o(.text); - asm/battle_records.o(.text); src/battle_records.o(.text); + asm/battle_records.o(.text); asm/pokedex_area_screen.o(.text); src/evolution_scene.o(.text); asm/roulette.o(.text); diff --git a/src/battle_records.c b/src/battle_records.c index b21b07341..0a0e0bd42 100644 --- a/src/battle_records.c +++ b/src/battle_records.c @@ -5,8 +5,17 @@ #include "link.h" #include "battle.h" #include "overworld.h" +#include "text.h" +#include "strings.h" +#include "string_util.h" +#include "trainer_card.h" +#include "menu.h" +#include "menu_helpers.h" +#include "international_string_util.h" #include "constants/game_stat.h" +extern u8 gResultsWindowId; + // const rom data const u32 gUnknown_085B3484[] = INCBIN_U32("graphics/unknown/unknown_5B3484.4bpp"); const u16 gUnknown_085B3544[] = INCBIN_U16("graphics/unknown/unknown_5B3484.gbapal"); @@ -46,3 +55,251 @@ const u8 gUnknown_085B3D84[] = _("-------"); const u8 gUnknown_085B3D8C[] = _("----"); // code +static void ClearLinkBattleRecord(struct LinkBattleRecord *record) +{ + CpuFill16(0, record, sizeof(struct LinkBattleRecord)); + record->name[0] = EOS; + record->trainerId = 0; + record->wins = 0; + record->losses = 0; + record->draws = 0; +} + +static void ClearLinkBattleRecords(struct LinkBattleRecord *records) +{ + s32 i; + for (i = 0; i < LINK_B_RECORDS_COUNT; i++) + { + ClearLinkBattleRecord(records + 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 FindLinkBattleRecord(struct LinkBattleRecord *records, const u8 *name, u16 trainerId) +{ + s32 i; + + for (i = 0; i < LINK_B_RECORDS_COUNT; i++) + { + if (!StringCompareN(records[i].name, name, OT_NAME_LENGTH) && records[i].trainerId == trainerId) + return i; + } + + return LINK_B_RECORDS_COUNT; +} + +static void SortLinkBattleRecords(struct LinkBattleRecords *records) +{ + s32 i, j; + + for (i = LINK_B_RECORDS_COUNT - 1; i > 0; i--) + { + for (j = i - 1; j >= 0; j--) + { + s32 totalBattlesI = GetLinkBattleRecordTotalBattles(&records->entries[i]); + s32 totalBattlesJ = GetLinkBattleRecordTotalBattles(&records->entries[j]); + + if (totalBattlesI > totalBattlesJ) + { + struct LinkBattleRecord temp1; + u8 temp2; + + temp1 = records->entries[i]; + records->entries[i] = records->entries[j]; + records->entries[j] = temp1; + + temp2 = records->languages[i]; + records->languages[i] = records->languages[j]; + records->languages[j] = temp2; + } + } + } +} + +static void UpdateLinkBattleRecord(struct LinkBattleRecord *record, s32 battleOutcome) +{ + switch (battleOutcome) + { + 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 battleOutcome) +{ + u8 stat; + + switch (battleOutcome) + { + case B_OUTCOME_WON: + stat = GAME_STAT_LINK_BATTLE_WINS; + break; + case B_OUTCOME_LOST: + stat = GAME_STAT_LINK_BATTLE_LOSSES; + break; + case B_OUTCOME_DREW: + stat = GAME_STAT_LINK_BATTLE_DRAWS; + break; + default: + return; + } + + if (GetGameStat(stat) < 9999) + IncrementGameStat(stat); +} + +static void UpdateLinkBattleRecords(struct LinkBattleRecords *records, const u8 *name, u16 trainerId, s32 battleOutcome, u8 battlerId) +{ + s32 index; + + UpdateLinkBattleGameStats(battleOutcome); + SortLinkBattleRecords(records); + index = FindLinkBattleRecord(records->entries, name, trainerId); + if (index == LINK_B_RECORDS_COUNT) + { + index = LINK_B_RECORDS_COUNT - 1; + ClearLinkBattleRecord(&records->entries[index]); + StringCopyN(records->entries[index].name, name, OT_NAME_LENGTH); + records->entries[index].trainerId = trainerId; + records->languages[index] = gLinkPlayers[battlerId].language; + } + UpdateLinkBattleRecord(&records->entries[index], battleOutcome); + SortLinkBattleRecords(records); +} + +void ClearPlayerLinkBattleRecords(void) +{ + ClearLinkBattleRecords(gSaveBlock1Ptr->linkBattleRecords.entries); +} + +static void IncTrainerCardWins(int battlerId) +{ + u16 *wins = &gTrainerCards[battlerId].linkBattleWins; + (*wins)++; + if (*wins > 9999) + *wins = 9999; +} + +static void IncTrainerCardLosses(int battlerId) +{ + u16 *losses = &gTrainerCards[battlerId].linkBattleLosses; + (*losses)++; + if (*losses > 9999) + *losses = 9999; +} + +static void UpdateTrainerCardWinsLosses(int battlerId) +{ + switch (gBattleOutcome) + { + case B_OUTCOME_WON: + IncTrainerCardWins(BATTLE_OPPOSITE(battlerId)); + IncTrainerCardLosses(battlerId); + break; + case B_OUTCOME_LOST: + IncTrainerCardLosses(BATTLE_OPPOSITE(battlerId)); + IncTrainerCardWins(battlerId); + break; + } +} + +void UpdatePlayerLinkBattleRecords(int battlerId) +{ + if (InUnionRoom() != TRUE) + { + UpdateTrainerCardWinsLosses(battlerId); + UpdateLinkBattleRecords( + &gSaveBlock1Ptr->linkBattleRecords, + gTrainerCards[battlerId].playerName, + gTrainerCards[battlerId].trainerId, + gBattleOutcome, + battlerId); + } +} + +static void PrintLinkBattleWinsLossesDraws(struct LinkBattleRecord *records) +{ + s32 x; + + ConvertIntToDecimalStringN(gStringVar1, GetGameStat(GAME_STAT_LINK_BATTLE_WINS), STR_CONV_MODE_LEFT_ALIGN, 4); + ConvertIntToDecimalStringN(gStringVar2, GetGameStat(GAME_STAT_LINK_BATTLE_LOSSES), STR_CONV_MODE_LEFT_ALIGN, 4); + ConvertIntToDecimalStringN(gStringVar3, GetGameStat(GAME_STAT_LINK_BATTLE_DRAWS), STR_CONV_MODE_LEFT_ALIGN, 4); + StringExpandPlaceholders(gStringVar4, gText_TotalRecordWLD); + + x = GetStringCenterAlignXOffset(1, gStringVar4, 0xD0); + PrintTextOnWindow(gResultsWindowId, 1, gStringVar4, x, 0x11, 0, NULL); +} + +static void PrintLinkBattleRecord(struct LinkBattleRecord *record, u8 y, s32 language) +{ + if (record->wins == 0 && record->losses == 0 && record->draws == 0) + { + // empty slot + PrintTextOnWindow(gResultsWindowId, 1, gUnknown_085B3D84, 8, (y * 8) + 1, 0, NULL); + PrintTextOnWindow(gResultsWindowId, 1, gUnknown_085B3D8C, 80, (y * 8) + 1, 0, NULL); + PrintTextOnWindow(gResultsWindowId, 1, gUnknown_085B3D8C, 128, (y * 8) + 1, 0, NULL); + PrintTextOnWindow(gResultsWindowId, 1, gUnknown_085B3D8C, 176, (y * 8) + 1, 0, NULL); + } + else + { + StringFillWithTerminator(gStringVar1, 8); + StringCopyN(gStringVar1, record->name, 7); + ConvertInternationalString(gStringVar1, language); + + PrintTextOnWindow(gResultsWindowId, 1, gStringVar1, 8, (y * 8) + 1, 0, NULL); + + ConvertIntToDecimalStringN(gStringVar1, record->wins, STR_CONV_MODE_RIGHT_ALIGN, 4); + PrintTextOnWindow(gResultsWindowId, 1, gStringVar1, 80, (y * 8) + 1, 0, NULL); + + ConvertIntToDecimalStringN(gStringVar1, record->losses, STR_CONV_MODE_RIGHT_ALIGN, 4); + PrintTextOnWindow(gResultsWindowId, 1, gStringVar1, 128, (y * 8) + 1, 0, NULL); + + ConvertIntToDecimalStringN(gStringVar1, record->draws, STR_CONV_MODE_RIGHT_ALIGN, 4); + PrintTextOnWindow(gResultsWindowId, 1, gStringVar1, 176, (y * 8) + 1, 0, NULL); + } +} + +void ShowLinkBattleRecords(void) +{ + s32 i, x; + + gResultsWindowId = AddWindow(&gUnknown_085B3D7C); + NewMenuHelpers_DrawStdWindowFrame(gResultsWindowId, FALSE); + FillWindowPixelBuffer(gResultsWindowId, 0x11); + StringExpandPlaceholders(gStringVar4, gText_PlayersBattleResults); + + x = GetStringCenterAlignXOffset(1, gStringVar4, 208); + PrintTextOnWindow(gResultsWindowId, 1, gStringVar4, x, 1, 0, NULL); + PrintLinkBattleWinsLossesDraws(gSaveBlock1Ptr->linkBattleRecords.entries); + + StringExpandPlaceholders(gStringVar4, gText_WinLoseDraw); + PrintTextOnWindow(gResultsWindowId, 1, gStringVar4, 0, 41, 0, NULL); + + for (i = 0; i < LINK_B_RECORDS_COUNT; i++) + { + PrintLinkBattleRecord(&gSaveBlock1Ptr->linkBattleRecords.entries[i], 7 + (i * 2), gSaveBlock1Ptr->linkBattleRecords.languages[i]); + } + + PutWindowTilemap(gResultsWindowId); + CopyWindowToVram(gResultsWindowId, 3); +} diff --git a/src/new_game.c b/src/new_game.c index 89771e92b..92ca916d6 100644 --- a/src/new_game.c +++ b/src/new_game.c @@ -41,7 +41,7 @@ extern void ResetSecretBases(void); extern void ResetLinkContestBoolean(void); extern void ResetGameStats(void); extern void sub_8052DA8(void); -extern void InitLinkBattleRecords(void); +extern void ClearPlayerLinkBattleRecords(void); extern void ResetPokemonStorageSystem(void); extern void ClearBag(void); extern void NewGameInitPCItems(void); @@ -178,7 +178,7 @@ void NewGameInitData(void) ResetLinkContestBoolean(); ResetGameStats(); ClearAllContestWinnerPics(); - InitLinkBattleRecords(); + ClearPlayerLinkBattleRecords(); InitSeedotSizeRecord(); InitLotadSizeRecord(); gPlayerPartyCount = 0; diff --git a/sym_ewram.txt b/sym_ewram.txt index 9bf04d201..b66116714 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -318,7 +318,7 @@ gUnknown_02039B52: @ 2039B52 gUnknown_02039B54: @ 2039B54 .space 0x4 -gUnknown_02039B58: @ 2039B58 +gTrainerCards: @ 2039B58 .space 0x14 gUnknown_02039B6C: @ 2039B6C -- cgit v1.2.3 From ae7878672379cf8bc1e071c3cc392696785ac3e6 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Tue, 1 May 2018 15:33:13 +0200 Subject: identify and name battle records things --- asm/battle_frontier_2.s | 68 +-- asm/battle_records.s | 545 --------------------- asm/pokenav.s | 6 +- data/scripts/cable_club.inc | 2 +- .../maps/BattleFrontier_BattleArenaLobby.inc | 2 +- .../maps/BattleFrontier_BattleDomeLobby.inc | 4 +- .../maps/BattleFrontier_BattleFactoryLobby.inc | 4 +- .../maps/BattleFrontier_BattlePalaceLobby.inc | 4 +- .../maps/BattleFrontier_BattlePikeLobby.inc | 2 +- .../maps/BattleFrontier_BattlePyramidLobby.inc | 2 +- .../maps/BattleFrontier_BattleTowerLobby.inc | 8 +- data/scripts/maps/BattleFrontier_RankingHall.inc | 2 +- data/scripts/maps/LilycoveCity_ContestLobby.inc | 4 +- data/scripts/maps/TrainerHill_Entrance.inc | 2 +- data/specials.inc | 4 +- include/battle_records.h | 5 +- include/bg.h | 2 +- include/palette.h | 2 - ld_script.txt | 1 - src/battle_records.c | 247 +++++++++- src/berry_blender.c | 18 +- src/bg.c | 4 +- sym_ewram.txt | 6 +- 23 files changed, 300 insertions(+), 644 deletions(-) delete mode 100644 asm/battle_records.s diff --git a/asm/battle_frontier_2.s b/asm/battle_frontier_2.s index 491a87948..0aefd1605 100644 --- a/asm/battle_frontier_2.s +++ b/asm/battle_frontier_2.s @@ -14344,7 +14344,7 @@ sub_81A1C4C: @ 81A1C4C adds r3, r0, 0 lsls r0, r5, 3 adds r5, r0, 0x1 - ldr r0, =gResultsWindowId + ldr r0, =gRecordsWindowId ldrb r0, [r0] lsls r3, 24 lsrs r3, 24 @@ -14370,7 +14370,7 @@ sub_81A1C90: @ 81A1C90 push {r4,lr} sub sp, 0x34 adds r2, r0, 0 - ldr r3, =gResultsWindowId + ldr r3, =gRecordsWindowId movs r1, 0xAE mov r0, sp adds r0, 0x2F @@ -14425,7 +14425,7 @@ sub_81A1CD8: @ 81A1CD8 lsls r0, 24 lsrs r0, 24 adds r7, r0, 0 - ldr r0, =gResultsWindowId + ldr r0, =gRecordsWindowId mov r10, r0 ldrb r0, [r0] str r7, [sp] @@ -14644,7 +14644,7 @@ sub_81A1EA8: @ 81A1EA8 sub sp, 0xC lsls r0, 24 lsrs r7, r0, 24 - ldr r4, =gResultsWindowId + ldr r4, =gRecordsWindowId ldr r0, =gUnknown_08611C74 bl AddWindow strb r0, [r4] @@ -14685,7 +14685,7 @@ _081A1F28: ldr r0, =gStringVar4 movs r1, 0x2 bl sub_81A1C4C - ldr r6, =gResultsWindowId + ldr r6, =gRecordsWindowId ldrb r0, [r6] ldr r2, =gText_Lv502 movs r1, 0x31 @@ -14798,7 +14798,7 @@ sub_81A2008: @ 81A2008 lsrs r6, 24 lsls r5, 24 lsrs r5, 24 - ldr r0, =gResultsWindowId + ldr r0, =gRecordsWindowId mov r10, r0 ldrb r0, [r0] str r5, [sp] @@ -14932,7 +14932,7 @@ sub_81A2134: @ 81A2134 sub sp, 0xC lsls r0, 24 lsrs r7, r0, 24 - ldr r4, =gResultsWindowId + ldr r4, =gRecordsWindowId ldr r0, =gUnknown_08611C74 bl AddWindow strb r0, [r4] @@ -14957,7 +14957,7 @@ _081A2184: ldr r0, =gStringVar4 movs r1, 0 bl sub_81A1C4C - ldr r1, =gResultsWindowId + ldr r1, =gRecordsWindowId ldrb r0, [r1] ldr r2, =gText_Lv502 movs r6, 0x21 @@ -14969,7 +14969,7 @@ _081A2184: movs r1, 0x1 movs r3, 0x8 bl PrintTextOnWindow - ldr r1, =gResultsWindowId + ldr r1, =gRecordsWindowId ldrb r0, [r1] ldr r2, =gText_OpenLv movs r1, 0x61 @@ -15052,10 +15052,10 @@ _081A2184: mov r1, r8 movs r3, 0x40 bl sub_81A2008 - ldr r1, =gResultsWindowId + ldr r1, =gRecordsWindowId ldrb r0, [r1] bl PutWindowTilemap - ldr r1, =gResultsWindowId + ldr r1, =gRecordsWindowId ldrb r0, [r1] movs r1, 0x3 bl CopyWindowToVram @@ -15091,7 +15091,7 @@ sub_81A22B8: @ 81A22B8 lsls r0, 24 lsrs r0, 24 adds r7, r0, 0 - ldr r0, =gResultsWindowId + ldr r0, =gRecordsWindowId mov r10, r0 ldrb r0, [r0] str r7, [sp] @@ -15285,7 +15285,7 @@ sub_81A2460: @ 81A2460 sub sp, 0xC lsls r0, 24 lsrs r7, r0, 24 - ldr r4, =gResultsWindowId + ldr r4, =gRecordsWindowId ldr r0, =gUnknown_08611C74 bl AddWindow strb r0, [r4] @@ -15310,7 +15310,7 @@ _081A24B0: ldr r0, =gStringVar4 movs r1, 0x2 bl sub_81A1C4C - ldr r6, =gResultsWindowId + ldr r6, =gRecordsWindowId ldrb r0, [r6] ldr r2, =gText_Lv502 movs r1, 0x31 @@ -15420,7 +15420,7 @@ sub_81A258C: @ 81A258C lsrs r6, 24 lsls r5, 24 lsrs r5, 24 - ldr r0, =gResultsWindowId + ldr r0, =gRecordsWindowId mov r10, r0 ldrb r0, [r0] str r5, [sp] @@ -15533,7 +15533,7 @@ sub_81A2698: @ 81A2698 mov r5, r8 push {r5-r7} sub sp, 0xC - ldr r6, =gResultsWindowId + ldr r6, =gRecordsWindowId ldr r0, =gUnknown_08611C74 bl AddWindow strb r0, [r6] @@ -15672,7 +15672,7 @@ sub_81A27E8: @ 81A27E8 lsls r0, 24 lsrs r0, 24 adds r7, r0, 0 - ldr r0, =gResultsWindowId + ldr r0, =gRecordsWindowId mov r10, r0 ldrb r0, [r0] str r7, [sp] @@ -15836,7 +15836,7 @@ _081A2956: sub_81A2968: @ 81A2968 push {r4-r6,lr} sub sp, 0xC - ldr r5, =gResultsWindowId + ldr r5, =gRecordsWindowId ldr r0, =gUnknown_08611C74 bl AddWindow strb r0, [r5] @@ -15935,7 +15935,7 @@ sub_81A2A28: @ 81A2A28 lsls r0, 24 lsrs r0, 24 adds r6, r0, 0 - ldr r0, =gResultsWindowId + ldr r0, =gRecordsWindowId mov r10, r0 ldrb r0, [r0] str r6, [sp] @@ -16211,7 +16211,7 @@ sub_81A2C94: @ 81A2C94 sub sp, 0xC lsls r0, 24 lsrs r7, r0, 24 - ldr r4, =gResultsWindowId + ldr r4, =gRecordsWindowId ldr r0, =gUnknown_08611C74 bl AddWindow strb r0, [r4] @@ -16236,7 +16236,7 @@ _081A2CE0: ldr r0, =gStringVar4 movs r1, 0 bl sub_81A1C4C - ldr r0, =gResultsWindowId + ldr r0, =gRecordsWindowId mov r8, r0 ldrb r0, [r0] ldr r2, =gText_Lv502 @@ -16340,7 +16340,7 @@ sub_81A2DB4: @ 81A2DB4 lsls r0, 24 lsrs r0, 24 adds r7, r0, 0 - ldr r0, =gResultsWindowId + ldr r0, =gRecordsWindowId mov r10, r0 ldrb r0, [r0] str r7, [sp] @@ -16506,7 +16506,7 @@ _081A2F26: sub_81A2F38: @ 81A2F38 push {r4-r6,lr} sub sp, 0xC - ldr r5, =gResultsWindowId + ldr r5, =gRecordsWindowId ldr r0, =gUnknown_08611C74 bl AddWindow strb r0, [r5] @@ -16584,7 +16584,7 @@ sub_81A2FF8: @ 81A2FF8 mov r6, r8 push {r6,r7} sub sp, 0xC - ldr r4, =gResultsWindowId + ldr r4, =gRecordsWindowId ldr r0, =gUnknown_08611C7C bl AddWindow strb r0, [r4] @@ -16750,7 +16750,7 @@ _081A315C: movs r2, 0x1 movs r3, 0x4 bl ConvertIntToDecimalStringN - ldr r6, =gResultsWindowId + ldr r6, =gRecordsWindowId ldrb r0, [r6] movs r1, 0x26 adds r3, r5, 0 @@ -19026,7 +19026,7 @@ sub_81A4594: @ 81A4594 sub sp, 0x2C mov r8, r1 adds r6, r3, 0 - ldr r1, =gResultsWindowId + ldr r1, =gRecordsWindowId ldrb r5, [r1] lsls r4, r0, 1 adds r4, r0 @@ -19062,7 +19062,7 @@ sub_81A4594: @ 81A4594 ldrb r2, [r6, 0xE] add r0, sp, 0xC bl TVShowConvertInternationalString - ldr r1, =gResultsWindowId + ldr r1, =gRecordsWindowId ldrb r0, [r1] mov r3, r8 adds r3, 0x2 @@ -19102,7 +19102,7 @@ _081A4618: adds r3, r0, 0 lsls r3, 24 lsrs r3, 24 - ldr r1, =gResultsWindowId + ldr r1, =gRecordsWindowId ldrb r0, [r1] str r7, [sp] mov r1, r10 @@ -19136,7 +19136,7 @@ sub_81A4684: @ 81A4684 adds r7, r1, 0 mov r10, r2 adds r5, r3, 0 - ldr r1, =gResultsWindowId + ldr r1, =gRecordsWindowId ldrb r0, [r1] lsls r2, r6, 1 adds r2, r6 @@ -19176,7 +19176,7 @@ sub_81A4684: @ 81A4684 ldrb r2, [r5, 0x1A] add r0, sp, 0xC bl TVShowConvertInternationalString - ldr r1, =gResultsWindowId + ldr r1, =gRecordsWindowId ldrb r0, [r1] adds r3, r7, 0x2 lsls r3, 27 @@ -19211,7 +19211,7 @@ _081A4734: adds r1, r4, 0 bl StringCopy _081A473C: - ldr r2, =gResultsWindowId + ldr r2, =gRecordsWindowId mov r9, r2 ldrb r0, [r2] adds r3, r7, 0x4 @@ -19532,7 +19532,7 @@ sub_81A4998: @ 81A4998 ldr r1, [r5] adds r0, r6, 0 bl StringExpandPlaceholders - ldr r0, =gResultsWindowId + ldr r0, =gRecordsWindowId mov r8, r0 ldrb r0, [r0] movs r1, 0x1 @@ -19631,7 +19631,7 @@ _081A4A90: thumb_func_start sub_81A4AA0 sub_81A4AA0: @ 81A4AA0 push {r4,lr} - ldr r4, =gResultsWindowId + ldr r4, =gRecordsWindowId ldr r0, =gUnknown_08611C84 bl AddWindow strb r0, [r4] @@ -19659,7 +19659,7 @@ sub_81A4AA0: @ 81A4AA0 thumb_func_start sub_81A4AE8 sub_81A4AE8: @ 81A4AE8 push {r4,lr} - ldr r4, =gResultsWindowId + ldr r4, =gRecordsWindowId ldrb r0, [r4] movs r1, 0x11 bl FillWindowPixelBuffer diff --git a/asm/battle_records.s b/asm/battle_records.s deleted file mode 100644 index 69e207b61..000000000 --- a/asm/battle_records.s +++ /dev/null @@ -1,545 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_813C5A0 -sub_813C5A0: @ 813C5A0 - push {r4,lr} - ldr r4, =gResultsWindowId - ldrb r0, [r4] - movs r1, 0 - bl sub_819746C - ldrb r0, [r4] - bl RemoveWindow - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_813C5A0 - - thumb_func_start sub_813C5BC -sub_813C5BC: @ 813C5BC - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0813C5DC - ldr r0, =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldr r0, =sub_813C5EC - str r0, [r1] -_0813C5DC: - pop {r0} - bx r0 - .pool - thumb_func_end sub_813C5BC - - thumb_func_start sub_813C5EC -sub_813C5EC: @ 813C5EC - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, =gTasks - adds r4, r1, r0 - ldr r0, =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0813C610 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0813C61A -_0813C610: - movs r0, 0x5 - bl PlaySE - ldr r0, =sub_813C62C - str r0, [r4] -_0813C61A: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_813C5EC - - thumb_func_start sub_813C62C -sub_813C62C: @ 813C62C - 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, =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, =sub_813C664 - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_813C62C - - thumb_func_start sub_813C664 -sub_813C664: @ 813C664 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0813C694 - ldr r0, =CB2_ReturnToFieldContinueScript - bl SetMainCallback2 - ldr r0, =gUnknown_0203AB78 - ldr r0, [r0] - bl Free - movs r0, 0 - bl sub_813C6A8 - bl FreeAllWindowBuffers - adds r0, r4, 0 - bl DestroyTask -_0813C694: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_813C664 - - thumb_func_start sub_813C6A8 -sub_813C6A8: @ 813C6A8 - 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_813C6A8 - - thumb_func_start sub_813C6D4 -sub_813C6D4: @ 813C6D4 - 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, =0x040000d4 - movs r5, 0x80 - lsls r5, 5 - ldr r7, =0x81000800 - movs r0, 0x81 - lsls r0, 24 - mov r12, r0 -_0813C6FA: - 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 _0813C6FA - 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, =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 - .pool - thumb_func_end sub_813C6D4 - - thumb_func_start sub_813C80C -sub_813C80C: @ 813C80C - push {lr} - bl ScanlineEffect_Stop - bl ResetTasks - bl ResetSpriteData - bl ResetPaletteFade - bl FreeAllSpritePalettes - pop {r0} - bx r0 - thumb_func_end sub_813C80C - - thumb_func_start sub_813C828 -sub_813C828: @ 813C828 - 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_813C828 - - thumb_func_start sub_813C880 -sub_813C880: @ 813C880 - push {lr} - movs r1, 0x94 - lsls r1, 4 - movs r0, 0 - bl SetGpuReg - pop {r0} - bx r0 - thumb_func_end sub_813C880 - - thumb_func_start sub_813C890 -sub_813C890: @ 813C890 - push {r4,lr} - sub sp, 0x8 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, =gUnknown_085B3484 - adds r0, r4, 0 - movs r2, 0xC0 - movs r3, 0 - bl LoadBgTiles - ldr r1, =gUnknown_085B3564 - movs r0, 0x20 - str r0, [sp] - str r0, [sp, 0x4] - adds r0, r4, 0 - movs r2, 0 - movs r3, 0 - bl CopyToBgTilemapBufferRect - ldr r0, =gUnknown_085B3544 - movs r1, 0 - movs r2, 0x20 - bl LoadPalette - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_813C890 - - thumb_func_start sub_813C8D8 -sub_813C8D8: @ 813C8D8 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_813C8D8 - - thumb_func_start sub_813C8EC -sub_813C8EC: @ 813C8EC - push {lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_813C8EC - - thumb_func_start sub_813C904 -sub_813C904: @ 813C904 - push {lr} - movs r0, 0 - bl SetVBlankCallback - ldr r0, =sub_813C91C - bl SetMainCallback2 - pop {r0} - bx r0 - .pool - thumb_func_end sub_813C904 - - thumb_func_start sub_813C91C -sub_813C91C: @ 813C91C - push {r4,lr} - sub sp, 0x4 - ldr r0, =gMain - movs r1, 0x87 - lsls r1, 3 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x7 - bls _0813C930 - b _0813CA3C -_0813C930: - lsls r0, 2 - ldr r1, =_0813C944 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .pool - .align 2, 0 -_0813C944: - .4byte _0813C964 - .4byte _0813C970 - .4byte _0813C976 - .4byte _0813C9A8 - .4byte _0813C9BE - .4byte _0813C9DE - .4byte _0813C9F0 - .4byte _0813CA14 -_0813C964: - movs r0, 0 - bl SetVBlankCallback - bl sub_813C6D4 - b _0813CA00 -_0813C970: - bl sub_813C80C - b _0813CA00 -_0813C976: - ldr r4, =gUnknown_0203AB78 - movs r0, 0x80 - lsls r0, 4 - bl AllocZeroed - str r0, [r4] - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, =gUnknown_085B3D64 - movs r0, 0 - movs r2, 0x2 - bl InitBgsFromTemplates - ldr r1, [r4] - movs r0, 0x3 - bl SetBgTilemapBuffer - bl sub_813C828 - b _0813CA00 - .pool -_0813C9A8: - movs r0, 0x3 - bl sub_813C890 - movs r0, 0 - bl stdpal_get - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - b _0813CA00 -_0813C9BE: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0813CA3C - movs r0, 0 - bl ShowBg - movs r0, 0x3 - bl ShowBg - movs r0, 0x3 - bl CopyBgTilemapBufferToVram - b _0813CA00 -_0813C9DE: - ldr r0, =gUnknown_085B3D6C - bl InitWindows - bl DeactivateAllTextPrinters - b _0813CA00 - .pool -_0813C9F0: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade -_0813CA00: - ldr r1, =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0813CA3C - .pool -_0813CA14: - bl sub_813C880 - ldr r0, =sub_813C8D8 - bl SetVBlankCallback - bl sub_81D5C8C - ldr r0, =sub_813C5BC - movs r1, 0x8 - bl CreateTask - ldr r0, =sub_813C8EC - bl SetMainCallback2 - ldr r0, =gMain - movs r1, 0x87 - lsls r1, 3 - adds r0, r1 - movs r1, 0 - strb r1, [r0] -_0813CA3C: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_813C91C - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/pokenav.s b/asm/pokenav.s index 47f350b29..9c42ed730 100644 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -28718,8 +28718,8 @@ nullsub_2: @ 81D5C88 bx lr thumb_func_end nullsub_2 - thumb_func_start sub_81D5C8C -sub_81D5C8C: @ 81D5C8C + thumb_func_start PrintOnTrainerHillRecordsWindow +PrintOnTrainerHillRecordsWindow: @ 81D5C8C push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -28857,7 +28857,7 @@ _081D5CD6: pop {r0} bx r0 .pool - thumb_func_end sub_81D5C8C + thumb_func_end PrintOnTrainerHillRecordsWindow thumb_func_start free_203F458 free_203F458: @ 81D5DF0 diff --git a/data/scripts/cable_club.inc b/data/scripts/cable_club.inc index 870e4e305..499766dc3 100644 --- a/data/scripts/cable_club.inc +++ b/data/scripts/cable_club.inc @@ -789,7 +789,7 @@ gUnknown_08277365:: @ 8277365 setvar VAR_0x8004, 0 special ShowLinkBattleRecords waitbuttonpress - special sub_813C5A0 + special RemoveRecordsWindow releaseall end diff --git a/data/scripts/maps/BattleFrontier_BattleArenaLobby.inc b/data/scripts/maps/BattleFrontier_BattleArenaLobby.inc index 303a2c4c9..fb61415e4 100644 --- a/data/scripts/maps/BattleFrontier_BattleArenaLobby.inc +++ b/data/scripts/maps/BattleFrontier_BattleArenaLobby.inc @@ -348,7 +348,7 @@ BattleFrontier_BattleArenaLobby_EventScript_256092:: @ 8256092 setvar VAR_0x8005, 3 special sub_81A1780 waitbuttonpress - special sub_813C5A0 + special RemoveRecordsWindow releaseall end diff --git a/data/scripts/maps/BattleFrontier_BattleDomeLobby.inc b/data/scripts/maps/BattleFrontier_BattleDomeLobby.inc index 33b5654d0..79a8284e3 100644 --- a/data/scripts/maps/BattleFrontier_BattleDomeLobby.inc +++ b/data/scripts/maps/BattleFrontier_BattleDomeLobby.inc @@ -415,7 +415,7 @@ BattleFrontier_BattleDomeLobby_EventScript_249D52:: @ 8249D52 setvar VAR_0x8006, 0 special sub_81A1780 waitbuttonpress - special sub_813C5A0 + special RemoveRecordsWindow releaseall end @@ -426,7 +426,7 @@ BattleFrontier_BattleDomeLobby_EventScript_249D6B:: @ 8249D6B setvar VAR_0x8006, 1 special sub_81A1780 waitbuttonpress - special sub_813C5A0 + special RemoveRecordsWindow releaseall end diff --git a/data/scripts/maps/BattleFrontier_BattleFactoryLobby.inc b/data/scripts/maps/BattleFrontier_BattleFactoryLobby.inc index 791a666d5..bfa6d6793 100644 --- a/data/scripts/maps/BattleFrontier_BattleFactoryLobby.inc +++ b/data/scripts/maps/BattleFrontier_BattleFactoryLobby.inc @@ -305,7 +305,7 @@ BattleFrontier_BattleFactoryLobby_EventScript_2587E1:: @ 82587E1 setvar VAR_0x8006, 0 special sub_81A1780 waitbuttonpress - special sub_813C5A0 + special RemoveRecordsWindow releaseall end @@ -316,7 +316,7 @@ BattleFrontier_BattleFactoryLobby_EventScript_2587FA:: @ 82587FA setvar VAR_0x8006, 1 special sub_81A1780 waitbuttonpress - special sub_813C5A0 + special RemoveRecordsWindow releaseall end diff --git a/data/scripts/maps/BattleFrontier_BattlePalaceLobby.inc b/data/scripts/maps/BattleFrontier_BattlePalaceLobby.inc index 2e0f152b4..175d7325b 100644 --- a/data/scripts/maps/BattleFrontier_BattlePalaceLobby.inc +++ b/data/scripts/maps/BattleFrontier_BattlePalaceLobby.inc @@ -366,7 +366,7 @@ BattleFrontier_BattlePalaceLobby_EventScript_24DC50:: @ 824DC50 setvar VAR_0x8006, 0 special sub_81A1780 waitbuttonpress - special sub_813C5A0 + special RemoveRecordsWindow releaseall end @@ -377,7 +377,7 @@ BattleFrontier_BattlePalaceLobby_EventScript_24DC69:: @ 824DC69 setvar VAR_0x8006, 1 special sub_81A1780 waitbuttonpress - special sub_813C5A0 + special RemoveRecordsWindow releaseall end diff --git a/data/scripts/maps/BattleFrontier_BattlePikeLobby.inc b/data/scripts/maps/BattleFrontier_BattlePikeLobby.inc index 40b5e437f..9e2964071 100644 --- a/data/scripts/maps/BattleFrontier_BattlePikeLobby.inc +++ b/data/scripts/maps/BattleFrontier_BattlePikeLobby.inc @@ -257,7 +257,7 @@ BattleFrontier_BattlePikeLobby_EventScript_25BA80:: @ 825BA80 setvar VAR_0x8005, 5 special sub_81A1780 waitbuttonpress - special sub_813C5A0 + special RemoveRecordsWindow releaseall end diff --git a/data/scripts/maps/BattleFrontier_BattlePyramidLobby.inc b/data/scripts/maps/BattleFrontier_BattlePyramidLobby.inc index 9455479a7..e06a4f00f 100644 --- a/data/scripts/maps/BattleFrontier_BattlePyramidLobby.inc +++ b/data/scripts/maps/BattleFrontier_BattlePyramidLobby.inc @@ -428,7 +428,7 @@ BattleFrontier_BattlePyramidLobby_EventScript_250D42:: @ 8250D42 setvar VAR_0x8005, 6 special sub_81A1780 waitbuttonpress - special sub_813C5A0 + special RemoveRecordsWindow releaseall end diff --git a/data/scripts/maps/BattleFrontier_BattleTowerLobby.inc b/data/scripts/maps/BattleFrontier_BattleTowerLobby.inc index def3dd122..8675df345 100644 --- a/data/scripts/maps/BattleFrontier_BattleTowerLobby.inc +++ b/data/scripts/maps/BattleFrontier_BattleTowerLobby.inc @@ -636,7 +636,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23EFC7:: @ 823EFC7 setvar VAR_0x8006, 0 special sub_81A1780 waitbuttonpress - special sub_813C5A0 + special RemoveRecordsWindow releaseall end @@ -647,7 +647,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23EFE0:: @ 823EFE0 setvar VAR_0x8006, 1 special sub_81A1780 waitbuttonpress - special sub_813C5A0 + special RemoveRecordsWindow releaseall end @@ -658,7 +658,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23EFF9:: @ 823EFF9 setvar VAR_0x8006, 2 special sub_81A1780 waitbuttonpress - special sub_813C5A0 + special RemoveRecordsWindow releaseall end @@ -669,7 +669,7 @@ BattleFrontier_BattleTowerLobby_EventScript_23F012:: @ 823F012 setvar VAR_0x8006, 3 special sub_81A1780 waitbuttonpress - special sub_813C5A0 + special RemoveRecordsWindow releaseall end diff --git a/data/scripts/maps/BattleFrontier_RankingHall.inc b/data/scripts/maps/BattleFrontier_RankingHall.inc index b13bfe343..e469024e9 100644 --- a/data/scripts/maps/BattleFrontier_RankingHall.inc +++ b/data/scripts/maps/BattleFrontier_RankingHall.inc @@ -66,7 +66,7 @@ BattleFrontier_RankingHall_EventScript_25E522:: @ 825E522 waitbuttonpress special sub_81A4AE8 waitbuttonpress - special sub_813C5A0 + special RemoveRecordsWindow releaseall end diff --git a/data/scripts/maps/LilycoveCity_ContestLobby.inc b/data/scripts/maps/LilycoveCity_ContestLobby.inc index beb96e171..4a7279fb2 100644 --- a/data/scripts/maps/LilycoveCity_ContestLobby.inc +++ b/data/scripts/maps/LilycoveCity_ContestLobby.inc @@ -554,7 +554,7 @@ LilycoveCity_ContestLobby_EventScript_21A77A:: @ 821A77A lockall special ShowBerryBlenderRecordWindow waitbuttonpress - special sub_813C5A0 + special RemoveRecordsWindow releaseall end @@ -564,7 +564,7 @@ LilycoveCity_ContestLobby_EventScript_21A784:: @ 821A784 setvar VAR_0x8005, 7 special sub_81A1780 waitbuttonpress - special sub_813C5A0 + special RemoveRecordsWindow releaseall end diff --git a/data/scripts/maps/TrainerHill_Entrance.inc b/data/scripts/maps/TrainerHill_Entrance.inc index 77b67fb14..eb12efb4b 100644 --- a/data/scripts/maps/TrainerHill_Entrance.inc +++ b/data/scripts/maps/TrainerHill_Entrance.inc @@ -236,7 +236,7 @@ TrainerHill_Entrance_Movement_268385: @ 8268385 TrainerHill_Entrance_EventScript_268388:: @ 8268388 lockall fadescreen 1 - special sub_813C904 + special ShowTrainerHillRecords waitstate releaseall end diff --git a/data/specials.inc b/data/specials.inc index 366413eaf..d598b021a 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -526,12 +526,12 @@ gSpecials:: @ 81DBA64 def_special sub_8139ED0 def_special sub_813B968 def_special sub_80F8B94 - def_special sub_813C904 + def_special ShowTrainerHillRecords def_special sub_80B4808 def_special sub_813B9A0 def_special sub_81B9918 def_special sub_80722E0 def_special sub_80B45D0 - def_special sub_813C5A0 + def_special RemoveRecordsWindow def_special sub_8139C10 def_special sub_80B3BC4 diff --git a/include/battle_records.h b/include/battle_records.h index 5db24f3c8..88ff6adc9 100644 --- a/include/battle_records.h +++ b/include/battle_records.h @@ -1,9 +1,12 @@ #ifndef GUARD_BATTLE_RECORDS_H #define GUARD_BATTLE_RECORDS_H +extern u8 gRecordsWindowId; + void ClearPlayerLinkBattleRecords(void); void UpdatePlayerLinkBattleRecords(s32 battlerId); void ShowLinkBattleRecords(void); -void ShowBattleTowerRecords(void); +void RemoveRecordsWindow(void); +void ShowTrainerHillRecords(void); #endif // GUARD_BATTLE_RECORDS_H diff --git a/include/bg.h b/include/bg.h index de3897fa4..ea84c1573 100644 --- a/include/bg.h +++ b/include/bg.h @@ -68,7 +68,7 @@ void UnsetBgTilemapBuffer(u8 bg); void* GetBgTilemapBuffer(u8 bg); void CopyToBgTilemapBuffer(u8 bg, const void *src, u16 mode, u16 destOffset); void CopyBgTilemapBufferToVram(u8 bg); -void CopyToBgTilemapBufferRect(u8 bg, void* src, u8 destX, u8 destY, u8 width, u8 height); +void CopyToBgTilemapBufferRect(u8 bg, const void* src, u8 destX, u8 destY, u8 width, u8 height); void CopyToBgTilemapBufferRect_ChangePalette(u8 bg, void *src, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette); void CopyRectToBgTilemapBufferRect(u8 bg, const void *src, u8 srcX, u8 srcY, u8 srcWidth, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette1, u16 tileOffset, u16 palette2); void FillBgTilemapBufferRect_Palette0(u8 bg, u16 tileNum, u8 x, u8 y, u8 width, u8 height); diff --git a/include/palette.h b/include/palette.h index 41cef4048..a1259d327 100644 --- a/include/palette.h +++ b/include/palette.h @@ -1,8 +1,6 @@ #ifndef GUARD_PALETTE_H #define GUARD_PALETTE_H -#include "global.h" - #define gPaletteFade_selectedPalettes (gPaletteFade.multipurpose1) // normal and fast fade #define gPaletteFade_blendCnt (gPaletteFade.multipurpose1) // hardware fade #define gPaletteFade_delay (gPaletteFade.multipurpose2) // normal and hardware fade diff --git a/ld_script.txt b/ld_script.txt index 3af52896b..b9cc74ff1 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -185,7 +185,6 @@ SECTIONS { src/hof_pc.o(.text); asm/field_specials.o(.text); src/battle_records.o(.text); - asm/battle_records.o(.text); asm/pokedex_area_screen.o(.text); src/evolution_scene.o(.text); asm/roulette.o(.text); diff --git a/src/battle_records.c b/src/battle_records.c index 0a0e0bd42..efc9173a7 100644 --- a/src/battle_records.c +++ b/src/battle_records.c @@ -6,15 +6,34 @@ #include "battle.h" #include "overworld.h" #include "text.h" +#include "text_window.h" #include "strings.h" #include "string_util.h" #include "trainer_card.h" #include "menu.h" #include "menu_helpers.h" +#include "palette.h" +#include "main.h" +#include "scanline_effect.h" #include "international_string_util.h" +#include "sound.h" +#include "constants/songs.h" +#include "malloc.h" +#include "gpu_regs.h" #include "constants/game_stat.h" -extern u8 gResultsWindowId; +extern void PrintOnTrainerHillRecordsWindow(void); // pokenav.s + +// this file's functions +static void sub_813C5EC(u8 taskId); +static void sub_813C62C(u8 taskId); +static void sub_813C664(u8 taskId); +static void sub_813C6A8(u8 windowId); +static void sub_813C91C(void); + +// EWRAM variables +EWRAM_DATA u8 gRecordsWindowId = 0; +EWRAM_DATA static u8 *sUnknown_0203AB78 = NULL; // const rom data const u32 gUnknown_085B3484[] = INCBIN_U32("graphics/unknown/unknown_5B3484.4bpp"); @@ -192,7 +211,7 @@ void ClearPlayerLinkBattleRecords(void) ClearLinkBattleRecords(gSaveBlock1Ptr->linkBattleRecords.entries); } -static void IncTrainerCardWins(int battlerId) +static void IncTrainerCardWins(s32 battlerId) { u16 *wins = &gTrainerCards[battlerId].linkBattleWins; (*wins)++; @@ -200,7 +219,7 @@ static void IncTrainerCardWins(int battlerId) *wins = 9999; } -static void IncTrainerCardLosses(int battlerId) +static void IncTrainerCardLosses(s32 battlerId) { u16 *losses = &gTrainerCards[battlerId].linkBattleLosses; (*losses)++; @@ -208,7 +227,7 @@ static void IncTrainerCardLosses(int battlerId) *losses = 9999; } -static void UpdateTrainerCardWinsLosses(int battlerId) +static void UpdateTrainerCardWinsLosses(s32 battlerId) { switch (gBattleOutcome) { @@ -223,7 +242,7 @@ static void UpdateTrainerCardWinsLosses(int battlerId) } } -void UpdatePlayerLinkBattleRecords(int battlerId) +void UpdatePlayerLinkBattleRecords(s32 battlerId) { if (InUnionRoom() != TRUE) { @@ -247,7 +266,7 @@ static void PrintLinkBattleWinsLossesDraws(struct LinkBattleRecord *records) StringExpandPlaceholders(gStringVar4, gText_TotalRecordWLD); x = GetStringCenterAlignXOffset(1, gStringVar4, 0xD0); - PrintTextOnWindow(gResultsWindowId, 1, gStringVar4, x, 0x11, 0, NULL); + PrintTextOnWindow(gRecordsWindowId, 1, gStringVar4, x, 0x11, 0, NULL); } static void PrintLinkBattleRecord(struct LinkBattleRecord *record, u8 y, s32 language) @@ -255,10 +274,10 @@ static void PrintLinkBattleRecord(struct LinkBattleRecord *record, u8 y, s32 lan if (record->wins == 0 && record->losses == 0 && record->draws == 0) { // empty slot - PrintTextOnWindow(gResultsWindowId, 1, gUnknown_085B3D84, 8, (y * 8) + 1, 0, NULL); - PrintTextOnWindow(gResultsWindowId, 1, gUnknown_085B3D8C, 80, (y * 8) + 1, 0, NULL); - PrintTextOnWindow(gResultsWindowId, 1, gUnknown_085B3D8C, 128, (y * 8) + 1, 0, NULL); - PrintTextOnWindow(gResultsWindowId, 1, gUnknown_085B3D8C, 176, (y * 8) + 1, 0, NULL); + PrintTextOnWindow(gRecordsWindowId, 1, gUnknown_085B3D84, 8, (y * 8) + 1, 0, NULL); + PrintTextOnWindow(gRecordsWindowId, 1, gUnknown_085B3D8C, 80, (y * 8) + 1, 0, NULL); + PrintTextOnWindow(gRecordsWindowId, 1, gUnknown_085B3D8C, 128, (y * 8) + 1, 0, NULL); + PrintTextOnWindow(gRecordsWindowId, 1, gUnknown_085B3D8C, 176, (y * 8) + 1, 0, NULL); } else { @@ -266,16 +285,16 @@ static void PrintLinkBattleRecord(struct LinkBattleRecord *record, u8 y, s32 lan StringCopyN(gStringVar1, record->name, 7); ConvertInternationalString(gStringVar1, language); - PrintTextOnWindow(gResultsWindowId, 1, gStringVar1, 8, (y * 8) + 1, 0, NULL); + PrintTextOnWindow(gRecordsWindowId, 1, gStringVar1, 8, (y * 8) + 1, 0, NULL); ConvertIntToDecimalStringN(gStringVar1, record->wins, STR_CONV_MODE_RIGHT_ALIGN, 4); - PrintTextOnWindow(gResultsWindowId, 1, gStringVar1, 80, (y * 8) + 1, 0, NULL); + PrintTextOnWindow(gRecordsWindowId, 1, gStringVar1, 80, (y * 8) + 1, 0, NULL); ConvertIntToDecimalStringN(gStringVar1, record->losses, STR_CONV_MODE_RIGHT_ALIGN, 4); - PrintTextOnWindow(gResultsWindowId, 1, gStringVar1, 128, (y * 8) + 1, 0, NULL); + PrintTextOnWindow(gRecordsWindowId, 1, gStringVar1, 128, (y * 8) + 1, 0, NULL); ConvertIntToDecimalStringN(gStringVar1, record->draws, STR_CONV_MODE_RIGHT_ALIGN, 4); - PrintTextOnWindow(gResultsWindowId, 1, gStringVar1, 176, (y * 8) + 1, 0, NULL); + PrintTextOnWindow(gRecordsWindowId, 1, gStringVar1, 176, (y * 8) + 1, 0, NULL); } } @@ -283,23 +302,209 @@ void ShowLinkBattleRecords(void) { s32 i, x; - gResultsWindowId = AddWindow(&gUnknown_085B3D7C); - NewMenuHelpers_DrawStdWindowFrame(gResultsWindowId, FALSE); - FillWindowPixelBuffer(gResultsWindowId, 0x11); + gRecordsWindowId = AddWindow(&gUnknown_085B3D7C); + NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE); + FillWindowPixelBuffer(gRecordsWindowId, 0x11); StringExpandPlaceholders(gStringVar4, gText_PlayersBattleResults); x = GetStringCenterAlignXOffset(1, gStringVar4, 208); - PrintTextOnWindow(gResultsWindowId, 1, gStringVar4, x, 1, 0, NULL); + PrintTextOnWindow(gRecordsWindowId, 1, gStringVar4, x, 1, 0, NULL); PrintLinkBattleWinsLossesDraws(gSaveBlock1Ptr->linkBattleRecords.entries); StringExpandPlaceholders(gStringVar4, gText_WinLoseDraw); - PrintTextOnWindow(gResultsWindowId, 1, gStringVar4, 0, 41, 0, NULL); + PrintTextOnWindow(gRecordsWindowId, 1, gStringVar4, 0, 41, 0, NULL); for (i = 0; i < LINK_B_RECORDS_COUNT; i++) { PrintLinkBattleRecord(&gSaveBlock1Ptr->linkBattleRecords.entries[i], 7 + (i * 2), gSaveBlock1Ptr->linkBattleRecords.languages[i]); } - PutWindowTilemap(gResultsWindowId); - CopyWindowToVram(gResultsWindowId, 3); + PutWindowTilemap(gRecordsWindowId); + CopyWindowToVram(gRecordsWindowId, 3); +} + +void RemoveRecordsWindow(void) +{ + sub_819746C(gRecordsWindowId, FALSE); + RemoveWindow(gRecordsWindowId); +} + +static void sub_813C5BC(u8 taskId) +{ + if (!gPaletteFade.active) + gTasks[taskId].func = sub_813C5EC; +} + +static void sub_813C5EC(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + task->func = sub_813C62C; + } +} + +static void sub_813C62C(u8 taskId) +{ + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gTasks[taskId].func = sub_813C664; +} + +static void sub_813C664(u8 taskId) +{ + if (!gPaletteFade.active) + { + SetMainCallback2(CB2_ReturnToFieldContinueScript); + Free(sUnknown_0203AB78); + sub_813C6A8(0); + FreeAllWindowBuffers(); + DestroyTask(taskId); + } +} + +static void sub_813C6A8(u8 windowId) +{ + FillWindowPixelBuffer(windowId, 0); + ClearWindowTilemap(windowId); + CopyWindowToVram(windowId, 2); + RemoveWindow(windowId); +} + +static void sub_813C6D4(void) +{ + DmaClearLarge16(3, (void*)(VRAM), VRAM_SIZE, 0x1000); + DmaClear32(3, OAM, OAM_SIZE); + DmaClear16(3, PLTT, PLTT_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 sub_813C80C(void) +{ + ScanlineEffect_Stop(); + ResetTasks(); + ResetSpriteData(); + ResetPaletteFade(); + FreeAllSpritePalettes(); +} + +static void ResetBgCoordinates(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 sub_813C880(void) +{ + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_BG0_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_1D_MAP); +} + +static void sub_813C890(u8 bgId) +{ + LoadBgTiles(bgId, gUnknown_085B3484, sizeof(gUnknown_085B3484), 0); + CopyToBgTilemapBufferRect(bgId, gUnknown_085B3564, 0, 0, 0x20, 0x20); + LoadPalette(gUnknown_085B3544, 0, 0x20); +} + +static void sub_813C8D8(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +static void sub_813C8EC(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void ShowTrainerHillRecords(void) +{ + SetVBlankCallback(NULL); + SetMainCallback2(sub_813C91C); +} + +static void sub_813C91C(void) +{ + switch (gMain.state) + { + case 0: + SetVBlankCallback(NULL); + sub_813C6D4(); + gMain.state++; + break; + case 1: + sub_813C80C(); + gMain.state++; + break; + case 2: + sUnknown_0203AB78 = AllocZeroed(0x800); + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, gUnknown_085B3D64, ARRAY_COUNT(gUnknown_085B3D64)); + SetBgTilemapBuffer(3, sUnknown_0203AB78); + ResetBgCoordinates(); + gMain.state++; + break; + case 3: + sub_813C890(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_085B3D6C); + DeactivateAllTextPrinters(); + gMain.state++; + break; + case 6: + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + gMain.state++; + break; + case 7: + sub_813C880(); + SetVBlankCallback(sub_813C8D8); + PrintOnTrainerHillRecordsWindow(); + CreateTask(sub_813C5BC, 8); + SetMainCallback2(sub_813C8EC); + gMain.state = 0; + break; + } } diff --git a/src/berry_blender.c b/src/berry_blender.c index 9e6a0fef7..cbe7748b6 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -30,6 +30,7 @@ #include "trig.h" #include "tv.h" #include "item_menu.h" +#include "battle_records.h" #define BLENDER_SCORE_BEST 0 #define BLENDER_SCORE_GOOD 1 @@ -131,7 +132,6 @@ extern struct MusicPlayerInfo gMPlayInfo_SE2; extern struct MusicPlayerInfo gMPlayInfo_BGM; extern u8 gInGameOpponentsNo; extern u8 gUnknown_020322D5; -extern u8 gResultsWindowId; // graphics extern const u8 gBerryBlenderArrowTiles[]; @@ -3485,13 +3485,13 @@ void ShowBerryBlenderRecordWindow(void) u8 text[32]; winTemplate = sBlenderRecordWindowTemplate; - gResultsWindowId = AddWindow(&winTemplate); - NewMenuHelpers_DrawStdWindowFrame(gResultsWindowId, 0); - FillWindowPixelBuffer(gResultsWindowId, 0x11); + gRecordsWindowId = AddWindow(&winTemplate); + NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, 0); + FillWindowPixelBuffer(gRecordsWindowId, 0x11); xPos = GetStringCenterAlignXOffset(1, gText_BlenderMaxSpeedRecord, 0x90); - PrintTextOnWindow(gResultsWindowId, 1, gText_BlenderMaxSpeedRecord, xPos, 1, 0, NULL); - PrintTextOnWindow(gResultsWindowId, 1, gText_234Players, 4, 0x29, 0, NULL); + PrintTextOnWindow(gRecordsWindowId, 1, gText_BlenderMaxSpeedRecord, xPos, 1, 0, NULL); + PrintTextOnWindow(gRecordsWindowId, 1, gText_234Players, 4, 0x29, 0, NULL); for (i = 0, yPos = 0x29; i < BLENDER_SCORES_NO; i++) { @@ -3506,11 +3506,11 @@ void ShowBerryBlenderRecordWindow(void) txtPtr = StringAppend(txtPtr, sText_RPM); xPos = GetStringRightAlignXOffset(1, text, 0x8C); - PrintTextOnWindow(gResultsWindowId, 1, text, xPos, yPos + (i * 16), 0, NULL); + PrintTextOnWindow(gRecordsWindowId, 1, text, xPos, yPos + (i * 16), 0, NULL); } - PutWindowTilemap(gResultsWindowId); - CopyWindowToVram(gResultsWindowId, 3); + PutWindowTilemap(gRecordsWindowId); + CopyWindowToVram(gRecordsWindowId, 3); } static void sub_8083F3C(u8 taskId) diff --git a/src/bg.c b/src/bg.c index 22861b64d..975c72a94 100644 --- a/src/bg.c +++ b/src/bg.c @@ -965,9 +965,9 @@ void CopyBgTilemapBufferToVram(u8 bg) } } -void CopyToBgTilemapBufferRect(u8 bg, void* src, u8 destX, u8 destY, u8 width, u8 height) +void CopyToBgTilemapBufferRect(u8 bg, const void* src, u8 destX, u8 destY, u8 width, u8 height) { - void* srcCopy; + const void* srcCopy; u16 destX16; u16 destY16; u16 mode; diff --git a/sym_ewram.txt b/sym_ewram.txt index b66116714..bb4821630 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -713,11 +713,7 @@ gUnknown_0203AB6F: @ 203AB6F gUnknown_0203AB70: @ 203AB70 .space 0x4 -gResultsWindowId: @ 203AB74 - .space 0x4 - -gUnknown_0203AB78: @ 203AB78 - .space 0x4 + .include "src/battle_records.o" gUnknown_0203AB7C: @ 203AB7C .space 0x4 -- cgit v1.2.3 From cc578fce18c9bfed064fc5a4cb39165722db9c33 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Tue, 1 May 2018 15:54:31 +0200 Subject: battle records decompiled and documented --- src/battle_records.c | 102 +++++++++++++++++++++++++-------------------------- src/new_game.c | 10 ++--- 2 files changed, 55 insertions(+), 57 deletions(-) diff --git a/src/battle_records.c b/src/battle_records.c index efc9173a7..a148f998f 100644 --- a/src/battle_records.c +++ b/src/battle_records.c @@ -25,22 +25,22 @@ extern void PrintOnTrainerHillRecordsWindow(void); // pokenav.s // this file's functions -static void sub_813C5EC(u8 taskId); -static void sub_813C62C(u8 taskId); -static void sub_813C664(u8 taskId); -static void sub_813C6A8(u8 windowId); -static void sub_813C91C(void); +static void Task_CloseTrainerHillRecordsOnButton(u8 taskId); +static void Task_BeginPaletteFade(u8 taskId); +static void Task_ExitTrainerHillRecords(u8 taskId); +static void RemoveTrainerHillRecordsWindow(u8 windowId); +static void CB2_ShowTrainerHillRecords(void); // EWRAM variables EWRAM_DATA u8 gRecordsWindowId = 0; -EWRAM_DATA static u8 *sUnknown_0203AB78 = NULL; +EWRAM_DATA static u8 *sTilemapBuffer = NULL; // const rom data -const u32 gUnknown_085B3484[] = INCBIN_U32("graphics/unknown/unknown_5B3484.4bpp"); -const u16 gUnknown_085B3544[] = INCBIN_U16("graphics/unknown/unknown_5B3484.gbapal"); -const u32 gUnknown_085B3564[] = INCBIN_U32("graphics/unknown/unknown_5B3564.bin"); +static const u32 sTrainerHillWindowTileset[] = INCBIN_U32("graphics/unknown/unknown_5B3484.4bpp"); +static const u16 sTrainerHillWindowPalette[] = INCBIN_U16("graphics/unknown/unknown_5B3484.gbapal"); +static const u32 sTrainerHillWindowTilemap[] = INCBIN_U32("graphics/unknown/unknown_5B3564.bin"); -const struct BgTemplate gUnknown_085B3D64[] = +static const struct BgTemplate sTrainerHillRecordsBgTemplates[] = { { .bg = 0, @@ -62,16 +62,16 @@ const struct BgTemplate gUnknown_085B3D64[] = } }; -const struct WindowTemplate gUnknown_085B3D6C[] = +static const struct WindowTemplate sTrainerHillRecordsWindowTemplates[] = { {0x0, 0x2, 0x1, 0x1A, 0x12, 0xF, 0x14}, DUMMY_WIN_TEMPLATE }; -const struct WindowTemplate gUnknown_085B3D7C = {0x0, 0x2, 0x1, 0x1A, 0x11, 0xF, 0x1}; +static const struct WindowTemplate sLinkBattleRecordsWindow = {0x0, 0x2, 0x1, 0x1A, 0x11, 0xF, 0x1}; -const u8 gUnknown_085B3D84[] = _("-------"); -const u8 gUnknown_085B3D8C[] = _("----"); +static const u8 sText_DashesNoPlayer[] = _("-------"); +static const u8 sText_DashesNoScore[] = _("----"); // code static void ClearLinkBattleRecord(struct LinkBattleRecord *record) @@ -274,10 +274,10 @@ static void PrintLinkBattleRecord(struct LinkBattleRecord *record, u8 y, s32 lan if (record->wins == 0 && record->losses == 0 && record->draws == 0) { // empty slot - PrintTextOnWindow(gRecordsWindowId, 1, gUnknown_085B3D84, 8, (y * 8) + 1, 0, NULL); - PrintTextOnWindow(gRecordsWindowId, 1, gUnknown_085B3D8C, 80, (y * 8) + 1, 0, NULL); - PrintTextOnWindow(gRecordsWindowId, 1, gUnknown_085B3D8C, 128, (y * 8) + 1, 0, NULL); - PrintTextOnWindow(gRecordsWindowId, 1, gUnknown_085B3D8C, 176, (y * 8) + 1, 0, NULL); + PrintTextOnWindow(gRecordsWindowId, 1, sText_DashesNoPlayer, 8, (y * 8) + 1, 0, NULL); + PrintTextOnWindow(gRecordsWindowId, 1, sText_DashesNoScore, 80, (y * 8) + 1, 0, NULL); + PrintTextOnWindow(gRecordsWindowId, 1, sText_DashesNoScore, 128, (y * 8) + 1, 0, NULL); + PrintTextOnWindow(gRecordsWindowId, 1, sText_DashesNoScore, 176, (y * 8) + 1, 0, NULL); } else { @@ -302,7 +302,7 @@ void ShowLinkBattleRecords(void) { s32 i, x; - gRecordsWindowId = AddWindow(&gUnknown_085B3D7C); + gRecordsWindowId = AddWindow(&sLinkBattleRecordsWindow); NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE); FillWindowPixelBuffer(gRecordsWindowId, 0x11); StringExpandPlaceholders(gStringVar4, gText_PlayersBattleResults); @@ -329,42 +329,42 @@ void RemoveRecordsWindow(void) RemoveWindow(gRecordsWindowId); } -static void sub_813C5BC(u8 taskId) +static void Task_TrainerHillWaitForPaletteFade(u8 taskId) { if (!gPaletteFade.active) - gTasks[taskId].func = sub_813C5EC; + gTasks[taskId].func = Task_CloseTrainerHillRecordsOnButton; } -static void sub_813C5EC(u8 taskId) +static void Task_CloseTrainerHillRecordsOnButton(u8 taskId) { struct Task *task = &gTasks[taskId]; if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) { PlaySE(SE_SELECT); - task->func = sub_813C62C; + task->func = Task_BeginPaletteFade; } } -static void sub_813C62C(u8 taskId) +static void Task_BeginPaletteFade(u8 taskId) { BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); - gTasks[taskId].func = sub_813C664; + gTasks[taskId].func = Task_ExitTrainerHillRecords; } -static void sub_813C664(u8 taskId) +static void Task_ExitTrainerHillRecords(u8 taskId) { if (!gPaletteFade.active) { SetMainCallback2(CB2_ReturnToFieldContinueScript); - Free(sUnknown_0203AB78); - sub_813C6A8(0); + Free(sTilemapBuffer); + RemoveTrainerHillRecordsWindow(0); FreeAllWindowBuffers(); DestroyTask(taskId); } } -static void sub_813C6A8(u8 windowId) +static void RemoveTrainerHillRecordsWindow(u8 windowId) { FillWindowPixelBuffer(windowId, 0); ClearWindowTilemap(windowId); @@ -372,7 +372,7 @@ static void sub_813C6A8(u8 windowId) RemoveWindow(windowId); } -static void sub_813C6D4(void) +static void ClearVramOamPlttRegs(void) { DmaClearLarge16(3, (void*)(VRAM), VRAM_SIZE, 0x1000); DmaClear32(3, OAM, OAM_SIZE); @@ -400,7 +400,7 @@ static void sub_813C6D4(void) SetGpuReg(REG_OFFSET_BLDY, 0); } -static void sub_813C80C(void) +static void ClearTasksAndGraphicalStructs(void) { ScanlineEffect_Stop(); ResetTasks(); @@ -421,26 +421,26 @@ static void ResetBgCoordinates(void) ChangeBgY(3, 0, 0); } -static void sub_813C880(void) +static void SetDispcntReg(void) { SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_BG0_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_1D_MAP); } -static void sub_813C890(u8 bgId) +static void LoadTrainerHillRecordsWindowGfx(u8 bgId) { - LoadBgTiles(bgId, gUnknown_085B3484, sizeof(gUnknown_085B3484), 0); - CopyToBgTilemapBufferRect(bgId, gUnknown_085B3564, 0, 0, 0x20, 0x20); - LoadPalette(gUnknown_085B3544, 0, 0x20); + LoadBgTiles(bgId, sTrainerHillWindowTileset, sizeof(sTrainerHillWindowTileset), 0); + CopyToBgTilemapBufferRect(bgId, sTrainerHillWindowTilemap, 0, 0, 0x20, 0x20); + LoadPalette(sTrainerHillWindowPalette, 0, 0x20); } -static void sub_813C8D8(void) +static void VblankCB_TrainerHillRecords(void) { LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); } -static void sub_813C8EC(void) +static void MainCB2_TrainerHillRecords(void) { RunTasks(); AnimateSprites(); @@ -451,32 +451,32 @@ static void sub_813C8EC(void) void ShowTrainerHillRecords(void) { SetVBlankCallback(NULL); - SetMainCallback2(sub_813C91C); + SetMainCallback2(CB2_ShowTrainerHillRecords); } -static void sub_813C91C(void) +static void CB2_ShowTrainerHillRecords(void) { switch (gMain.state) { case 0: SetVBlankCallback(NULL); - sub_813C6D4(); + ClearVramOamPlttRegs(); gMain.state++; break; case 1: - sub_813C80C(); + ClearTasksAndGraphicalStructs(); gMain.state++; break; case 2: - sUnknown_0203AB78 = AllocZeroed(0x800); + sTilemapBuffer = AllocZeroed(0x800); ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, gUnknown_085B3D64, ARRAY_COUNT(gUnknown_085B3D64)); - SetBgTilemapBuffer(3, sUnknown_0203AB78); + InitBgsFromTemplates(0, sTrainerHillRecordsBgTemplates, ARRAY_COUNT(sTrainerHillRecordsBgTemplates)); + SetBgTilemapBuffer(3, sTilemapBuffer); ResetBgCoordinates(); gMain.state++; break; case 3: - sub_813C890(3); + LoadTrainerHillRecordsWindowGfx(3); LoadPalette(stdpal_get(0), 0xF0, 0x20); gMain.state++; break; @@ -490,7 +490,7 @@ static void sub_813C91C(void) } break; case 5: - InitWindows(gUnknown_085B3D6C); + InitWindows(sTrainerHillRecordsWindowTemplates); DeactivateAllTextPrinters(); gMain.state++; break; @@ -499,11 +499,11 @@ static void sub_813C91C(void) gMain.state++; break; case 7: - sub_813C880(); - SetVBlankCallback(sub_813C8D8); + SetDispcntReg(); + SetVBlankCallback(VblankCB_TrainerHillRecords); PrintOnTrainerHillRecordsWindow(); - CreateTask(sub_813C5BC, 8); - SetMainCallback2(sub_813C8EC); + CreateTask(Task_TrainerHillWaitForPaletteFade, 8); + SetMainCallback2(MainCB2_TrainerHillRecords); gMain.state = 0; break; } diff --git a/src/new_game.c b/src/new_game.c index 92ca916d6..37336016e 100644 --- a/src/new_game.c +++ b/src/new_game.c @@ -20,8 +20,10 @@ #include "tv.h" #include "coins.h" #include "text.h" +#include "overworld.h" +#include "mail.h" +#include "battle_records.h" -extern u8 gPlayerPartyCount; extern u8 gDifferentSaveFile; extern u16 gSaveFileStatus; extern u8 gUnknown_030060B0; @@ -29,19 +31,15 @@ extern u8 gUnknown_030060B0; // TODO: replace those declarations with file headers extern u16 GetGeneratedTrainerIdLower(void); extern void ClearContestWinnerPicsInContestHall(void); -extern void Overworld_SetWarpDestination(s8 mapBank, s8 mapNo, s8 warpNo, s8 xPos, s8 yPos); extern void warp_in(void); extern void sub_80BB358(void); extern void ResetBagScrollPositions(void); extern void ResetPokedex(void); extern void sub_8084400(void); -extern void ClearMailData(void); extern void ResetGabbyAndTy(void); extern void ResetSecretBases(void); extern void ResetLinkContestBoolean(void); -extern void ResetGameStats(void); extern void sub_8052DA8(void); -extern void ClearPlayerLinkBattleRecords(void); extern void ResetPokemonStorageSystem(void); extern void ClearBag(void); extern void NewGameInitPCItems(void); @@ -58,7 +56,7 @@ extern void ResetContestLinkResults(void); extern void ResetPokeJumpResults(void); extern void SetBerryPowder(u32* powder, u32 newValue); -extern u8 EventScript_2715DE[]; +extern const u8 EventScript_2715DE[]; void WriteUnalignedWord(u32 var, u8 *dataPtr) { -- cgit v1.2.3 From b80fb98d9a316d2f8f0400b398fa0bc9974ac085 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Tue, 1 May 2018 16:35:38 +0200 Subject: make battle records compile --- src/tv.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/tv.c b/src/tv.c index b7c2812fe..67544ef8a 100644 --- a/src/tv.c +++ b/src/tv.c @@ -1380,13 +1380,13 @@ void PutFanClubSpecialOnTheAir(void) StringCopy(show->fanClubSpecial.idolName, name); tv_store_id_2x(show); show->fanClubSpecial.language = gGameLanguage; - if (show->fanClubSpecial.language == LANGUAGE_JAPANESE || gSaveBlock1Ptr->unk_31A0 == LANGUAGE_JAPANESE) + if (show->fanClubSpecial.language == LANGUAGE_JAPANESE || gSaveBlock1Ptr->linkBattleRecords.languages[0] == LANGUAGE_JAPANESE) { show->fanClubSpecial.idolNameLanguage = LANGUAGE_JAPANESE; } else { - show->fanClubSpecial.idolNameLanguage = gSaveBlock1Ptr->unk_31A0; + show->fanClubSpecial.idolNameLanguage = gSaveBlock1Ptr->linkBattleRecords.languages[0]; } } @@ -2465,7 +2465,7 @@ bool8 sub_80EE7C0(void) { return TRUE; } - if (gSaveBlock1Ptr->linkBattleRecords[0].name[0] == EOS) + if (gSaveBlock1Ptr->linkBattleRecords.entries[0].name[0] == EOS) { return TRUE; } -- cgit v1.2.3