summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/hall_of_fame.s1654
-rw-r--r--asm/rom6.s4
-rw-r--r--data/hall_of_fame.s2
-rw-r--r--src/hall_of_fame.c668
4 files changed, 627 insertions, 1701 deletions
diff --git a/asm/hall_of_fame.s b/asm/hall_of_fame.s
index 0b1530b03..a16df82c5 100644
--- a/asm/hall_of_fame.s
+++ b/asm/hall_of_fame.s
@@ -6,1648 +6,12 @@
.text
-
-
- 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, =gHofMonsPtr
- 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, =gHofMonsPtr
- 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, =gHofMonsPtr
- 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, =VBlankCB_HallOfFame
- 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, =gHofMonsPtr
- movs r0, 0x80
- lsls r0, 6
- bl AllocZeroed
- str r0, [r4]
- ldr r0, =CB2_HallOfFame
- 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, =gHofMonsPtr
- 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, =gHofMonsPtr
- 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, =sHallOfFame_MonsFullTeamPositions
- 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, =sHallOfFame_MonsHalfTeamPositions
- 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, =gHofMonsPtr
- 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, =gHofMonsPtr
- 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
+ thumb_func_start HallOfFame_PrintWelcomeText
+HallOfFame_PrintWelcomeText: @ 8174A38
push {r4,lr}
sub sp, 0xC
movs r0, 0
@@ -1679,10 +43,10 @@ sub_8174A38: @ 8174A38
pop {r0}
bx r0
.pool
- thumb_func_end sub_8174A38
+ thumb_func_end HallOfFame_PrintWelcomeText
- thumb_func_start sub_8174A88
-sub_8174A88: @ 8174A88
+ thumb_func_start HallOfFame_PrintMonInfo
+HallOfFame_PrintMonInfo: @ 8174A88
push {r4-r7,lr}
sub sp, 0x2C
adds r7, r0, 0
@@ -1912,10 +276,10 @@ _08174C82:
pop {r0}
bx r0
.pool
- thumb_func_end sub_8174A88
+ thumb_func_end HallOfFame_PrintMonInfo
- thumb_func_start sub_8174C98
-sub_8174C98: @ 8174C98
+ thumb_func_start HallOfFame_PrintPlayerInfo
+HallOfFame_PrintPlayerInfo: @ 8174C98
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -2151,7 +515,7 @@ _08174E30:
pop {r0}
bx r0
.pool
- thumb_func_end sub_8174C98
+ thumb_func_end HallOfFame_PrintPlayerInfo
thumb_func_start sub_8174EC4
sub_8174EC4: @ 8174EC4
diff --git a/asm/rom6.s b/asm/rom6.s
index 746513de8..e312b2330 100644
--- a/asm/rom6.s
+++ b/asm/rom6.s
@@ -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/data/hall_of_fame.s b/data/hall_of_fame.s
index f00fc6001..29e509a49 100644
--- a/data/hall_of_fame.s
+++ b/data/hall_of_fame.s
@@ -42,5 +42,5 @@ gUnknown_085E54E8:: @ 85E54E8
gUnknown_085E5508:: @ 85E5508
.incbin "baserom.gba", 0x5e5508, 0x1cc
-gUnknown_085E56D4:: @ 85E56D4
+sDummyFameMon:: @ 85E56D4
.incbin "baserom.gba", 0x5e56d4, 0x1c
diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c
index d63efe21e..35509b53a 100644
--- a/src/hall_of_fame.c
+++ b/src/hall_of_fame.c
@@ -15,6 +15,10 @@
#include "window.h"
#include "bg.h"
#include "species.h"
+#include "game_stat.h"
+#include "blend_palette.h"
+#include "string_util.h"
+#include "m4a.h"
struct HallofFameMon
{
@@ -43,28 +47,79 @@ extern struct HofGfx *gUnknown_0203BCDC;
extern u32 gUnknown_0203BCD4;
extern bool8 HasHallOfFameRecords;
extern u8 gDecompressionBuffer[];
+extern struct MusicPlayerInfo gMPlay_BGM;
+extern MainCallback gGameContinueCallback;
+extern u32 gDamagedSaveSectors;
#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 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);
// this file's functions
void sub_8174EC4(void);
void sub_8174F70(void);
void sub_8174FAC(void);
+void sub_81751FC(void);
+static void SetCallback2AfterHallOfFameDisplay(void);
bool8 sub_8175024(void);
-void sub_817371C(u8 taskId);
-void sub_81738BC(u8 taskId);
-void sub_8173A8C(u8 taskId);
-void sub_81739C4(u8 taskId);
-void sub_8173A5C(u8 taskId);
-void sub_8173AA8(u8 taskId);
-void sub_8173BC0(u8 taskId);
+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);
void sub_8175120(struct Sprite *sprite);
+void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 unused1, u8 unused2);
+void HallOfFame_PrintWelcomeText(u8 unusedPossiblyWindowId, u8 arg1);
+void HallOfFame_PrintPlayerInfo(u8 unused1, u8 unused2);
void VBlankCB_HallOfFame(void)
{
@@ -82,7 +137,7 @@ void CB2_HallOfFame(void)
UpdatePaletteFade();
}
-bool8 sub_817357C(void)
+static bool8 InitHallOfFameScreen(void)
{
switch (gMain.state)
{
@@ -125,34 +180,34 @@ bool8 sub_817357C(void)
return TRUE;
}
-#define tData0 data[0]
-#define tDisplayedPoke data[1]
+#define tDontSaveData data[0]
+#define tDisplayedMonId data[1]
#define tPokesNumber data[2]
#define tFrameCount data[3]
#define tPlayerSpriteID data[4]
#define tMonSpriteID(i) data[i + 5]
-void sub_8173694(void)
+void CB2_DoHallOfFameScreen(void)
{
- if (!sub_817357C())
+ if (!InitHallOfFameScreen())
{
- u8 taskId = CreateTask(sub_817371C, 0);
- gTasks[taskId].tData0 = 0;
+ u8 taskId = CreateTask(Task_Hof_InitMonData, 0);
+ gTasks[taskId].tDontSaveData = FALSE;
gHofMonsPtr = AllocZeroed(sizeof(*gHofMonsPtr));
}
}
-void sub_81736D8(void)
+void CB2_DoHallOfFameScreenDontSaveData(void)
{
- if (!sub_817357C())
+ if (!InitHallOfFameScreen())
{
- u8 taskId = CreateTask(sub_817371C, 0);
- gTasks[taskId].tData0 = 1;
+ u8 taskId = CreateTask(Task_Hof_InitMonData, 0);
+ gTasks[taskId].tDontSaveData = TRUE;
gHofMonsPtr = AllocZeroed(sizeof(*gHofMonsPtr));
}
}
-void sub_817371C(u8 taskId)
+static void Task_Hof_InitMonData(u8 taskId)
{
u16 i, j;
@@ -185,7 +240,7 @@ void sub_817371C(u8 taskId)
}
gUnknown_0203BCD4 = 0;
- gTasks[taskId].tDisplayedPoke = 0;
+ gTasks[taskId].tDisplayedMonId = 0;
gTasks[taskId].tPlayerSpriteID = 0xFF;
for (i = 0; i < 6; i++)
@@ -193,13 +248,13 @@ void sub_817371C(u8 taskId)
gTasks[taskId].tMonSpriteID(i) = 0xFF;
}
- if (gTasks[taskId].tData0)
- gTasks[taskId].func = sub_8173A8C;
+ if (gTasks[taskId].tDontSaveData)
+ gTasks[taskId].func = Task_Hof_SetMonDisplayTask;
else
- gTasks[taskId].func = sub_81738BC;
+ gTasks[taskId].func = Task_Hof_InitTeamSaveData;
}
-void sub_81738BC(u8 taskId)
+static void Task_Hof_InitTeamSaveData(u8 taskId)
{
u16 i;
struct HallofFameMons* lastSavedTeam = (struct HallofFameMons*)(gDecompressionBuffer);
@@ -235,16 +290,12 @@ void sub_81738BC(u8 taskId)
sub_81973C4(0, 0);
AddTextPrinterParametrized(0, 1, gText_SavingDontTurnOffPower, 0, NULL, 2, 1, 3);
CopyWindowToVram(0, 3);
- gTasks[taskId].func = sub_81739C4;
+ gTasks[taskId].func = Task_Hof_TrySaveData;
}
-extern u8 TrySavingData(u8);
-extern MainCallback gGameContinueCallback;
-extern u32 gDamagedSaveSectors;
-
-void sub_81739C4(u8 taskId)
+static void Task_Hof_TrySaveData(u8 taskId)
{
- gGameContinueCallback = sub_81736D8;
+ gGameContinueCallback = CB2_DoHallOfFameScreenDontSaveData;
if (TrySavingData(3) == 0xFF && gDamagedSaveSectors != 0)
{
UnsetBgTilemapBuffer(1);
@@ -261,63 +312,574 @@ void sub_81739C4(u8 taskId)
else
{
PlaySE(SE_SAVE);
- gTasks[taskId].func = sub_8173A5C;
+ gTasks[taskId].func = Task_Hof_WaitForFrames;
gTasks[taskId].tFrameCount = 32;
}
}
-void sub_8173A5C(u8 taskId)
+static void Task_Hof_WaitForFrames(u8 taskId)
{
if (gTasks[taskId].tFrameCount)
gTasks[taskId].tFrameCount--;
else
- gTasks[taskId].func = sub_8173A8C;
+ gTasks[taskId].func = Task_Hof_SetMonDisplayTask;
}
-void sub_8173A8C(u8 taskId)
+static void Task_Hof_SetMonDisplayTask(u8 taskId)
{
- gTasks[taskId].func = sub_8173AA8;
+ gTasks[taskId].func = Task_Hof_DisplayMon;
}
extern const s16 sHallOfFame_MonsFullTeamPositions[][4];
extern const s16 sHallOfFame_MonsHalfTeamPositions[][4];
-extern u8 sub_818D3E4(u16 species, u32 trainerId, u32 personality, u8 flags, s16 x, s16 y, u8, u16);
-extern void sub_8197434(u8, u8);
-
-void sub_8173AA8(u8 taskId)
+static void Task_Hof_DisplayMon(u8 taskId)
{
u8 spriteId;
s16 xPos, yPos, field4, field6;
- u16 currPokeID = gTasks[taskId].tDisplayedPoke;
- struct HallofFameMon* currMon = &gHofMonsPtr->mons[currPokeID];
+ u16 currMonId = gTasks[taskId].tDisplayedMonId;
+ struct HallofFameMon* currMon = &gHofMonsPtr->mons[currMonId];
if (gTasks[taskId].tPokesNumber > 3)
{
- xPos = sHallOfFame_MonsFullTeamPositions[currPokeID][0];
- yPos = sHallOfFame_MonsFullTeamPositions[currPokeID][1];
- field4 = sHallOfFame_MonsFullTeamPositions[currPokeID][2];
- field6 = sHallOfFame_MonsFullTeamPositions[currPokeID][3];
+ xPos = sHallOfFame_MonsFullTeamPositions[currMonId][0];
+ yPos = sHallOfFame_MonsFullTeamPositions[currMonId][1];
+ field4 = sHallOfFame_MonsFullTeamPositions[currMonId][2];
+ field6 = sHallOfFame_MonsFullTeamPositions[currMonId][3];
}
else
{
- xPos = sHallOfFame_MonsHalfTeamPositions[currPokeID][0];
- yPos = sHallOfFame_MonsHalfTeamPositions[currPokeID][1];
- field4 = sHallOfFame_MonsHalfTeamPositions[currPokeID][2];
- field6 = sHallOfFame_MonsHalfTeamPositions[currPokeID][3];
+ xPos = sHallOfFame_MonsHalfTeamPositions[currMonId][0];
+ yPos = sHallOfFame_MonsHalfTeamPositions[currMonId][1];
+ field4 = sHallOfFame_MonsHalfTeamPositions[currMonId][2];
+ field6 = sHallOfFame_MonsHalfTeamPositions[currMonId][3];
}
if (currMon->species == SPECIES_EGG)
field6 += 10;
- spriteId = sub_818D3E4(currMon->species, currMon->tid, currMon->personality, 1, xPos, yPos, currPokeID, 0xFFFF);
+ spriteId = sub_818D3E4(currMon->species, currMon->tid, currMon->personality, 1, xPos, yPos, currMonId, 0xFFFF);
gSprites[spriteId].data1 = field4;
gSprites[spriteId].data2 = field6;
gSprites[spriteId].data0 = 0;
gSprites[spriteId].data7 = currMon->species;
gSprites[spriteId].callback = sub_8175120;
- gTasks[taskId].tMonSpriteID(currPokeID) = spriteId;
+ gTasks[taskId].tMonSpriteID(currMonId) = spriteId;
sub_8197434(0, 1);
- gTasks[taskId].func = sub_8173BC0;
+ gTasks[taskId].func = Task_Hof_PrintMonInfoAfterAnimating;
+}
+
+static void Task_Hof_PrintMonInfoAfterAnimating(u8 taskId)
+{
+ u16 currMonId = gTasks[taskId].tDisplayedMonId;
+ struct HallofFameMon* currMon = &gHofMonsPtr->mons[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 = &gHofMonsPtr->mons[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);
+ }
+}
+
+extern const struct WindowTemplate gUnknown_085E5380;
+
+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(&gUnknown_085E5380);
+ 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 (gUnknown_0203BCDC != NULL)
+ FREE_AND_SET_NULL(gUnknown_0203BCDC);
+ if (gHofMonsPtr != NULL)
+ FREE_AND_SET_NULL(gHofMonsPtr);
+
+ SetCallback2AfterHallOfFameDisplay();
+ }
+}
+
+static void SetCallback2AfterHallOfFameDisplay(void)
+{
+ SetMainCallback2(sub_8175620);
+}
+
+#undef tDontSaveData
+#undef tDisplayedPoke
+#undef tPokesNumber
+#undef tFrameCount
+#undef tPlayerSpriteID
+#undef tMonSpriteID
+
+#define tCurrTeamNo data[0]
+#define tCurrPageNo data[1]
+#define tCurrPokeID data[2]
+#define tPokesNo data[4]
+#define tMonSpriteID(i) data[i + 5]
+
+extern const struct HallofFameMon sDummyFameMon;
+
+void CB2_DoHallOfFamePC(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ default:
+ SetVBlankCallback(NULL);
+ sub_8174EC4();
+ gUnknown_0203BCDC = AllocZeroed(sizeof(*gUnknown_0203BCDC));
+ 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 HallofFameMons *fameMons = (struct HallofFameMons*)(gDecompressionBuffer);
+ fameMons->mons[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;
+ }
+
+ gHofMonsPtr = 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 HallofFameMons* savedTeams;
+
+ CpuCopy16(gDecompressionBuffer, gHofMonsPtr, 0x2000);
+ savedTeams = gHofMonsPtr;
+ for (i = 0; i < HALL_OF_FAME_MAX_TEAMS; i++, savedTeams++)
+ {
+ if (savedTeams->mons[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 HallofFameMons* savedTeams = gHofMonsPtr;
+ struct HallofFameMon* currMon;
+ u16 i;
+
+ for (i = 0; i < gTasks[taskID].tCurrTeamNo; i++)
+ savedTeams++;
+
+ currMon = &savedTeams->mons[0];
+ gUnknown_0203BCD4 = 0;
+ gTasks[taskID].tCurrPokeID = 0;
+ gTasks[taskID].tPokesNo = 0;
+
+ for (i = 0; i < 6; i++, currMon++)
+ {
+ if (currMon->species != 0)
+ gTasks[taskID].tPokesNo++;
+ }
+
+ currMon = &savedTeams->mons[0];
+
+ for (i = 0; i < 6; i++, currMon++)
+ {
+ if (currMon->species != 0)
+ {
+ u16 spriteID;
+ s16 posX, posY;
+
+ if (gTasks[taskID].tPokesNo > 3)
+ {
+ posX = sHallOfFame_MonsFullTeamPositions[i][2];
+ posY = sHallOfFame_MonsFullTeamPositions[i][3];
+ }
+ else
+ {
+ posX = sHallOfFame_MonsHalfTeamPositions[i][2];
+ posY = sHallOfFame_MonsHalfTeamPositions[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 HallofFameMons* savedTeams = gHofMonsPtr;
+ 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].tCurrPokeID);
+ gSprites[currMonID].oam.priority = 0;
+ gUnknown_0203BCD4 = (0x10000 << gSprites[currMonID].oam.paletteNum) ^ 0xFFFF0000;
+ BlendPalettesUnfaded(gUnknown_0203BCD4, 0xC, 0x63B0);
+
+ currMon = &savedTeams->mons[gTasks[taskID].tCurrPokeID];
+ 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].tCurrPokeID != 0) // change mon -1
+ {
+ gTasks[taskID].tCurrPokeID--;
+ gTasks[taskID].func = Task_HofPC_PrintMonInfo;
+ }
+ else if (gMain.newKeys & DPAD_DOWN && gTasks[taskID].tCurrPokeID < gTasks[taskID].tPokesNo - 1) // change mon +1
+ {
+ gTasks[taskID].tCurrPokeID++;
+ gTasks[taskID].func = Task_HofPC_PrintMonInfo;
+ }
+}
+
+static void Task_HofPC_HandlePaletteOnExit(u8 taskID)
+{
+ struct HallofFameMons* fameMons;
+
+ CpuCopy16(gPlttBufferFaded, gPlttBufferUnfaded, 0x400);
+ fameMons = (struct HallofFameMons*)(gDecompressionBuffer);
+ fameMons->mons[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 (gUnknown_0203BCDC != NULL)
+ FREE_AND_SET_NULL(gUnknown_0203BCDC);
+ if (gHofMonsPtr != NULL)
+ FREE_AND_SET_NULL(gHofMonsPtr);
+
+ 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 tCurrPokeID
+#undef tPokesNo
+#undef tMonSpriteID