summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/credits.s2
-rw-r--r--asm/hall_of_fame.s3603
-rw-r--r--asm/link.s6
-rw-r--r--asm/rom6.s8
-rw-r--r--asm/start_menu.s2
-rw-r--r--asm/trade.s4
-rw-r--r--data/event_scripts.s2
-rw-r--r--data/graphics.s26
-rw-r--r--data/hall_of_fame.s46
-rw-r--r--graphics/misc/japanese_hof.pal19
-rw-r--r--graphics/misc/japanese_hof.pngbin0 -> 425 bytes
-rw-r--r--graphics_file_rules.mk5
-rw-r--r--include/hall_of_fame.h8
-rw-r--r--ld_script.txt4
-rw-r--r--src/hall_of_fame.c1552
-rw-r--r--sym_ewram.txt8
16 files changed, 1620 insertions, 3675 deletions
diff --git a/asm/credits.s b/asm/credits.s
index 0b2da16b8..a9373c042 100644
--- a/asm/credits.s
+++ b/asm/credits.s
@@ -26,7 +26,7 @@ sub_81754DC: @ 81754DC
ands r0, r1
cmp r0, 0
beq _08175522
- ldr r0, =gUnknown_0203BCE4
+ ldr r0, =gHasHallOfFameRecords
ldrb r0, [r0]
cmp r0, 0
beq _08175522
diff --git a/asm/hall_of_fame.s b/asm/hall_of_fame.s
deleted file mode 100644
index 9227c1795..000000000
--- a/asm/hall_of_fame.s
+++ /dev/null
@@ -1,3603 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_817354C
-sub_817354C: @ 817354C
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_817354C
-
- thumb_func_start sub_8173560
-sub_8173560: @ 8173560
- push {lr}
- bl RunTasks
- bl RunTextPrinters
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_8173560
-
- thumb_func_start sub_817357C
-sub_817357C: @ 817357C
- push {r4,lr}
- sub sp, 0x4
- ldr r0, =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x4
- bls _08173590
- b _08173688
-_08173590:
- lsls r0, 2
- ldr r1, =_081735A4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081735A4:
- .4byte _081735B8
- .4byte _081735E8
- .4byte _081735EE
- .4byte _08173620
- .4byte _0817365C
-_081735B8:
- movs r0, 0
- bl SetVBlankCallback
- bl sub_8174EC4
- ldr r4, =gUnknown_0203BCDC
- ldr r0, =0x00002014
- bl AllocZeroed
- str r0, [r4]
- ldr r0, =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- b _08173688
- .pool
-_081735E8:
- bl sub_8174F70
- b _08173642
-_081735EE:
- ldr r1, =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- movs r1, 0xE2
- lsls r1, 3
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- bl sub_8174FAC
- ldr r0, =gUnknown_0203BCDC
- ldr r1, [r0]
- movs r0, 0
- strh r0, [r1]
- b _08173642
- .pool
-_08173620:
- bl sub_8175024
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _08173688
- ldr r0, =sub_817354C
- bl SetVBlankCallback
- movs r0, 0x1
- negs r0, r0
- str r4, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
-_08173642:
- ldr r1, =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08173688
- .pool
-_0817365C:
- bl UpdatePaletteFade
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08173688
- ldr r0, =sub_8173560
- bl SetMainCallback2
- movs r0, 0xDA
- lsls r0, 1
- bl PlayBGM
- movs r0, 0
- b _0817368A
- .pool
-_08173688:
- movs r0, 0x1
-_0817368A:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_817357C
-
- thumb_func_start sub_8173694
-sub_8173694: @ 8173694
- push {r4,lr}
- bl sub_817357C
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _081736C4
- ldr r0, =sub_817371C
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0x8]
- ldr r4, =gUnknown_0203BCD8
- movs r0, 0x78
- bl AllocZeroed
- str r0, [r4]
-_081736C4:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8173694
-
- thumb_func_start sub_81736D8
-sub_81736D8: @ 81736D8
- push {r4,lr}
- bl sub_817357C
- lsls r0, 24
- cmp r0, 0
- bne _08173708
- ldr r0, =sub_817371C
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0x1
- strh r0, [r1, 0x8]
- ldr r4, =gUnknown_0203BCD8
- movs r0, 0x78
- bl AllocZeroed
- str r0, [r4]
-_08173708:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81736D8
-
- thumb_func_start sub_817371C
-sub_817371C: @ 817371C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r1, =gTasks
- lsls r0, 2
- add r0, r8
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0xC]
- movs r7, 0
- ldr r0, =gUnknown_0203BCD8
- mov r9, r0
-_08173740:
- movs r0, 0x64
- adds r1, r7, 0
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r6, r1, r0
- adds r0, r6, 0
- movs r1, 0xB
- bl GetMonData
- adds r5, r0, 0
- cmp r5, 0
- beq _0817380C
- adds r0, r6, 0
- movs r1, 0x41
- bl GetMonData
- mov r1, r9
- ldr r3, [r1]
- lsls r4, r7, 2
- adds r4, r7
- lsls r4, 2
- adds r3, r4
- ldr r2, =0x000001ff
- adds r1, r2, 0
- ands r0, r1
- ldrh r1, [r3, 0x8]
- ldr r5, =0xfffffe00
- adds r2, r5, 0
- ands r1, r2
- orrs r1, r0
- strh r1, [r3, 0x8]
- adds r0, r6, 0
- movs r1, 0x1
- bl GetMonData
- mov r2, r9
- ldr r1, [r2]
- adds r1, r4
- str r0, [r1]
- adds r0, r6, 0
- movs r1, 0
- bl GetMonData
- mov r5, r9
- ldr r1, [r5]
- adds r1, 0x4
- adds r1, r4
- str r0, [r1]
- adds r0, r6, 0
- movs r1, 0x38
- bl GetMonData
- ldr r2, [r5]
- adds r2, r4
- lsls r0, 1
- ldrb r3, [r2, 0x9]
- movs r1, 0x1
- ands r1, r3
- orrs r1, r0
- strb r1, [r2, 0x9]
- adds r0, r6, 0
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- movs r2, 0
- mov r6, r8
- lsls r5, r6, 2
- ldr r3, =gUnknown_0203BCD8
-_081737CA:
- ldr r0, [r3]
- adds r1, r2, r4
- adds r0, 0xA
- adds r0, r1
- mov r6, sp
- adds r1, r6, r2
- ldrb r1, [r1]
- strb r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x9
- bls _081737CA
- ldr r0, =gTasks
- mov r2, r8
- adds r1, r5, r2
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0xC]
- adds r0, 0x1
- strh r0, [r1, 0xC]
- b _08173840
- .pool
-_0817380C:
- mov r6, r9
- ldr r3, [r6]
- lsls r2, r7, 2
- adds r2, r7
- lsls r2, 2
- adds r4, r3, r2
- ldrh r0, [r4, 0x8]
- ldr r6, =0xfffffe00
- adds r1, r6, 0
- ands r0, r1
- strh r0, [r4, 0x8]
- str r5, [r4]
- adds r3, 0x4
- adds r3, r2
- str r5, [r3]
- ldrb r1, [r4, 0x9]
- movs r0, 0x1
- ands r0, r1
- strb r0, [r4, 0x9]
- mov r1, r9
- ldr r0, [r1]
- adds r0, r2
- movs r1, 0xFF
- strb r1, [r0, 0xA]
- mov r2, r8
- lsls r5, r2, 2
-_08173840:
- adds r0, r7, 0x1
- lsls r0, 16
- lsrs r7, r0, 16
- cmp r7, 0x5
- bhi _0817384C
- b _08173740
-_0817384C:
- ldr r0, =gUnknown_0203BCD4
- movs r3, 0
- str r3, [r0]
- ldr r4, =gTasks
- mov r6, r8
- adds r1, r5, r6
- lsls r1, 3
- adds r2, r1, r4
- strh r3, [r2, 0xA]
- movs r0, 0xFF
- strh r0, [r2, 0x10]
- movs r7, 0
- adds r3, r4, 0
- adds r3, 0x8
- movs r2, 0xFF
-_0817386A:
- adds r0, r7, 0x5
- lsls r0, 1
- adds r0, r1
- adds r0, r3
- strh r2, [r0]
- adds r0, r7, 0x1
- lsls r0, 16
- lsrs r7, r0, 16
- cmp r7, 0x5
- bls _0817386A
- mov r1, r8
- adds r0, r5, r1
- lsls r0, 3
- adds r1, r0, r4
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- cmp r0, 0
- beq _081738A4
- ldr r0, =sub_8173A8C
- b _081738A6
- .pool
-_081738A4:
- ldr r0, =sub_81738BC
-_081738A6:
- str r0, [r1]
- add sp, 0xC
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_817371C
-
- thumb_func_start sub_81738BC
-sub_81738BC: @ 81738BC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x10
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r7, =0x0201c000
- ldr r0, =gUnknown_0203BCE4
- ldrb r0, [r0]
- cmp r0, 0
- bne _081738EC
- movs r2, 0x80
- lsls r2, 6
- adds r0, r7, 0
- movs r1, 0
- bl memset
- b _08173906
- .pool
-_081738EC:
- movs r0, 0x3
- bl sub_81534D0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08173906
- movs r2, 0x80
- lsls r2, 6
- adds r0, r7, 0
- movs r1, 0
- bl memset
-_08173906:
- movs r5, 0
- ldrh r1, [r7, 0x8]
- ldr r2, =0x000001ff
- adds r0, r2, 0
- ands r0, r1
- mov r1, r9
- lsls r1, 2
- mov r8, r1
- cmp r0, 0
- beq _08173930
-_0817391A:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- adds r7, 0x78
- cmp r5, 0x31
- bhi _08173934
- ldrh r1, [r7, 0x8]
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- bne _0817391A
-_08173930:
- cmp r5, 0x31
- bls _08173956
-_08173934:
- ldr r4, =0x0201c000
- adds r6, r4, 0
- adds r4, 0x78
- movs r5, 0
- subs r7, 0x78
-_0817393E:
- adds r0, r6, 0
- adds r1, r4, 0
- movs r2, 0x78
- bl memcpy
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- adds r6, 0x78
- adds r4, 0x78
- cmp r5, 0x30
- bls _0817393E
-_08173956:
- ldr r0, =gUnknown_0203BCD8
- ldr r1, [r0]
- adds r0, r7, 0
- movs r2, 0x78
- bl memcpy
- movs r0, 0
- movs r1, 0
- bl sub_81973C4
- ldr r2, =gUnknown_082C8959
- movs r0, 0
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x1
- movs r3, 0
- bl AddTextPrinterParametrized
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r1, =gTasks
- mov r0, r8
- add r0, r9
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81739C4
- str r1, [r0]
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81738BC
-
- thumb_func_start sub_81739C4
-sub_81739C4: @ 81739C4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, =gGameContinueCallback
- ldr r0, =sub_81736D8
- str r0, [r1]
- movs r0, 0x3
- bl TrySavingData
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- bne _08173A34
- ldr r0, =gDamagedSaveSectors
- ldr r0, [r0]
- cmp r0, 0
- beq _08173A34
- movs r0, 0x1
- bl UnsetBgTilemapBuffer
- movs r0, 0x3
- bl UnsetBgTilemapBuffer
- bl FreeAllWindowBuffers
- ldr r5, =gUnknown_0203BCDC
- ldr r0, [r5]
- cmp r0, 0
- beq _08173A06
- bl Free
- movs r0, 0
- str r0, [r5]
-_08173A06:
- ldr r5, =gUnknown_0203BCD8
- ldr r0, [r5]
- cmp r0, 0
- beq _08173A16
- bl Free
- movs r0, 0
- str r0, [r5]
-_08173A16:
- adds r0, r4, 0
- bl DestroyTask
- b _08173A4C
- .pool
-_08173A34:
- movs r0, 0x37
- bl PlaySE
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_8173A5C
- str r1, [r0]
- movs r1, 0x20
- strh r1, [r0, 0xE]
-_08173A4C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81739C4
-
- thumb_func_start sub_8173A5C
-sub_8173A5C: @ 8173A5C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldrh r2, [r1, 0xE]
- movs r3, 0xE
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _08173A80
- subs r0, r2, 0x1
- strh r0, [r1, 0xE]
- b _08173A84
- .pool
-_08173A80:
- ldr r0, =sub_8173A8C
- str r0, [r1]
-_08173A84:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8173A5C
-
- thumb_func_start sub_8173A8C
-sub_8173A8C: @ 8173A8C
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r0, =sub_8173AA8
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end sub_8173A8C
-
- thumb_func_start sub_8173AA8
-sub_8173AA8: @ 8173AA8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x10
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r0, =gTasks
- mov r2, r8
- lsls r1, r2, 2
- add r1, r8
- lsls r1, 3
- adds r1, r0
- ldrh r6, [r1, 0xA]
- ldr r2, =gUnknown_0203BCD8
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 2
- ldr r2, [r2]
- adds r7, r2, r0
- movs r2, 0xC
- ldrsh r0, [r1, r2]
- cmp r0, 0x3
- ble _08173AEC
- ldr r1, =gUnknown_085E53B4
- b _08173AEE
- .pool
-_08173AEC:
- ldr r1, =gUnknown_085E53E4
-_08173AEE:
- lsls r2, r6, 3
- adds r0, r2, r1
- ldrh r3, [r0]
- adds r0, r1, 0x2
- adds r0, r2, r0
- ldrh r4, [r0]
- adds r0, r1, 0x4
- adds r0, r2, r0
- ldrh r0, [r0]
- mov r9, r0
- adds r1, 0x6
- adds r2, r1
- ldrh r5, [r2]
- ldrh r2, [r7, 0x8]
- ldr r0, =0x000001ff
- ands r0, r2
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- bne _08173B20
- lsls r0, r5, 16
- movs r1, 0xA0
- lsls r1, 12
- adds r0, r1
- lsrs r5, r0, 16
-_08173B20:
- lsls r0, r2, 23
- lsrs r0, 23
- ldr r1, [r7]
- ldr r2, [r7, 0x4]
- lsls r3, 16
- asrs r3, 16
- str r3, [sp]
- lsls r3, r4, 16
- asrs r3, 16
- str r3, [sp, 0x4]
- lsls r3, r6, 24
- lsrs r3, 24
- str r3, [sp, 0x8]
- ldr r3, =0x0000ffff
- str r3, [sp, 0xC]
- movs r3, 0x1
- bl sub_818D3E4
- lsls r0, 24
- lsrs r0, 24
- ldr r4, =gSprites
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r3, r2, r4
- movs r1, 0
- mov r12, r1
- mov r1, r9
- strh r1, [r3, 0x30]
- strh r5, [r3, 0x32]
- mov r1, r12
- strh r1, [r3, 0x2E]
- ldrh r1, [r7, 0x8]
- lsls r1, 23
- lsrs r1, 23
- strh r1, [r3, 0x3C]
- adds r4, 0x1C
- adds r2, r4
- ldr r1, =sub_8175120
- str r1, [r2]
- ldr r5, =gTasks
- adds r1, r6, 0x5
- lsls r1, 1
- mov r2, r8
- lsls r4, r2, 2
- add r4, r8
- lsls r4, 3
- adds r1, r4
- adds r2, r5, 0
- adds r2, 0x8
- adds r1, r2
- strh r0, [r1]
- movs r0, 0
- movs r1, 0x1
- bl sub_8197434
- adds r4, r5
- ldr r0, =sub_8173BC0
- str r0, [r4]
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8173AA8
-
- thumb_func_start sub_8173BC0
-sub_8173BC0: @ 8173BC0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r4, =gTasks
- lsls r3, r0, 2
- adds r3, r0
- lsls r3, 3
- adds r5, r3, r4
- ldrh r0, [r5, 0xA]
- ldr r2, =gUnknown_0203BCD8
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 2
- ldr r2, [r2]
- adds r2, r1
- adds r0, 0x5
- lsls r0, 1
- adds r0, r3
- adds r4, 0x8
- adds r0, r4
- movs r3, 0
- ldrsh r1, [r0, r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r3, r0, r1
- ldr r1, [r3, 0x1C]
- ldr r0, =SpriteCallbackDummy
- cmp r1, r0
- bne _08173C1A
- ldrb r1, [r3, 0x1]
- movs r0, 0x4
- negs r0, r0
- ands r0, r1
- strb r0, [r3, 0x1]
- adds r0, r2, 0
- movs r1, 0
- movs r2, 0xE
- bl sub_8174A88
- movs r0, 0x78
- strh r0, [r5, 0xE]
- ldr r0, =sub_8173C34
- str r0, [r5]
-_08173C1A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8173BC0
-
- thumb_func_start sub_8173C34
-sub_8173C34: @ 8173C34
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r2, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r6, r0, 3
- adds r4, r6, r2
- ldrh r3, [r4, 0xA]
- ldr r1, =gUnknown_0203BCD8
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 2
- ldr r1, [r1]
- adds r1, r0
- mov r9, r1
- ldrh r1, [r4, 0xE]
- movs r7, 0xE
- ldrsh r0, [r4, r7]
- mov r12, r2
- cmp r0, 0
- beq _08173C78
- subs r0, r1, 0x1
- strh r0, [r4, 0xE]
- b _08173D10
- .pool
-_08173C78:
- ldr r2, =gUnknown_0203BCD4
- ldr r0, =gSprites
- mov r8, r0
- adds r0, r3, 0x5
- lsls r0, 1
- adds r0, r6
- mov r1, r12
- adds r1, 0x8
- adds r6, r0, r1
- movs r7, 0
- ldrsh r1, [r6, r7]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- ldrb r0, [r0, 0x5]
- lsrs r0, 4
- movs r1, 0x80
- lsls r1, 9
- lsls r1, r0
- ldr r3, [r2]
- orrs r3, r1
- str r3, [r2]
- ldrh r2, [r4, 0xA]
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- bgt _08173D04
- mov r7, r9
- ldrh r1, [r7, 0x1C]
- ldr r0, =0x000001ff
- ands r0, r1
- cmp r0, 0
- beq _08173D04
- adds r0, r2, 0x1
- strh r0, [r4, 0xA]
- ldr r0, =0x000063b0
- str r0, [sp]
- adds r0, r3, 0
- movs r1, 0
- movs r2, 0xC
- movs r3, 0xC
- bl BeginNormalPaletteFade
- movs r0, 0
- ldrsh r1, [r6, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- ldrb r2, [r0, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0, 0x5]
- ldr r0, =sub_8173AA8
- str r0, [r4]
- b _08173D10
- .pool
-_08173D04:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- add r0, r12
- ldr r1, =sub_8173D24
- str r1, [r0]
-_08173D10:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8173C34
-
- thumb_func_start sub_8173D24
-sub_8173D24: @ 8173D24
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =0xffff0000
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0
- bl BeginNormalPaletteFade
- movs r3, 0
- lsls r1, r4, 2
- adds r0, r1, r4
- lsls r5, r0, 3
- ldr r0, =gTasks + 0x8
- mov r12, r0
- mov r8, r1
- ldr r6, =gSprites
- movs r7, 0xD
- negs r7, r7
-_08173D52:
- adds r0, r3, 0x5
- lsls r0, 1
- adds r0, r5
- mov r2, r12
- adds r1, r0, r2
- movs r2, 0
- ldrsh r0, [r1, r2]
- cmp r0, 0xFF
- beq _08173D74
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- ldrb r2, [r1, 0x5]
- adds r0, r7, 0
- ands r0, r2
- strb r0, [r1, 0x5]
-_08173D74:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x5
- bls _08173D52
- movs r0, 0
- movs r1, 0xF
- bl sub_8174A38
- movs r0, 0x69
- bl PlaySE
- ldr r1, =gTasks
- mov r2, r8
- adds r0, r2, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0xC8
- lsls r1, 1
- strh r1, [r0, 0xE]
- ldr r1, =sub_8173DC0
- str r1, [r0]
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8173D24
-
- thumb_func_start sub_8173DC0
-sub_8173DC0: @ 8173DC0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r7, =gTasks
- lsls r4, r6, 2
- adds r0, r4, r6
- lsls r5, r0, 3
- adds r1, r5, r7
- ldrh r2, [r1, 0xE]
- movs r3, 0xE
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _08173E04
- subs r2, 0x1
- strh r2, [r1, 0xE]
- movs r0, 0x3
- ands r0, r2
- cmp r0, 0
- bne _08173E7E
- lsls r0, r2, 16
- asrs r0, 16
- cmp r0, 0x6E
- ble _08173E7E
- bl sub_81751FC
- b _08173E7E
- .pool
-_08173E04:
- movs r3, 0
- mov r9, r4
- ldr r0, =gUnknown_0203BCD4
- mov r10, r0
- adds r4, r5, 0
- adds r7, 0x8
- mov r8, r7
- ldr r7, =gSprites
- movs r1, 0xD
- negs r1, r1
- mov r12, r1
- movs r5, 0x4
-_08173E1C:
- adds r0, r3, 0x5
- lsls r0, 1
- adds r0, r4
- mov r2, r8
- adds r1, r0, r2
- movs r2, 0
- ldrsh r0, [r1, r2]
- cmp r0, 0xFF
- beq _08173E40
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r7
- ldrb r2, [r1, 0x5]
- mov r0, r12
- ands r0, r2
- orrs r0, r5
- strb r0, [r1, 0x5]
-_08173E40:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x5
- bls _08173E1C
- mov r3, r10
- ldr r0, [r3]
- ldr r1, =0x000063b0
- str r1, [sp]
- movs r1, 0
- movs r2, 0xC
- movs r3, 0xC
- bl BeginNormalPaletteFade
- movs r0, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r1, =gTasks
- mov r2, r9
- adds r0, r2, r6
- lsls r0, 3
- adds r0, r1
- movs r1, 0x7
- strh r1, [r0, 0xE]
- ldr r1, =sub_8173EA4
- str r1, [r0]
-_08173E7E:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8173DC0
-
- thumb_func_start sub_8173EA4
-sub_8173EA4: @ 8173EA4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldrh r2, [r1, 0xE]
- movs r3, 0xE
- ldrsh r0, [r1, r3]
- cmp r0, 0xF
- ble _08173ECC
- ldr r0, =sub_8173EE4
- str r0, [r1]
- b _08173EDE
- .pool
-_08173ECC:
- adds r0, r2, 0x1
- strh r0, [r1, 0xE]
- movs r0, 0xE
- ldrsh r1, [r1, r0]
- lsls r1, 24
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
-_08173EDE:
- pop {r0}
- bx r0
- thumb_func_end sub_8173EA4
-
- thumb_func_start sub_8173EE4
-sub_8173EE4: @ 8173EE4
- push {r4-r6,lr}
- sub sp, 0x8
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- movs r1, 0x82
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x3
- bl ShowBg
- ldr r6, =gSaveBlock2Ptr
- ldr r0, [r6]
- ldrb r0, [r0, 0x8]
- movs r1, 0x1
- bl sub_818D97C
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x6
- str r1, [sp]
- ldr r1, =0x0000ffff
- str r1, [sp, 0x4]
- movs r1, 0x1
- movs r2, 0x78
- movs r3, 0x48
- bl sub_818D8AC
- ldr r1, =gTasks
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- adds r4, r1
- strh r0, [r4, 0x10]
- ldr r0, =gUnknown_085E5380
- bl AddWindow
- ldr r0, [r6]
- ldrb r1, [r0, 0x14]
- lsrs r1, 3
- ldr r2, =0x0000021d
- movs r0, 0x1
- movs r3, 0xD0
- bl sub_80987D4
- movs r0, 0x1
- bl stdpal_get
- movs r1, 0xE0
- movs r2, 0x20
- bl LoadPalette
- movs r0, 0x78
- strh r0, [r4, 0xE]
- ldr r0, =sub_8173F84
- str r0, [r4]
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8173EE4
-
- thumb_func_start sub_8173F84
-sub_8173F84: @ 8173F84
- push {r4,r5,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
- ldrh r0, [r4, 0xE]
- movs r1, 0xE
- ldrsh r5, [r4, r1]
- cmp r5, 0
- beq _08173FAC
- subs r0, 0x1
- strh r0, [r4, 0xE]
- b _08174018
- .pool
-_08173FAC:
- ldr r2, =gSprites
- movs r3, 0x10
- ldrsh r1, [r4, r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r2
- ldrh r2, [r1, 0x20]
- movs r3, 0x20
- ldrsh r0, [r1, r3]
- cmp r0, 0xC0
- beq _08173FD0
- adds r0, r2, 0x1
- strh r0, [r1, 0x20]
- b _08174018
- .pool
-_08173FD0:
- movs r0, 0x20
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- movs r0, 0x1
- movs r1, 0x2
- bl sub_8174C98
- movs r0, 0
- movs r1, 0
- bl sub_81973C4
- ldr r2, =gText_LeagueChamp
- str r5, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x1
- movs r3, 0
- bl AddTextPrinterParametrized
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r0, =sub_8174028
- str r0, [r4]
-_08174018:
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8173F84
-
- thumb_func_start sub_8174028
-sub_8174028: @ 8174028
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0817404E
- movs r0, 0x4
- bl FadeOutBGM
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_8174060
- str r0, [r1]
-_0817404E:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8174028
-
- thumb_func_start sub_8174060
-sub_8174060: @ 8174060
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =gPlttBufferFaded
- ldr r1, =gPlttBufferUnfaded
- movs r2, 0x80
- lsls r2, 2
- bl CpuSet
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r1, 0x8
- 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_81740B0
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8174060
-
- thumb_func_start sub_81740B0
-sub_81740B0: @ 81740B0
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08174164
- lsls r0, r7, 2
- mov r8, r0
- ldr r1, =gTasks
- adds r0, r7
- lsls r0, 3
- adds r1, 0x12
- adds r5, r0, r1
- ldr r2, =gSprites
- mov r9, r2
- movs r6, 0x5
-_081740DC:
- ldrb r4, [r5]
- cmp r4, 0xFF
- beq _081740FA
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- add r0, r9
- ldrb r0, [r0, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- adds r0, r4, 0
- bl sub_818D820
-_081740FA:
- adds r5, 0x2
- subs r6, 0x1
- cmp r6, 0
- bge _081740DC
- ldr r0, =gTasks
- mov r2, r8
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x10]
- bl sub_818D8F0
- movs r0, 0
- bl HideBg
- movs r0, 0x1
- bl HideBg
- movs r0, 0x3
- bl HideBg
- bl FreeAllWindowBuffers
- movs r0, 0x1
- bl UnsetBgTilemapBuffer
- movs r0, 0x3
- bl UnsetBgTilemapBuffer
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- adds r0, r7, 0
- bl DestroyTask
- ldr r4, =gUnknown_0203BCDC
- ldr r0, [r4]
- cmp r0, 0
- beq _08174150
- bl Free
- movs r0, 0
- str r0, [r4]
-_08174150:
- ldr r4, =gUnknown_0203BCD8
- ldr r0, [r4]
- cmp r0, 0
- beq _08174160
- bl Free
- movs r0, 0
- str r0, [r4]
-_08174160:
- bl sub_8174184
-_08174164:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81740B0
-
- thumb_func_start sub_8174184
-sub_8174184: @ 8174184
- push {lr}
- ldr r0, =sub_8175620
- bl SetMainCallback2
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8174184
-
- thumb_func_start sub_8174194
-sub_8174194: @ 8174194
- push {r4,lr}
- ldr r0, =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x5
- bhi _081741D0
- lsls r0, 2
- ldr r1, =_081741B8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081741B8:
- .4byte _081741D0
- .4byte _08174200
- .4byte _08174214
- .4byte _08174240
- .4byte _08174280
- .4byte _081742B0
-_081741D0:
- movs r0, 0
- bl SetVBlankCallback
- bl sub_8174EC4
- ldr r4, =gUnknown_0203BCDC
- ldr r0, =0x00002014
- bl AllocZeroed
- str r0, [r4]
- ldr r0, =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r0, r2
- movs r1, 0x1
- strb r1, [r0]
- b _08174308
- .pool
-_08174200:
- bl sub_8174F70
- ldr r1, =gMain
- movs r3, 0x87
- lsls r3, 3
- adds r1, r3
- b _081742A2
- .pool
-_08174214:
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- bl sub_8174FAC
- ldr r1, =gMain
- movs r4, 0x87
- lsls r4, 3
- adds r1, r4
- b _081742A2
- .pool
-_08174240:
- bl sub_8175024
- lsls r0, 24
- cmp r0, 0
- bne _08174308
- ldr r1, =0x0201c000
- ldr r0, =gUnknown_085E56D4
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2,r3}
- stm r1!, {r2,r3}
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl sub_80F9BCC
- ldr r0, =sub_817354C
- bl SetVBlankCallback
- ldr r1, =gMain
- movs r4, 0x87
- lsls r4, 3
- adds r1, r4
- b _081742A2
- .pool
-_08174280:
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- bl sub_80F9C1C
- lsls r0, 24
- cmp r0, 0
- bne _08174308
- ldr r1, =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
-_081742A2:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08174308
- .pool
-_081742B0:
- ldr r1, =0x00003f42
- movs r0, 0x50
- bl SetGpuReg
- movs r1, 0xE2
- lsls r1, 3
- movs r0, 0x52
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- ldr r0, =sub_8174324
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r4, =gTasks + 0x8
- movs r3, 0xFF
-_081742E2:
- adds r0, r2, 0x5
- lsls r0, 1
- adds r0, r1
- adds r0, r4
- strh r3, [r0]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x5
- bls _081742E2
- ldr r4, =gUnknown_0203BCD8
- movs r0, 0x80
- lsls r0, 6
- bl AllocZeroed
- str r0, [r4]
- ldr r0, =sub_8173560
- bl SetMainCallback2
-_08174308:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8174194
-
- thumb_func_start sub_8174324
-sub_8174324: @ 8174324
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, =0x00000226
- str r0, [sp]
- movs r0, 0
- movs r1, 0x1E
- movs r2, 0
- movs r3, 0xC
- bl sub_81980F0
- movs r0, 0x3
- bl sub_81534D0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08174364
- ldr r0, =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81749A0
- b _081743DA
- .pool
-_08174364:
- ldr r0, =0x0201c000
- ldr r4, =gUnknown_0203BCD8
- ldr r1, [r4]
- movs r2, 0x80
- lsls r2, 5
- bl CpuSet
- ldr r4, [r4]
- movs r2, 0
- ldrh r1, [r4, 0x8]
- ldr r3, =0x000001ff
- adds r0, r3, 0
- ands r0, r1
- lsls r5, r6, 2
- cmp r0, 0
- beq _0817439A
-_08174384:
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- adds r4, 0x78
- cmp r2, 0x31
- bhi _081743BC
- ldrh r1, [r4, 0x8]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- bne _08174384
-_0817439A:
- cmp r2, 0x31
- bhi _081743BC
- ldr r0, =gTasks
- adds r1, r5, r6
- lsls r1, 3
- adds r1, r0
- subs r0, r2, 0x1
- b _081743C6
- .pool
-_081743BC:
- ldr r0, =gTasks
- adds r1, r5, r6
- lsls r1, 3
- adds r1, r0
- movs r0, 0x31
-_081743C6:
- strh r0, [r1, 0x8]
- movs r0, 0xA
- bl GetGameStat
- ldr r2, =gTasks
- adds r1, r5, r6
- lsls r1, 3
- adds r1, r2
- strh r0, [r1, 0xA]
- ldr r0, =sub_81743EC
-_081743DA:
- str r0, [r1]
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8174324
-
- thumb_func_start sub_81743EC
-sub_81743EC: @ 81743EC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r0, =gUnknown_0203BCD8
- ldr r3, [r0]
- movs r5, 0
- ldr r1, =gTasks
- mov r2, r8
- lsls r0, r2, 2
- add r0, r8
- lsls r0, 3
- adds r0, r1
- movs r4, 0x8
- ldrsh r0, [r0, r4]
- adds r4, r1, 0
- ldr r2, =gUnknown_0203BCD4
- cmp r5, r0
- bge _0817442A
- adds r1, r0, 0
-_0817441E:
- adds r3, 0x78
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, r1
- blt _0817441E
-_0817442A:
- adds r6, r3, 0
- movs r0, 0
- str r0, [r2]
- mov r5, r8
- lsls r2, r5, 2
- adds r1, r2, r5
- lsls r1, 3
- adds r1, r4
- strh r0, [r1, 0xC]
- strh r0, [r1, 0x10]
- movs r5, 0
- str r2, [sp, 0x14]
- ldr r4, =0x000001ff
- adds r2, r1, 0
-_08174446:
- ldrh r1, [r6, 0x8]
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- beq _08174456
- ldrh r0, [r2, 0x10]
- adds r0, 0x1
- strh r0, [r2, 0x10]
-_08174456:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- adds r6, 0x14
- cmp r5, 0x5
- bls _08174446
- adds r6, r3, 0
- movs r5, 0
- ldr r1, =gTasks
- ldr r0, [sp, 0x14]
- add r0, r8
- lsls r0, 3
- mov r9, r0
- adds r0, r1
- str r0, [sp, 0x10]
- ldr r1, =0x000001ff
- mov r10, r1
-_08174478:
- ldrh r0, [r6, 0x8]
- mov r1, r10
- ands r1, r0
- adds r7, r0, 0
- cmp r1, 0
- beq _08174540
- ldr r2, [sp, 0x10]
- movs r4, 0x10
- ldrsh r0, [r2, r4]
- cmp r0, 0x3
- ble _081744B8
- lsls r1, r5, 3
- ldr r0, =gUnknown_085E53B4
- adds r0, 0x4
- adds r0, r1, r0
- ldrh r3, [r0]
- ldr r0, =gUnknown_085E53BA
- adds r1, r0
- ldrh r4, [r1]
- b _081744C8
- .pool
-_081744B8:
- ldr r0, =gUnknown_085E53E4
- lsls r2, r5, 3
- adds r1, r0, 0x4
- adds r1, r2, r1
- ldrh r3, [r1]
- adds r0, 0x6
- adds r2, r0
- ldrh r4, [r2]
-_081744C8:
- mov r1, r10
- ands r1, r7
- movs r0, 0xCE
- lsls r0, 1
- cmp r1, r0
- bne _081744DE
- lsls r0, r4, 16
- movs r1, 0xA0
- lsls r1, 12
- adds r0, r1
- lsrs r4, r0, 16
-_081744DE:
- lsls r0, r7, 23
- lsrs r0, 23
- ldr r1, [r6]
- ldr r2, [r6, 0x4]
- lsls r3, 16
- asrs r3, 16
- str r3, [sp]
- lsls r3, r4, 16
- asrs r3, 16
- str r3, [sp, 0x4]
- lsls r3, r5, 24
- lsrs r3, 24
- str r3, [sp, 0x8]
- ldr r3, =0x0000ffff
- str r3, [sp, 0xC]
- movs r3, 0x1
- bl sub_818D7D8
- lsls r0, 16
- lsrs r0, 16
- ldr r2, =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r3, [r1, 0x5]
- movs r4, 0xD
- negs r4, r4
- adds r2, r4, 0
- ands r3, r2
- movs r2, 0x4
- orrs r3, r2
- strb r3, [r1, 0x5]
- adds r1, r5, 0x5
- lsls r1, 1
- add r1, r9
- ldr r2, =gTasks + 0x8
- adds r1, r2
- strh r0, [r1]
- b _0817454E
- .pool
-_08174540:
- adds r0, r5, 0x5
- lsls r0, 1
- add r0, r9
- ldr r4, =gTasks + 0x8
- adds r0, r4
- movs r1, 0xFF
- strh r1, [r0]
-_0817454E:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- adds r6, 0x14
- cmp r5, 0x5
- bls _08174478
- ldr r0, =0xffff0000
- ldr r2, =0x000063b0
- movs r1, 0xC
- bl BlendPalettes
- ldr r0, =gStringVar1
- ldr r1, =gTasks
- ldr r4, [sp, 0x14]
- add r4, r8
- lsls r4, 3
- adds r4, r1
- movs r5, 0xA
- ldrsh r1, [r4, r5]
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r5, =gStringVar4
- ldr r1, =gText_HOFNumber
- adds r0, r5, 0
- bl StringExpandPlaceholders
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bgt _081745C0
- ldr r1, =gText_PickCancel
- movs r0, 0x1
- str r0, [sp]
- adds r0, r5, 0
- movs r2, 0
- movs r3, 0
- bl sub_8198204
- b _081745D0
- .pool
-_081745C0:
- ldr r1, =gText_PickNextCancel
- movs r0, 0x1
- str r0, [sp]
- adds r0, r5, 0
- movs r2, 0
- movs r3, 0
- bl sub_8198204
-_081745D0:
- ldr r0, =gTasks
- ldr r1, [sp, 0x14]
- add r1, r8
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81745FC
- str r0, [r1]
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81743EC
-
- thumb_func_start sub_81745FC
-sub_81745FC: @ 81745FC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gUnknown_0203BCD8
- ldr r5, [r0]
- movs r3, 0
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r2, 0x8
- ldrsh r0, [r0, r2]
- cmp r3, r0
- bge _08174630
- adds r1, r0, 0
-_08174624:
- adds r5, 0x78
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, r1
- blt _08174624
-_08174630:
- movs r3, 0
- lsls r7, r4, 2
- adds r0, r7, r4
- lsls r6, r0, 3
- ldr r0, =gTasks + 0x8
- mov r10, r0
- ldr r1, =gSprites
- mov r8, r1
- movs r2, 0xD
- negs r2, r2
- mov r9, r2
- movs r0, 0x4
- mov r12, r0
-_0817464A:
- adds r0, r3, 0x5
- lsls r0, 1
- adds r0, r6
- add r0, r10
- ldrh r1, [r0]
- cmp r1, 0xFF
- beq _0817466C
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- ldrb r2, [r0, 0x5]
- mov r1, r9
- ands r1, r2
- mov r2, r12
- orrs r1, r2
- strb r1, [r0, 0x5]
-_0817466C:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x5
- bls _0817464A
- adds r1, r7, r4
- lsls r1, 3
- ldr r0, =gTasks
- adds r6, r1, r0
- movs r2, 0xC
- ldrsh r0, [r6, r2]
- adds r0, 0x5
- lsls r0, 1
- adds r0, r1
- ldr r1, =gTasks
- adds r1, 0x8
- adds r0, r1
- ldrh r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- ldrb r2, [r0, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- strb r1, [r0, 0x5]
- lsrs r1, 4
- movs r0, 0x80
- lsls r0, 9
- lsls r0, r1
- ldr r1, =0xffff0000
- eors r0, r1
- ldr r2, =gUnknown_0203BCD4
- str r0, [r2]
- ldr r2, =0x000063b0
- movs r1, 0xC
- bl BlendPalettesUnfaded
- movs r0, 0xC
- ldrsh r1, [r6, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r4, r5, r0
- ldrh r1, [r4, 0x8]
- ldr r0, =0x000001ff
- ands r0, r1
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _081746E6
- bl StopCryAndClearCrySongs
- ldrh r0, [r4, 0x8]
- lsls r0, 23
- lsrs r0, 23
- movs r1, 0
- bl PlayCry1
-_081746E6:
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0xE
- bl sub_8174A88
- ldr r0, =sub_8174728
- str r0, [r6]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81745FC
-
- thumb_func_start sub_8174728
-sub_8174728: @ 8174728
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, =gMain
- ldrh r2, [r1, 0x2E]
- movs r0, 0x1
- ands r0, r2
- adds r3, r1, 0
- cmp r0, 0
- beq _081747E4
- ldr r0, =gTasks
- mov r12, r0
- lsls r0, r6, 2
- adds r1, r0, r6
- lsls r3, r1, 3
- mov r1, r12
- adds r4, r3, r1
- ldrh r2, [r4, 0x8]
- movs r5, 0x8
- ldrsh r1, [r4, r5]
- mov r9, r0
- cmp r1, 0
- beq _081747B8
- subs r0, r2, 0x1
- strh r0, [r4, 0x8]
- movs r5, 0
- adds r7, r3, 0
- movs r0, 0x8
- add r0, r12
- mov r8, r0
-_0817476A:
- adds r0, r5, 0x5
- lsls r0, 1
- adds r0, r7
- mov r1, r8
- adds r4, r0, r1
- ldrb r0, [r4]
- cmp r0, 0xFF
- beq _08174782
- bl sub_818D820
- movs r0, 0xFF
- strh r0, [r4]
-_08174782:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x5
- bls _0817476A
- ldr r0, =gTasks
- mov r2, r9
- adds r1, r2, r6
- lsls r1, 3
- adds r1, r0
- ldrh r2, [r1, 0xA]
- movs r3, 0xA
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _081747A4
- subs r0, r2, 0x1
- strh r0, [r1, 0xA]
-_081747A4:
- ldr r0, =sub_81743EC
- str r0, [r1]
- b _08174884
- .pool
-_081747B8:
- bl IsCryPlayingOrClearCrySongs
- lsls r0, 24
- cmp r0, 0
- beq _081747D2
- bl StopCryAndClearCrySongs
- ldr r0, =gMPlay_BGM
- ldr r1, =0x0000ffff
- movs r2, 0x80
- lsls r2, 1
- bl m4aMPlayVolumeControl
-_081747D2:
- ldr r0, =sub_8174898
- str r0, [r4]
- b _08174884
- .pool
-_081747E4:
- movs r0, 0x2
- ands r0, r2
- cmp r0, 0
- beq _08174828
- bl IsCryPlayingOrClearCrySongs
- lsls r0, 24
- cmp r0, 0
- beq _08174806
- bl StopCryAndClearCrySongs
- ldr r0, =gMPlay_BGM
- ldr r1, =0x0000ffff
- movs r2, 0x80
- lsls r2, 1
- bl m4aMPlayVolumeControl
-_08174806:
- ldr r0, =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_8174898
- str r0, [r1]
- b _08174884
- .pool
-_08174828:
- movs r0, 0x40
- ands r0, r2
- cmp r0, 0
- beq _08174858
- ldr r0, =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- ldrh r2, [r1, 0xC]
- movs r4, 0xC
- ldrsh r0, [r1, r4]
- cmp r0, 0
- beq _08174858
- subs r0, r2, 0x1
- strh r0, [r1, 0xC]
- ldr r0, =sub_81745FC
- str r0, [r1]
- b _08174884
- .pool
-_08174858:
- ldrh r1, [r3, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08174884
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r2, r0, r1
- movs r5, 0xC
- ldrsh r1, [r2, r5]
- movs r3, 0x10
- ldrsh r0, [r2, r3]
- subs r0, 0x1
- cmp r1, r0
- bge _08174884
- ldrh r0, [r2, 0xC]
- adds r0, 0x1
- strh r0, [r2, 0xC]
- ldr r0, =sub_81745FC
- str r0, [r2]
-_08174884:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8174728
-
- thumb_func_start sub_8174898
-sub_8174898: @ 8174898
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =gPlttBufferFaded
- ldr r1, =gPlttBufferUnfaded
- movs r2, 0x80
- lsls r2, 2
- bl CpuSet
- ldr r1, =0x0201c000
- ldr r0, =gUnknown_085E56D4
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- ldm r0!, {r2,r3}
- stm r1!, {r2,r3}
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl sub_80F9BF4
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81748F0
- str r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8174898
-
- thumb_func_start sub_81748F0
-sub_81748F0: @ 81748F0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r6, r0, 24
- bl sub_80F9C30
- lsls r0, 24
- cmp r0, 0
- bne _08174988
- movs r5, 0
- lsls r0, r6, 2
- adds r0, r6
- lsls r7, r0, 3
- ldr r0, =gTasks + 0x8
- mov r8, r0
-_08174910:
- adds r0, r5, 0x5
- lsls r0, 1
- adds r0, r7
- mov r1, r8
- adds r4, r0, r1
- ldrh r0, [r4]
- cmp r0, 0xFF
- beq _08174928
- bl sub_818D820
- movs r0, 0xFF
- strh r0, [r4]
-_08174928:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x5
- bls _08174910
- movs r0, 0
- bl HideBg
- movs r0, 0x1
- bl HideBg
- movs r0, 0x3
- bl HideBg
- bl sub_8198314
- bl FreeAllWindowBuffers
- movs r0, 0x1
- bl UnsetBgTilemapBuffer
- movs r0, 0x3
- bl UnsetBgTilemapBuffer
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- adds r0, r6, 0
- bl DestroyTask
- ldr r4, =gUnknown_0203BCDC
- ldr r0, [r4]
- cmp r0, 0
- beq _08174974
- bl Free
- movs r0, 0
- str r0, [r4]
-_08174974:
- ldr r4, =gUnknown_0203BCD8
- ldr r0, [r4]
- cmp r0, 0
- beq _08174984
- bl Free
- movs r0, 0
- str r0, [r4]
-_08174984:
- bl sub_8137C3C
-_08174988:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81748F0
-
- thumb_func_start sub_81749A0
-sub_81749A0: @ 81749A0
- push {r4,lr}
- sub sp, 0x10
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =gText_UnkCtrlF800Exit
- movs r1, 0x8
- movs r2, 0x1
- bl sub_8198180
- movs r0, 0
- movs r1, 0
- bl sub_81973C4
- ldr r2, =gText_HOFCorrupted
- movs r0, 0
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x1
- movs r3, 0
- bl AddTextPrinterParametrized
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_8174A08
- str r1, [r0]
- add sp, 0x10
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81749A0
-
- thumb_func_start sub_8174A08
-sub_8174A08: @ 8174A08
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08174A28
- ldr r0, =gTasks
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_8174898
- str r0, [r1]
-_08174A28:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8174A08
-
- thumb_func_start sub_8174A38
-sub_8174A38: @ 8174A38
- push {r4,lr}
- sub sp, 0xC
- movs r0, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- movs r0, 0
- bl PutWindowTilemap
- ldr r4, =gText_WelcomeToHOF
- movs r0, 0x1
- adds r1, r4, 0
- movs r2, 0xD0
- bl GetStringCenterAlignXOffset
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- ldr r0, =gUnknown_085E5388
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r1, 0x1
- movs r3, 0x1
- bl box_print
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- add sp, 0xC
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8174A38
-
- thumb_func_start sub_8174A88
-sub_8174A88: @ 8174A88
- push {r4-r7,lr}
- sub sp, 0x2C
- adds r7, r0, 0
- movs r0, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- movs r0, 0
- bl PutWindowTilemap
- ldrh r0, [r7, 0x8]
- ldr r1, =0x000001ff
- ands r1, r0
- movs r0, 0xCE
- lsls r0, 1
- cmp r1, r0
- beq _08174B30
- ldr r1, =gText_Number
- add r0, sp, 0xC
- bl StringCopy
- adds r6, r0, 0
- ldrh r0, [r7, 0x8]
- lsls r0, 23
- lsrs r0, 23
- bl SpeciesToPokedexNum
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r0, =0x0000ffff
- cmp r4, r0
- beq _08174B04
- adds r0, r4, 0
- movs r1, 0x64
- bl __divsi3
- subs r0, 0x5F
- strb r0, [r6]
- adds r6, 0x1
- adds r0, r4, 0
- movs r1, 0x64
- bl __modsi3
- adds r4, r0, 0
- movs r1, 0xA
- bl __divsi3
- subs r0, 0x5F
- strb r0, [r6]
- adds r6, 0x1
- adds r0, r4, 0
- movs r1, 0xA
- bl __modsi3
- subs r0, 0x5F
- b _08174B0E
- .pool
-_08174B04:
- movs r0, 0xAC
- strb r0, [r6]
- adds r6, 0x1
- strb r0, [r6]
- adds r6, 0x1
-_08174B0E:
- strb r0, [r6]
- adds r6, 0x1
- movs r0, 0xFF
- strb r0, [r6]
- ldr r0, =gUnknown_085E5388
- str r0, [sp]
- movs r0, 0x1
- negs r0, r0
- str r0, [sp, 0x4]
- add r0, sp, 0xC
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0x1
- movs r2, 0x10
- movs r3, 0x1
- bl box_print
-_08174B30:
- adds r1, r7, 0
- adds r1, 0xA
- add r0, sp, 0xC
- movs r2, 0xA
- bl memcpy
- add r1, sp, 0xC
- movs r0, 0xFF
- strb r0, [r1, 0xA]
- ldrh r1, [r7, 0x8]
- ldr r4, =0x000001ff
- adds r0, r4, 0
- ands r0, r1
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- bne _08174B8C
- movs r0, 0x1
- add r1, sp, 0xC
- movs r2, 0xD0
- bl GetStringCenterAlignXOffset
- lsls r2, r0, 24
- lsrs r2, 24
- ldr r0, =gUnknown_085E5388
- str r0, [sp]
- movs r0, 0x1
- negs r0, r0
- str r0, [sp, 0x4]
- add r0, sp, 0xC
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0x1
- movs r3, 0x1
- bl box_print
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- b _08174C82
- .pool
-_08174B8C:
- movs r0, 0x1
- add r1, sp, 0xC
- movs r2, 0x80
- bl GetStringRightAlignXOffset
- lsls r2, r0, 24
- lsrs r2, 24
- ldr r0, =gUnknown_085E5388
- str r0, [sp]
- movs r0, 0x1
- negs r0, r0
- str r0, [sp, 0x4]
- add r0, sp, 0xC
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0x1
- movs r3, 0x1
- bl box_print
- add r1, sp, 0xC
- movs r0, 0xBA
- strb r0, [r1]
- mov r0, sp
- adds r0, 0xD
- ldrh r1, [r7, 0x8]
- lsls r1, 23
- lsrs r1, 23
- movs r2, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- adds r6, r0, 0
- ldrh r1, [r7, 0x8]
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0x20
- beq _08174C0A
- cmp r0, 0x1D
- beq _08174C0A
- lsls r0, r1, 23
- lsrs r0, 23
- ldr r1, [r7, 0x4]
- bl GetGenderFromSpeciesAndPersonality
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _08174C00
- cmp r0, 0xFE
- beq _08174C04
- b _08174C0A
- .pool
-_08174C00:
- movs r0, 0xB5
- b _08174C06
-_08174C04:
- movs r0, 0xB6
-_08174C06:
- strb r0, [r6]
- adds r6, 0x1
-_08174C0A:
- movs r0, 0xFF
- strb r0, [r6]
- ldr r5, =gUnknown_085E5388
- str r5, [sp]
- movs r4, 0x1
- negs r4, r4
- str r4, [sp, 0x4]
- add r0, sp, 0xC
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0x1
- movs r2, 0x80
- movs r3, 0x1
- bl box_print
- ldr r1, =gText_Level
- add r0, sp, 0xC
- bl StringCopy
- adds r6, r0, 0
- ldrb r1, [r7, 0x9]
- lsrs r1, 1
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- str r5, [sp]
- str r4, [sp, 0x4]
- add r0, sp, 0xC
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0x1
- movs r2, 0x24
- movs r3, 0x11
- bl box_print
- ldr r1, =gText_IDNumber
- add r0, sp, 0xC
- bl StringCopy
- adds r6, r0, 0
- ldrh r1, [r7]
- movs r2, 0x2
- movs r3, 0x5
- bl ConvertIntToDecimalStringN
- str r5, [sp]
- str r4, [sp, 0x4]
- add r0, sp, 0xC
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0x1
- movs r2, 0x68
- movs r3, 0x11
- bl box_print
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_08174C82:
- add sp, 0x2C
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8174A88
-
- thumb_func_start sub_8174C98
-sub_8174C98: @ 8174C98
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- movs r0, 0x1
- movs r1, 0x11
- bl FillWindowPixelBuffer
- movs r0, 0x1
- bl PutWindowTilemap
- ldr r2, =0x0000021d
- movs r0, 0x1
- movs r1, 0
- movs r3, 0xD
- bl SetWindowBorderStyle
- ldr r0, =gUnknown_085E538C
- mov r8, r0
- str r0, [sp]
- movs r1, 0x1
- negs r1, r1
- mov r9, r1
- str r1, [sp, 0x4]
- ldr r0, =gText_Name
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0
- movs r3, 0x1
- bl box_print
- ldr r0, =gSaveBlock2Ptr
- mov r10, r0
- ldr r1, [r0]
- movs r0, 0x1
- movs r2, 0x70
- bl GetStringRightAlignXOffset
- lsls r2, r0, 24
- lsrs r2, 24
- mov r1, r8
- str r1, [sp]
- mov r0, r9
- str r0, [sp, 0x4]
- mov r1, r10
- ldr r0, [r1]
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x1
- movs r3, 0x1
- bl box_print
- mov r1, r10
- ldr r0, [r1]
- ldrb r4, [r0, 0xA]
- ldrb r0, [r0, 0xB]
- lsls r0, 8
- orrs r4, r0
- mov r0, r8
- str r0, [sp]
- movs r7, 0
- str r7, [sp, 0x4]
- ldr r0, =gText_IDNumber
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0
- movs r3, 0x11
- bl box_print
- add r6, sp, 0xC
- ldr r1, =0x000186a0
- adds r0, r4, 0
- bl __modsi3
- ldr r5, =0x00002710
- adds r1, r5, 0
- bl __divsi3
- subs r0, 0x5F
- strb r0, [r6]
- add r6, sp, 0xC
- adds r0, r4, 0
- adds r1, r5, 0
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- movs r5, 0xFA
- lsls r5, 2
- adds r1, r5, 0
- bl __udivsi3
- adds r0, 0xA1
- strb r0, [r6, 0x1]
- add r6, sp, 0xC
- adds r0, r4, 0
- adds r1, r5, 0
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __udivsi3
- adds r0, 0xA1
- strb r0, [r6, 0x2]
- add r5, sp, 0xC
- adds r0, r4, 0
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xA
- bl __udivsi3
- adds r0, 0xA1
- strb r0, [r5, 0x3]
- add r5, sp, 0xC
- adds r0, r4, 0
- movs r1, 0xA
- bl __umodsi3
- adds r0, 0xA1
- strb r0, [r5, 0x4]
- add r1, sp, 0xC
- movs r0, 0xFF
- strb r0, [r1, 0x5]
- movs r0, 0x1
- movs r2, 0x70
- bl GetStringRightAlignXOffset
- lsls r2, r0, 24
- lsrs r2, 24
- mov r1, r8
- str r1, [sp]
- mov r0, r9
- str r0, [sp, 0x4]
- add r1, sp, 0xC
- str r1, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x1
- movs r3, 0x11
- bl box_print
- mov r0, r8
- str r0, [sp]
- mov r1, r9
- str r1, [sp, 0x4]
- ldr r0, =gText_MainMenuTime
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0
- movs r3, 0x21
- bl box_print
- add r5, sp, 0xC
- mov r0, r10
- ldr r4, [r0]
- ldrh r0, [r4, 0xE]
- movs r1, 0x64
- bl __udivsi3
- adds r0, 0xA1
- strb r0, [r5]
- add r5, sp, 0xC
- ldrh r0, [r4, 0xE]
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xA
- bl __udivsi3
- adds r0, 0xA1
- strb r0, [r5, 0x1]
- add r5, sp, 0xC
- ldrh r0, [r4, 0xE]
- movs r1, 0xA
- bl __umodsi3
- adds r0, 0xA1
- strb r0, [r5, 0x2]
- add r0, sp, 0xC
- ldrb r0, [r0]
- cmp r0, 0xA1
- bne _08174E1E
- add r0, sp, 0xC
- strb r7, [r0]
-_08174E1E:
- add r0, sp, 0xC
- ldrb r1, [r0]
- cmp r1, 0
- bne _08174E30
- ldrb r0, [r0, 0x1]
- cmp r0, 0xA1
- bne _08174E30
- add r0, sp, 0xC
- strb r1, [r0, 0x8]
-_08174E30:
- add r1, sp, 0xC
- movs r0, 0xF0
- strb r0, [r1, 0x3]
- adds r4, r1, 0
- ldr r0, =gSaveBlock2Ptr
- ldr r5, [r0]
- ldrb r0, [r5, 0x10]
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0xA
- bl __udivsi3
- adds r0, 0xA1
- strb r0, [r4, 0x4]
- add r4, sp, 0xC
- ldrb r0, [r5, 0x10]
- movs r1, 0xA
- bl __umodsi3
- adds r0, 0xA1
- strb r0, [r4, 0x5]
- add r1, sp, 0xC
- movs r0, 0xFF
- strb r0, [r1, 0x6]
- movs r0, 0x1
- movs r2, 0x70
- bl GetStringRightAlignXOffset
- lsls r2, r0, 24
- lsrs r2, 24
- ldr r0, =gUnknown_085E538C
- str r0, [sp]
- movs r0, 0x1
- negs r0, r0
- str r0, [sp, 0x4]
- add r1, sp, 0xC
- str r1, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x1
- movs r3, 0x21
- bl box_print
- movs r0, 0x1
- movs r1, 0x3
- bl CopyWindowToVram
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8174C98
-
- thumb_func_start sub_8174EC4
-sub_8174EC4: @ 8174EC4
- 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
-_08174EEA:
- 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 _08174EEA
- 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]
- bl ResetPaletteFade
- ldr r0, =gUnknown_085E54E8
- movs r1, 0
- movs r2, 0x20
- bl LoadPalette
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8174EC4
-
- thumb_func_start sub_8174F70
-sub_8174F70: @ 8174F70
- push {lr}
- bl remove_some_task
- bl ResetTasks
- bl ResetSpriteData
- bl reset_temp_tile_data_buffers
- bl dp13_810BB8C
- bl FreeAllSpritePalettes
- ldr r1, =gReservedSpritePaletteCount
- movs r0, 0x8
- strb r0, [r1]
- ldr r0, =gUnknown_085E5394
- bl LoadCompressedObjectPic
- ldr r0, =gUnknown_085E53A4
- bl LoadCompressedObjectPalette
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8174F70
-
- thumb_func_start sub_8174FAC
-sub_8174FAC: @ 8174FAC
- push {r4,lr}
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, =gUnknown_085E5374
- movs r0, 0
- movs r2, 0x3
- bl InitBgsFromTemplates
- ldr r4, =gUnknown_0203BCDC
- ldr r1, [r4]
- adds r1, 0x12
- movs r0, 0x1
- bl SetBgTilemapBuffer
- ldr r1, [r4]
- ldr r0, =0x00001012
- adds r1, r0
- movs r0, 0x3
- bl SetBgTilemapBuffer
- 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, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8174FAC
-
- thumb_func_start sub_8175024
-sub_8175024: @ 8175024
- push {r4,lr}
- sub sp, 0x8
- ldr r0, =gUnknown_0203BCDC
- ldr r0, [r0]
- ldrh r0, [r0]
- cmp r0, 0x4
- bhi _08175108
- lsls r0, 2
- ldr r1, =_08175044
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08175044:
- .4byte _08175058
- .4byte _08175070
- .4byte _0817507C
- .4byte _081750D2
- .4byte _081750DC
-_08175058:
- ldr r1, =gUnknown_085E5508
- movs r0, 0
- str r0, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- b _08175108
- .pool
-_08175070:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- cmp r0, 0
- beq _08175108
- b _08175112
-_0817507C:
- movs r4, 0x20
- str r4, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- str r4, [sp]
- movs r0, 0xB
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0x3
- bl FillBgTilemapBufferRect_Palette0
- str r4, [sp]
- movs r0, 0x6
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0
- movs r3, 0xE
- bl FillBgTilemapBufferRect_Palette0
- str r4, [sp]
- str r4, [sp, 0x4]
- movs r0, 0x3
- movs r1, 0x2
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- movs r0, 0x3
- bl CopyBgTilemapBufferToVram
- b _08175108
-_081750D2:
- bl sub_81971D0
- bl sub_8197200
- b _08175108
-_081750DC:
- movs r1, 0x82
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x3
- bl ShowBg
- ldr r0, =gUnknown_0203BCDC
- ldr r1, [r0]
- movs r0, 0
- strh r0, [r1]
- b _08175114
- .pool
-_08175108:
- ldr r0, =gUnknown_0203BCDC
- ldr r1, [r0]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_08175112:
- movs r0, 0x1
-_08175114:
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8175024
-
- thumb_func_start sub_8175120
-sub_8175120: @ 8175120
- push {r4,lr}
- adds r2, r0, 0
- ldr r1, [r2, 0x20]
- ldr r0, [r2, 0x30]
- cmp r1, r0
- beq _08175176
- ldrh r3, [r2, 0x20]
- movs r1, 0x20
- ldrsh r0, [r2, r1]
- movs r4, 0x30
- ldrsh r1, [r2, r4]
- cmp r0, r1
- bge _08175140
- adds r0, r3, 0
- adds r0, 0xF
- strh r0, [r2, 0x20]
-_08175140:
- ldrh r3, [r2, 0x20]
- movs r4, 0x20
- ldrsh r0, [r2, r4]
- cmp r0, r1
- ble _08175150
- adds r0, r3, 0
- subs r0, 0xF
- strh r0, [r2, 0x20]
-_08175150:
- ldrh r3, [r2, 0x22]
- movs r1, 0x22
- ldrsh r0, [r2, r1]
- movs r4, 0x32
- ldrsh r1, [r2, r4]
- cmp r0, r1
- bge _08175164
- adds r0, r3, 0
- adds r0, 0xA
- strh r0, [r2, 0x22]
-_08175164:
- ldrh r3, [r2, 0x22]
- movs r4, 0x22
- ldrsh r0, [r2, r4]
- cmp r0, r1
- ble _0817519C
- adds r0, r3, 0
- subs r0, 0xA
- strh r0, [r2, 0x22]
- b _0817519C
-_08175176:
- ldrh r0, [r2, 0x3C]
- lsls r1, r0, 16
- movs r0, 0xCE
- lsls r0, 17
- cmp r1, r0
- bne _08175190
- lsrs r1, 16
- adds r0, r2, 0
- movs r2, 0x1
- movs r3, 0x3
- bl DoMonFrontSpriteAnimation
- b _0817519C
-_08175190:
- lsrs r1, 16
- adds r0, r2, 0
- movs r2, 0
- movs r3, 0x3
- bl DoMonFrontSpriteAnimation
-_0817519C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8175120
-
- thumb_func_start sub_81751A4
-sub_81751A4: @ 81751A4
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrh r1, [r5, 0x26]
- movs r2, 0x26
- ldrsh r0, [r5, r2]
- cmp r0, 0x78
- ble _081751BA
- adds r0, r5, 0
- bl DestroySprite
- b _081751F2
-_081751BA:
- adds r0, r1, 0x1
- ldrh r1, [r5, 0x30]
- adds r0, r1
- strh r0, [r5, 0x26]
- ldrh r4, [r5, 0x2E]
- lsls r4, 24
- lsrs r4, 24
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- ands r0, r1
- adds r0, 0x8
- ldr r1, =gSineTable
- lsls r4, 1
- adds r4, r1
- movs r2, 0
- ldrsh r1, [r4, r2]
- muls r0, r1
- cmp r0, 0
- bge _081751E8
- adds r0, 0xFF
-_081751E8:
- asrs r0, 8
- strh r0, [r5, 0x24]
- ldrh r0, [r5, 0x2E]
- adds r0, 0x4
- strh r0, [r5, 0x2E]
-_081751F2:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81751A4
-
- thumb_func_start sub_81751FC
-sub_81751FC: @ 81751FC
- push {r4,lr}
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xF0
- bl __umodsi3
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- bl Random
- adds r2, r0, 0
- lsls r2, 16
- lsrs r2, 16
- movs r0, 0x7
- ands r2, r0
- negs r2, r2
- ldr r0, =gUnknown_085E54D0
- lsls r4, 16
- asrs r4, 16
- lsls r2, 16
- asrs r2, 16
- adds r1, r4, 0
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, =gSprites
- adds r4, r1, r0
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x11
- bl __umodsi3
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
- bl Random
- movs r1, 0x3
- ands r1, r0
- cmp r1, 0
- beq _08175274
- movs r0, 0
- b _08175276
- .pool
-_08175274:
- movs r0, 0x1
-_08175276:
- strh r0, [r4, 0x30]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81751FC
-
- thumb_func_start sub_8175280
-sub_8175280: @ 8175280
- push {r4,lr}
- ldr r4, =gSpecialVar_0x8004
- movs r0, 0xB4
- strh r0, [r4]
- ldr r0, =sub_8175364
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xFF
- beq _081752AA
- ldr r1, =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r4]
- strh r1, [r0, 0xA]
- ldr r0, =gSpecialVar_0x8005
- strh r2, [r0]
-_081752AA:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8175280
-
- thumb_func_start sub_81752C0
-sub_81752C0: @ 81752C0
- push {r4,lr}
- ldr r0, =sub_8175364
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _081752D4
- bl DestroyTask
-_081752D4:
- bl sub_8152254
- ldr r4, =0x000003e9
- adds r0, r4, 0
- bl FreeSpriteTilesByTag
- adds r0, r4, 0
- bl FreeSpritePaletteByTag
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81752C0
-
- thumb_func_start sub_81752F4
-sub_81752F4: @ 81752F4
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrh r1, [r5, 0xE]
- movs r2, 0xE
- ldrsh r0, [r5, r2]
- cmp r0, 0x6E
- ble _08175324
- ldr r2, =gTasks
- movs r0, 0x28
- ldrsh r1, [r5, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrh r1, [r0, 0x26]
- subs r1, 0x1
- strh r1, [r0, 0x26]
- ldrb r0, [r5, 0x16]
- bl sub_81525D0
- b _08175358
- .pool
-_08175324:
- adds r0, r1, 0x1
- ldrh r1, [r5, 0x1C]
- adds r0, r1
- strh r0, [r5, 0xE]
- ldrb r4, [r5, 0x1A]
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- ands r0, r1
- adds r0, 0x8
- ldr r1, =gSineTable
- lsls r4, 1
- adds r4, r1
- movs r2, 0
- ldrsh r1, [r4, r2]
- muls r0, r1
- cmp r0, 0
- bge _0817534E
- adds r0, 0xFF
-_0817534E:
- asrs r0, 8
- strh r0, [r5, 0xC]
- ldrh r0, [r5, 0x1A]
- adds r0, 0x4
- strh r0, [r5, 0x1A]
-_08175358:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81752F4
-
- thumb_func_start sub_8175364
-sub_8175364: @ 8175364
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r4, r0, 24
- mov r8, r4
- movs r7, 0
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r6, r0, r1
- ldrh r0, [r6]
- cmp r0, 0x1
- beq _081753E0
- cmp r0, 0x1
- bgt _08175394
- cmp r0, 0
- beq _0817539C
- b _081754B0
- .pool
-_08175394:
- cmp r0, 0xFF
- bne _0817539A
- b _081754A0
-_0817539A:
- b _081754B0
-_0817539C:
- movs r0, 0x40
- bl sub_81521C0
- cmp r0, 0
- bne _081753B8
- adds r0, r4, 0
- bl DestroyTask
- ldr r0, =gSpecialVar_0x8004
- strh r7, [r0]
- ldr r1, =gSpecialVar_0x8005
- ldr r2, =0x0000ffff
- adds r0, r2, 0
- strh r0, [r1]
-_081753B8:
- ldr r0, =gUnknown_085E5394
- bl LoadCompressedObjectPic
- ldr r0, =gUnknown_085E53A4
- bl LoadCompressedObjectPalette
- ldrh r0, [r6]
- adds r0, 0x1
- strh r0, [r6]
- b _081754B0
- .pool
-_081753E0:
- ldrh r0, [r6, 0x2]
- cmp r0, 0
- beq _08175478
- movs r1, 0x3
- bl __umodsi3
- lsls r0, 16
- cmp r0, 0
- bne _08175478
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xF0
- bl __umodsi3
- adds r5, r0, 0
- lsls r5, 16
- asrs r5, 16
- bl Random
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- movs r0, 0x7
- ands r4, r0
- negs r4, r4
- lsls r4, 16
- asrs r4, 16
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x11
- bl __umodsi3
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_085E53FC
- ldr r2, =0x000003e9
- str r4, [sp]
- str r0, [sp, 0x4]
- str r7, [sp, 0x8]
- adds r0, r1, 0
- adds r1, r2, 0
- adds r3, r5, 0
- bl sub_81524C4
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0xFF
- beq _08175478
- adds r4, r7, 0
- ldr r1, =sub_81752F4
- adds r0, r4, 0
- bl sub_8152438
- bl Random
- movs r1, 0x3
- ands r1, r0
- cmp r1, 0
- bne _08175468
- adds r0, r4, 0
- movs r1, 0x1
- movs r2, 0x1
- bl sub_8152474
-_08175468:
- adds r0, r4, 0
- movs r1, 0x7
- mov r2, r8
- bl sub_8152474
- ldrh r0, [r6, 0x1E]
- adds r0, 0x1
- strh r0, [r6, 0x1E]
-_08175478:
- bl sub_81522D4
- ldrh r0, [r6, 0x2]
- cmp r0, 0
- beq _08175494
- subs r0, 0x1
- strh r0, [r6, 0x2]
- b _081754B0
- .pool
-_08175494:
- ldrh r0, [r6, 0x1E]
- cmp r0, 0
- bne _081754B0
- movs r0, 0xFF
- strh r0, [r6]
- b _081754B0
-_081754A0:
- bl sub_81752C0
- ldr r0, =gSpecialVar_0x8004
- strh r7, [r0]
- ldr r1, =gSpecialVar_0x8005
- ldr r2, =0x0000ffff
- adds r0, r2, 0
- strh r0, [r1]
-_081754B0:
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8175364
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/link.s b/asm/link.s
index 524a1eeed..da4bfbfd1 100644
--- a/asm/link.s
+++ b/asm/link.s
@@ -52022,7 +52022,7 @@ _080241A6:
movs r0, 0
movs r1, 0
bl sub_81973C4
- ldr r2, =gUnknown_082C8959
+ ldr r2, =gText_SavingDontTurnOffPower
movs r0, 0
str r0, [sp]
movs r0, 0x2
@@ -64112,7 +64112,7 @@ _0802A3AE:
movs r0, 0
movs r1, 0
bl sub_81973C4
- ldr r2, =gUnknown_082C8959
+ ldr r2, =gText_SavingDontTurnOffPower
str r4, [sp]
movs r0, 0x2
str r0, [sp, 0x4]
@@ -70355,7 +70355,7 @@ _0802D516:
strh r0, [r1, 0x12]
lsls r0, 24
lsrs r0, 24
- ldr r2, =gUnknown_082C8959
+ ldr r2, =gText_SavingDontTurnOffPower
movs r1, 0x1
str r1, [sp]
movs r1, 0xFF
diff --git a/asm/rom6.s b/asm/rom6.s
index 87b780ba5..68719469f 100644
--- a/asm/rom6.s
+++ b/asm/rom6.s
@@ -4043,12 +4043,12 @@ sub_8137734: @ 8137734
lsrs r1, r0, 24
cmp r1, 0x1
bne _08137760
- ldr r0, =gUnknown_0203BCE4
+ ldr r0, =gHasHallOfFameRecords
strb r1, [r0]
b _0813776C
.pool
_08137760:
- ldr r1, =gUnknown_0203BCE4
+ ldr r1, =gHasHallOfFameRecords
movs r0, 0
strb r0, [r1]
adds r0, r4, 0
@@ -4165,7 +4165,7 @@ _08137838:
movs r1, 0x43
bl sub_80EE4DC
_0813785A:
- ldr r0, =sub_8173694
+ ldr r0, =CB2_DoHallOfFameScreen
bl SetMainCallback2
movs r0, 0
add sp, 0x1C
@@ -4638,7 +4638,7 @@ sub_8137C10: @ 8137C10
thumb_func_start sub_8137C28
sub_8137C28: @ 8137C28
push {lr}
- ldr r0, =sub_8174194
+ ldr r0, =CB2_DoHallOfFamePC
bl SetMainCallback2
bl ScriptContext2_Enable
pop {r0}
diff --git a/asm/start_menu.s b/asm/start_menu.s
index 4f8544eea..e5e91bac8 100644
--- a/asm/start_menu.s
+++ b/asm/start_menu.s
@@ -1683,7 +1683,7 @@ _080A05AC:
movs r0, 0
movs r1, 0x11
bl FillWindowPixelBuffer
- ldr r2, =gUnknown_082C8959
+ ldr r2, =gText_SavingDontTurnOffPower
movs r4, 0
str r4, [sp]
movs r0, 0x2
diff --git a/asm/trade.s b/asm/trade.s
index ebb624d90..57253154e 100644
--- a/asm/trade.s
+++ b/asm/trade.s
@@ -13814,7 +13814,7 @@ _0807ED98:
movs r0, 0x32
strb r0, [r1]
ldr r4, =gStringVar4
- ldr r1, =gUnknown_082C8959
+ ldr r1, =gText_SavingDontTurnOffPower
_0807EDA6:
adds r0, r4, 0
bl StringExpandPlaceholders
@@ -14668,7 +14668,7 @@ _0807F50A:
movs r1, 0x3
strb r1, [r0]
ldr r4, =gStringVar4
- ldr r1, =gUnknown_082C8959
+ ldr r1, =gText_SavingDontTurnOffPower
adds r0, r4, 0
bl StringExpandPlaceholders
movs r0, 0
diff --git a/data/event_scripts.s b/data/event_scripts.s
index ad1216b91..bd6210c38 100644
--- a/data/event_scripts.s
+++ b/data/event_scripts.s
@@ -1029,7 +1029,7 @@ gUnknown_082C8845:: @ 82C8845
gUnknown_082C892A:: @ 82C892A
.incbin "baserom.gba", 0x2c892a, 0x2f
-gUnknown_082C8959:: @ 82C8959
+gText_SavingDontTurnOffPower:: @ 82C8959
.incbin "baserom.gba", 0x2c8959, 0x22
gUnknown_082C897B:: @ 82C897B
diff --git a/data/graphics.s b/data/graphics.s
index 4586e18af..87b983a80 100644
--- a/data/graphics.s
+++ b/data/graphics.s
@@ -156,7 +156,31 @@ gSubstituteDollGfx:: @ 8C2CEE0
.incbin "baserom.gba", 0xc2cee0, 0x240
gSubstituteDollTilemap:: @ 8C2D120
- .incbin "baserom.gba", 0xc2d120, 0x600
+ .incbin "baserom.gba", 0xc2d120, 552
+
+gUnknown_08C2D348:: @ 8C2D348
+ .incbin "baserom.gba", 0xC2D348, 196
+
+gUnknown_08C2D40C:: @ 8C2D40C
+ .incbin "baserom.gba", 0xC2D40C, 28
+
+gContestConfetti_Gfx:: @ 8C2D428
+ .incbin "baserom.gba", 0xC2D428, 288
+
+gContestConfetti_Pal:: @ 8C2D548
+ .incbin "baserom.gba", 0xC2D548, 40
+
+gUnknown_08C2D570:: @ 8C2D570
+ .incbin "baserom.gba", 0xC2D570, 316
+
+gUnknown_08C2D6AC:: @ 8C2D6AC
+ .incbin "baserom.gba", 0xC2D6AC, 36
+
+gUnknown_08C2D6D0:: @ 8C2D6D0
+ .incbin "baserom.gba", 0xC2D6D0, 40
+
+gUnknown_08C2D6F8:: @ 8C2D6F8
+ .incbin "baserom.gba", 0xC2D6F8, 40
gUnknown_08C2D720:: @ 8C2D720
.incbin "baserom.gba", 0xc2d720, 0x210
diff --git a/data/hall_of_fame.s b/data/hall_of_fame.s
deleted file mode 100644
index 2678d96a6..000000000
--- a/data/hall_of_fame.s
+++ /dev/null
@@ -1,46 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-gUnknown_085E5374:: @ 85E5374
- .incbin "baserom.gba", 0x5e5374, 0xc
-
-gUnknown_085E5380:: @ 85E5380
- .incbin "baserom.gba", 0x5e5380, 0x8
-
-gUnknown_085E5388:: @ 85E5388
- .incbin "baserom.gba", 0x5e5388, 0x4
-
-gUnknown_085E538C:: @ 85E538C
- .incbin "baserom.gba", 0x5e538c, 0x8
-
-gUnknown_085E5394:: @ 85E5394
- .incbin "baserom.gba", 0x5e5394, 0x10
-
-gUnknown_085E53A4:: @ 85E53A4
- .incbin "baserom.gba", 0x5e53a4, 0x10
-
-gUnknown_085E53B4:: @ 85E53B4
- .incbin "baserom.gba", 0x5e53b4, 0x6
-
-gUnknown_085E53BA:: @ 85E53BA
- .incbin "baserom.gba", 0x5e53ba, 0x2a
-
-gUnknown_085E53E4:: @ 85E53E4
- .incbin "baserom.gba", 0x5e53e4, 0x18
-
-gUnknown_085E53FC:: @ 85E53FC
- .incbin "baserom.gba", 0x5e53fc, 0xd4
-
-gUnknown_085E54D0:: @ 85E54D0
- .incbin "baserom.gba", 0x5e54d0, 0x18
-
-gUnknown_085E54E8:: @ 85E54E8
- .incbin "baserom.gba", 0x5e54e8, 0x20
-
-gUnknown_085E5508:: @ 85E5508
- .incbin "baserom.gba", 0x5e5508, 0x1cc
-
-gUnknown_085E56D4:: @ 85E56D4
- .incbin "baserom.gba", 0x5e56d4, 0x1c
diff --git a/graphics/misc/japanese_hof.pal b/graphics/misc/japanese_hof.pal
new file mode 100644
index 000000000..f50aa5341
--- /dev/null
+++ b/graphics/misc/japanese_hof.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+131 238 197
+255 32 32
+115 222 180
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+65 65 65
+255 255 255
diff --git a/graphics/misc/japanese_hof.png b/graphics/misc/japanese_hof.png
new file mode 100644
index 000000000..6d88a48b2
--- /dev/null
+++ b/graphics/misc/japanese_hof.png
Binary files differ
diff --git a/graphics_file_rules.mk b/graphics_file_rules.mk
index def35bc4e..92c173933 100644
--- a/graphics_file_rules.mk
+++ b/graphics_file_rules.mk
@@ -287,6 +287,9 @@ graphics/title_screen/pokemon_logo.gbapal: graphics/title_screen/pokemon_logo.pa
$(INTROGFXDIR)/copyright.4bpp: $(INTROGFXDIR)/copyright.png
$(GFX) $< $@ -num_tiles 39
-
+
$(interfacedir)/pkmnjump_bg.4bpp: $(interfacedir)/pkmnjump_bg.png
$(GFX) $< $@ -num_tiles 63
+
+graphics/misc/japanese_hof.4bpp: graphics/misc/japanese_hof.png
+ $(GFX) $< $@ -num_tiles 29
diff --git a/include/hall_of_fame.h b/include/hall_of_fame.h
index 62e84c39e..d35ecf268 100644
--- a/include/hall_of_fame.h
+++ b/include/hall_of_fame.h
@@ -1,9 +1,9 @@
#ifndef GUARD_HALL_OF_FAME_H
#define GUARD_HALL_OF_FAME_H
-void sub_8141F90(void);
-void sub_8143648(u16 paletteTag, u8 arg1);
-void sub_81428CC(void);
-void sub_8143680(int, u8);
+void CB2_DoHallOfFameScreen(void);
+void CB2_DoHallOfFameScreenDontSaveData(void);
+void CB2_DoHallOfFamePC(void);
+void sub_8175280(void);
#endif // GUARD_HALL_OF_FAME_H
diff --git a/ld_script.txt b/ld_script.txt
index 39535b0d0..40f592e3a 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -215,7 +215,7 @@ SECTIONS {
src/reset_save_heap.o(.text);
asm/field_region_map.o(.text);
asm/battle_anim_8170478.o(.text);
- asm/hall_of_fame.o(.text);
+ src/hall_of_fame.o(.text);
asm/credits.o(.text);
src/lottery_corner.o(.text);
src/diploma.o(.text);
@@ -436,7 +436,7 @@ SECTIONS {
data/intro.o(.rodata);
data/field_region_map.o(.rodata);
data/battle_anim_8170478.o(.rodata);
- data/hall_of_fame.o(.rodata);
+ src/hall_of_fame.o(.rodata);
data/credits.o(.rodata);
src/lottery_corner.o(.rodata);
src/diploma.o(.rodata);
diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c
index d9fd40b84..bc7177bd7 100644
--- a/src/hall_of_fame.c
+++ b/src/hall_of_fame.c
@@ -1,4 +1,1556 @@
#include "global.h"
#include "hall_of_fame.h"
+#include "task.h"
+#include "palette.h"
+#include "sprite.h"
+#include "pokemon.h"
+#include "text.h"
+#include "malloc.h"
+#include "gpu_regs.h"
+#include "main.h"
+#include "sound.h"
+#include "songs.h"
+#include "decompress.h"
+#include "save.h"
+#include "window.h"
+#include "bg.h"
+#include "species.h"
+#include "game_stat.h"
+#include "blend_palette.h"
+#include "string_util.h"
+#include "m4a.h"
+#include "international_string_util.h"
+#include "unknown_task.h"
+#include "trig.h"
+#include "rng.h"
+#include "event_data.h"
+struct HallofFameMon
+{
+ u32 tid;
+ u32 personality;
+ u16 species:9;
+ u16 lvl:7;
+ u8 nick[10];
+};
+struct HallofFameTeam
+{
+ struct HallofFameMon mon[6];
+};
+
+struct HofGfx
+{
+ u16 state;
+ u8 field_2[16];
+ u8 tilemap1[0x1000];
+ u8 tilemap2[0x1000];
+};
+
+static EWRAM_DATA struct HallofFameTeam *sHofMonPtr = NULL;
+static EWRAM_DATA struct HofGfx *sHofGfxPtr = NULL;
+
+extern bool8 gHasHallOfFameRecords;
+extern u32 gUnknown_0203BCD4;
+extern u8 gDecompressionBuffer[];
+extern struct MusicPlayerInfo gMPlay_BGM;
+extern MainCallback gGameContinueCallback;
+extern u32 gDamagedSaveSectors;
+extern u8 gReservedSpritePaletteCount;
+
+#define HALL_OF_FAME_MAX_TEAMS 50
+
+// strings
+extern const u8 gText_SavingDontTurnOffPower[];
+extern const u8 gText_LeagueChamp[];
+extern const u8 gText_HOFNumber[];
+extern const u8 gText_PickNextCancel[];
+extern const u8 gText_PickCancel[];
+extern const u8 gText_UnkCtrlF800Exit[];
+extern const u8 gText_HOFCorrupted[];
+extern const u8 gText_WelcomeToHOF[];
+extern const u8 gText_Number[];
+extern const u8 gText_Level[];
+extern const u8 gText_IDNumber[];
+extern const u8 gText_Name[];
+extern const u8 gText_MainMenuTime[];
+
+// graphics
+extern const u8 gContestConfetti_Gfx[];
+extern const u8 gContestConfetti_Pal[];
+
+extern void sub_81973C4(u8, u8);
+extern u16 AddTextPrinterParametrized(u8 windowId, u8 fontId, const u8 *str, u8 speed, void ( *callback)(u16, struct TextPrinter *), u8 fgColor, u8 bgColor, u8 shadowColor);
+extern void sub_8175620(void);
+extern u8 TrySavingData(u8);
+extern u8 sub_818D3E4(u16 species, u32 trainerId, u32 personality, u8 flags, s16 x, s16 y, u8, u16);
+extern void sub_8197434(u8, u8);
+extern u16 sub_818D97C(u8 playerGender, u8);
+extern u16 sub_818D8AC(u16, u8, s16, s16, u8, u16);
+extern const void* stdpal_get(u8);
+extern void sub_80987D4(u8, u8, u16, u8);
+extern u16 sub_818D820(u16);
+extern u16 sub_818D8F0(u16);
+extern u16 sub_818D7D8(u16 species, u32 trainerId, u32 personality, u8 arg3, s16 sp0, s16 sp1, u8 sp2, u16 sp3);
+extern void sub_8198204(u8 *dst, const u8 *src, u8, u8, u8);
+extern bool8 sub_80F9C30(void);
+extern void sub_8198314(void);
+extern void sub_8137C3C(void);
+extern void sub_8198180(const u8 *src, u8, u8);
+extern void sub_80F9BF4(u16, u16, u8);
+extern void sub_81980F0(u8, u8, u8, u8, u16);
+extern void sub_80F9BCC(u16, u16, u8);
+extern bool8 sub_80F9C1C(void);
+extern u16 SpeciesToPokedexNum(u16 species);
+extern void dp13_810BB8C(void);
+extern void sub_81971D0(void);
+extern void sub_8197200(void);
+extern void sub_8152254(void);
+extern void sub_81525D0(u8);
+extern void sub_8152438(u8, void*);
+extern void sub_8152474(u8, u8, u8);
+extern void sub_81522D4(void);
+extern bool32 sub_81521C0(u8);
+extern u8 sub_81524C4(const struct OamData *arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, u8 arg5, s16 arg6);
+
+// this file's functions
+static void ClearVramOamPltt_LoadHofPal(void);
+static void sub_8174F70(void);
+static void sub_8174FAC(void);
+static bool8 sub_81751FC(void);
+static void SetCallback2AfterHallOfFameDisplay(void);
+static bool8 sub_8175024(void);
+static void Task_Hof_InitMonData(u8 taskId);
+static void Task_Hof_InitTeamSaveData(u8 taskId);
+static void Task_Hof_SetMonDisplayTask(u8 taskId);
+static void Task_Hof_TrySaveData(u8 taskId);
+static void Task_Hof_WaitForFrames(u8 taskId);
+static void Task_Hof_DisplayMon(u8 taskId);
+static void Task_Hof_PrintMonInfoAfterAnimating(u8 taskId);
+static void Task_Hof_TryDisplayAnotherMon(u8 taskId);
+static void Task_Hof_PaletteFadeAndPrintWelcomeText(u8 taskId);
+static void sub_8173DC0(u8 taskId);
+static void sub_8173EA4(u8 taskId);
+static void sub_8173EE4(u8 taskId);
+static void Task_Hof_WaitAndPrintPlayerInfo(u8 taskId);
+static void Task_Hof_ExitOnKeyPressed(u8 taskId);
+static void Task_Hof_HandlePaletteOnExit(u8 taskId);
+static void Task_Hof_HandleExit(u8 taskId);
+static void Task_HofPC_CopySaveData(u8 taskId);
+static void Task_HofPC_PrintDataIsCorrupted(u8 taskId);
+static void Task_HofPC_DrawSpritesPrintText(u8 taskId);
+static void Task_HofPC_PrintMonInfo(u8 taskId);
+static void Task_HofPC_HandleInput(u8 taskId);
+static void Task_HofPC_HandlePaletteOnExit(u8 taskId);
+static void Task_HofPC_HandleExit(u8 taskId);
+static void Task_HofPC_ExitOnButtonPress(u8 taskId);
+static void SpriteCB_GetOnScreenAndAnimate(struct Sprite *sprite);
+static void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 unused1, u8 unused2);
+static void HallOfFame_PrintWelcomeText(u8 unusedPossiblyWindowId, u8 unused2);
+static void HallOfFame_PrintPlayerInfo(u8 unused1, u8 unused2);
+static void sub_8175364(u8 taskId);
+static void sub_81751A4(struct Sprite* sprite);
+
+// const rom data
+static const struct BgTemplate sHof_BgTemplates[] =
+{
+ {
+ .bg = 0,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0
+ },
+ {
+ .bg = 1,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 30,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0
+ },
+ {
+ .bg = 3,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 29,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0
+ },
+};
+
+static const struct WindowTemplate sHof_WindowTemplate = {0, 2, 2, 0xE, 6, 0xE, 1};
+
+static const u8 gUnknown_085E5388[] = {0, 1, 2, 0};
+
+static const u8 gUnknown_085E538C[] = {0, 2, 3, 0, 4, 5, 0, 0};
+
+static const struct CompressedSpriteSheet sHallOfFame_ConfettiSpriteSheet =
+{
+ gContestConfetti_Gfx, 0x220, 1001
+};
+
+static const u8 sUnused0[8] = {};
+
+static const struct CompressedSpritePalette sHallOfFame_ConfettiSpritePalette =
+{
+ gContestConfetti_Pal, 1001
+};
+
+static const u8 sUnused1[8] = {};
+
+static const s16 sHallOfFame_MonFullTeamPositions[6][4] =
+{
+ {120, 210, 120, 40},
+ {326, 220, 56, 40},
+ {-86, 220, 184, 40},
+ {120, -62, 120, 88},
+ {-70, -92, 200, 88},
+ {310, -92, 40, 88}
+};
+
+static const s16 sHallOfFame_MonHalfTeamPositions[3][4] =
+{
+ {120, 234, 120, 64},
+ {326, 244, 56, 64},
+ {-86, 244, 184, 64}
+};
+
+static const struct OamData sOamData_85E53FC =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sSpriteAnim_85E5404[] =
+{
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_85E540C[] =
+{
+ ANIMCMD_FRAME(1, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_85E5414[] =
+{
+ ANIMCMD_FRAME(2, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_85E541C[] =
+{
+ ANIMCMD_FRAME(3, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_85E5424[] =
+{
+ ANIMCMD_FRAME(4, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_85E542C[] =
+{
+ ANIMCMD_FRAME(5, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_85E5434[] =
+{
+ ANIMCMD_FRAME(6, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_85E543C[] =
+{
+ ANIMCMD_FRAME(7, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_85E5444[] =
+{
+ ANIMCMD_FRAME(8, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_85E544C[] =
+{
+ ANIMCMD_FRAME(9, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_85E5454[] =
+{
+ ANIMCMD_FRAME(10, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_85E545C[] =
+{
+ ANIMCMD_FRAME(11, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_85E5464[] =
+{
+ ANIMCMD_FRAME(12, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_85E546C[] =
+{
+ ANIMCMD_FRAME(13, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_85E5474[] =
+{
+ ANIMCMD_FRAME(14, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_85E547C[] =
+{
+ ANIMCMD_FRAME(15, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_85E5484[] =
+{
+ ANIMCMD_FRAME(16, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd * const sSpriteAnimTable_85E548C[] =
+{
+ sSpriteAnim_85E5404, sSpriteAnim_85E540C, sSpriteAnim_85E5414, sSpriteAnim_85E541C,
+ sSpriteAnim_85E5424, sSpriteAnim_85E542C, sSpriteAnim_85E5434, sSpriteAnim_85E543C,
+ sSpriteAnim_85E5444, sSpriteAnim_85E544C, sSpriteAnim_85E5454, sSpriteAnim_85E545C,
+ sSpriteAnim_85E5464, sSpriteAnim_85E546C, sSpriteAnim_85E5474, sSpriteAnim_85E547C,
+ sSpriteAnim_85E5484
+};
+
+static const struct SpriteTemplate sSpriteTemplate_85E54D0 =
+{
+ .tileTag = 1001,
+ .paletteTag = 1001,
+ .oam = &sOamData_85E53FC,
+ .anims = sSpriteAnimTable_85E548C,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_81751A4
+};
+
+static const u16 sHallOfFame_Pal[] = INCBIN_U16("graphics/misc/japanese_hof.gbapal");
+
+static const u8 sHallOfFame_Gfx[] = INCBIN_U8("graphics/misc/japanese_hof.4bpp.lz");
+
+static const struct HallofFameMon sDummyFameMon =
+{
+ 0x3EA03EA, 0, 0, 0, {0}
+};
+
+static const u8 sUnused2[6] = {2, 1, 3, 6, 4, 5};
+
+// code
+static void VBlankCB_HallOfFame(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static void CB2_HallOfFame(void)
+{
+ RunTasks();
+ RunTextPrinters();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static bool8 InitHallOfFameScreen(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ SetVBlankCallback(NULL);
+ ClearVramOamPltt_LoadHofPal();
+ sHofGfxPtr = AllocZeroed(sizeof(*sHofGfxPtr));
+ gMain.state = 1;
+ break;
+ case 1:
+ sub_8174F70();
+ gMain.state++;
+ break;
+ case 2:
+ SetGpuReg(REG_OFFSET_BLDCNT, 0x3F42);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0x710);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ sub_8174FAC();
+ sHofGfxPtr->state = 0;
+ gMain.state++;
+ break;
+ case 3:
+ if (!sub_8175024())
+ {
+ SetVBlankCallback(VBlankCB_HallOfFame);
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ gMain.state++;
+ }
+ break;
+ case 4:
+ UpdatePaletteFade();
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(CB2_HallOfFame);
+ PlayBGM(BGM_DENDOU);
+ return FALSE;
+ }
+ break;
+ }
+ return TRUE;
+}
+
+#define tDontSaveData data[0]
+#define tDisplayedMonId data[1]
+#define tMonNumber data[2]
+#define tFrameCount data[3]
+#define tPlayerSpriteID data[4]
+#define tMonSpriteId(i) data[i + 5]
+
+void CB2_DoHallOfFameScreen(void)
+{
+ if (!InitHallOfFameScreen())
+ {
+ u8 taskId = CreateTask(Task_Hof_InitMonData, 0);
+ gTasks[taskId].tDontSaveData = FALSE;
+ sHofMonPtr = AllocZeroed(sizeof(*sHofMonPtr));
+ }
+}
+
+void CB2_DoHallOfFameScreenDontSaveData(void)
+{
+ if (!InitHallOfFameScreen())
+ {
+ u8 taskId = CreateTask(Task_Hof_InitMonData, 0);
+ gTasks[taskId].tDontSaveData = TRUE;
+ sHofMonPtr = AllocZeroed(sizeof(*sHofMonPtr));
+ }
+}
+
+static void Task_Hof_InitMonData(u8 taskId)
+{
+ u16 i, j;
+
+ gTasks[taskId].tMonNumber = 0; // valid pokes
+
+ for (i = 0; i < 6; i++)
+ {
+ u8 nick[POKEMON_NAME_LENGTH + 2];
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES))
+ {
+ sHofMonPtr->mon[i].species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
+ sHofMonPtr->mon[i].tid = GetMonData(&gPlayerParty[i], MON_DATA_OT_ID);
+ sHofMonPtr->mon[i].personality = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY);
+ sHofMonPtr->mon[i].lvl = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL);
+ GetMonData(&gPlayerParty[i], MON_DATA_NICKNAME, nick);
+ for (j = 0; j < POKEMON_NAME_LENGTH; j++)
+ {
+ sHofMonPtr->mon[i].nick[j] = nick[j];
+ }
+ gTasks[taskId].tMonNumber++;
+ }
+ else
+ {
+ sHofMonPtr->mon[i].species = 0;
+ sHofMonPtr->mon[i].tid = 0;
+ sHofMonPtr->mon[i].personality = 0;
+ sHofMonPtr->mon[i].lvl = 0;
+ sHofMonPtr->mon[i].nick[0] = EOS;
+ }
+ }
+
+ gUnknown_0203BCD4 = 0;
+ gTasks[taskId].tDisplayedMonId = 0;
+ gTasks[taskId].tPlayerSpriteID = 0xFF;
+
+ for (i = 0; i < 6; i++)
+ {
+ gTasks[taskId].tMonSpriteId(i) = 0xFF;
+ }
+
+ if (gTasks[taskId].tDontSaveData)
+ gTasks[taskId].func = Task_Hof_SetMonDisplayTask;
+ else
+ gTasks[taskId].func = Task_Hof_InitTeamSaveData;
+}
+
+static void Task_Hof_InitTeamSaveData(u8 taskId)
+{
+ u16 i;
+ struct HallofFameTeam* lastSavedTeam = (struct HallofFameTeam*)(gDecompressionBuffer);
+
+ if (!gHasHallOfFameRecords)
+ {
+ memset(gDecompressionBuffer, 0, 0x2000);
+ }
+ else
+ {
+ if (sub_81534D0(3) != TRUE)
+ memset(gDecompressionBuffer, 0, 0x2000);
+ }
+
+ for (i = 0; i < HALL_OF_FAME_MAX_TEAMS; i++, lastSavedTeam++)
+ {
+ if (lastSavedTeam->mon[0].species == 0)
+ break;
+ }
+ if (i >= HALL_OF_FAME_MAX_TEAMS)
+ {
+ struct HallofFameTeam *afterTeam = (struct HallofFameTeam*)(gDecompressionBuffer);
+ struct HallofFameTeam *beforeTeam = (struct HallofFameTeam*)(gDecompressionBuffer);
+ afterTeam++;
+ for (i = 0; i < HALL_OF_FAME_MAX_TEAMS - 1; i++, beforeTeam++, afterTeam++)
+ {
+ *beforeTeam = *afterTeam;
+ }
+ lastSavedTeam--;
+ }
+ *lastSavedTeam = *sHofMonPtr;
+
+ sub_81973C4(0, 0);
+ AddTextPrinterParametrized(0, 1, gText_SavingDontTurnOffPower, 0, NULL, 2, 1, 3);
+ CopyWindowToVram(0, 3);
+ gTasks[taskId].func = Task_Hof_TrySaveData;
+}
+
+static void Task_Hof_TrySaveData(u8 taskId)
+{
+ gGameContinueCallback = CB2_DoHallOfFameScreenDontSaveData;
+ if (TrySavingData(3) == 0xFF && gDamagedSaveSectors != 0)
+ {
+ UnsetBgTilemapBuffer(1);
+ UnsetBgTilemapBuffer(3);
+ FreeAllWindowBuffers();
+
+ if (sHofGfxPtr != NULL)
+ FREE_AND_SET_NULL(sHofGfxPtr);
+ if (sHofMonPtr != NULL)
+ FREE_AND_SET_NULL(sHofMonPtr);
+
+ DestroyTask(taskId);
+ }
+ else
+ {
+ PlaySE(SE_SAVE);
+ gTasks[taskId].func = Task_Hof_WaitForFrames;
+ gTasks[taskId].tFrameCount = 32;
+ }
+}
+
+static void Task_Hof_WaitForFrames(u8 taskId)
+{
+ if (gTasks[taskId].tFrameCount)
+ gTasks[taskId].tFrameCount--;
+ else
+ gTasks[taskId].func = Task_Hof_SetMonDisplayTask;
+}
+
+static void Task_Hof_SetMonDisplayTask(u8 taskId)
+{
+ gTasks[taskId].func = Task_Hof_DisplayMon;
+}
+
+#define tDestinationX data1
+#define tDestinationY data2
+#define tSpecies data7
+
+static void Task_Hof_DisplayMon(u8 taskId)
+{
+ u8 spriteId;
+ s16 xPos, yPos, field4, field6;
+
+ u16 currMonId = gTasks[taskId].tDisplayedMonId;
+ struct HallofFameMon* currMon = &sHofMonPtr->mon[currMonId];
+
+ if (gTasks[taskId].tMonNumber > 3)
+ {
+ xPos = sHallOfFame_MonFullTeamPositions[currMonId][0];
+ yPos = sHallOfFame_MonFullTeamPositions[currMonId][1];
+ field4 = sHallOfFame_MonFullTeamPositions[currMonId][2];
+ field6 = sHallOfFame_MonFullTeamPositions[currMonId][3];
+ }
+ else
+ {
+ xPos = sHallOfFame_MonHalfTeamPositions[currMonId][0];
+ yPos = sHallOfFame_MonHalfTeamPositions[currMonId][1];
+ field4 = sHallOfFame_MonHalfTeamPositions[currMonId][2];
+ field6 = sHallOfFame_MonHalfTeamPositions[currMonId][3];
+ }
+
+ if (currMon->species == SPECIES_EGG)
+ field6 += 10;
+
+ spriteId = sub_818D3E4(currMon->species, currMon->tid, currMon->personality, 1, xPos, yPos, currMonId, 0xFFFF);
+ gSprites[spriteId].tDestinationX = field4;
+ gSprites[spriteId].tDestinationY = field6;
+ gSprites[spriteId].data0 = 0;
+ gSprites[spriteId].tSpecies = currMon->species;
+ gSprites[spriteId].callback = SpriteCB_GetOnScreenAndAnimate;
+ gTasks[taskId].tMonSpriteId(currMonId) = spriteId;
+ sub_8197434(0, 1);
+ gTasks[taskId].func = Task_Hof_PrintMonInfoAfterAnimating;
+}
+
+static void Task_Hof_PrintMonInfoAfterAnimating(u8 taskId)
+{
+ u16 currMonId = gTasks[taskId].tDisplayedMonId;
+ struct HallofFameMon* currMon = &sHofMonPtr->mon[currMonId];
+ struct Sprite *monSprite = &gSprites[gTasks[taskId].tMonSpriteId(currMonId)];
+
+ if (monSprite->callback == SpriteCallbackDummy)
+ {
+ monSprite->oam.affineMode = 0;
+ HallOfFame_PrintMonInfo(currMon, 0, 14);
+ gTasks[taskId].tFrameCount = 120;
+ gTasks[taskId].func = Task_Hof_TryDisplayAnotherMon;
+ }
+}
+
+static void Task_Hof_TryDisplayAnotherMon(u8 taskId)
+{
+ u16 currPokeID = gTasks[taskId].tDisplayedMonId;
+ struct HallofFameMon* currMon = &sHofMonPtr->mon[currPokeID];
+
+ if (gTasks[taskId].tFrameCount != 0)
+ {
+ gTasks[taskId].tFrameCount--;
+ }
+ else
+ {
+ gUnknown_0203BCD4 |= (0x10000 << gSprites[gTasks[taskId].tMonSpriteId(currPokeID)].oam.paletteNum);
+ if (gTasks[taskId].tDisplayedMonId <= 4 && currMon[1].species != SPECIES_NONE) // there is another pokemon to display
+ {
+ gTasks[taskId].tDisplayedMonId++;
+ BeginNormalPaletteFade(gUnknown_0203BCD4, 0, 12, 12, 0x63B0);
+ gSprites[gTasks[taskId].tMonSpriteId(currPokeID)].oam.priority = 1;
+ gTasks[taskId].func = Task_Hof_DisplayMon;
+ }
+ else
+ {
+ gTasks[taskId].func = Task_Hof_PaletteFadeAndPrintWelcomeText;
+ }
+ }
+}
+
+static void Task_Hof_PaletteFadeAndPrintWelcomeText(u8 taskId)
+{
+ u16 i;
+
+ BeginNormalPaletteFade(0xFFFF0000, 0, 0, 0, 0);
+ for (i = 0; i < 6; i++)
+ {
+ if (gTasks[taskId].tMonSpriteId(i) != 0xFF)
+ gSprites[gTasks[taskId].tMonSpriteId(i)].oam.priority = 0;
+ }
+
+ HallOfFame_PrintWelcomeText(0, 15);
+ PlaySE(SE_DENDOU);
+ gTasks[taskId].tFrameCount = 400;
+ gTasks[taskId].func = sub_8173DC0;
+}
+
+static void sub_8173DC0(u8 taskId)
+{
+ if (gTasks[taskId].tFrameCount != 0)
+ {
+ gTasks[taskId].tFrameCount--;
+ if ((gTasks[taskId].tFrameCount & 3) == 0 && gTasks[taskId].tFrameCount > 110)
+ sub_81751FC();
+ }
+ else
+ {
+ u16 i;
+ for (i = 0; i < 6; i++)
+ {
+ if (gTasks[taskId].tMonSpriteId(i) != 0xFF)
+ gSprites[gTasks[taskId].tMonSpriteId(i)].oam.priority = 1;
+ }
+ BeginNormalPaletteFade(gUnknown_0203BCD4, 0, 12, 12, 0x63B0);
+ FillWindowPixelBuffer(0, 0);
+ CopyWindowToVram(0, 3);
+ gTasks[taskId].tFrameCount = 7;
+ gTasks[taskId].func = sub_8173EA4;
+ }
+}
+
+static void sub_8173EA4(u8 taskId)
+{
+ if (gTasks[taskId].tFrameCount >= 16)
+ {
+ gTasks[taskId].func = sub_8173EE4;
+ }
+ else
+ {
+ gTasks[taskId].tFrameCount++;
+ SetGpuReg(REG_OFFSET_BLDALPHA, gTasks[taskId].tFrameCount * 256);
+ }
+}
+
+static void sub_8173EE4(u8 taskId)
+{
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(3);
+ gTasks[taskId].tPlayerSpriteID = sub_818D8AC(sub_818D97C(gSaveBlock2Ptr->playerGender, 1), 1, 120, 72, 6, 0xFFFF);
+ AddWindow(&sHof_WindowTemplate);
+ sub_80987D4(1, gSaveBlock2Ptr->optionsWindowFrameType, 0x21D, 0xD0);
+ LoadPalette(stdpal_get(1), 0xE0, 0x20);
+ gTasks[taskId].tFrameCount = 120;
+ gTasks[taskId].func = Task_Hof_WaitAndPrintPlayerInfo;
+}
+
+static void Task_Hof_WaitAndPrintPlayerInfo(u8 taskId)
+{
+ if (gTasks[taskId].tFrameCount != 0)
+ {
+ gTasks[taskId].tFrameCount--;
+ }
+ else if (gSprites[gTasks[taskId].tPlayerSpriteID].pos1.x != 192)
+ {
+ gSprites[gTasks[taskId].tPlayerSpriteID].pos1.x++;
+ }
+ else
+ {
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x20, 0x20);
+ HallOfFame_PrintPlayerInfo(1, 2);
+ sub_81973C4(0, 0);
+ AddTextPrinterParametrized(0, 1, gText_LeagueChamp, 0, NULL, 2, 1, 3);
+ CopyWindowToVram(0, 3);
+ gTasks[taskId].func = Task_Hof_ExitOnKeyPressed;
+ }
+}
+
+static void Task_Hof_ExitOnKeyPressed(u8 taskId)
+{
+ if (gMain.newKeys & A_BUTTON)
+ {
+ FadeOutBGM(4);
+ gTasks[taskId].func = Task_Hof_HandlePaletteOnExit;
+ }
+}
+
+static void Task_Hof_HandlePaletteOnExit(u8 taskId)
+{
+ CpuCopy16(gPlttBufferFaded, gPlttBufferUnfaded, 0x400);
+ BeginNormalPaletteFade(-1, 8, 0, 0x10, 0);
+ gTasks[taskId].func = Task_Hof_HandleExit;
+}
+
+static void Task_Hof_HandleExit(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ s32 i;
+
+ for (i = 0; i < 6; i++)
+ {
+ u8 spriteId = gTasks[taskId].tMonSpriteId(i);
+ if (spriteId != 0xFF)
+ {
+ FreeOamMatrix(gSprites[spriteId].oam.matrixNum);
+ sub_818D820(spriteId);
+ }
+ }
+
+ sub_818D8F0(gTasks[taskId].tPlayerSpriteID);
+ HideBg(0);
+ HideBg(1);
+ HideBg(3);
+ FreeAllWindowBuffers();
+ UnsetBgTilemapBuffer(1);
+ UnsetBgTilemapBuffer(3);
+ ResetBgsAndClearDma3BusyFlags(0);
+ DestroyTask(taskId);
+
+ if (sHofGfxPtr != NULL)
+ FREE_AND_SET_NULL(sHofGfxPtr);
+ if (sHofMonPtr != NULL)
+ FREE_AND_SET_NULL(sHofMonPtr);
+
+ SetCallback2AfterHallOfFameDisplay();
+ }
+}
+
+static void SetCallback2AfterHallOfFameDisplay(void)
+{
+ SetMainCallback2(sub_8175620);
+}
+
+#undef tDontSaveData
+#undef tDisplayedPoke
+#undef tMonNumber
+#undef tFrameCount
+#undef tPlayerSpriteID
+#undef tMonSpriteId
+
+#define tCurrTeamNo data[0]
+#define tCurrPageNo data[1]
+#define tCurrMonId data[2]
+#define tMonNo data[4]
+#define tMonSpriteId(i) data[i + 5]
+
+void CB2_DoHallOfFamePC(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ default:
+ SetVBlankCallback(NULL);
+ ClearVramOamPltt_LoadHofPal();
+ sHofGfxPtr = AllocZeroed(sizeof(*sHofGfxPtr));
+ gMain.state = 1;
+ break;
+ case 1:
+ sub_8174F70();
+ gMain.state++;
+ break;
+ case 2:
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ sub_8174FAC();
+ gMain.state++;
+ break;
+ case 3:
+ if (!sub_8175024())
+ {
+ struct HallofFameTeam *fameTeam = (struct HallofFameTeam*)(gDecompressionBuffer);
+ fameTeam->mon[0] = sDummyFameMon;
+ sub_80F9BCC(0, 0, 0);
+ SetVBlankCallback(VBlankCB_HallOfFame);
+ gMain.state++;
+ }
+ break;
+ case 4:
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+ if (!sub_80F9C1C())
+ gMain.state++;
+ break;
+ case 5:
+ {
+ u8 taskId, i;
+
+ SetGpuReg(REG_OFFSET_BLDCNT, 0x3F42);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0x710);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ taskId = CreateTask(Task_HofPC_CopySaveData, 0);
+
+ for (i = 0; i < 6; i++)
+ {
+ gTasks[taskId].tMonSpriteId(i) = 0xFF;
+ }
+
+ sHofMonPtr = AllocZeroed(0x2000);
+ SetMainCallback2(CB2_HallOfFame);
+ }
+ break;
+ }
+}
+
+static void Task_HofPC_CopySaveData(u8 taskId)
+{
+ sub_81980F0(0, 0x1E, 0, 0xC, 0x226);
+ if (sub_81534D0(3) != 1)
+ {
+ gTasks[taskId].func = Task_HofPC_PrintDataIsCorrupted;
+ }
+ else
+ {
+ u16 i;
+ struct HallofFameTeam* savedTeams;
+
+ CpuCopy16(gDecompressionBuffer, sHofMonPtr, 0x2000);
+ savedTeams = sHofMonPtr;
+ for (i = 0; i < HALL_OF_FAME_MAX_TEAMS; i++, savedTeams++)
+ {
+ if (savedTeams->mon[0].species == SPECIES_NONE)
+ break;
+ }
+
+ if (i < HALL_OF_FAME_MAX_TEAMS)
+ gTasks[taskId].tCurrTeamNo = i - 1;
+ else
+ gTasks[taskId].tCurrTeamNo = HALL_OF_FAME_MAX_TEAMS - 1;
+
+ gTasks[taskId].tCurrPageNo = GetGameStat(GAME_STAT_ENTERED_HOF);
+
+ gTasks[taskId].func = Task_HofPC_DrawSpritesPrintText;
+ }
+}
+
+static void Task_HofPC_DrawSpritesPrintText(u8 taskId)
+{
+ struct HallofFameTeam* savedTeams = sHofMonPtr;
+ struct HallofFameMon* currMon;
+ u16 i;
+
+ for (i = 0; i < gTasks[taskId].tCurrTeamNo; i++)
+ savedTeams++;
+
+ currMon = &savedTeams->mon[0];
+ gUnknown_0203BCD4 = 0;
+ gTasks[taskId].tCurrMonId = 0;
+ gTasks[taskId].tMonNo = 0;
+
+ for (i = 0; i < 6; i++, currMon++)
+ {
+ if (currMon->species != 0)
+ gTasks[taskId].tMonNo++;
+ }
+
+ currMon = &savedTeams->mon[0];
+
+ for (i = 0; i < 6; i++, currMon++)
+ {
+ if (currMon->species != 0)
+ {
+ u16 spriteId;
+ s16 posX, posY;
+
+ if (gTasks[taskId].tMonNo > 3)
+ {
+ posX = sHallOfFame_MonFullTeamPositions[i][2];
+ posY = sHallOfFame_MonFullTeamPositions[i][3];
+ }
+ else
+ {
+ posX = sHallOfFame_MonHalfTeamPositions[i][2];
+ posY = sHallOfFame_MonHalfTeamPositions[i][3];
+ }
+
+ if (currMon->species == SPECIES_EGG)
+ posY += 10;
+
+ spriteId = sub_818D7D8(currMon->species, currMon->tid, currMon->personality, 1, posX, posY, i, 0xFFFF);
+ gSprites[spriteId].oam.priority = 1;
+ gTasks[taskId].tMonSpriteId(i) = spriteId;
+ }
+ else
+ {
+ gTasks[taskId].tMonSpriteId(i) = 0xFF;
+ }
+ }
+
+ BlendPalettes(0xFFFF0000, 0xC, 0x63B0);
+
+ ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].tCurrPageNo, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ StringExpandPlaceholders(gStringVar4, gText_HOFNumber);
+
+ if (gTasks[taskId].tCurrTeamNo <= 0)
+ sub_8198204(gStringVar4, gText_PickCancel, 0, 0, 1);
+ else
+ sub_8198204(gStringVar4, gText_PickNextCancel, 0, 0, 1);
+
+ gTasks[taskId].func = Task_HofPC_PrintMonInfo;
+}
+
+static void Task_HofPC_PrintMonInfo(u8 taskId)
+{
+ struct HallofFameTeam* savedTeams = sHofMonPtr;
+ struct HallofFameMon* currMon;
+ u16 i;
+ u16 currMonID;
+
+ for (i = 0; i < gTasks[taskId].tCurrTeamNo; i++)
+ savedTeams++;
+
+ for (i = 0; i < 6; i++)
+ {
+ u16 spriteId = gTasks[taskId].tMonSpriteId(i);
+ if (spriteId != 0xFF)
+ gSprites[spriteId].oam.priority = 1;
+ }
+
+ currMonID = gTasks[taskId].tMonSpriteId(gTasks[taskId].tCurrMonId);
+ gSprites[currMonID].oam.priority = 0;
+ gUnknown_0203BCD4 = (0x10000 << gSprites[currMonID].oam.paletteNum) ^ 0xFFFF0000;
+ BlendPalettesUnfaded(gUnknown_0203BCD4, 0xC, 0x63B0);
+
+ currMon = &savedTeams->mon[gTasks[taskId].tCurrMonId];
+ if (currMon->species != SPECIES_EGG)
+ {
+ StopCryAndClearCrySongs();
+ PlayCry1(currMon->species, 0);
+ }
+ HallOfFame_PrintMonInfo(currMon, 0, 14);
+
+ gTasks[taskId].func = Task_HofPC_HandleInput;
+}
+
+static void Task_HofPC_HandleInput(u8 taskId)
+{
+ u16 i;
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ if (gTasks[taskId].tCurrTeamNo != 0) // prepare another team to view
+ {
+ gTasks[taskId].tCurrTeamNo--;
+ for (i = 0; i < 6; i++)
+ {
+ u8 spriteId = gTasks[taskId].tMonSpriteId(i);
+ if (spriteId != 0xFF)
+ {
+ sub_818D820(spriteId);
+ gTasks[taskId].tMonSpriteId(i) = 0xFF;
+ }
+ }
+ if (gTasks[taskId].tCurrPageNo != 0)
+ gTasks[taskId].tCurrPageNo--;
+ gTasks[taskId].func = Task_HofPC_DrawSpritesPrintText;
+ }
+ else // no more teams to view, turn off hall of fame PC
+ {
+ if (IsCryPlayingOrClearCrySongs())
+ {
+ StopCryAndClearCrySongs();
+ m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x100);
+ }
+ gTasks[taskId].func = Task_HofPC_HandlePaletteOnExit;
+ }
+ }
+ else if (gMain.newKeys & B_BUTTON) // turn off hall of fame PC
+ {
+ if (IsCryPlayingOrClearCrySongs())
+ {
+ StopCryAndClearCrySongs();
+ m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x100);
+ }
+ gTasks[taskId].func = Task_HofPC_HandlePaletteOnExit;
+ }
+ else if (gMain.newKeys & DPAD_UP && gTasks[taskId].tCurrMonId != 0) // change mon -1
+ {
+ gTasks[taskId].tCurrMonId--;
+ gTasks[taskId].func = Task_HofPC_PrintMonInfo;
+ }
+ else if (gMain.newKeys & DPAD_DOWN && gTasks[taskId].tCurrMonId < gTasks[taskId].tMonNo - 1) // change mon +1
+ {
+ gTasks[taskId].tCurrMonId++;
+ gTasks[taskId].func = Task_HofPC_PrintMonInfo;
+ }
+}
+
+static void Task_HofPC_HandlePaletteOnExit(u8 taskId)
+{
+ struct HallofFameTeam* fameTeam;
+
+ CpuCopy16(gPlttBufferFaded, gPlttBufferUnfaded, 0x400);
+ fameTeam = (struct HallofFameTeam*)(gDecompressionBuffer);
+ fameTeam->mon[0] = sDummyFameMon;
+ sub_80F9BF4(0, 0, 0);
+ gTasks[taskId].func = Task_HofPC_HandleExit;
+}
+
+static void Task_HofPC_HandleExit(u8 taskId)
+{
+ if (!sub_80F9C30())
+ {
+ u8 i;
+
+ for (i = 0; i < 6; i++)
+ {
+ u16 spriteId = gTasks[taskId].tMonSpriteId(i);
+ if (spriteId != 0xFF)
+ {
+ sub_818D820(spriteId);
+ gTasks[taskId].tMonSpriteId(i) = 0xFF;
+ }
+ }
+
+ HideBg(0);
+ HideBg(1);
+ HideBg(3);
+ sub_8198314();
+ FreeAllWindowBuffers();
+ UnsetBgTilemapBuffer(1);
+ UnsetBgTilemapBuffer(3);
+ ResetBgsAndClearDma3BusyFlags(0);
+ DestroyTask(taskId);
+
+ if (sHofGfxPtr != NULL)
+ FREE_AND_SET_NULL(sHofGfxPtr);
+ if (sHofMonPtr != NULL)
+ FREE_AND_SET_NULL(sHofMonPtr);
+
+ sub_8137C3C();
+ }
+}
+
+static void Task_HofPC_PrintDataIsCorrupted(u8 taskId)
+{
+ sub_8198180(gText_UnkCtrlF800Exit, 8, 1);
+ sub_81973C4(0, 0);
+ AddTextPrinterParametrized(0, 1, gText_HOFCorrupted, 0, NULL, 2, 1, 3);
+ CopyWindowToVram(0, 3);
+ gTasks[taskId].func = Task_HofPC_ExitOnButtonPress;
+}
+
+static void Task_HofPC_ExitOnButtonPress(u8 taskId)
+{
+ if (gMain.newKeys & A_BUTTON)
+ gTasks[taskId].func = Task_HofPC_HandlePaletteOnExit;
+}
+
+#undef tCurrTeamNo
+#undef tCurrPageNo
+#undef tCurrMonId
+#undef tMonNo
+#undef tMonSpriteId
+
+static void HallOfFame_PrintWelcomeText(u8 unusedPossiblyWindowId, u8 unused2)
+{
+ FillWindowPixelBuffer(0, 0);
+ PutWindowTilemap(0);
+ box_print(0, 1, GetStringCenterAlignXOffset(1, gText_WelcomeToHOF, 0xD0), 1, gUnknown_085E5388, 0, gText_WelcomeToHOF);
+ CopyWindowToVram(0, 3);
+}
+
+static void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 unused1, u8 unused2)
+{
+ u8 text[30];
+ u8 *stringPtr;
+ s32 dexNumber;
+ s32 width;
+
+ FillWindowPixelBuffer(0, 0);
+ PutWindowTilemap(0);
+
+ // dex number
+ if (currMon->species != SPECIES_EGG)
+ {
+ stringPtr = StringCopy(text, gText_Number);
+ dexNumber = SpeciesToPokedexNum(currMon->species);
+ if (dexNumber != 0xFFFF)
+ {
+ stringPtr[0] = (dexNumber / 100) + CHAR_0;
+ stringPtr++;
+ dexNumber %= 100;
+ stringPtr[0] = (dexNumber / 10) + CHAR_0;
+ stringPtr++;
+ stringPtr[0] = (dexNumber % 10) + CHAR_0;
+ stringPtr++;
+ }
+ else
+ {
+ *(stringPtr)++ = CHAR_QUESTION_MARK;
+ *(stringPtr)++ = CHAR_QUESTION_MARK;
+ *(stringPtr)++ = CHAR_QUESTION_MARK;
+ }
+ stringPtr[0] = EOS;
+ box_print(0, 1, 0x10, 1, gUnknown_085E5388, -1, text);
+ }
+
+ // nick, species names, gender and level
+ memcpy(text, currMon->nick, POKEMON_NAME_LENGTH);
+ text[POKEMON_NAME_LENGTH] = EOS;
+ if (currMon->species == SPECIES_EGG)
+ {
+ width = GetStringCenterAlignXOffset(1, text, 0xD0);
+ box_print(0, 1, width, 1, gUnknown_085E5388, -1, text);
+ CopyWindowToVram(0, 3);
+ }
+ else
+ {
+ width = GetStringRightAlignXOffset(1, text, 0x80);
+ box_print(0, 1, width, 1, gUnknown_085E5388, -1, text);
+
+ text[0] = CHAR_SLASH;
+ stringPtr = StringCopy(text + 1, gSpeciesNames[currMon->species]);
+
+ if (currMon->species != SPECIES_NIDORAN_M && currMon->species != SPECIES_NIDORAN_F)
+ {
+ switch (GetGenderFromSpeciesAndPersonality(currMon->species, currMon->personality))
+ {
+ case MON_MALE:
+ stringPtr[0] = CHAR_MALE;
+ stringPtr++;
+ break;
+ case MON_FEMALE:
+ stringPtr[0] = CHAR_FEMALE;
+ stringPtr++;
+ break;
+ }
+ }
+
+ stringPtr[0] = EOS;
+ box_print(0, 1, 0x80, 1, gUnknown_085E5388, -1, text);
+
+ stringPtr = StringCopy(text, gText_Level);
+ ConvertIntToDecimalStringN(stringPtr, currMon->lvl, STR_CONV_MODE_LEFT_ALIGN, 3);
+ box_print(0, 1, 0x24, 0x11, gUnknown_085E5388, -1, text);
+
+ stringPtr = StringCopy(text, gText_IDNumber);
+ ConvertIntToDecimalStringN(stringPtr, (u16)(currMon->tid), STR_CONV_MODE_LEADING_ZEROS, 5);
+ box_print(0, 1, 0x68, 0x11, gUnknown_085E5388, -1, text);
+
+ CopyWindowToVram(0, 3);
+ }
+}
+
+static void HallOfFame_PrintPlayerInfo(u8 unused1, u8 unused2)
+{
+ u8 text[20];
+ u32 width;
+ u16 trainerId;
+
+ FillWindowPixelBuffer(1, 0x11);
+ PutWindowTilemap(1);
+ SetWindowBorderStyle(1, FALSE, 0x21D, 0xD);
+ box_print(1, 1, 0, 1, gUnknown_085E538C, -1, gText_Name);
+
+ width = GetStringRightAlignXOffset(1, gSaveBlock2Ptr->playerName, 0x70);
+ box_print(1, 1, width, 1, gUnknown_085E538C, -1, gSaveBlock2Ptr->playerName);
+
+ trainerId = (gSaveBlock2Ptr->playerTrainerId[0]) | (gSaveBlock2Ptr->playerTrainerId[1] << 8);
+ box_print(1, 1, 0, 0x11, gUnknown_085E538C, 0, gText_IDNumber);
+ text[0] = (trainerId % 100000) / 10000 + CHAR_0;
+ text[1] = (trainerId % 10000) / 1000 + CHAR_0;
+ text[2] = (trainerId % 1000) / 100 + CHAR_0;
+ text[3] = (trainerId % 100) / 10 + CHAR_0;
+ text[4] = (trainerId % 10) / 1 + CHAR_0;
+ text[5] = EOS;
+ width = GetStringRightAlignXOffset(1, text, 0x70);
+ box_print(1, 1, width, 0x11, gUnknown_085E538C, -1, text);
+
+ box_print(1, 1, 0, 0x21, gUnknown_085E538C, -1, gText_MainMenuTime);
+ text[0] = (gSaveBlock2Ptr->playTimeHours / 100) + CHAR_0;
+ text[1] = (gSaveBlock2Ptr->playTimeHours % 100) / 10 + CHAR_0;
+ text[2] = (gSaveBlock2Ptr->playTimeHours % 10) + CHAR_0;
+
+ if (text[0] == CHAR_0)
+ text[0] = CHAR_SPACE;
+ if (text[0] == CHAR_SPACE && text[1] == CHAR_0)
+ text[8] = CHAR_SPACE;
+
+ text[3] = CHAR_COLON;
+ text[4] = (gSaveBlock2Ptr->playTimeMinutes % 100) / 10 + CHAR_0;
+ text[5] = (gSaveBlock2Ptr->playTimeMinutes % 10) + CHAR_0;
+ text[6] = EOS;
+
+ width = GetStringRightAlignXOffset(1, text, 0x70);
+ box_print(1, 1, width, 0x21, gUnknown_085E538C, -1, text);
+
+ CopyWindowToVram(1, 3);
+}
+
+static void ClearVramOamPltt_LoadHofPal(void)
+{
+ u32 vramOffset, oamOffset, plttOffset;
+ u32 vramSize, oamSize, plttSize;
+
+ vramOffset = (VRAM);
+ vramSize = VRAM_SIZE;
+ while (TRUE)
+ {
+ DmaFill16(3, 0, vramOffset, 0x1000);
+ vramOffset += 0x1000;
+ vramSize -= 0x1000;
+ if (vramSize <= 0x1000)
+ {
+ DmaFill16(3, 0, vramOffset, vramSize);
+ break;
+ }
+ }
+
+ oamOffset = OAM;
+ oamSize = OAM_SIZE;
+ DmaFill32(3, 0, oamOffset, oamSize);
+
+ plttOffset = PLTT;
+ plttSize = PLTT_SIZE;
+ DmaFill16(3, 0, plttOffset, plttSize);
+
+ ResetPaletteFade();
+ LoadPalette(sHallOfFame_Pal, 0, 0x20);
+}
+
+static void sub_8174F70(void)
+{
+ remove_some_task();
+ ResetTasks();
+ ResetSpriteData();
+ reset_temp_tile_data_buffers();
+ dp13_810BB8C();
+ FreeAllSpritePalettes();
+ gReservedSpritePaletteCount = 8;
+ LoadCompressedObjectPic(&sHallOfFame_ConfettiSpriteSheet);
+ LoadCompressedObjectPalette(&sHallOfFame_ConfettiSpritePalette);
+}
+
+static void sub_8174FAC(void)
+{
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, sHof_BgTemplates, ARRAY_COUNT(sHof_BgTemplates));
+ SetBgTilemapBuffer(1, sHofGfxPtr->tilemap1);
+ SetBgTilemapBuffer(3, sHofGfxPtr->tilemap2);
+ ChangeBgX(0, 0, 0);
+ ChangeBgY(0, 0, 0);
+ ChangeBgX(1, 0, 0);
+ ChangeBgY(1, 0, 0);
+ ChangeBgX(3, 0, 0);
+ ChangeBgY(3, 0, 0);
+}
+
+static bool8 sub_8175024(void)
+{
+ switch (sHofGfxPtr->state)
+ {
+ case 0:
+ decompress_and_copy_tile_data_to_vram(1, sHallOfFame_Gfx, 0, 0, 0);
+ break;
+ case 1:
+ if (free_temp_tile_data_buffers_if_possible())
+ return TRUE;
+ break;
+ case 2:
+ FillBgTilemapBufferRect_Palette0(1, 1, 0, 0, 0x20, 2);
+ FillBgTilemapBufferRect_Palette0(1, 0, 0, 3, 0x20, 0xB);
+ FillBgTilemapBufferRect_Palette0(1, 1, 0, 0xE, 0x20, 6);
+ FillBgTilemapBufferRect_Palette0(3, 2, 0, 0, 0x20, 0x20);
+
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(3);
+ break;
+ case 3:
+ sub_81971D0();
+ sub_8197200();
+ break;
+ case 4:
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON);
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(3);
+ sHofGfxPtr->state = 0;
+ return FALSE;
+ }
+
+ sHofGfxPtr->state++;
+ return TRUE;
+}
+
+static void SpriteCB_GetOnScreenAndAnimate(struct Sprite *sprite)
+{
+ if (sprite->pos1.x != sprite->tDestinationX
+ || sprite->pos1.y != sprite->tDestinationY)
+ {
+ if (sprite->pos1.x < sprite->tDestinationX)
+ sprite->pos1.x += 15;
+ if (sprite->pos1.x > sprite->tDestinationX)
+ sprite->pos1.x -= 15;
+
+ if (sprite->pos1.y < sprite->tDestinationY)
+ sprite->pos1.y += 10;
+ if (sprite->pos1.y > sprite->tDestinationY)
+ sprite->pos1.y -= 10;
+ }
+ else
+ {
+ s16 species = sprite->tSpecies;
+
+ if (species == SPECIES_EGG)
+ DoMonFrontSpriteAnimation(sprite, species, TRUE, 3);
+ else
+ DoMonFrontSpriteAnimation(sprite, species, FALSE, 3);
+ }
+}
+
+#undef tDestinationX
+#undef tDestinationY
+#undef tSpecies
+
+static void sub_81751A4(struct Sprite* sprite)
+{
+ if (sprite->pos2.y > 120)
+ {
+ DestroySprite(sprite);
+ }
+ else
+ {
+ u16 rand;
+ u8 tableID;
+
+ sprite->pos2.y++;
+ sprite->pos2.y += sprite->data1;
+
+ tableID = sprite->data0;
+ rand = (Random() % 4) + 8;
+ sprite->pos2.x = rand * gSineTable[tableID] / 256;
+
+ sprite->data0 += 4;
+ }
+}
+
+static bool8 sub_81751FC(void)
+{
+ u8 spriteID;
+ struct Sprite* sprite;
+
+ s16 posX = Random() % 240;
+ s16 posY = -(Random() % 8);
+
+ spriteID = CreateSprite(&sSpriteTemplate_85E54D0, posX, posY, 0);
+ sprite = &gSprites[spriteID];
+
+ StartSpriteAnim(sprite, Random() % 17);
+
+ if (Random() & 3)
+ sprite->data1 = 0;
+ else
+ sprite->data1 = 1;
+
+ return FALSE;
+}
+
+void sub_8175280(void)
+{
+ u8 taskId;
+
+ gSpecialVar_0x8004 = 180;
+ taskId = CreateTask(sub_8175364, 0);
+ if (taskId != 0xFF)
+ {
+ gTasks[taskId].data[1] = gSpecialVar_0x8004;
+ gSpecialVar_0x8005 = taskId;
+ }
+}
+
+static void sub_81752C0(void)
+{
+ u8 taskId;
+
+ if ((taskId = FindTaskIdByFunc(sub_8175364)) != 0xFF)
+ DestroyTask(taskId);
+
+ sub_8152254();
+ FreeSpriteTilesByTag(0x3E9);
+ FreeSpritePaletteByTag(0x3E9);
+}
+
+struct UnknownStruct912B4
+{
+ s16 field_0;
+ s16 field_2;
+ s16 field_4;
+ s16 field_6;
+ s16 field_8;
+ s16 field_A;
+ s16 field_C;
+ s16 field_E;
+ s16 field_10;
+ s16 field_12;
+ s16 field_14;
+ s16 field_16;
+ s16 field_18;
+ s16 field_1A;
+ s16 field_1C;
+ s16 field_1E;
+ s16 field_20;
+ s16 field_22;
+ s16 field_24;
+ s16 field_26;
+ s16 field_28;
+};
+
+static void sub_81752F4(struct UnknownStruct912B4 *unkStruct)
+{
+ if (unkStruct->field_E > 110)
+ {
+ gTasks[unkStruct->field_28].data[15]--;
+ sub_81525D0(unkStruct->field_16);
+ }
+ else
+ {
+ u8 var;
+ s32 rand;
+
+ unkStruct->field_E++;
+ unkStruct->field_E += unkStruct->field_1C;
+
+ var = unkStruct->field_1A;
+ rand = Random();
+ rand &= 3;
+ rand += 8;
+ unkStruct->field_C = (rand) * ((gSineTable[var])) / 256;
+
+ unkStruct->field_1A += 4;
+ }
+}
+
+static void sub_8175364(u8 taskId)
+{
+ u32 var = 0;
+ u16 *data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ if (!sub_81521C0(0x40))
+ {
+ DestroyTask(taskId);
+ gSpecialVar_0x8004 = var;
+ gSpecialVar_0x8005 = 0xFFFF;
+ }
+ LoadCompressedObjectPic(&sHallOfFame_ConfettiSpriteSheet);
+ LoadCompressedObjectPalette(&sHallOfFame_ConfettiSpritePalette);
+ data[0]++;
+ break;
+ case 1:
+ if (data[1] != 0 && data[1] % 3 == 0)
+ {
+ var = sub_81524C4(&sOamData_85E53FC, 0x3E9, 0x3E9, Random() % 240, -(Random() % 8), Random() % 0x11, var);
+ if (var != 0xFF)
+ {
+ sub_8152438(var, sub_81752F4);
+ if ((Random() & 3) == 0)
+ sub_8152474(var, 1, 1);
+ sub_8152474(var, 7, taskId);
+ data[15]++;
+ }
+ }
+ sub_81522D4();
+ if (data[1] != 0)
+ data[1]--;
+ else if (data[15] == 0)
+ data[0] = 0xFF;
+ break;
+ case 0xFF:
+ sub_81752C0();
+ gSpecialVar_0x8004 = var;
+ gSpecialVar_0x8005 = 0xFFFF;
+ break;
+ }
+}
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 52d24a9ab..176620c2e 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -1404,11 +1404,7 @@ gUnknown_0203BCD0: @ 203BCD0
gUnknown_0203BCD4: @ 203BCD4
.space 0x4
-gUnknown_0203BCD8: @ 203BCD8
- .space 0x4
-
-gUnknown_0203BCDC: @ 203BCDC
- .space 0x4
+ .include "src/hall_of_fame.o"
gUnknown_0203BCE0: @ 203BCE0
.space 0x2
@@ -1416,7 +1412,7 @@ gUnknown_0203BCE0: @ 203BCE0
gUnknown_0203BCE2: @ 203BCE2
.space 0x2
-gUnknown_0203BCE4: @ 203BCE4
+gHasHallOfFameRecords: @ 203BCE4
.space 0x1
gUnknown_0203BCE5: @ 203BCE5