summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@users.noreply.github.com>2019-11-04 20:52:41 -0500
committerGitHub <noreply@github.com>2019-11-04 20:52:41 -0500
commit9b7d57bb6b654996df7a107c145ec49b78b33c1a (patch)
tree050d0a76f4c8a7c780ab6a951f22c77bd5d12744
parent7bfa6d20587ed14cfa26b9fa81f45837abfafb26 (diff)
parent876a139ba385036ef34fde899b1caba0d7cc1f29 (diff)
Merge pull request #142 from PikalaxALT/dism_more_data
Dism more data still
-rw-r--r--asm/hall_of_fame.s3442
-rw-r--r--asm/link_rfu.s2
-rw-r--r--asm/pokemon_summary_screen.s2
-rw-r--r--asm/post_battle_event_funcs.s8
-rw-r--r--baserom.ipsbin449551 -> 448532 bytes
-rw-r--r--charmap.txt56
-rw-r--r--data/battle_message.s910
-rw-r--r--data/hall_of_fame.s43
-rw-r--r--data/link_rfu_3.s21
-rw-r--r--data/mevent/script_common.inc157
-rw-r--r--data/mevent/script_ish.inc28
-rw-r--r--data/strings.s18
-rw-r--r--graphics/hall_of_fame/unk_840C3BC.pngbin0 -> 481 bytes
-rw-r--r--include/credits.h6
-rw-r--r--include/easy_chat.h2
-rw-r--r--include/global.h22
-rw-r--r--include/graphics.h3
-rw-r--r--include/hall_of_fame.h2
-rw-r--r--include/mevent.h42
-rw-r--r--include/mevent_server.h14
-rw-r--r--include/mystery_event_script.h4
-rw-r--r--include/pokemon.h2
-rw-r--r--include/reset_save_heap.h2
-rw-r--r--include/save.h18
-rw-r--r--include/script.h2
-rw-r--r--include/strings.h14
-rw-r--r--include/trainer_pokemon_sprites.h1
-rw-r--r--ld_script.txt6
-rw-r--r--src/cereader_tool.c8
-rw-r--r--src/credits.c1
-rw-r--r--src/easy_chat.c4
-rw-r--r--src/hall_of_fame.c1293
-rw-r--r--src/hof_pc.c2
-rw-r--r--src/intro.c2
-rw-r--r--src/link.c4
-rw-r--r--src/mevent.c188
-rw-r--r--src/mevent_8145654.c8
-rw-r--r--src/mevent_client.c289
-rw-r--r--src/mevent_server.c320
-rw-r--r--src/mystery_event_script.c8
-rw-r--r--src/mystery_gift_menu.c7
-rw-r--r--src/pokemon.c3
-rw-r--r--src/quest_log.c2
-rw-r--r--src/reset_save_heap.c6
-rw-r--r--src/save.c32
-rw-r--r--src/script.c2
-rw-r--r--src/title_screen.c2
-rw-r--r--src/tm_case.c6
-rw-r--r--sym_ewram.txt26
49 files changed, 2479 insertions, 4561 deletions
diff --git a/asm/hall_of_fame.s b/asm/hall_of_fame.s
deleted file mode 100644
index 36eacbf17..000000000
--- a/asm/hall_of_fame.s
+++ /dev/null
@@ -1,3442 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80F1DAC
-sub_80F1DAC: @ 80F1DAC
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_80F1DAC
-
- thumb_func_start sub_80F1DC0
-sub_80F1DC0: @ 80F1DC0
- push {lr}
- bl RunTasks
- bl RunTextPrinters
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_80F1DC0
-
- thumb_func_start InitHallOfFameScreen
-InitHallOfFameScreen: @ 80F1DDC
- push {r4,lr}
- sub sp, 0x4
- ldr r0, _080F1DFC @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x4
- bls _080F1DF0
- b _080F1EF0
-_080F1DF0:
- lsls r0, 2
- ldr r1, _080F1E00 @ =_080F1E04
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080F1DFC: .4byte gMain
-_080F1E00: .4byte _080F1E04
- .align 2, 0
-_080F1E04:
- .4byte _080F1E18
- .4byte _080F1E50
- .4byte _080F1E56
- .4byte _080F1E88
- .4byte _080F1EC4
-_080F1E18:
- ldr r1, _080F1E40 @ =gHelpSystemEnabled
- movs r0, 0
- strb r0, [r1]
- movs r0, 0
- bl SetVBlankCallback
- bl ClearVramOamPltt_LoadHofPal
- ldr r4, _080F1E44 @ =gUnknown_203AB3C
- ldr r0, _080F1E48 @ =0x00002008
- bl AllocZeroed
- str r0, [r4]
- ldr r0, _080F1E4C @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- b _080F1EF0
- .align 2, 0
-_080F1E40: .4byte gHelpSystemEnabled
-_080F1E44: .4byte gUnknown_203AB3C
-_080F1E48: .4byte 0x00002008
-_080F1E4C: .4byte gMain
-_080F1E50:
- bl sub_80F36BC
- b _080F1EAA
-_080F1E56:
- ldr r1, _080F1E80 @ =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_80F36F8
- ldr r0, _080F1E84 @ =gUnknown_203AB3C
- ldr r1, [r0]
- movs r0, 0
- strh r0, [r1]
- b _080F1EAA
- .align 2, 0
-_080F1E80: .4byte 0x00003f42
-_080F1E84: .4byte gUnknown_203AB3C
-_080F1E88:
- bl sub_80F3770
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _080F1EF0
- ldr r0, _080F1EBC @ =sub_80F1DAC
- bl SetVBlankCallback
- movs r0, 0x1
- negs r0, r0
- str r4, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
-_080F1EAA:
- ldr r1, _080F1EC0 @ =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _080F1EF0
- .align 2, 0
-_080F1EBC: .4byte sub_80F1DAC
-_080F1EC0: .4byte gMain
-_080F1EC4:
- bl UpdatePaletteFade
- ldr r0, _080F1EE8 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080F1EF0
- ldr r0, _080F1EEC @ =sub_80F1DC0
- bl SetMainCallback2
- movs r0, 0x8F @ MUS_DENDOU >> 1
- lsls r0, 1
- bl PlayBGM
- movs r0, 0
- b _080F1EF2
- .align 2, 0
-_080F1EE8: .4byte gPaletteFade
-_080F1EEC: .4byte sub_80F1DC0
-_080F1EF0:
- movs r0, 0x1
-_080F1EF2:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end InitHallOfFameScreen
-
- thumb_func_start CB2_DoHallOfFameScreen
-CB2_DoHallOfFameScreen: @ 80F1EFC
- push {r4,lr}
- bl InitHallOfFameScreen
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _080F1F2C
- ldr r0, _080F1F34 @ =Task_Hof_InitMonData
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080F1F38 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0x8]
- ldr r4, _080F1F3C @ =gUnknown_203AB38
- movs r0, 0x78
- bl AllocZeroed
- str r0, [r4]
-_080F1F2C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F1F34: .4byte Task_Hof_InitMonData
-_080F1F38: .4byte gTasks
-_080F1F3C: .4byte gUnknown_203AB38
- thumb_func_end CB2_DoHallOfFameScreen
-
- thumb_func_start CB2_DoHallOfFameScreenDontSaveData
-CB2_DoHallOfFameScreenDontSaveData: @ 80F1F40
- push {lr}
- bl InitHallOfFameScreen
- lsls r0, 24
- cmp r0, 0
- bne _080F1F66
- ldr r0, _080F1F6C @ =Task_Hof_InitMonData
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080F1F70 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0x1
- strh r0, [r1, 0x8]
-_080F1F66:
- pop {r0}
- bx r0
- .align 2, 0
-_080F1F6C: .4byte Task_Hof_InitMonData
-_080F1F70: .4byte gTasks
- thumb_func_end CB2_DoHallOfFameScreenDontSaveData
-
- thumb_func_start Task_Hof_InitMonData
-Task_Hof_InitMonData: @ 80F1F74
- 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, _080F2050 @ =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, _080F2054 @ =gUnknown_203AB38
- mov r9, r0
-_080F1F98:
- movs r0, 0x64
- adds r1, r7, 0
- muls r1, r0
- ldr r0, _080F2058 @ =gPlayerParty
- adds r6, r1, r0
- adds r0, r6, 0
- movs r1, 0xB
- bl GetMonData
- adds r5, r0, 0
- cmp r5, 0
- beq _080F2064
- 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, _080F205C @ =0x000001ff
- adds r1, r2, 0
- ands r0, r1
- ldrh r1, [r3, 0x8]
- ldr r5, _080F2060 @ =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, _080F2054 @ =gUnknown_203AB38
-_080F2022:
- 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 _080F2022
- ldr r0, _080F2050 @ =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 _080F2098
- .align 2, 0
-_080F2050: .4byte gTasks
-_080F2054: .4byte gUnknown_203AB38
-_080F2058: .4byte gPlayerParty
-_080F205C: .4byte 0x000001ff
-_080F2060: .4byte 0xfffffe00
-_080F2064:
- 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, _080F20EC @ =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
-_080F2098:
- adds r0, r7, 0x1
- lsls r0, 16
- lsrs r7, r0, 16
- cmp r7, 0x5
- bhi _080F20A4
- b _080F1F98
-_080F20A4:
- ldr r0, _080F20F0 @ =gUnknown_203AB34
- movs r3, 0
- str r3, [r0]
- ldr r4, _080F20F4 @ =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
-_080F20C2:
- 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 _080F20C2
- 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 _080F20FC
- ldr r0, _080F20F8 @ =sub_80F2294
- b _080F20FE
- .align 2, 0
-_080F20EC: .4byte 0xfffffe00
-_080F20F0: .4byte gUnknown_203AB34
-_080F20F4: .4byte gTasks
-_080F20F8: .4byte sub_80F2294
-_080F20FC:
- ldr r0, _080F2110 @ =Task_Hof_InitTeamSaveData
-_080F20FE:
- str r0, [r1]
- add sp, 0xC
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F2110: .4byte Task_Hof_InitTeamSaveData
- thumb_func_end Task_Hof_InitMonData
-
- thumb_func_start Task_Hof_InitTeamSaveData
-Task_Hof_InitTeamSaveData: @ 80F2114
- 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, _080F2140 @ =gDecompressionBuffer
- bl sub_8112450
- ldr r0, _080F2144 @ =gUnknown_203AB44
- ldrb r0, [r0]
- cmp r0, 0
- bne _080F2148
- movs r2, 0x80
- lsls r2, 6
- adds r0, r7, 0
- movs r1, 0
- bl memset
- b _080F2162
- .align 2, 0
-_080F2140: .4byte gDecompressionBuffer
-_080F2144: .4byte gUnknown_203AB44
-_080F2148:
- movs r0, 0x3
- bl Save_LoadGameData
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080F2162
- movs r2, 0x80
- lsls r2, 6
- adds r0, r7, 0
- movs r1, 0
- bl memset
-_080F2162:
- movs r5, 0
- ldrh r1, [r7, 0x8]
- ldr r2, _080F2208 @ =0x000001ff
- adds r0, r2, 0
- ands r0, r1
- mov r1, r9
- lsls r1, 2
- mov r8, r1
- cmp r0, 0
- beq _080F218C
-_080F2176:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- adds r7, 0x78
- cmp r5, 0x31
- bhi _080F2190
- ldrh r1, [r7, 0x8]
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- bne _080F2176
-_080F218C:
- cmp r5, 0x31
- bls _080F21B2
-_080F2190:
- ldr r4, _080F220C @ =gDecompressionBuffer
- adds r6, r4, 0
- adds r4, 0x78
- movs r5, 0
- subs r7, 0x78
-_080F219A:
- 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 _080F219A
-_080F21B2:
- ldr r0, _080F2210 @ =gUnknown_203AB38
- ldr r1, [r0]
- adds r0, r7, 0
- movs r2, 0x78
- bl memcpy
- movs r0, 0
- movs r1, 0
- bl DrawDialogueFrame
- ldr r2, _080F2214 @ =gText_SavingDontTurnOffThePower2
- 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, 0x2
- movs r3, 0
- bl AddTextPrinterParameterized2
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r1, _080F2218 @ =gTasks
- mov r0, r8
- add r0, r9
- lsls r0, 3
- adds r0, r1
- ldr r1, _080F221C @ =sub_80F2220
- str r1, [r0]
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F2208: .4byte 0x000001ff
-_080F220C: .4byte gDecompressionBuffer
-_080F2210: .4byte gUnknown_203AB38
-_080F2214: .4byte gText_SavingDontTurnOffThePower2
-_080F2218: .4byte gTasks
-_080F221C: .4byte sub_80F2220
- thumb_func_end Task_Hof_InitTeamSaveData
-
- thumb_func_start sub_80F2220
-sub_80F2220: @ 80F2220
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _080F2254 @ =gGameContinueCallback
- ldr r0, _080F2258 @ =CB2_DoHallOfFameScreenDontSaveData
- str r0, [r1]
- movs r0, 0x3
- bl TrySavingData
- movs r0, 0x30
- bl PlaySE
- ldr r1, _080F225C @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _080F2260 @ =sub_80F2264
- str r1, [r0]
- movs r1, 0x20
- strh r1, [r0, 0xE]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F2254: .4byte gGameContinueCallback
-_080F2258: .4byte CB2_DoHallOfFameScreenDontSaveData
-_080F225C: .4byte gTasks
-_080F2260: .4byte sub_80F2264
- thumb_func_end sub_80F2220
-
- thumb_func_start sub_80F2264
-sub_80F2264: @ 80F2264
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080F2284 @ =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 _080F2288
- subs r0, r2, 0x1
- strh r0, [r1, 0xE]
- b _080F228C
- .align 2, 0
-_080F2284: .4byte gTasks
-_080F2288:
- ldr r0, _080F2290 @ =sub_80F2294
- str r0, [r1]
-_080F228C:
- pop {r0}
- bx r0
- .align 2, 0
-_080F2290: .4byte sub_80F2294
- thumb_func_end sub_80F2264
-
- thumb_func_start sub_80F2294
-sub_80F2294: @ 80F2294
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080F22A8 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r0, _080F22AC @ =sub_80F22B0
- str r0, [r1]
- bx lr
- .align 2, 0
-_080F22A8: .4byte gTasks
-_080F22AC: .4byte sub_80F22B0
- thumb_func_end sub_80F2294
-
- thumb_func_start sub_80F22B0
-sub_80F22B0: @ 80F22B0
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x10
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, _080F22E4 @ =gTasks
- lsls r1, r7, 2
- adds r1, r7
- lsls r1, 3
- adds r1, r0
- ldrh r6, [r1, 0xA]
- ldr r2, _080F22E8 @ =gUnknown_203AB38
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 2
- ldr r2, [r2]
- adds r4, r2, r0
- movs r2, 0xC
- ldrsh r0, [r1, r2]
- cmp r0, 0x3
- ble _080F22F0
- ldr r1, _080F22EC @ =gUnknown_840C268
- b _080F22F2
- .align 2, 0
-_080F22E4: .4byte gTasks
-_080F22E8: .4byte gUnknown_203AB38
-_080F22EC: .4byte gUnknown_840C268
-_080F22F0:
- ldr r1, _080F2388 @ =gUnknown_840C298
-_080F22F2:
- lsls r2, r6, 3
- adds r0, r2, r1
- ldrh r3, [r0]
- adds r0, r1, 0x2
- adds r0, r2, r0
- ldrh r5, [r0]
- adds r0, r1, 0x4
- adds r0, r2, r0
- ldrh r0, [r0]
- mov r9, r0
- adds r1, 0x6
- adds r2, r1
- ldrh r2, [r2]
- mov r8, r2
- ldrh r0, [r4, 0x8]
- lsls r0, 23
- lsrs r0, 23
- ldr r1, [r4]
- ldr r2, [r4, 0x4]
- lsls r3, 16
- asrs r3, 16
- str r3, [sp]
- lsls r3, r5, 16
- asrs r3, 16
- str r3, [sp, 0x4]
- lsls r3, r6, 24
- lsrs r3, 24
- str r3, [sp, 0x8]
- ldr r3, _080F238C @ =0x0000ffff
- str r3, [sp, 0xC]
- movs r3, 0x1
- bl CreateMonPicSprite_HandleDeoxys
- lsls r0, 24
- lsrs r0, 24
- ldr r3, _080F2390 @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r2, r1, r3
- movs r4, 0
- mov r5, r9
- strh r5, [r2, 0x30]
- mov r5, r8
- strh r5, [r2, 0x32]
- strh r4, [r2, 0x2E]
- adds r3, 0x1C
- adds r1, r3
- ldr r2, _080F2394 @ =sub_80F3870
- str r2, [r1]
- ldr r5, _080F2398 @ =gTasks
- adds r1, r6, 0x5
- lsls r1, 1
- lsls r4, r7, 2
- adds r4, r7
- 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 ClearDialogWindowAndFrame
- adds r4, r5
- ldr r0, _080F239C @ =sub_80F23A0
- str r0, [r4]
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F2388: .4byte gUnknown_840C298
-_080F238C: .4byte 0x0000ffff
-_080F2390: .4byte gSprites
-_080F2394: .4byte sub_80F3870
-_080F2398: .4byte gTasks
-_080F239C: .4byte sub_80F23A0
- thumb_func_end sub_80F22B0
-
- thumb_func_start sub_80F23A0
-sub_80F23A0: @ 80F23A0
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r4, _080F2410 @ =gTasks
- lsls r3, r0, 2
- adds r3, r0
- lsls r3, 3
- adds r5, r3, r4
- ldrh r1, [r5, 0xA]
- ldr r2, _080F2414 @ =gUnknown_203AB38
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- ldr r2, [r2]
- adds r6, r2, r0
- ldr r2, _080F2418 @ =gSprites
- adds r1, 0x5
- lsls r1, 1
- adds r1, r3
- adds r4, 0x8
- adds r1, r4
- movs r0, 0
- ldrsh r1, [r1, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0x2E
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _080F2408
- ldrh r2, [r6, 0x8]
- ldr r0, _080F241C @ =0x000001ff
- ands r0, r2
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _080F23F6
- lsls r0, r2, 23
- lsrs r0, 23
- movs r1, 0
- bl PlayCry1
-_080F23F6:
- adds r0, r6, 0
- movs r1, 0
- movs r2, 0xE
- bl sub_80F3194
- movs r0, 0x78
- strh r0, [r5, 0xE]
- ldr r0, _080F2420 @ =Task_Hof_TryDisplayAnotherMon
- str r0, [r5]
-_080F2408:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080F2410: .4byte gTasks
-_080F2414: .4byte gUnknown_203AB38
-_080F2418: .4byte gSprites
-_080F241C: .4byte 0x000001ff
-_080F2420: .4byte Task_Hof_TryDisplayAnotherMon
- thumb_func_end sub_80F23A0
-
- thumb_func_start Task_Hof_TryDisplayAnotherMon
-Task_Hof_TryDisplayAnotherMon: @ 80F2424
- 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, _080F2460 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r6, r0, 3
- adds r4, r6, r2
- ldrh r3, [r4, 0xA]
- ldr r1, _080F2464 @ =gUnknown_203AB38
- 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 _080F2468
- subs r0, r1, 0x1
- strh r0, [r4, 0xE]
- b _080F2500
- .align 2, 0
-_080F2460: .4byte gTasks
-_080F2464: .4byte gUnknown_203AB38
-_080F2468:
- ldr r2, _080F24E0 @ =gUnknown_203AB34
- ldr r0, _080F24E4 @ =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 _080F24F4
- mov r7, r9
- ldrh r1, [r7, 0x1C]
- ldr r0, _080F24E8 @ =0x000001ff
- ands r0, r1
- cmp r0, 0
- beq _080F24F4
- adds r0, r2, 0x1
- strh r0, [r4, 0xA]
- ldr r0, _080F24EC @ =0x00007716
- 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, _080F24F0 @ =sub_80F22B0
- str r0, [r4]
- b _080F2500
- .align 2, 0
-_080F24E0: .4byte gUnknown_203AB34
-_080F24E4: .4byte gSprites
-_080F24E8: .4byte 0x000001ff
-_080F24EC: .4byte 0x00007716
-_080F24F0: .4byte sub_80F22B0
-_080F24F4:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- add r0, r12
- ldr r1, _080F2510 @ =Task_Hof_PaletteFadeAndPrintWelcomeText
- str r1, [r0]
-_080F2500:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F2510: .4byte Task_Hof_PaletteFadeAndPrintWelcomeText
- thumb_func_end Task_Hof_TryDisplayAnotherMon
-
- thumb_func_start Task_Hof_PaletteFadeAndPrintWelcomeText
-Task_Hof_PaletteFadeAndPrintWelcomeText: @ 80F2514
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080F259C @ =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, _080F25A0 @ =gTasks+0x8
- mov r12, r0
- mov r8, r1
- ldr r6, _080F25A4 @ =gSprites
- movs r7, 0xD
- negs r7, r7
-_080F2542:
- 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 _080F2564
- 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]
-_080F2564:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x5
- bls _080F2542
- movs r0, 0
- movs r1, 0xF
- bl HallOfFame_PrintWelcomeText
- movs r0, 0x62
- bl PlaySE
- ldr r1, _080F25A8 @ =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, _080F25AC @ =sub_80F25B0
- str r1, [r0]
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F259C: .4byte 0xffff0000
-_080F25A0: .4byte gTasks+0x8
-_080F25A4: .4byte gSprites
-_080F25A8: .4byte gTasks
-_080F25AC: .4byte sub_80F25B0
- thumb_func_end Task_Hof_PaletteFadeAndPrintWelcomeText
-
- thumb_func_start sub_80F25B0
-sub_80F25B0: @ 80F25B0
- 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, _080F25F0 @ =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 _080F25F4
- subs r2, 0x1
- strh r2, [r1, 0xE]
- movs r0, 0x3
- ands r0, r2
- cmp r0, 0
- bne _080F266E
- lsls r0, r2, 16
- asrs r0, 16
- cmp r0, 0x6E
- ble _080F266E
- bl sub_80F3930
- b _080F266E
- .align 2, 0
-_080F25F0: .4byte gTasks
-_080F25F4:
- movs r3, 0
- mov r9, r4
- ldr r0, _080F2680 @ =gUnknown_203AB34
- mov r10, r0
- adds r4, r5, 0
- adds r7, 0x8
- mov r8, r7
- ldr r7, _080F2684 @ =gSprites
- movs r1, 0xD
- negs r1, r1
- mov r12, r1
- movs r5, 0x4
-_080F260C:
- 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 _080F2630
- 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]
-_080F2630:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x5
- bls _080F260C
- mov r3, r10
- ldr r0, [r3]
- ldr r1, _080F2688 @ =0x00007716
- 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, _080F268C @ =gTasks
- mov r2, r9
- adds r0, r2, r6
- lsls r0, 3
- adds r0, r1
- movs r1, 0x7
- strh r1, [r0, 0xE]
- ldr r1, _080F2690 @ =sub_80F2694
- str r1, [r0]
-_080F266E:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F2680: .4byte gUnknown_203AB34
-_080F2684: .4byte gSprites
-_080F2688: .4byte 0x00007716
-_080F268C: .4byte gTasks
-_080F2690: .4byte sub_80F2694
- thumb_func_end sub_80F25B0
-
- thumb_func_start sub_80F2694
-sub_80F2694: @ 80F2694
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080F26B4 @ =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 _080F26BC
- ldr r0, _080F26B8 @ =sub_80F26D4
- str r0, [r1]
- b _080F26CE
- .align 2, 0
-_080F26B4: .4byte gTasks
-_080F26B8: .4byte sub_80F26D4
-_080F26BC:
- 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
-_080F26CE:
- pop {r0}
- bx r0
- thumb_func_end sub_80F2694
-
- thumb_func_start sub_80F26D4
-sub_80F26D4: @ 80F26D4
- push {r4,r5,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 r0, _080F2748 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- movs r1, 0x1
- bl PlayerGenderToFrontTrainerPicId_Debug
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x6
- str r1, [sp]
- ldr r1, _080F274C @ =0x0000ffff
- str r1, [sp, 0x4]
- movs r1, 0x1
- movs r2, 0x78
- movs r3, 0x48
- bl CreateTrainerPicSprite
- ldr r1, _080F2750 @ =gTasks
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- adds r4, r1
- strh r0, [r4, 0x10]
- ldr r0, _080F2754 @ =gUnknown_840C234
- bl AddWindow
- ldr r1, _080F2758 @ =0x0000021d
- movs r0, 0x1
- movs r2, 0xD0
- bl TextWindow_SetStdFrame0_WithPal
- movs r0, 0x78
- strh r0, [r4, 0xE]
- ldr r0, _080F275C @ =Task_Hof_WaitAndPrintPlayerInfo
- str r0, [r4]
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F2748: .4byte gSaveBlock2Ptr
-_080F274C: .4byte 0x0000ffff
-_080F2750: .4byte gTasks
-_080F2754: .4byte gUnknown_840C234
-_080F2758: .4byte 0x0000021d
-_080F275C: .4byte Task_Hof_WaitAndPrintPlayerInfo
- thumb_func_end sub_80F26D4
-
- thumb_func_start Task_Hof_WaitAndPrintPlayerInfo
-Task_Hof_WaitAndPrintPlayerInfo: @ 80F2760
- push {r4,r5,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080F2784 @ =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 _080F2788
- subs r0, 0x1
- strh r0, [r4, 0xE]
- b _080F27F4
- .align 2, 0
-_080F2784: .4byte gTasks
-_080F2788:
- ldr r2, _080F27A8 @ =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 _080F27AC
- adds r0, r2, 0x1
- strh r0, [r1, 0x20]
- b _080F27F4
- .align 2, 0
-_080F27A8: .4byte gSprites
-_080F27AC:
- 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_80F33DC
- movs r0, 0
- movs r1, 0
- bl DrawDialogueFrame
- ldr r2, _080F27FC @ =gUnknown_84160C8
- 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, 0x2
- movs r3, 0
- bl AddTextPrinterParameterized2
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r0, _080F2800 @ =Task_Hof_ExitOnKeyPressed
- str r0, [r4]
-_080F27F4:
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F27FC: .4byte gUnknown_84160C8
-_080F2800: .4byte Task_Hof_ExitOnKeyPressed
- thumb_func_end Task_Hof_WaitAndPrintPlayerInfo
-
- thumb_func_start Task_Hof_ExitOnKeyPressed
-Task_Hof_ExitOnKeyPressed: @ 80F2804
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080F2830 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080F282A
- movs r0, 0x4
- bl FadeOutBGM
- ldr r0, _080F2834 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _080F2838 @ =Task_Hof_HandlePaletteOnExit
- str r0, [r1]
-_080F282A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F2830: .4byte gMain
-_080F2834: .4byte gTasks
-_080F2838: .4byte Task_Hof_HandlePaletteOnExit
- thumb_func_end Task_Hof_ExitOnKeyPressed
-
- thumb_func_start Task_Hof_HandlePaletteOnExit
-Task_Hof_HandlePaletteOnExit: @ 80F283C
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080F287C @ =gPlttBufferFaded
- ldr r1, _080F2880 @ =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, _080F2884 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _080F2888 @ =Task_Hof_HandleExit
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F287C: .4byte gPlttBufferFaded
-_080F2880: .4byte gPlttBufferUnfaded
-_080F2884: .4byte gTasks
-_080F2888: .4byte Task_Hof_HandleExit
- thumb_func_end Task_Hof_HandlePaletteOnExit
-
- thumb_func_start Task_Hof_HandleExit
-Task_Hof_HandleExit: @ 80F288C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _080F2924 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080F291E
- lsls r7, r6, 2
- ldr r1, _080F2928 @ =gTasks
- adds r0, r7, r6
- lsls r0, 3
- adds r1, 0x12
- adds r4, r0, r1
- movs r5, 0x5
-_080F28AC:
- ldrb r0, [r4]
- cmp r0, 0xFF
- beq _080F28B6
- bl FreeAndDestroyMonPicSprite
-_080F28B6:
- adds r4, 0x2
- subs r5, 0x1
- cmp r5, 0
- bge _080F28AC
- ldr r0, _080F2928 @ =gTasks
- adds r1, r7, r6
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x10]
- bl FreeAndDestroyTrainerPicSprite
- 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, r6, 0
- bl DestroyTask
- ldr r4, _080F292C @ =gUnknown_203AB3C
- ldr r0, [r4]
- cmp r0, 0
- beq _080F290A
- bl Free
- movs r0, 0
- str r0, [r4]
-_080F290A:
- ldr r4, _080F2930 @ =gUnknown_203AB38
- ldr r0, [r4]
- cmp r0, 0
- beq _080F291A
- bl Free
- movs r0, 0
- str r0, [r4]
-_080F291A:
- bl sub_80F2934
-_080F291E:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F2924: .4byte gPaletteFade
-_080F2928: .4byte gTasks
-_080F292C: .4byte gUnknown_203AB3C
-_080F2930: .4byte gUnknown_203AB38
- thumb_func_end Task_Hof_HandleExit
-
- thumb_func_start sub_80F2934
-sub_80F2934: @ 80F2934
- push {lr}
- sub sp, 0x4
- ldr r0, _080F2970 @ =0x00004085
- movs r1, 0x1
- bl VarSet
- movs r0, 0x80
- lsls r0, 7
- bl FlagSet
- ldr r1, _080F2974 @ =gDisableMapMusicChangeOnMapLoad
- movs r0, 0x2
- strb r0, [r1]
- movs r2, 0x1
- negs r2, r2
- movs r0, 0x6
- str r0, [sp]
- movs r0, 0x3 @ MAP_GROUP(INDIGO_PLATEAU_EXTERIOR)
- movs r1, 0x9 @ MAP_NUM(INDIGO_PLATEAU_EXTERIOR)
- movs r3, 0xB
- bl SetWarpDestination
- bl DoWarp
- bl ResetInitialPlayerAvatarState
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_080F2970: .4byte 0x00004085
-_080F2974: .4byte gDisableMapMusicChangeOnMapLoad
- thumb_func_end sub_80F2934
-
- thumb_func_start sub_80F2978
-sub_80F2978: @ 80F2978
- push {r4,lr}
- ldr r0, _080F2994 @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x5
- bhi _080F29B4
- lsls r0, 2
- ldr r1, _080F2998 @ =_080F299C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080F2994: .4byte gMain
-_080F2998: .4byte _080F299C
- .align 2, 0
-_080F299C:
- .4byte _080F29B4
- .4byte _080F29E4
- .4byte _080F29EA
- .4byte _080F2A08
- .4byte _080F2A28
- .4byte _080F2A58
-_080F29B4:
- movs r0, 0
- bl SetVBlankCallback
- bl ClearVramOamPltt_LoadHofPal
- ldr r4, _080F29D8 @ =gUnknown_203AB3C
- ldr r0, _080F29DC @ =0x00002008
- bl AllocZeroed
- str r0, [r4]
- ldr r0, _080F29E0 @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- b _080F2A8C
- .align 2, 0
-_080F29D8: .4byte gUnknown_203AB3C
-_080F29DC: .4byte 0x00002008
-_080F29E0: .4byte gMain
-_080F29E4:
- bl sub_80F36BC
- b _080F2A42
-_080F29EA:
- 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_80F36F8
- b _080F2A42
-_080F2A08:
- bl sub_80F3770
- lsls r0, 24
- cmp r0, 0
- bne _080F2A8C
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl sub_80A0A48
- ldr r0, _080F2A24 @ =sub_80F1DAC
- bl SetVBlankCallback
- b _080F2A42
- .align 2, 0
-_080F2A24: .4byte sub_80F1DAC
-_080F2A28:
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- bl sub_80A0A98
- lsls r0, 24
- cmp r0, 0
- bne _080F2A8C
-_080F2A42:
- ldr r1, _080F2A54 @ =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _080F2A8C
- .align 2, 0
-_080F2A54: .4byte gMain
-_080F2A58:
- ldr r1, _080F2A94 @ =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, _080F2A98 @ =sub_80F2AA4
- movs r1, 0
- bl CreateTask
- ldr r4, _080F2A9C @ =gUnknown_203AB38
- movs r0, 0x80
- lsls r0, 6
- bl AllocZeroed
- str r0, [r4]
- ldr r0, _080F2AA0 @ =sub_80F1DC0
- bl SetMainCallback2
-_080F2A8C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F2A94: .4byte 0x00003f42
-_080F2A98: .4byte sub_80F2AA4
-_080F2A9C: .4byte gUnknown_203AB38
-_080F2AA0: .4byte sub_80F1DC0
- thumb_func_end sub_80F2978
-
- thumb_func_start sub_80F2AA4
-sub_80F2AA4: @ 80F2AA4
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _080F2AD8 @ =0x00000226
- str r0, [sp]
- movs r0, 0
- movs r1, 0x1E
- movs r2, 0
- movs r3, 0xC
- bl CreateTopBarWindowLoadPalette
- movs r0, 0x3
- bl Save_LoadGameData
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080F2AE4
- ldr r0, _080F2ADC @ =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- ldr r0, _080F2AE0 @ =sub_80F30A4
- b _080F2B5A
- .align 2, 0
-_080F2AD8: .4byte 0x00000226
-_080F2ADC: .4byte gTasks
-_080F2AE0: .4byte sub_80F30A4
-_080F2AE4:
- ldr r0, _080F2B2C @ =gDecompressionBuffer
- ldr r4, _080F2B30 @ =gUnknown_203AB38
- ldr r1, [r4]
- movs r2, 0x80
- lsls r2, 5
- bl CpuSet
- ldr r4, [r4]
- movs r2, 0
- ldrh r1, [r4, 0x8]
- ldr r3, _080F2B34 @ =0x000001ff
- adds r0, r3, 0
- ands r0, r1
- lsls r5, r6, 2
- cmp r0, 0
- beq _080F2B1A
-_080F2B04:
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- adds r4, 0x78
- cmp r2, 0x31
- bhi _080F2B3C
- ldrh r1, [r4, 0x8]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- bne _080F2B04
-_080F2B1A:
- cmp r2, 0x31
- bhi _080F2B3C
- ldr r0, _080F2B38 @ =gTasks
- adds r1, r5, r6
- lsls r1, 3
- adds r1, r0
- subs r0, r2, 0x1
- b _080F2B46
- .align 2, 0
-_080F2B2C: .4byte gDecompressionBuffer
-_080F2B30: .4byte gUnknown_203AB38
-_080F2B34: .4byte 0x000001ff
-_080F2B38: .4byte gTasks
-_080F2B3C:
- ldr r0, _080F2B64 @ =gTasks
- adds r1, r5, r6
- lsls r1, 3
- adds r1, r0
- movs r0, 0x31
-_080F2B46:
- strh r0, [r1, 0x8]
- movs r0, 0xA
- bl GetGameStat
- ldr r2, _080F2B64 @ =gTasks
- adds r1, r5, r6
- lsls r1, 3
- adds r1, r2
- strh r0, [r1, 0xA]
- ldr r0, _080F2B68 @ =sub_80F2B6C
-_080F2B5A:
- str r0, [r1]
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080F2B64: .4byte gTasks
-_080F2B68: .4byte sub_80F2B6C
- thumb_func_end sub_80F2AA4
-
- thumb_func_start sub_80F2B6C
-sub_80F2B6C: @ 80F2B6C
- 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 r9, r0
- ldr r0, _080F2C24 @ =gUnknown_203AB38
- ldr r3, [r0]
- movs r5, 0
- ldr r1, _080F2C28 @ =gTasks
- mov r2, r9
- lsls r0, r2, 2
- add r0, r9
- lsls r0, 3
- adds r0, r1
- movs r4, 0x8
- ldrsh r0, [r0, r4]
- adds r4, r1, 0
- ldr r2, _080F2C2C @ =gUnknown_203AB34
- cmp r5, r0
- bge _080F2BAA
- adds r1, r0, 0
-_080F2B9E:
- adds r3, 0x78
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, r1
- blt _080F2B9E
-_080F2BAA:
- adds r6, r3, 0
- movs r0, 0
- str r0, [r2]
- mov r5, r9
- 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, _080F2C30 @ =0x000001ff
- adds r2, r1, 0
-_080F2BC6:
- ldrh r1, [r6, 0x8]
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- beq _080F2BD6
- ldrh r0, [r2, 0x10]
- adds r0, 0x1
- strh r0, [r2, 0x10]
-_080F2BD6:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- adds r6, 0x14
- cmp r5, 0x5
- bls _080F2BC6
- adds r6, r3, 0
- movs r5, 0
- ldr r1, _080F2C28 @ =gTasks
- ldr r0, [sp, 0x14]
- add r0, r9
- lsls r0, 3
- mov r8, r0
- adds r0, r1
- str r0, [sp, 0x10]
- adds r1, 0x8
- mov r10, r1
-_080F2BF8:
- ldrh r1, [r6, 0x8]
- ldr r2, _080F2C30 @ =0x000001ff
- adds r0, r2, 0
- ands r0, r1
- adds r7, r1, 0
- cmp r0, 0
- beq _080F2CA8
- ldr r4, [sp, 0x10]
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- cmp r0, 0x3
- ble _080F2C3C
- lsls r1, r5, 3
- ldr r0, _080F2C34 @ =gUnknown_840C268
- adds r0, 0x4
- adds r0, r1, r0
- ldrh r3, [r0]
- ldr r2, _080F2C38 @ =gUnknown_840C26E
- adds r1, r2
- ldrh r4, [r1]
- b _080F2C4C
- .align 2, 0
-_080F2C24: .4byte gUnknown_203AB38
-_080F2C28: .4byte gTasks
-_080F2C2C: .4byte gUnknown_203AB34
-_080F2C30: .4byte 0x000001ff
-_080F2C34: .4byte gUnknown_840C268
-_080F2C38: .4byte gUnknown_840C26E
-_080F2C3C:
- ldr r0, _080F2C9C @ =gUnknown_840C298
- lsls r2, r5, 3
- adds r1, r0, 0x4
- adds r1, r2, r1
- ldrh r3, [r1]
- adds r0, 0x6
- adds r2, r0
- ldrh r4, [r2]
-_080F2C4C:
- 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, _080F2CA0 @ =0x0000ffff
- str r3, [sp, 0xC]
- movs r3, 0x1
- bl CreateMonPicSprite_HandleDeoxys
- lsls r0, 16
- lsrs r0, 16
- ldr r2, _080F2CA4 @ =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, r8
- add r1, r10
- strh r0, [r1]
- b _080F2CB4
- .align 2, 0
-_080F2C9C: .4byte gUnknown_840C298
-_080F2CA0: .4byte 0x0000ffff
-_080F2CA4: .4byte gSprites
-_080F2CA8:
- adds r0, r5, 0x5
- lsls r0, 1
- add r0, r8
- add r0, r10
- movs r1, 0xFF
- strh r1, [r0]
-_080F2CB4:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- adds r6, 0x14
- cmp r5, 0x5
- bls _080F2BF8
- ldr r0, _080F2D08 @ =0xffff0000
- ldr r2, _080F2D0C @ =0x00007716
- movs r1, 0xC
- bl BlendPalettes
- ldr r0, _080F2D10 @ =gStringVar1
- ldr r1, _080F2D14 @ =gTasks
- ldr r4, [sp, 0x14]
- add r4, r9
- lsls r4, 3
- adds r4, r1
- movs r5, 0xA
- ldrsh r1, [r4, r5]
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r5, _080F2D18 @ =gStringVar4
- ldr r1, _080F2D1C @ =gUnknown_84160B4
- adds r0, r5, 0
- bl StringExpandPlaceholders
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bgt _080F2D24
- ldr r1, _080F2D20 @ =gText_UPDOWNPick_ABUTTONBBUTTONCancel
- movs r0, 0x1
- str r0, [sp]
- adds r0, r5, 0
- movs r2, 0
- movs r3, 0
- bl TopBarWindowPrintTwoStrings
- b _080F2D34
- .align 2, 0
-_080F2D08: .4byte 0xffff0000
-_080F2D0C: .4byte 0x00007716
-_080F2D10: .4byte gStringVar1
-_080F2D14: .4byte gTasks
-_080F2D18: .4byte gStringVar4
-_080F2D1C: .4byte gUnknown_84160B4
-_080F2D20: .4byte gText_UPDOWNPick_ABUTTONBBUTTONCancel
-_080F2D24:
- ldr r1, _080F2D54 @ =gText_UPDOWNPick_ABUTTONNext_BBUTTONBack
- movs r0, 0x1
- str r0, [sp]
- adds r0, r5, 0
- movs r2, 0
- movs r3, 0
- bl TopBarWindowPrintTwoStrings
-_080F2D34:
- ldr r0, _080F2D58 @ =gTasks
- ldr r1, [sp, 0x14]
- add r1, r9
- lsls r1, 3
- adds r1, r0
- ldr r0, _080F2D5C @ =Task_HofPC_PrintMonInfo
- 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
- .align 2, 0
-_080F2D54: .4byte gText_UPDOWNPick_ABUTTONNext_BBUTTONBack
-_080F2D58: .4byte gTasks
-_080F2D5C: .4byte Task_HofPC_PrintMonInfo
- thumb_func_end sub_80F2B6C
-
- thumb_func_start Task_HofPC_PrintMonInfo
-Task_HofPC_PrintMonInfo: @ 80F2D60
- 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, _080F2E68 @ =gUnknown_203AB38
- ldr r5, [r0]
- movs r3, 0
- ldr r1, _080F2E6C @ =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 _080F2D94
- adds r1, r0, 0
-_080F2D88:
- adds r5, 0x78
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, r1
- blt _080F2D88
-_080F2D94:
- movs r3, 0
- lsls r7, r4, 2
- adds r0, r7, r4
- lsls r6, r0, 3
- ldr r0, _080F2E70 @ =gTasks+0x8
- mov r10, r0
- ldr r1, _080F2E74 @ =gSprites
- mov r8, r1
- movs r2, 0xD
- negs r2, r2
- mov r9, r2
- movs r0, 0x4
- mov r12, r0
-_080F2DAE:
- adds r0, r3, 0x5
- lsls r0, 1
- adds r0, r6
- add r0, r10
- ldrh r1, [r0]
- cmp r1, 0xFF
- beq _080F2DD0
- 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]
-_080F2DD0:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x5
- bls _080F2DAE
- adds r1, r7, r4
- lsls r1, 3
- ldr r0, _080F2E6C @ =gTasks
- adds r6, r1, r0
- movs r2, 0xC
- ldrsh r0, [r6, r2]
- adds r0, 0x5
- lsls r0, 1
- adds r0, r1
- ldr r1, _080F2E6C @ =gTasks
- adds r1, 0x8
- adds r0, r1
- ldrh r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080F2E74 @ =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, _080F2E78 @ =0xffff0000
- eors r0, r1
- ldr r2, _080F2E7C @ =gUnknown_203AB34
- str r0, [r2]
- ldr r2, _080F2E80 @ =0x00007716
- 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, _080F2E84 @ =0x000001ff
- ands r0, r1
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _080F2E4A
- bl StopCryAndClearCrySongs
- ldrh r0, [r4, 0x8]
- lsls r0, 23
- lsrs r0, 23
- movs r1, 0
- bl PlayCry1
-_080F2E4A:
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0xE
- bl sub_80F3194
- ldr r0, _080F2E88 @ =Task_HofPC_HandleInput
- str r0, [r6]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F2E68: .4byte gUnknown_203AB38
-_080F2E6C: .4byte gTasks
-_080F2E70: .4byte gTasks+0x8
-_080F2E74: .4byte gSprites
-_080F2E78: .4byte 0xffff0000
-_080F2E7C: .4byte gUnknown_203AB34
-_080F2E80: .4byte 0x00007716
-_080F2E84: .4byte 0x000001ff
-_080F2E88: .4byte Task_HofPC_HandleInput
- thumb_func_end Task_HofPC_PrintMonInfo
-
- thumb_func_start Task_HofPC_HandleInput
-Task_HofPC_HandleInput: @ 80F2E8C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080F2F00 @ =gMain
- ldrh r2, [r1, 0x2E]
- movs r0, 0x1
- ands r0, r2
- adds r3, r1, 0
- cmp r0, 0
- beq _080F2F38
- ldr r7, _080F2F04 @ =gTasks
- lsls r0, r5, 2
- adds r1, r0, r5
- lsls r3, r1, 3
- adds r4, r3, r7
- ldrh r2, [r4, 0x8]
- movs r6, 0x8
- ldrsh r1, [r4, r6]
- mov r8, r0
- cmp r1, 0
- beq _080F2F0C
- subs r0, r2, 0x1
- strh r0, [r4, 0x8]
- movs r4, 0
- adds r6, r3, 0
- adds r7, 0x8
-_080F2EC4:
- adds r0, r4, 0x5
- lsls r0, 1
- adds r0, r6
- adds r0, r7
- ldrb r0, [r0]
- cmp r0, 0xFF
- beq _080F2ED6
- bl FreeAndDestroyMonPicSprite
-_080F2ED6:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x5
- bls _080F2EC4
- ldr r0, _080F2F04 @ =gTasks
- mov r2, r8
- adds r1, r2, r5
- lsls r1, 3
- adds r1, r0
- ldrh r2, [r1, 0xA]
- movs r3, 0xA
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _080F2EF8
- subs r0, r2, 0x1
- strh r0, [r1, 0xA]
-_080F2EF8:
- ldr r0, _080F2F08 @ =sub_80F2B6C
- str r0, [r1]
- b _080F2FD8
- .align 2, 0
-_080F2F00: .4byte gMain
-_080F2F04: .4byte gTasks
-_080F2F08: .4byte sub_80F2B6C
-_080F2F0C:
- bl IsCryPlayingOrClearCrySongs
- lsls r0, 24
- cmp r0, 0
- beq _080F2F26
- bl StopCryAndClearCrySongs
- ldr r0, _080F2F2C @ =gMPlayInfo_BGM
- ldr r1, _080F2F30 @ =0x0000ffff
- movs r2, 0x80
- lsls r2, 1
- bl m4aMPlayVolumeControl
-_080F2F26:
- ldr r0, _080F2F34 @ =sub_80F2FEC
- str r0, [r4]
- b _080F2FD8
- .align 2, 0
-_080F2F2C: .4byte gMPlayInfo_BGM
-_080F2F30: .4byte 0x0000ffff
-_080F2F34: .4byte sub_80F2FEC
-_080F2F38:
- movs r0, 0x2
- ands r0, r2
- cmp r0, 0
- beq _080F2F7C
- bl IsCryPlayingOrClearCrySongs
- lsls r0, 24
- cmp r0, 0
- beq _080F2F5A
- bl StopCryAndClearCrySongs
- ldr r0, _080F2F6C @ =gMPlayInfo_BGM
- ldr r1, _080F2F70 @ =0x0000ffff
- movs r2, 0x80
- lsls r2, 1
- bl m4aMPlayVolumeControl
-_080F2F5A:
- ldr r0, _080F2F74 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, _080F2F78 @ =sub_80F2FEC
- str r0, [r1]
- b _080F2FD8
- .align 2, 0
-_080F2F6C: .4byte gMPlayInfo_BGM
-_080F2F70: .4byte 0x0000ffff
-_080F2F74: .4byte gTasks
-_080F2F78: .4byte sub_80F2FEC
-_080F2F7C:
- movs r0, 0x40
- ands r0, r2
- cmp r0, 0
- beq _080F2FAC
- ldr r0, _080F2FA4 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldrh r2, [r1, 0xC]
- movs r4, 0xC
- ldrsh r0, [r1, r4]
- cmp r0, 0
- beq _080F2FAC
- subs r0, r2, 0x1
- strh r0, [r1, 0xC]
- ldr r0, _080F2FA8 @ =Task_HofPC_PrintMonInfo
- str r0, [r1]
- b _080F2FD8
- .align 2, 0
-_080F2FA4: .4byte gTasks
-_080F2FA8: .4byte Task_HofPC_PrintMonInfo
-_080F2FAC:
- ldrh r1, [r3, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080F2FD8
- ldr r1, _080F2FE4 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r2, r0, r1
- movs r6, 0xC
- ldrsh r1, [r2, r6]
- movs r3, 0x10
- ldrsh r0, [r2, r3]
- subs r0, 0x1
- cmp r1, r0
- bge _080F2FD8
- ldrh r0, [r2, 0xC]
- adds r0, 0x1
- strh r0, [r2, 0xC]
- ldr r0, _080F2FE8 @ =Task_HofPC_PrintMonInfo
- str r0, [r2]
-_080F2FD8:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F2FE4: .4byte gTasks
-_080F2FE8: .4byte Task_HofPC_PrintMonInfo
- thumb_func_end Task_HofPC_HandleInput
-
- thumb_func_start sub_80F2FEC
-sub_80F2FEC: @ 80F2FEC
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080F3020 @ =gPlttBufferFaded
- ldr r1, _080F3024 @ =gPlttBufferUnfaded
- movs r2, 0x80
- lsls r2, 2
- bl CpuSet
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl sub_80A0A70
- ldr r1, _080F3028 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _080F302C @ =sub_80F3030
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F3020: .4byte gPlttBufferFaded
-_080F3024: .4byte gPlttBufferUnfaded
-_080F3028: .4byte gTasks
-_080F302C: .4byte sub_80F3030
- thumb_func_end sub_80F2FEC
-
- thumb_func_start sub_80F3030
-sub_80F3030: @ 80F3030
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- bl sub_80A0AAC
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _080F3094
- movs r0, 0
- bl HideBg
- movs r0, 0x1
- bl HideBg
- movs r0, 0x3
- bl HideBg
- bl DestroyTopBarWindow
- bl FreeAllWindowBuffers
- movs r0, 0x1
- bl UnsetBgTilemapBuffer
- movs r0, 0x3
- bl UnsetBgTilemapBuffer
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- adds r0, r5, 0
- bl DestroyTask
- ldr r5, _080F309C @ =gUnknown_203AB3C
- ldr r0, [r5]
- cmp r0, 0
- beq _080F3082
- bl Free
- str r4, [r5]
-_080F3082:
- ldr r5, _080F30A0 @ =gUnknown_203AB38
- ldr r0, [r5]
- cmp r0, 0
- beq _080F3090
- bl Free
- str r4, [r5]
-_080F3090:
- bl ReturnFromHallOfFamePC
-_080F3094:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F309C: .4byte gUnknown_203AB3C
-_080F30A0: .4byte gUnknown_203AB38
- thumb_func_end sub_80F3030
-
- thumb_func_start sub_80F30A4
-sub_80F30A4: @ 80F30A4
- push {r4,lr}
- sub sp, 0x10
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080F30FC @ =gText_ABUTTONExit
- movs r1, 0x8
- movs r2, 0x1
- bl TopBarWindowPrintString
- movs r0, 0
- movs r1, 0
- bl DrawDialogueFrame
- ldr r2, _080F3100 @ =gUnknown_8416090
- 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, 0x2
- movs r3, 0
- bl AddTextPrinterParameterized2
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r1, _080F3104 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _080F3108 @ =Task_HofPC_ExitOnButtonPress
- str r1, [r0]
- add sp, 0x10
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F30FC: .4byte gText_ABUTTONExit
-_080F3100: .4byte gUnknown_8416090
-_080F3104: .4byte gTasks
-_080F3108: .4byte Task_HofPC_ExitOnButtonPress
- thumb_func_end sub_80F30A4
-
- thumb_func_start Task_HofPC_ExitOnButtonPress
-Task_HofPC_ExitOnButtonPress: @ 80F310C
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _080F3130 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080F312C
- ldr r0, _080F3134 @ =gTasks
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- ldr r0, _080F3138 @ =sub_80F2FEC
- str r0, [r1]
-_080F312C:
- pop {r0}
- bx r0
- .align 2, 0
-_080F3130: .4byte gMain
-_080F3134: .4byte gTasks
-_080F3138: .4byte sub_80F2FEC
- thumb_func_end Task_HofPC_ExitOnButtonPress
-
- thumb_func_start HallOfFame_PrintWelcomeText
-HallOfFame_PrintWelcomeText: @ 80F313C
- push {r4,r5,lr}
- sub sp, 0xC
- ldr r5, _080F318C @ =gUnknown_8416008
- movs r0, 0x2
- adds r1, r5, 0
- movs r2, 0
- bl GetStringWidth
- movs r4, 0xD0
- subs r4, r0
- lsrs r0, r4, 31
- adds r4, r0
- asrs r4, 1
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- movs r0, 0
- bl PutWindowTilemap
- ldr r0, _080F3190 @ =gUnknown_840C23C
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r1, 0x2
- adds r2, r4, 0
- movs r3, 0x1
- bl AddTextPrinterParameterized3
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F318C: .4byte gUnknown_8416008
-_080F3190: .4byte gUnknown_840C23C
- thumb_func_end HallOfFame_PrintWelcomeText
-
- thumb_func_start sub_80F3194
-sub_80F3194: @ 80F3194
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x34
- adds r7, r0, 0
- movs r0, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- movs r0, 0
- bl PutWindowTilemap
- ldrh r0, [r7, 0x8]
- ldr r1, _080F3214 @ =0x000001ff
- ands r1, r0
- movs r0, 0xCE
- lsls r0, 1
- cmp r1, r0
- beq _080F3252
- add r4, sp, 0x1C
- ldr r1, _080F3218 @ =gUnknown_84160EC
- adds r0, r4, 0
- bl StringCopy
- ldrh r0, [r7, 0x8]
- lsls r0, 23
- lsrs r0, 23
- bl sub_8043F90
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r0, _080F321C @ =0x0000ffff
- mov r8, r4
- cmp r6, r0
- beq _080F3220
- add r4, sp, 0xC
- adds r0, r6, 0
- movs r1, 0x64
- bl __udivsi3
- adds r0, 0xA1
- strb r0, [r4]
- add r5, sp, 0xC
- adds r0, r6, 0
- movs r1, 0x64
- bl __umodsi3
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r4, 0
- movs r1, 0xA
- bl __udivsi3
- adds r0, 0xA1
- strb r0, [r5, 0x1]
- add r5, sp, 0xC
- adds r0, r4, 0
- movs r1, 0xA
- bl __umodsi3
- adds r0, 0xA1
- strb r0, [r5, 0x2]
- b _080F322E
- .align 2, 0
-_080F3214: .4byte 0x000001ff
-_080F3218: .4byte gUnknown_84160EC
-_080F321C: .4byte 0x0000ffff
-_080F3220:
- add r3, sp, 0xC
- adds r2, r3, 0
- adds r1, r2, 0
- movs r0, 0xAC
- strb r0, [r1, 0x2]
- strb r0, [r2, 0x1]
- strb r0, [r3]
-_080F322E:
- add r1, sp, 0xC
- movs r0, 0xFF
- strb r0, [r1, 0x3]
- mov r0, r8
- bl StringAppend
- ldr r0, _080F32B8 @ =gUnknown_840C23C
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- mov r0, r8
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0x2
- movs r2, 0x10
- movs r3, 0x1
- bl AddTextPrinterParameterized3
-_080F3252:
- movs r2, 0
- ldrb r0, [r7, 0xA]
- cmp r0, 0xFF
- beq _080F327C
- adds r3, r7, 0
- adds r3, 0xA
-_080F325E:
- mov r1, sp
- adds r1, r2
- adds r1, 0xC
- adds r0, r3, r2
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x9
- bhi _080F327C
- adds r0, r3, r2
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _080F325E
-_080F327C:
- mov r1, sp
- adds r1, r2
- adds r1, 0xC
- movs r0, 0xFF
- strb r0, [r1]
- movs r0, 0x2
- movs r1, 0x2
- bl GetFontAttribute
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- movs r0, 0x2
- add r1, sp, 0xC
- bl GetStringWidth
- adds r2, r0, 0
- ldrh r1, [r7, 0x8]
- ldr r0, _080F32BC @ =0x000001ff
- ands r0, r1
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- bne _080F32C0
- lsrs r0, r2, 31
- adds r0, r2, r0
- asrs r0, 1
- movs r1, 0x80
- subs r0, r1, r0
- b _080F32C4
- .align 2, 0
-_080F32B8: .4byte gUnknown_840C23C
-_080F32BC: .4byte 0x000001ff
-_080F32C0:
- movs r0, 0x80
- subs r0, r2
-_080F32C4:
- lsls r2, r0, 24
- lsrs r2, 24
- ldr r0, _080F331C @ =gUnknown_840C23C
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- add r0, sp, 0xC
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0x2
- movs r3, 0x1
- bl AddTextPrinterParameterized3
- ldrh r2, [r7, 0x8]
- ldr r4, _080F3320 @ =0x000001ff
- adds r0, r4, 0
- ands r0, r2
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _080F33BA
- add r1, sp, 0xC
- movs r0, 0xBA
- strb r0, [r1]
- mov r0, sp
- adds r0, 0xD
- lsls r1, r2, 23
- lsrs r1, 23
- movs r2, 0xB
- muls r1, r2
- ldr r2, _080F3324 @ =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 _080F3318
- cmp r0, 0x1D
- bne _080F3328
-_080F3318:
- movs r0, 0xFF
- b _080F333A
- .align 2, 0
-_080F331C: .4byte gUnknown_840C23C
-_080F3320: .4byte 0x000001ff
-_080F3324: .4byte gSpeciesNames
-_080F3328:
- lsls r0, r1, 23
- lsrs r0, 23
- ldr r1, [r7, 0x4]
- bl GetGenderFromSpeciesAndPersonality
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _080F3342
-_080F333A:
- cmp r0, 0xFE
- beq _080F3346
- movs r0, 0
- b _080F3348
-_080F3342:
- movs r0, 0xB5
- b _080F3348
-_080F3346:
- movs r0, 0xB6
-_080F3348:
- strb r0, [r6]
- adds r6, 0x1
- movs r0, 0xFF
- strb r0, [r6]
- ldr r5, _080F33D0 @ =gUnknown_840C23C
- str r5, [sp]
- movs r4, 0
- str r4, [sp, 0x4]
- add r0, sp, 0xC
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0x2
- movs r2, 0x80
- movs r3, 0x1
- bl AddTextPrinterParameterized3
- ldr r1, _080F33D4 @ =gUnknown_84160F4
- 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, 0x2
- movs r2, 0x20
- movs r3, 0x11
- bl AddTextPrinterParameterized3
- ldr r1, _080F33D8 @ =gUnknown_8416104
- 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, 0x2
- movs r2, 0x60
- movs r3, 0x11
- bl AddTextPrinterParameterized3
-_080F33BA:
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- add sp, 0x34
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F33D0: .4byte gUnknown_840C23C
-_080F33D4: .4byte gUnknown_84160F4
-_080F33D8: .4byte gUnknown_8416104
- thumb_func_end sub_80F3194
-
- thumb_func_start sub_80F33DC
-sub_80F33DC: @ 80F33DC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x2C
- ldr r0, _080F35EC @ =gUnknown_840C234
- ldrb r6, [r0, 0x3]
- lsls r6, 3
- subs r0, r6, 0x6
- str r0, [sp, 0x28]
- movs r0, 0x1
- movs r1, 0x11
- bl FillWindowPixelBuffer
- movs r0, 0x1
- bl PutWindowTilemap
- ldr r2, _080F35F0 @ =0x0000021d
- movs r0, 0x1
- movs r1, 0
- movs r3, 0xD
- bl DrawStdFrameWithCustomTileAndPalette
- movs r7, 0
- str r7, [sp]
- str r7, [sp, 0x4]
- ldr r1, _080F35F4 @ =gUnknown_840C240
- mov r9, r1
- str r1, [sp, 0x8]
- str r7, [sp, 0xC]
- ldr r0, _080F35F8 @ =gUnknown_84160FC
- str r0, [sp, 0x10]
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0x4
- movs r3, 0x3
- bl AddTextPrinterParameterized4
- ldr r0, _080F35FC @ =gSaveBlock2Ptr
- mov r10, r0
- ldr r1, [r0]
- movs r0, 0x2
- movs r2, 0
- bl GetStringWidth
- adds r2, r0, 0
- ldr r1, [sp, 0x28]
- subs r2, r1, r2
- lsls r2, 24
- lsrs r2, 24
- mov r0, r9
- str r0, [sp]
- str r7, [sp, 0x4]
- mov r1, r10
- ldr r0, [r1]
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x2
- movs r3, 0x3
- bl AddTextPrinterParameterized3
- mov r1, r10
- ldr r0, [r1]
- ldrb r4, [r0, 0xA]
- ldrb r0, [r0, 0xB]
- lsls r0, 8
- orrs r4, r0
- mov r0, r9
- str r0, [sp]
- str r7, [sp, 0x4]
- ldr r0, _080F3600 @ =gUnknown_8416104
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0x4
- movs r3, 0x12
- bl AddTextPrinterParameterized3
- add r1, sp, 0x14
- mov r8, r1
- ldr r1, _080F3604 @ =0x000186a0
- adds r0, r4, 0
- bl __modsi3
- ldr r5, _080F3608 @ =0x00002710
- adds r1, r5, 0
- bl __divsi3
- subs r0, 0x5F
- mov r1, r8
- strb r0, [r1]
- add r0, sp, 0x14
- mov r8, r0
- 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
- mov r1, r8
- strb r0, [r1, 0x1]
- add r0, sp, 0x14
- mov r8, r0
- adds r0, r4, 0
- adds r1, r5, 0
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __udivsi3
- adds r0, 0xA1
- mov r1, r8
- strb r0, [r1, 0x2]
- add r5, sp, 0x14
- 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, 0x14
- adds r0, r4, 0
- movs r1, 0xA
- bl __umodsi3
- adds r0, 0xA1
- strb r0, [r5, 0x4]
- add r1, sp, 0x14
- movs r0, 0xFF
- strb r0, [r1, 0x5]
- subs r6, 0x24
- lsls r6, 24
- lsrs r6, 24
- mov r0, r9
- str r0, [sp]
- str r7, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x2
- adds r2, r6, 0
- movs r3, 0x12
- bl AddTextPrinterParameterized3
- mov r1, r9
- str r1, [sp]
- str r7, [sp, 0x4]
- ldr r0, _080F360C @ =gUnknown_8415CE8
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0x4
- movs r3, 0x20
- bl AddTextPrinterParameterized3
- add r5, sp, 0x14
- mov r0, r10
- ldr r4, [r0]
- ldrh r0, [r4, 0xE]
- movs r1, 0x64
- bl __udivsi3
- adds r0, 0xA1
- strb r0, [r5]
- add r5, sp, 0x14
- 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, 0x14
- ldrh r0, [r4, 0xE]
- movs r1, 0xA
- bl __umodsi3
- adds r0, 0xA1
- strb r0, [r5, 0x2]
- add r0, sp, 0x14
- ldrb r0, [r0]
- cmp r0, 0xA1
- bne _080F3570
- add r0, sp, 0x14
- strb r7, [r0]
-_080F3570:
- add r0, sp, 0x14
- ldrb r1, [r0]
- cmp r1, 0
- bne _080F3582
- ldrb r0, [r0, 0x1]
- cmp r0, 0xA1
- bne _080F3582
- add r0, sp, 0x14
- strb r1, [r0, 0x1]
-_080F3582:
- add r1, sp, 0x14
- movs r6, 0
- movs r0, 0xF0
- strb r0, [r1, 0x3]
- adds r4, r1, 0
- ldr r0, _080F35FC @ =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, 0x14
- ldrb r0, [r5, 0x10]
- movs r1, 0xA
- bl __umodsi3
- adds r0, 0xA1
- strb r0, [r4, 0x5]
- add r1, sp, 0x14
- movs r0, 0xFF
- strb r0, [r1, 0x6]
- ldr r2, [sp, 0x28]
- subs r2, 0x24
- lsls r2, 24
- lsrs r2, 24
- ldr r0, _080F35F4 @ =gUnknown_840C240
- str r0, [sp]
- str r6, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x2
- movs r3, 0x20
- bl AddTextPrinterParameterized3
- movs r0, 0x1
- movs r1, 0x3
- bl CopyWindowToVram
- add sp, 0x2C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F35EC: .4byte gUnknown_840C234
-_080F35F0: .4byte 0x0000021d
-_080F35F4: .4byte gUnknown_840C240
-_080F35F8: .4byte gUnknown_84160FC
-_080F35FC: .4byte gSaveBlock2Ptr
-_080F3600: .4byte gUnknown_8416104
-_080F3604: .4byte 0x000186a0
-_080F3608: .4byte 0x00002710
-_080F360C: .4byte gUnknown_8415CE8
- thumb_func_end sub_80F33DC
-
- thumb_func_start ClearVramOamPltt_LoadHofPal
-ClearVramOamPltt_LoadHofPal: @ 80F3610
- 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, _080F36B0 @ =0x040000d4
- movs r5, 0x80
- lsls r5, 5
- ldr r7, _080F36B4 @ =0x81000800
- movs r0, 0x81
- lsls r0, 24
- mov r12, r0
-_080F3636:
- 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 _080F3636
- 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, _080F36B0 @ =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, _080F36B8 @ =gUnknown_840C39C
- movs r1, 0
- movs r2, 0x20
- bl LoadPalette
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F36B0: .4byte 0x040000d4
-_080F36B4: .4byte 0x81000800
-_080F36B8: .4byte gUnknown_840C39C
- thumb_func_end ClearVramOamPltt_LoadHofPal
-
- thumb_func_start sub_80F36BC
-sub_80F36BC: @ 80F36BC
- push {lr}
- bl ScanlineEffect_Stop
- bl ResetTasks
- bl ResetSpriteData
- bl ResetTempTileDataBuffers
- bl ResetAllPicSprites
- bl FreeAllSpritePalettes
- ldr r1, _080F36EC @ =gReservedSpritePaletteCount
- movs r0, 0x8
- strb r0, [r1]
- ldr r0, _080F36F0 @ =gUnknown_840C248
- bl LoadCompressedSpriteSheet
- ldr r0, _080F36F4 @ =gUnknown_840C258
- bl LoadCompressedSpritePalette
- pop {r0}
- bx r0
- .align 2, 0
-_080F36EC: .4byte gReservedSpritePaletteCount
-_080F36F0: .4byte gUnknown_840C248
-_080F36F4: .4byte gUnknown_840C258
- thumb_func_end sub_80F36BC
-
- thumb_func_start sub_80F36F8
-sub_80F36F8: @ 80F36F8
- push {r4,lr}
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, _080F3764 @ =gUnknown_840C228
- movs r0, 0
- movs r2, 0x3
- bl InitBgsFromTemplates
- ldr r4, _080F3768 @ =gUnknown_203AB3C
- ldr r1, [r4]
- adds r1, 0x6
- movs r0, 0x1
- bl SetBgTilemapBuffer
- ldr r1, [r4]
- ldr r0, _080F376C @ =0x00001006
- 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
- .align 2, 0
-_080F3764: .4byte gUnknown_840C228
-_080F3768: .4byte gUnknown_203AB3C
-_080F376C: .4byte 0x00001006
- thumb_func_end sub_80F36F8
-
- thumb_func_start sub_80F3770
-sub_80F3770: @ 80F3770
- push {r4,lr}
- sub sp, 0x8
- ldr r0, _080F3788 @ =gUnknown_203AB3C
- ldr r0, [r0]
- ldrh r0, [r0]
- cmp r0, 0x4
- bhi _080F3854
- lsls r0, 2
- ldr r1, _080F378C @ =_080F3790
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080F3788: .4byte gUnknown_203AB3C
-_080F378C: .4byte _080F3790
- .align 2, 0
-_080F3790:
- .4byte _080F37A4
- .4byte _080F37BC
- .4byte _080F37C8
- .4byte _080F381E
- .4byte _080F3828
-_080F37A4:
- ldr r1, _080F37B8 @ =gUnknown_840C3BC
- movs r0, 0
- str r0, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl DecompressAndCopyTileDataToVram
- b _080F3854
- .align 2, 0
-_080F37B8: .4byte gUnknown_840C3BC
-_080F37BC:
- bl FreeTempTileDataBuffersIfPossible
- lsls r0, 24
- cmp r0, 0
- beq _080F3854
- b _080F385E
-_080F37C8:
- 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 _080F3854
-_080F381E:
- bl InitStandardTextBoxWindows
- bl ResetBg0
- b _080F3854
-_080F3828:
- 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, _080F3850 @ =gUnknown_203AB3C
- ldr r1, [r0]
- movs r0, 0
- strh r0, [r1]
- b _080F3860
- .align 2, 0
-_080F3850: .4byte gUnknown_203AB3C
-_080F3854:
- ldr r0, _080F3868 @ =gUnknown_203AB3C
- ldr r1, [r0]
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_080F385E:
- movs r0, 0x1
-_080F3860:
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080F3868: .4byte gUnknown_203AB3C
- thumb_func_end sub_80F3770
-
- thumb_func_start nullsub_84
-nullsub_84: @ 80F386C
- bx lr
- thumb_func_end nullsub_84
-
- thumb_func_start sub_80F3870
-sub_80F3870: @ 80F3870
- push {r4,lr}
- adds r2, r0, 0
- ldr r1, [r2, 0x20]
- ldr r0, [r2, 0x30]
- cmp r1, r0
- beq _080F38C6
- ldrh r3, [r2, 0x20]
- movs r1, 0x20
- ldrsh r0, [r2, r1]
- movs r4, 0x30
- ldrsh r1, [r2, r4]
- cmp r0, r1
- bge _080F3890
- adds r0, r3, 0
- adds r0, 0xF
- strh r0, [r2, 0x20]
-_080F3890:
- ldrh r3, [r2, 0x20]
- movs r4, 0x20
- ldrsh r0, [r2, r4]
- cmp r0, r1
- ble _080F38A0
- adds r0, r3, 0
- subs r0, 0xF
- strh r0, [r2, 0x20]
-_080F38A0:
- ldrh r3, [r2, 0x22]
- movs r1, 0x22
- ldrsh r0, [r2, r1]
- movs r4, 0x32
- ldrsh r1, [r2, r4]
- cmp r0, r1
- bge _080F38B4
- adds r0, r3, 0
- adds r0, 0xA
- strh r0, [r2, 0x22]
-_080F38B4:
- ldrh r3, [r2, 0x22]
- movs r4, 0x22
- ldrsh r0, [r2, r4]
- cmp r0, r1
- ble _080F38CE
- adds r0, r3, 0
- subs r0, 0xA
- strh r0, [r2, 0x22]
- b _080F38CE
-_080F38C6:
- movs r0, 0x1
- strh r0, [r2, 0x2E]
- ldr r0, _080F38D4 @ =nullsub_84
- str r0, [r2, 0x1C]
-_080F38CE:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F38D4: .4byte nullsub_84
- thumb_func_end sub_80F3870
-
- thumb_func_start sub_80F38D8
-sub_80F38D8: @ 80F38D8
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrh r1, [r5, 0x26]
- movs r2, 0x26
- ldrsh r0, [r5, r2]
- cmp r0, 0x78
- ble _080F38EE
- adds r0, r5, 0
- bl DestroySprite
- b _080F3926
-_080F38EE:
- 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, _080F392C @ =gSineTable
- lsls r4, 1
- adds r4, r1
- movs r2, 0
- ldrsh r1, [r4, r2]
- muls r0, r1
- cmp r0, 0
- bge _080F391C
- adds r0, 0xFF
-_080F391C:
- asrs r0, 8
- strh r0, [r5, 0x24]
- ldrh r0, [r5, 0x2E]
- adds r0, 0x4
- strh r0, [r5, 0x2E]
-_080F3926:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F392C: .4byte gSineTable
- thumb_func_end sub_80F38D8
-
- thumb_func_start sub_80F3930
-sub_80F3930: @ 80F3930
- 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, _080F39A0 @ =gUnknown_840C384
- 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, _080F39A4 @ =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 _080F39A8
- movs r0, 0
- b _080F39AA
- .align 2, 0
-_080F39A0: .4byte gUnknown_840C384
-_080F39A4: .4byte gSprites
-_080F39A8:
- movs r0, 0x1
-_080F39AA:
- strh r0, [r4, 0x30]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80F3930
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/link_rfu.s b/asm/link_rfu.s
index eac887f61..0ccbda9eb 100644
--- a/asm/link_rfu.s
+++ b/asm/link_rfu.s
@@ -3570,7 +3570,7 @@ _080FEED8:
_080FEEE4: .4byte gSaveBlock1Ptr
_080FEEE8: .4byte 0x00002cc4
_080FEEEC:
- bl sub_8143DA8
+ bl GetMEventProfileECWordsMaybe
adds r1, r0, 0
b _080FEF08
_080FEEF4:
diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s
index 66bcec37c..0752b5797 100644
--- a/asm/pokemon_summary_screen.s
+++ b/asm/pokemon_summary_screen.s
@@ -3339,7 +3339,7 @@ sub_81360D4: @ 81360D4
bl GetMonData
lsls r0, 16
lsrs r0, 16
- bl sub_8043F90
+ bl SpeciesToPokedexNum
lsls r0, 16
lsrs r4, r0, 16
ldr r0, _08136110 @ =0x0000ffff
diff --git a/asm/post_battle_event_funcs.s b/asm/post_battle_event_funcs.s
index be7554fd0..009bb7233 100644
--- a/asm/post_battle_event_funcs.s
+++ b/asm/post_battle_event_funcs.s
@@ -17,14 +17,14 @@ Special_HallOfFame: @ 80CA2E4
lsrs r1, r0, 24
cmp r1, 0x1
bne _080CA30C
- ldr r0, _080CA308 @ =gUnknown_203AB44
+ ldr r0, _080CA308 @ =gHasHallOfFameRecords
strb r1, [r0]
b _080CA318
.align 2, 0
_080CA304: .4byte 0x0000082c
-_080CA308: .4byte gUnknown_203AB44
+_080CA308: .4byte gHasHallOfFameRecords
_080CA30C:
- ldr r1, _080CA3B0 @ =gUnknown_203AB44
+ ldr r1, _080CA3B0 @ =gHasHallOfFameRecords
movs r0, 0
strb r0, [r1]
adds r0, r4, 0
@@ -99,7 +99,7 @@ _080CA39E:
pop {r1}
bx r1
.align 2, 0
-_080CA3B0: .4byte gUnknown_203AB44
+_080CA3B0: .4byte gHasHallOfFameRecords
_080CA3B4: .4byte gSaveBlock2Ptr
_080CA3B8: .4byte gPlayerParty
_080CA3BC: .4byte 0x0000083b
diff --git a/baserom.ips b/baserom.ips
index 2d4bae0bd..d8b086947 100644
--- a/baserom.ips
+++ b/baserom.ips
Binary files differ
diff --git a/charmap.txt b/charmap.txt
index 2f6369c27..77c324b43 100644
--- a/charmap.txt
+++ b/charmap.txt
@@ -353,6 +353,62 @@ DEFENDING_TRAINER = FD 09
ATTACKING_MON = FD 0C
DEFENDING_MON = FD 0D
+@ battle string placeholders
+
+B_BUFF1 = FD 00
+B_BUFF2 = FD 01
+B_COPY_VAR_1 = FD 02
+B_COPY_VAR_2 = FD 03
+B_COPY_VAR_3 = FD 04
+B_PLAYER_MON1_NAME = FD 05
+B_OPPONENT_MON1_NAME = FD 06
+B_PLAYER_MON2_NAME = FD 07
+B_OPPONENT_MON2_NAME = FD 08
+B_LINK_PLAYER_MON1_NAME = FD 09
+B_LINK_OPPONENT_MON1_NAME = FD 0A
+B_LINK_PLAYER_MON2_NAME = FD 0B
+B_LINK_OPPONENT_MON2_NAME = FD 0C
+B_ATK_NAME_WITH_PREFIX_MON1 = FD 0D
+B_ATK_PARTNER_NAME = FD 0E
+B_ATK_NAME_WITH_PREFIX = FD 0F
+B_DEF_NAME_WITH_PREFIX = FD 10
+B_EFF_NAME_WITH_PREFIX = FD 11 @ EFF = short for gEffectBattler
+B_ACTIVE_NAME_WITH_PREFIX = FD 12
+B_SCR_ACTIVE_NAME_WITH_PREFIX = FD 13
+B_CURRENT_MOVE = FD 14
+B_LAST_MOVE = FD 15
+B_LAST_ITEM = FD 16
+B_LAST_ABILITY = FD 17
+B_ATK_ABILITY = FD 18
+B_DEF_ABILITY = FD 19
+B_SCR_ACTIVE_ABILITY = FD 1A
+B_EFF_ABILITY = FD 1B
+B_TRAINER1_CLASS = FD 1C
+B_TRAINER1_NAME = FD 1D
+B_LINK_PLAYER_NAME = FD 1E
+B_LINK_PARTNER_NAME = FD 1F
+B_LINK_OPPONENT1_NAME = FD 20
+B_LINK_OPPONENT2_NAME = FD 21
+B_LINK_SCR_TRAINER_NAME = FD 22
+B_PLAYER_NAME = FD 23
+B_TRAINER1_LOSE_TEXT = FD 24
+B_TRAINER1_WIN_TEXT = FD 25
+B_26 = FD 26
+B_PC_CREATOR_NAME = FD 27
+B_ATK_PREFIX1 = FD 28
+B_DEF_PREFIX1 = FD 29
+B_ATK_PREFIX2 = FD 2A
+B_DEF_PREFIX2 = FD 2B
+B_ATK_PREFIX3 = FD 2C
+B_DEF_PREFIX3 = FD 2D
+B_TRAINER2_CLASS = FD 2E
+B_TRAINER2_NAME = FD 2F
+B_TRAINER2_LOSE_TEXT = FD 30
+B_TRAINER2_WIN_TEXT = FD 31
+B_PARTNER_CLASS = FD 32
+B_PARTNER_NAME = FD 33
+B_BUFF3 = FD 34
+
@ indicates the end of a town/city name (before " TOWN" or " CITY")
NAME_END = FC 00
diff --git a/data/battle_message.s b/data/battle_message.s
index 34c865cb9..b60eee4f0 100644
--- a/data/battle_message.s
+++ b/data/battle_message.s
@@ -9,30 +9,30 @@ gUnknown_83FB218:: @ 83FB218
.string "$"
gUnknown_83FB219:: @ 83FB219
- .string "{STRING 36}$"
+ .string "{B_TRAINER1_LOSE_TEXT}$"
gUnknown_83FB21C:: @ 83FB21C
- .string "{STRING 46}$"
+ .string "{B_TRAINER2_CLASS}$"
gUnknown_83FB21F:: @ 83FB21F
- .string "{STRING 29}: {STRING 06}, come back!$"
+ .string "{B_TRAINER1_NAME}: {B_OPPONENT_MON1_NAME}, come back!$"
gUnknown_83FB232:: @ 83FB232
- .string "{STRING 37}$"
+ .string "{B_TRAINER1_WIN_TEXT}$"
gUnknown_83FB235:: @ 83FB235
- .string "{STRING 29}: {STRING 08}, come back!$"
+ .string "{B_TRAINER1_NAME}: {B_OPPONENT_MON2_NAME}, come back!$"
gUnknown_83FB248:: @ 83FB248
- .string "{STRING 29}: {STRING 06} and\n"
- .string "{STRING 08}, come back!$"
+ .string "{B_TRAINER1_NAME}: {B_OPPONENT_MON1_NAME} and\n"
+ .string "{B_OPPONENT_MON2_NAME}, come back!$"
gUnknown_83FB262:: @ 83FB262
- .string "{STRING 47}$"
+ .string "{B_TRAINER2_NAME}$"
gUnknown_83FB265:: @ 83FB265
- .string "{STRING 00} gained{STRING 01}\n"
- .string "{STRING 48} EXP. Points!\p"
+ .string "{B_BUFF1} gained{B_BUFF2}\n"
+ .string "{B_TRAINER2_LOSE_TEXT} EXP. Points!\p"
.string "$"
gUnknown_83FB282:: @ 83FB282
@@ -42,113 +42,113 @@ gUnknown_83FB283:: @ 83FB283
.string " a boosted$"
gUnknown_83FB28E:: @ 83FB28E
- .string "{STRING 00} grew to\n"
- .string "LV. {STRING 01}!{WAIT_SE}\p"
+ .string "{B_BUFF1} grew to\n"
+ .string "LV. {B_BUFF2}!{WAIT_SE}\p"
.string "$"
gUnknown_83FB2A4:: @ 83FB2A4
- .string "{STRING 00} learned\n"
- .string "{STRING 01}!{WAIT_SE}\p"
+ .string "{B_BUFF1} learned\n"
+ .string "{B_BUFF2}!{WAIT_SE}\p"
.string "$"
gUnknown_83FB2B6:: @ 83FB2B6
- .string "{STRING 00} is trying to\n"
- .string "learn {STRING 01}.\p"
+ .string "{B_BUFF1} is trying to\n"
+ .string "learn {B_BUFF2}.\p"
.string "$"
gUnknown_83FB2D1:: @ 83FB2D1
- .string "But, {STRING 00} can't learn\n"
+ .string "But, {B_BUFF1} can't learn\n"
.string "more than four moves.\p"
.string "$"
gUnknown_83FB2FC:: @ 83FB2FC
.string "Delete a move to make\n"
- .string "room for {STRING 01}?$"
+ .string "room for {B_BUFF2}?$"
gUnknown_83FB31F:: @ 83FB31F
- .string "{STRING 00} forgot\n"
- .string "{STRING 01}.\p"
+ .string "{B_BUFF1} forgot\n"
+ .string "{B_BUFF2}.\p"
.string "$"
gUnknown_83FB32E:: @ 83FB32E
.string "{PAUSE 32}Stop learning\n"
- .string "{STRING 01}?$"
+ .string "{B_BUFF2}?$"
gUnknown_83FB343:: @ 83FB343
- .string "{STRING 00} did not learn\n"
- .string "{STRING 01}.\p"
+ .string "{B_BUFF1} did not learn\n"
+ .string "{B_BUFF2}.\p"
.string "$"
gUnknown_83FB359:: @ 83FB359
.string "Use next POKéMON?$"
gUnknown_83FB36B:: @ 83FB36B
- .string "{STRING 15}'s\n"
+ .string "{B_ATK_NAME_WITH_PREFIX}'s\n"
.string "attack missed!$"
gUnknown_83FB37F:: @ 83FB37F
- .string "{STRING 16}\n"
+ .string "{B_DEF_NAME_WITH_PREFIX}\n"
.string "protected itself!$"
gUnknown_83FB394:: @ 83FB394
- .string "{STRING 16} avoided\n"
- .string "damage with {STRING 25}!$"
+ .string "{B_DEF_NAME_WITH_PREFIX} avoided\n"
+ .string "damage with {B_DEF_ABILITY}!$"
gUnknown_83FB3AF:: @ 83FB3AF
- .string "{STRING 16} makes GROUND\n"
- .string "moves miss with {STRING 25}!$"
+ .string "{B_DEF_NAME_WITH_PREFIX} makes GROUND\n"
+ .string "moves miss with {B_DEF_ABILITY}!$"
gUnknown_83FB3D3:: @ 83FB3D3
- .string "{STRING 16} avoided\n"
+ .string "{B_DEF_NAME_WITH_PREFIX} avoided\n"
.string "the attack!$"
gUnknown_83FB3EA:: @ 83FB3EA
.string "It doesn't affect\n"
- .string "{STRING 16}…$"
+ .string "{B_DEF_NAME_WITH_PREFIX}…$"
gUnknown_83FB400:: @ 83FB400
- .string "{STRING 15}\n"
+ .string "{B_ATK_NAME_WITH_PREFIX}\n"
.string "fainted!\p"
.string "$"
gUnknown_83FB40D:: @ 83FB40D
- .string "{STRING 16}\n"
+ .string "{B_DEF_NAME_WITH_PREFIX}\n"
.string "fainted!\p"
.string "$"
gUnknown_83FB41A:: @ 83FB41A
- .string "{STRING 35} got ¥{STRING 00}\n"
+ .string "{B_PLAYER_NAME} got ¥{B_BUFF1}\n"
.string "for winning!\p"
.string "$"
gUnknown_83FB433:: @ 83FB433
- .string "{STRING 35} is out of\n"
+ .string "{B_PLAYER_NAME} is out of\n"
.string "usable POKéMON!\p"
.string "$"
gUnknown_83FB451:: @ 83FB451
- .string "{STRING 35} panicked and lost ¥{STRING 00}…\p"
+ .string "{B_PLAYER_NAME} panicked and lost ¥{B_BUFF1}…\p"
.string "… … … …\p"
- .string "{STRING 35} whited out!{PAUSE_UNTIL_PRESS}$"
+ .string "{B_PLAYER_NAME} whited out!{PAUSE_UNTIL_PRESS}$"
gUnknown_83FB484:: @ 83FB484
- .string "{STRING 35} is out of\n"
+ .string "{B_PLAYER_NAME} is out of\n"
.string "usable POKéMON!\p"
.string "Player lost against\n"
- .string "{STRING 28} {STRING 29}!{PAUSE_UNTIL_PRESS}$"
+ .string "{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!{PAUSE_UNTIL_PRESS}$"
gUnknown_83FB4BE:: @ 83FB4BE
- .string "{STRING 35} paid ¥{STRING 00} as the prize\n"
+ .string "{B_PLAYER_NAME} paid ¥{B_BUFF1} as the prize\n"
.string "money…\p"
.string "… … … …\p"
- .string "{STRING 35} whited out!{PAUSE_UNTIL_PRESS}$"
+ .string "{B_PLAYER_NAME} whited out!{PAUSE_UNTIL_PRESS}$"
gUnknown_83FB4F7:: @ 83FB4F7
- .string "{STRING 35} whited out!{PAUSE_UNTIL_PRESS}$"
+ .string "{B_PLAYER_NAME} whited out!{PAUSE_UNTIL_PRESS}$"
gUnknown_83FB508:: @ 83FB508
- .string "{STRING 19} prevents\n"
- .string "escape with {STRING 26}!\p"
+ .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX} prevents\n"
+ .string "escape with {B_SCR_ACTIVE_ABILITY}!\p"
.string "$"
gUnknown_83FB525:: @ 83FB525
@@ -156,481 +156,481 @@ gUnknown_83FB525:: @ 83FB525
.string "$"
gUnknown_83FB534:: @ 83FB534
- .string "{STRING 15} can't escape!$"
+ .string "{B_ATK_NAME_WITH_PREFIX} can't escape!$"
gUnknown_83FB545:: @ 83FB545
- .string "Hit {STRING 00} timeシsス!$"
+ .string "Hit {B_BUFF1} timeシsス!$"
gUnknown_83FB555:: @ 83FB555
- .string "{STRING 17}\n"
+ .string "{B_EFF_NAME_WITH_PREFIX}\n"
.string "fell asleep!$"
gUnknown_83FB565:: @ 83FB565
- .string "{STRING 19}'s {STRING 26}\n"
- .string "made {STRING 17} sleep!$"
+ .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\n"
+ .string "made {B_EFF_NAME_WITH_PREFIX} sleep!$"
gUnknown_83FB57C:: @ 83FB57C
- .string "{STRING 16} is\n"
+ .string "{B_DEF_NAME_WITH_PREFIX} is\n"
.string "already asleep!$"
gUnknown_83FB592:: @ 83FB592
- .string "{STRING 15} is\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} is\n"
.string "already asleep!$"
gUnknown_83FB5A8:: @ 83FB5A8
- .string "{STRING 16}\n"
+ .string "{B_DEF_NAME_WITH_PREFIX}\n"
.string "wasn't affected!$"
gUnknown_83FB5BC:: @ 83FB5BC
- .string "{STRING 17}\n"
+ .string "{B_EFF_NAME_WITH_PREFIX}\n"
.string "was poisoned!$"
gUnknown_83FB5CD:: @ 83FB5CD
- .string "{STRING 19}'s {STRING 26}\n"
- .string "poisoned {STRING 17}!$"
+ .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\n"
+ .string "poisoned {B_EFF_NAME_WITH_PREFIX}!$"
gUnknown_83FB5E2:: @ 83FB5E2
- .string "{STRING 15} is hurt\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} is hurt\n"
.string "by poison!$"
gUnknown_83FB5F8:: @ 83FB5F8
- .string "{STRING 16} is already\n"
+ .string "{B_DEF_NAME_WITH_PREFIX} is already\n"
.string "poisoned.$"
gUnknown_83FB610:: @ 83FB610
- .string "{STRING 17} is badly\n"
+ .string "{B_EFF_NAME_WITH_PREFIX} is badly\n"
.string "poisoned!$"
gUnknown_83FB626:: @ 83FB626
- .string "{STRING 16} had its\n"
+ .string "{B_DEF_NAME_WITH_PREFIX} had its\n"
.string "energy drained!$"
gUnknown_83FB641:: @ 83FB641
- .string "{STRING 17} was burned!$"
+ .string "{B_EFF_NAME_WITH_PREFIX} was burned!$"
gUnknown_83FB650:: @ 83FB650
- .string "{STRING 19}'s {STRING 26}\n"
- .string "burned {STRING 17}!$"
+ .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\n"
+ .string "burned {B_EFF_NAME_WITH_PREFIX}!$"
gUnknown_83FB663:: @ 83FB663
- .string "{STRING 15} is hurt\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} is hurt\n"
.string "by its burn!$"
gUnknown_83FB67B:: @ 83FB67B
- .string "{STRING 16} already\n"
+ .string "{B_DEF_NAME_WITH_PREFIX} already\n"
.string "has a burn.$"
gUnknown_83FB692:: @ 83FB692
- .string "{STRING 17} was\n"
+ .string "{B_EFF_NAME_WITH_PREFIX} was\n"
.string "frozen solid!$"
gUnknown_83FB6A7:: @ 83FB6A7
- .string "{STRING 19}'s {STRING 26}\n"
- .string "froze {STRING 17} solid!$"
+ .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\n"
+ .string "froze {B_EFF_NAME_WITH_PREFIX} solid!$"
gUnknown_83FB6BF:: @ 83FB6BF
- .string "{STRING 15} is\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} is\n"
.string "frozen solid!$"
gUnknown_83FB6D3:: @ 83FB6D3
- .string "{STRING 16} was\n"
+ .string "{B_DEF_NAME_WITH_PREFIX} was\n"
.string "defrosted!$"
gUnknown_83FB6E5:: @ 83FB6E5
- .string "{STRING 15} was\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} was\n"
.string "defrosted!$"
gUnknown_83FB6F7:: @ 83FB6F7
- .string "{STRING 15} was\n"
- .string "defrosted by {STRING 20}!$"
+ .string "{B_ATK_NAME_WITH_PREFIX} was\n"
+ .string "defrosted by {B_CURRENT_MOVE}!$"
gUnknown_83FB70F:: @ 83FB70F
- .string "{STRING 17} is paralyzed!\n"
+ .string "{B_EFF_NAME_WITH_PREFIX} is paralyzed!\n"
.string "It may be unable to move!$"
gUnknown_83FB73A:: @ 83FB73A
- .string "{STRING 19}'s {STRING 26}\n"
- .string "paralyzed {STRING 17}!\l"
+ .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\n"
+ .string "paralyzed {B_EFF_NAME_WITH_PREFIX}!\l"
.string "It may be unable to move!$"
gUnknown_83FB76A:: @ 83FB76A
- .string "{STRING 15} is paralyzed!\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} is paralyzed!\n"
.string "It can't move!$"
gUnknown_83FB78A:: @ 83FB78A
- .string "{STRING 16} is\n"
+ .string "{B_DEF_NAME_WITH_PREFIX} is\n"
.string "already paralyzed!$"
gUnknown_83FB7A3:: @ 83FB7A3
- .string "{STRING 16} was\n"
+ .string "{B_DEF_NAME_WITH_PREFIX} was\n"
.string "healed of paralysis!$"
gUnknown_83FB7BF:: @ 83FB7BF
- .string "{STRING 16}'s\n"
+ .string "{B_DEF_NAME_WITH_PREFIX}'s\n"
.string "dream was eaten!$"
gUnknown_83FB7D5:: @ 83FB7D5
- .string "{STRING 15}'s {STRING 00}\n"
+ .string "{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1}\n"
.string "won't go higher!$"
gUnknown_83FB7EE:: @ 83FB7EE
- .string "{STRING 16}'s {STRING 00}\n"
+ .string "{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}\n"
.string "won't go lower!$"
gUnknown_83FB806:: @ 83FB806
- .string "Your team's {STRING 00}\n"
+ .string "Your team's {B_BUFF1}\n"
.string "stopped working!$"
gUnknown_83FB826:: @ 83FB826
- .string "The foe's {STRING 00}\n"
+ .string "The foe's {B_BUFF1}\n"
.string "stopped working!$"
gUnknown_83FB844:: @ 83FB844
- .string "{STRING 15} is\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} is\n"
.string "confused!$"
gUnknown_83FB854:: @ 83FB854
- .string "{STRING 15} snapped\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} snapped\n"
.string "out of confusion!$"
gUnknown_83FB871:: @ 83FB871
- .string "{STRING 17} became\n"
+ .string "{B_EFF_NAME_WITH_PREFIX} became\n"
.string "confused!$"
gUnknown_83FB885:: @ 83FB885
- .string "{STRING 16} is\n"
+ .string "{B_DEF_NAME_WITH_PREFIX} is\n"
.string "already confused!$"
gUnknown_83FB89D:: @ 83FB89D
- .string "{STRING 16}\n"
+ .string "{B_DEF_NAME_WITH_PREFIX}\n"
.string "fell in love!$"
gUnknown_83FB8AE:: @ 83FB8AE
- .string "{STRING 15} is in love\n"
- .string "with {STRING 19}!$"
+ .string "{B_ATK_NAME_WITH_PREFIX} is in love\n"
+ .string "with {B_SCR_ACTIVE_NAME_WITH_PREFIX}!$"
gUnknown_83FB8C5:: @ 83FB8C5
- .string "{STRING 15} is\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} is\n"
.string "immobilized by love!$"
gUnknown_83FB8E0:: @ 83FB8E0
- .string "{STRING 16} was\n"
+ .string "{B_DEF_NAME_WITH_PREFIX} was\n"
.string "blown away!$"
gUnknown_83FB8F3:: @ 83FB8F3
- .string "{STRING 15} transformed\n"
- .string "into the {STRING 00} type!$"
+ .string "{B_ATK_NAME_WITH_PREFIX} transformed\n"
+ .string "into the {B_BUFF1} type!$"
gUnknown_83FB914:: @ 83FB914
- .string "{STRING 15} flinched!$"
+ .string "{B_ATK_NAME_WITH_PREFIX} flinched!$"
gUnknown_83FB921:: @ 83FB921
- .string "{STRING 16} regained\n"
+ .string "{B_DEF_NAME_WITH_PREFIX} regained\n"
.string "health!$"
gUnknown_83FB935:: @ 83FB935
- .string "{STRING 16}'s\n"
+ .string "{B_DEF_NAME_WITH_PREFIX}'s\n"
.string "HP is full!$"
gUnknown_83FB946:: @ 83FB946
- .string "{STRING 42}'s {STRING 20}\n"
+ .string "{B_ATK_PREFIX2}'s {B_CURRENT_MOVE}\n"
.string "raised SP. DEF!$"
gUnknown_83FB95E:: @ 83FB95E
- .string "{STRING 42}'s {STRING 20}\n"
+ .string "{B_ATK_PREFIX2}'s {B_CURRENT_MOVE}\n"
.string "raised SP. DEF a little!$"
gUnknown_83FB97F:: @ 83FB97F
- .string "{STRING 42}'s {STRING 20}\n"
+ .string "{B_ATK_PREFIX2}'s {B_CURRENT_MOVE}\n"
.string "raised DEFENSE!$"
gUnknown_83FB997:: @ 83FB997
- .string "{STRING 42}'s {STRING 20}\n"
+ .string "{B_ATK_PREFIX2}'s {B_CURRENT_MOVE}\n"
.string "raised DEFENSE a little!$"
gUnknown_83FB9B8:: @ 83FB9B8
- .string "{STRING 42}'s party is covered\n"
+ .string "{B_ATK_PREFIX2}'s party is covered\n"
.string "by a veil!$"
gUnknown_83FB9D9:: @ 83FB9D9
- .string "{STRING 16}'s party is protected\n"
+ .string "{B_DEF_NAME_WITH_PREFIX}'s party is protected\n"
.string "by SAFEGUARD!$"
gUnknown_83FB9FF:: @ 83FB9FF
- .string "{STRING 44}'s party is no longer\n"
+ .string "{B_ATK_PREFIX3}'s party is no longer\n"
.string "protected by SAFEGUARD!$"
gUnknown_83FBA2F:: @ 83FBA2F
- .string "{STRING 15} went\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} went\n"
.string "to sleep!$"
gUnknown_83FBA41:: @ 83FBA41
- .string "{STRING 15} slept and\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} slept and\n"
.string "became healthy!$"
gUnknown_83FBA5E:: @ 83FBA5E
- .string "{STRING 15} whipped\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} whipped\n"
.string "up a whirlwind!$"
gUnknown_83FBA79:: @ 83FBA79
- .string "{STRING 15} took\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} took\n"
.string "in sunlight!$"
gUnknown_83FBA8E:: @ 83FBA8E
- .string "{STRING 15} lowered\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} lowered\n"
.string "its head!$"
gUnknown_83FBAA3:: @ 83FBAA3
- .string "{STRING 15} is glowing!$"
+ .string "{B_ATK_NAME_WITH_PREFIX} is glowing!$"
gUnknown_83FBAB2:: @ 83FBAB2
- .string "{STRING 15} flew\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} flew\n"
.string "up high!$"
gUnknown_83FBAC3:: @ 83FBAC3
- .string "{STRING 15} dug a hole!$"
+ .string "{B_ATK_NAME_WITH_PREFIX} dug a hole!$"
gUnknown_83FBAD2:: @ 83FBAD2
- .string "{STRING 15} hid\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} hid\n"
.string "underwater!$"
gUnknown_83FBAE5:: @ 83FBAE5
- .string "{STRING 15} sprang up!$"
+ .string "{B_ATK_NAME_WITH_PREFIX} sprang up!$"
gUnknown_83FBAF3:: @ 83FBAF3
- .string "{STRING 16} was squeezed by\n"
- .string "{STRING 15}'s BIND!$"
+ .string "{B_DEF_NAME_WITH_PREFIX} was squeezed by\n"
+ .string "{B_ATK_NAME_WITH_PREFIX}'s BIND!$"
gUnknown_83FBB11:: @ 83FBB11
- .string "{STRING 16} was trapped\n"
+ .string "{B_DEF_NAME_WITH_PREFIX} was trapped\n"
.string "in the vortex!$"
gUnknown_83FBB2F:: @ 83FBB2F
- .string "{STRING 16} was trapped\n"
+ .string "{B_DEF_NAME_WITH_PREFIX} was trapped\n"
.string "by SAND TOMB!$"
gUnknown_83FBB4C:: @ 83FBB4C
- .string "{STRING 16} was WRAPPED by\n"
- .string "{STRING 15}!$"
+ .string "{B_DEF_NAME_WITH_PREFIX} was WRAPPED by\n"
+ .string "{B_ATK_NAME_WITH_PREFIX}!$"
gUnknown_83FBB62:: @ 83FBB62
- .string "{STRING 15} CLAMPED\n"
- .string "{STRING 16}!$"
+ .string "{B_ATK_NAME_WITH_PREFIX} CLAMPED\n"
+ .string "{B_DEF_NAME_WITH_PREFIX}!$"
gUnknown_83FBB71:: @ 83FBB71
- .string "{STRING 15} is hurt\n"
- .string "by {STRING 00}!$"
+ .string "{B_ATK_NAME_WITH_PREFIX} is hurt\n"
+ .string "by {B_BUFF1}!$"
gUnknown_83FBB83:: @ 83FBB83
- .string "{STRING 15} was freed\n"
- .string "from {STRING 00}!$"
+ .string "{B_ATK_NAME_WITH_PREFIX} was freed\n"
+ .string "from {B_BUFF1}!$"
gUnknown_83FBB99:: @ 83FBB99
- .string "{STRING 15} kept going\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} kept going\n"
.string "and crashed!$"
BattleText_MistShroud:: @ 83FBBB4
- .string "{STRING 42} became\n"
+ .string "{B_ATK_PREFIX2} became\n"
.string "shrouded in MIST!$"
gUnknown_83FBBD0:: @ 83FBBD0
- .string "{STRING 19} is protected\n"
+ .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX} is protected\n"
.string "by MIST!$"
BattleText_GetPumped:: @ 83FBBE9
- .string "{STRING 15} is getting\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} is getting\n"
.string "pumped!$"
gUnknown_83FBBFF:: @ 83FBBFF
- .string "{STRING 15} is hit\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} is hit\n"
.string "with recoil!$"
gUnknown_83FBC16:: @ 83FBC16
- .string "{STRING 15} protected\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} protected\n"
.string "itself!$"
gUnknown_83FBC2B:: @ 83FBC2B
- .string "{STRING 15} is buffeted\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} is buffeted\n"
.string "by the sandstorm!$"
gUnknown_83FBC4C:: @ 83FBC4C
- .string "{STRING 15} is pelted\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} is pelted\n"
.string "by HAIL!$"
gUnknown_83FBC62:: @ 83FBC62
- .string "{STRING 40}'s {STRING 00}\n"
+ .string "{B_ATK_PREFIX1}'s {B_BUFF1}\n"
.string "wore off!$"
gUnknown_83FBC74:: @ 83FBC74
- .string "{STRING 16} was seeded!$"
+ .string "{B_DEF_NAME_WITH_PREFIX} was seeded!$"
gUnknown_83FBC83:: @ 83FBC83
- .string "{STRING 16} evaded\n"
+ .string "{B_DEF_NAME_WITH_PREFIX} evaded\n"
.string "the attack!$"
gUnknown_83FBC99:: @ 83FBC99
- .string "{STRING 15}'s health is\n"
+ .string "{B_ATK_NAME_WITH_PREFIX}'s health is\n"
.string "sapped by LEECH SEED!$"
gUnknown_83FBCBE:: @ 83FBCBE
- .string "{STRING 15} is fast\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} is fast\n"
.string "asleep.$"
gUnknown_83FBCD1:: @ 83FBCD1
- .string "{STRING 15} woke up!$"
+ .string "{B_ATK_NAME_WITH_PREFIX} woke up!$"
gUnknown_83FBCDD:: @ 83FBCDD
- .string "But {STRING 19}'s UPROAR\n"
+ .string "But {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s UPROAR\n"
.string "kept it awake!$"
gUnknown_83FBCFC:: @ 83FBCFC
- .string "{STRING 15} woke up\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} woke up\n"
.string "in the UPROAR!$"
gUnknown_83FBD16:: @ 83FBD16
- .string "{STRING 15} caused\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} caused\n"
.string "an UPROAR!$"
gUnknown_83FBD2B:: @ 83FBD2B
- .string "{STRING 15} is making\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} is making\n"
.string "an UPROAR!$"
gUnknown_83FBD43:: @ 83FBD43
- .string "{STRING 15} calmed down.$"
+ .string "{B_ATK_NAME_WITH_PREFIX} calmed down.$"
gUnknown_83FBD53:: @ 83FBD53
- .string "But {STRING 16} can't\n"
+ .string "But {B_DEF_NAME_WITH_PREFIX} can't\n"
.string "sleep in an UPROAR!$"
gUnknown_83FBD74:: @ 83FBD74
- .string "{STRING 15} STOCKPILED\n"
- .string "{STRING 00}!$"
+ .string "{B_ATK_NAME_WITH_PREFIX} STOCKPILED\n"
+ .string "{B_BUFF1}!$"
gUnknown_83FBD86:: @ 83FBD86
- .string "{STRING 15} can't\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} can't\n"
.string "STOCKPILE any more!$"
gUnknown_83FBDA3:: @ 83FBDA3
- .string "But {STRING 16} can't\n"
+ .string "But {B_DEF_NAME_WITH_PREFIX} can't\n"
.string "sleep in an UPROAR!$"
gUnknown_83FBDC4:: @ 83FBDC4
.string "But the UPROAR kept\n"
- .string "{STRING 16} awake!$"
+ .string "{B_DEF_NAME_WITH_PREFIX} awake!$"
gUnknown_83FBDE2:: @ 83FBDE2
- .string "{STRING 16} stayed awake\n"
- .string "using its {STRING 25}!$"
+ .string "{B_DEF_NAME_WITH_PREFIX} stayed awake\n"
+ .string "using its {B_DEF_ABILITY}!$"
gUnknown_83FBE00:: @ 83FBE00
- .string "{STRING 15} is storing\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} is storing\n"
.string "energy!$"
gUnknown_83FBE16:: @ 83FBE16
- .string "{STRING 15} unleashed\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} unleashed\n"
.string "energy!$"
gUnknown_83FBE2B:: @ 83FBE2B
- .string "{STRING 15} became\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} became\n"
.string "confused due to fatigue!$"
gUnknown_83FBE4E:: @ 83FBE4E
- .string "{STRING 35} picked up\n"
- .string "¥{STRING 00}!\p"
+ .string "{B_PLAYER_NAME} picked up\n"
+ .string "¥{B_BUFF1}!\p"
.string "$"
gUnknown_83FBE61:: @ 83FBE61
- .string "{STRING 16} is\n"
+ .string "{B_DEF_NAME_WITH_PREFIX} is\n"
.string "unaffected!$"
gUnknown_83FBE73:: @ 83FBE73
- .string "{STRING 15} transformed\n"
- .string "into {STRING 00}!$"
+ .string "{B_ATK_NAME_WITH_PREFIX} transformed\n"
+ .string "into {B_BUFF1}!$"
gUnknown_83FBE8B:: @ 83FBE8B
- .string "{STRING 15} made\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} made\n"
.string "a SUBSTITUTE!$"
gUnknown_83FBEA1:: @ 83FBEA1
- .string "{STRING 15} already\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} already\n"
.string "has a SUBSTITUTE!$"
gUnknown_83FBEBE:: @ 83FBEBE
.string "The SUBSTITUTE took damage\n"
- .string "for {STRING 16}!\p"
+ .string "for {B_DEF_NAME_WITH_PREFIX}!\p"
.string "$"
gUnknown_83FBEE2:: @ 83FBEE2
- .string "{STRING 16}'s\n"
+ .string "{B_DEF_NAME_WITH_PREFIX}'s\n"
.string "SUBSTITUTE faded!\p"
.string "$"
gUnknown_83FBEFA:: @ 83FBEFA
- .string "{STRING 15} must\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} must\n"
.string "recharge!$"
gUnknown_83FBF0C:: @ 83FBF0C
- .string "{STRING 16}'s RAGE\n"
+ .string "{B_DEF_NAME_WITH_PREFIX}'s RAGE\n"
.string "is building!$"
gUnknown_83FBF23:: @ 83FBF23
- .string "{STRING 16}'s {STRING 00}\n"
+ .string "{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}\n"
.string "was disabled!$"
gUnknown_83FBF39:: @ 83FBF39
- .string "{STRING 15} is disabled\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} is disabled\n"
.string "no more!$"
gUnknown_83FBF51:: @ 83FBF51
- .string "{STRING 16} got\n"
+ .string "{B_DEF_NAME_WITH_PREFIX} got\n"
.string "an ENCORE!$"
gUnknown_83FBF63:: @ 83FBF63
- .string "{STRING 15}'s ENCORE\n"
+ .string "{B_ATK_NAME_WITH_PREFIX}'s ENCORE\n"
.string "ended!$"
gUnknown_83FBF76:: @ 83FBF76
- .string "{STRING 15} took aim\n"
- .string "at {STRING 16}!$"
+ .string "{B_ATK_NAME_WITH_PREFIX} took aim\n"
+ .string "at {B_DEF_NAME_WITH_PREFIX}!$"
gUnknown_83FBF89:: @ 83FBF89
- .string "{STRING 15} SKETCHED\n"
- .string "{STRING 00}!$"
+ .string "{B_ATK_NAME_WITH_PREFIX} SKETCHED\n"
+ .string "{B_BUFF1}!$"
gUnknown_83FBF99:: @ 83FBF99
- .string "{STRING 15} is trying\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} is trying\n"
.string "to take its foe with it!$"
gUnknown_83FBFBF:: @ 83FBFBF
- .string "{STRING 16} took\n"
- .string "{STRING 15} with it!$"
+ .string "{B_DEF_NAME_WITH_PREFIX} took\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} with it!$"
gUnknown_83FBFD3:: @ 83FBFD3
- .string "Reduced {STRING 16}'s\n"
- .string "{STRING 00} by {STRING 01}!$"
+ .string "Reduced {B_DEF_NAME_WITH_PREFIX}'s\n"
+ .string "{B_BUFF1} by {B_BUFF2}!$"
gUnknown_83FBFEA:: @ 83FBFEA
- .string "{STRING 15} stole\n"
- .string "{STRING 16}'s {STRING 22}!$"
+ .string "{B_ATK_NAME_WITH_PREFIX} stole\n"
+ .string "{B_DEF_NAME_WITH_PREFIX}'s {B_LAST_ITEM}!$"
gUnknown_83FBFFC:: @ 83FBFFC
- .string "{STRING 16} can't\n"
+ .string "{B_DEF_NAME_WITH_PREFIX} can't\n"
.string "escape now!$"
gUnknown_83FC011:: @ 83FC011
- .string "{STRING 16} fell into\n"
+ .string "{B_DEF_NAME_WITH_PREFIX} fell into\n"
.string "a NIGHTMARE!$"
gUnknown_83FC02B:: @ 83FC02B
- .string "{STRING 15} is locked\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} is locked\n"
.string "in a NIGHTMARE!$"
gUnknown_83FC048:: @ 83FC048
- .string "{STRING 15} cut its own HP and\n"
- .string "laid a CURSE on {STRING 16}!$"
+ .string "{B_ATK_NAME_WITH_PREFIX} cut its own HP and\n"
+ .string "laid a CURSE on {B_DEF_NAME_WITH_PREFIX}!$"
gUnknown_83FC072:: @ 83FC072
- .string "{STRING 15} is afflicted\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} is afflicted\n"
.string "by the CURSE!$"
gUnknown_83FC090:: @ 83FC090
@@ -638,178 +638,178 @@ gUnknown_83FC090:: @ 83FC090
.string "the opponent's side!$"
gUnknown_83FC0C6:: @ 83FC0C6
- .string "{STRING 19} is hurt\n"
+ .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX} is hurt\n"
.string "by SPIKES!$"
gUnknown_83FC0DC:: @ 83FC0DC
- .string "{STRING 15} identified\n"
- .string "{STRING 16}!$"
+ .string "{B_ATK_NAME_WITH_PREFIX} identified\n"
+ .string "{B_DEF_NAME_WITH_PREFIX}!$"
gUnknown_83FC0EE:: @ 83FC0EE
- .string "{STRING 15}'s PERISH count\n"
- .string "fell to {STRING 00}!$"
+ .string "{B_ATK_NAME_WITH_PREFIX}'s PERISH count\n"
+ .string "fell to {B_BUFF1}!$"
gUnknown_83FC10C:: @ 83FC10C
- .string "{STRING 15} braced\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} braced\n"
.string "itself!$"
gUnknown_83FC11E:: @ 83FC11E
- .string "{STRING 16} ENDURED\n"
+ .string "{B_DEF_NAME_WITH_PREFIX} ENDURED\n"
.string "the hit!$"
gUnknown_83FC132:: @ 83FC132
- .string "MAGNITUDE {STRING 00}!$"
+ .string "MAGNITUDE {B_BUFF1}!$"
gUnknown_83FC140:: @ 83FC140
- .string "{STRING 15} cut its own HP\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} cut its own HP\n"
.string "and maximized ATTACK!$"
gUnknown_83FC168:: @ 83FC168
- .string "{STRING 15} copied\n"
- .string "{STRING 16}'s stat changes!$"
+ .string "{B_ATK_NAME_WITH_PREFIX} copied\n"
+ .string "{B_DEF_NAME_WITH_PREFIX}'s stat changes!$"
gUnknown_83FC185:: @ 83FC185
- .string "{STRING 15} got free of\n"
- .string "{STRING 16}'s {STRING 00}!$"
+ .string "{B_ATK_NAME_WITH_PREFIX} got free of\n"
+ .string "{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}!$"
gUnknown_83FC19D:: @ 83FC19D
- .string "{STRING 15} shed\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} shed\n"
.string "LEECH SEED!$"
gUnknown_83FC1B1:: @ 83FC1B1
- .string "{STRING 15} blew away\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} blew away\n"
.string "SPIKES!$"
gUnknown_83FC1C6:: @ 83FC1C6
- .string "{STRING 15} fled from\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} fled from\n"
.string "battle!$"
gUnknown_83FC1DB:: @ 83FC1DB
- .string "{STRING 15} foresaw\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} foresaw\n"
.string "an attack!$"
gUnknown_83FC1F1:: @ 83FC1F1
- .string "{STRING 16} took the\n"
- .string "{STRING 00} attack!$"
+ .string "{B_DEF_NAME_WITH_PREFIX} took the\n"
+ .string "{B_BUFF1} attack!$"
gUnknown_83FC208:: @ 83FC208
- .string "{STRING 15} chose\n"
- .string "{STRING 20} as its destiny!$"
+ .string "{B_ATK_NAME_WITH_PREFIX} chose\n"
+ .string "{B_CURRENT_MOVE} as its destiny!$"
gUnknown_83FC224:: @ 83FC224
- .string "{STRING 00}'s attack!$"
+ .string "{B_BUFF1}'s attack!$"
gUnknown_83FC231:: @ 83FC231
- .string "{STRING 15} became the\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} became the\n"
.string "center of attention!$"
gUnknown_83FC254:: @ 83FC254
- .string "{STRING 15} began\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} began\n"
.string "charging power!$"
gUnknown_83FC26D:: @ 83FC26D
.string "NATURE POWER turned into\n"
- .string "{STRING 20}!$"
+ .string "{B_CURRENT_MOVE}!$"
gUnknown_83FC28A:: @ 83FC28A
- .string "{STRING 15}'s status\n"
+ .string "{B_ATK_NAME_WITH_PREFIX}'s status\n"
.string "returned to normal!$"
gUnknown_83FC2AA:: @ 83FC2AA
- .string "{STRING 16} was subjected\n"
+ .string "{B_DEF_NAME_WITH_PREFIX} was subjected\n"
.string "to TORMENT!$"
gUnknown_83FC2C7:: @ 83FC2C7
- .string "{STRING 15} is tightening\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} is tightening\n"
.string "its focus!$"
gUnknown_83FC2E3:: @ 83FC2E3
- .string "{STRING 16} fell for\n"
+ .string "{B_DEF_NAME_WITH_PREFIX} fell for\n"
.string "the TAUNT!$"
gUnknown_83FC2FA:: @ 83FC2FA
- .string "{STRING 15} is ready to\n"
- .string "help {STRING 16}!$"
+ .string "{B_ATK_NAME_WITH_PREFIX} is ready to\n"
+ .string "help {B_DEF_NAME_WITH_PREFIX}!$"
gUnknown_83FC312:: @ 83FC312
- .string "{STRING 15} switched\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} switched\n"
.string "items with its opponent!$"
gUnknown_83FC337:: @ 83FC337
- .string "{STRING 15} obtained\n"
- .string "{STRING 00}.$"
+ .string "{B_ATK_NAME_WITH_PREFIX} obtained\n"
+ .string "{B_BUFF1}.$"
gUnknown_83FC347:: @ 83FC347
- .string "{STRING 16} obtained\n"
- .string "{STRING 01}.$"
+ .string "{B_DEF_NAME_WITH_PREFIX} obtained\n"
+ .string "{B_BUFF2}.$"
gUnknown_83FC357:: @ 83FC357
- .string "{STRING 15} obtained\n"
- .string "{STRING 00}.\p"
- .string "{STRING 16} obtained\n"
- .string "{STRING 01}.$"
+ .string "{B_ATK_NAME_WITH_PREFIX} obtained\n"
+ .string "{B_BUFF1}.\p"
+ .string "{B_DEF_NAME_WITH_PREFIX} obtained\n"
+ .string "{B_BUFF2}.$"
gUnknown_83FC377:: @ 83FC377
- .string "{STRING 15} copied\n"
- .string "{STRING 16}'s {STRING 25}!$"
+ .string "{B_ATK_NAME_WITH_PREFIX} copied\n"
+ .string "{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}!$"
gUnknown_83FC38A:: @ 83FC38A
- .string "{STRING 15} made a WISH!$"
+ .string "{B_ATK_NAME_WITH_PREFIX} made a WISH!$"
gUnknown_83FC39A:: @ 83FC39A
- .string "{STRING 00}'s WISH\n"
+ .string "{B_BUFF1}'s WISH\n"
.string "came true!$"
gUnknown_83FC3AF:: @ 83FC3AF
- .string "{STRING 15} planted its roots!$"
+ .string "{B_ATK_NAME_WITH_PREFIX} planted its roots!$"
gUnknown_83FC3C5:: @ 83FC3C5
- .string "{STRING 15} absorbed\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} absorbed\n"
.string "nutrients with its roots!$"
gUnknown_83FC3EB:: @ 83FC3EB
- .string "{STRING 16} anchored\n"
+ .string "{B_DEF_NAME_WITH_PREFIX} anchored\n"
.string "itself with its roots!$"
gUnknown_83FC40E:: @ 83FC40E
- .string "{STRING 15} made\n"
- .string "{STRING 16} drowsy!$"
+ .string "{B_ATK_NAME_WITH_PREFIX} made\n"
+ .string "{B_DEF_NAME_WITH_PREFIX} drowsy!$"
gUnknown_83FC421:: @ 83FC421
- .string "{STRING 15} knocked off\n"
- .string "{STRING 16}'s {STRING 22}!$"
+ .string "{B_ATK_NAME_WITH_PREFIX} knocked off\n"
+ .string "{B_DEF_NAME_WITH_PREFIX}'s {B_LAST_ITEM}!$"
gUnknown_83FC439:: @ 83FC439
- .string "{STRING 15} swapped abilities\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} swapped abilities\n"
.string "with its opponent!$"
gUnknown_83FC461:: @ 83FC461
- .string "{STRING 15} sealed the\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} sealed the\n"
.string "opponent's moveシsス!$"
gUnknown_83FC483:: @ 83FC483
- .string "{STRING 15} wants the\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} wants the\n"
.string "opponent to bear a GRUDGE!$"
gUnknown_83FC4AB:: @ 83FC4AB
- .string "{STRING 15}'s {STRING 00} lost\n"
+ .string "{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1} lost\n"
.string "all its PP due to the GRUDGE!$"
gUnknown_83FC4D6:: @ 83FC4D6
- .string "{STRING 15} shrouded\n"
- .string "itself in {STRING 20}!$"
+ .string "{B_ATK_NAME_WITH_PREFIX} shrouded\n"
+ .string "itself in {B_CURRENT_MOVE}!$"
gUnknown_83FC4F0:: @ 83FC4F0
- .string "{STRING 15}'s {STRING 20}\n"
+ .string "{B_ATK_NAME_WITH_PREFIX}'s {B_CURRENT_MOVE}\n"
.string "was bounced back by MAGIC COAT!$"
gUnknown_83FC518:: @ 83FC518
- .string "{STRING 15} waits for its foe\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} waits for its foe\n"
.string "to make a move!$"
gUnknown_83FC53D:: @ 83FC53D
- .string "{STRING 16} SNATCHED\n"
- .string "{STRING 19}'s move!$"
+ .string "{B_DEF_NAME_WITH_PREFIX} SNATCHED\n"
+ .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s move!$"
gUnknown_83FC554:: @ 83FC554
.string "Electricity's power was\n"
@@ -820,8 +820,8 @@ gUnknown_83FC576:: @ 83FC576
.string "weakened!$"
gUnknown_83FC591:: @ 83FC591
- .string "{STRING 15} found\n"
- .string "one {STRING 22}!$"
+ .string "{B_ATK_NAME_WITH_PREFIX} found\n"
+ .string "one {B_LAST_ITEM}!$"
gUnknown_83FC5A2:: @ 83FC5A2
.string "A soothing aroma wafted\n"
@@ -831,19 +831,19 @@ gUnknown_83FC5CC:: @ 83FC5CC
.string "Items can't be used now.{PAUSE 64}$"
gUnknown_83FC5E8:: @ 83FC5E8
- .string "For {STRING 19},\n"
- .string "{STRING 22} {STRING 00}$"
+ .string "For {B_SCR_ACTIVE_NAME_WITH_PREFIX},\n"
+ .string "{B_LAST_ITEM} {B_BUFF1}$"
gUnknown_83FC5F6:: @ 83FC5F6
- .string "{STRING 19} used\n"
- .string "{STRING 22} to hustle!$"
+ .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX} used\n"
+ .string "{B_LAST_ITEM} to hustle!$"
gUnknown_83FC60C:: @ 83FC60C
- .string "{STRING 15} lost its\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} lost its\n"
.string "focus and couldn't move!$"
gUnknown_83FC631:: @ 83FC631
- .string "{STRING 16} was\n"
+ .string "{B_DEF_NAME_WITH_PREFIX} was\n"
.string "dragged out!\p"
.string "$"
@@ -854,183 +854,183 @@ gUnknown_83FC65A:: @ 83FC65A
.string "But it had no effect!$"
gUnknown_83FC670:: @ 83FC670
- .string "{STRING 18} has no\n"
+ .string "{B_ACTIVE_NAME_WITH_PREFIX} has no\n"
.string "moves left!\p"
.string "$"
gUnknown_83FC687:: @ 83FC687
- .string "{STRING 18}'s {STRING 20}\n"
+ .string "{B_ACTIVE_NAME_WITH_PREFIX}'s {B_CURRENT_MOVE}\n"
.string "is disabled!\p"
.string "$"
gUnknown_83FC69D:: @ 83FC69D
- .string "{STRING 18} can't use the same\n"
+ .string "{B_ACTIVE_NAME_WITH_PREFIX} can't use the same\n"
.string "move in a row due to the TORMENT!\p"
.string "$"
gUnknown_83FC6D6:: @ 83FC6D6
- .string "{STRING 18} can't use\n"
- .string "{STRING 20} after the TAUNT!\p"
+ .string "{B_ACTIVE_NAME_WITH_PREFIX} can't use\n"
+ .string "{B_CURRENT_MOVE} after the TAUNT!\p"
.string "$"
gUnknown_83FC6F8:: @ 83FC6F8
- .string "{STRING 18} can't use the\n"
- .string "sealed {STRING 20}!\p"
+ .string "{B_ACTIVE_NAME_WITH_PREFIX} can't use the\n"
+ .string "sealed {B_CURRENT_MOVE}!\p"
.string "$"
gUnknown_83FC715:: @ 83FC715
- .string "{STRING 19}'s {STRING 26}\n"
+ .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\n"
.string "made it rain!$"
gUnknown_83FC72B:: @ 83FC72B
- .string "{STRING 19}'s {STRING 26}\n"
+ .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\n"
.string "raised its SPEED!$"
gUnknown_83FC745:: @ 83FC745
- .string "{STRING 16} was protected\n"
- .string "by {STRING 25}!$"
+ .string "{B_DEF_NAME_WITH_PREFIX} was protected\n"
+ .string "by {B_DEF_ABILITY}!$"
gUnknown_83FC75D:: @ 83FC75D
- .string "{STRING 16}'s {STRING 25}\n"
- .string "prevents {STRING 15}\l"
- .string "from using {STRING 20}!$"
+ .string "{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\n"
+ .string "prevents {B_ATK_NAME_WITH_PREFIX}\l"
+ .string "from using {B_CURRENT_MOVE}!$"
gUnknown_83FC780:: @ 83FC780
- .string "{STRING 16} restored HP\n"
- .string "using its {STRING 25}!$"
+ .string "{B_DEF_NAME_WITH_PREFIX} restored HP\n"
+ .string "using its {B_DEF_ABILITY}!$"
gUnknown_83FC79D:: @ 83FC79D
- .string "{STRING 16}'s {STRING 25}\n"
- .string "made {STRING 20} useless!$"
+ .string "{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\n"
+ .string "made {B_CURRENT_MOVE} useless!$"
gUnknown_83FC7B6:: @ 83FC7B6
- .string "{STRING 16}'s {STRING 25}\n"
- .string "made it the {STRING 00} type!$"
+ .string "{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\n"
+ .string "made it the {B_BUFF1} type!$"
gUnknown_83FC7D3:: @ 83FC7D3
- .string "{STRING 17}'s {STRING 25}\n"
+ .string "{B_EFF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\n"
.string "prevents paralysis!$"
gUnknown_83FC7EF:: @ 83FC7EF
- .string "{STRING 16}'s {STRING 25}\n"
+ .string "{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\n"
.string "prevents romance!$"
gUnknown_83FC809:: @ 83FC809
- .string "{STRING 17}'s {STRING 25}\n"
+ .string "{B_EFF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\n"
.string "prevents poisoning!$"
gUnknown_83FC825:: @ 83FC825
- .string "{STRING 16}'s {STRING 25}\n"
+ .string "{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\n"
.string "prevents confusion!$"
gUnknown_83FC841:: @ 83FC841
- .string "{STRING 16}'s {STRING 25}\n"
+ .string "{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\n"
.string "raised its FIRE power!$"
gUnknown_83FC860:: @ 83FC860
- .string "{STRING 16} anchors\n"
- .string "itself with {STRING 25}!$"
+ .string "{B_DEF_NAME_WITH_PREFIX} anchors\n"
+ .string "itself with {B_DEF_ABILITY}!$"
gUnknown_83FC87B:: @ 83FC87B
- .string "{STRING 19}'s {STRING 26}\n"
- .string "cuts {STRING 16}'s ATTACK!$"
+ .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\n"
+ .string "cuts {B_DEF_NAME_WITH_PREFIX}'s ATTACK!$"
gUnknown_83FC895:: @ 83FC895
- .string "{STRING 19}'s {STRING 26}\n"
+ .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\n"
.string "prevents stat loss!$"
gUnknown_83FC8B1:: @ 83FC8B1
- .string "{STRING 16}'s {STRING 25}\n"
- .string "hurt {STRING 15}!$"
+ .string "{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\n"
+ .string "hurt {B_ATK_NAME_WITH_PREFIX}!$"
gUnknown_83FC8C2:: @ 83FC8C2
- .string "{STRING 19} TRACED\n"
- .string "{STRING 00}'s {STRING 01}!$"
+ .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX} TRACED\n"
+ .string "{B_BUFF1}'s {B_BUFF2}!$"
gUnknown_83FC8D5:: @ 83FC8D5
- .string "{STRING 17}'s {STRING 27}\n"
+ .string "{B_EFF_NAME_WITH_PREFIX}'s {B_EFF_ABILITY}\n"
.string "prevents burns!$"
gUnknown_83FC8ED:: @ 83FC8ED
- .string "{STRING 16}'s {STRING 25}\n"
- .string "blocks {STRING 20}!$"
+ .string "{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\n"
+ .string "blocks {B_CURRENT_MOVE}!$"
gUnknown_83FC900:: @ 83FC900
- .string "{STRING 19}'s {STRING 26}\n"
- .string "blocks {STRING 20}!$"
+ .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\n"
+ .string "blocks {B_CURRENT_MOVE}!$"
gUnknown_83FC913:: @ 83FC913
- .string "{STRING 15}'s {STRING 24}\n"
+ .string "{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY}\n"
.string "restored its HP a little!$"
gUnknown_83FC935:: @ 83FC935
- .string "{STRING 19}'s {STRING 26}\n"
+ .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\n"
.string "whipped up a sandstorm!$"
gUnknown_83FC955:: @ 83FC955
- .string "{STRING 19}'s {STRING 26}\n"
+ .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\n"
.string "intensified the sun's rays!$"
gUnknown_83FC979:: @ 83FC979
- .string "{STRING 19}'s {STRING 26}\n"
- .string "prevents {STRING 00} loss!$"
+ .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\n"
+ .string "prevents {B_BUFF1} loss!$"
gUnknown_83FC993:: @ 83FC993
- .string "{STRING 16}'s {STRING 25}\n"
- .string "infatuated {STRING 15}!$"
+ .string "{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\n"
+ .string "infatuated {B_ATK_NAME_WITH_PREFIX}!$"
gUnknown_83FC9AA:: @ 83FC9AA
- .string "{STRING 16}'s {STRING 25}\n"
- .string "made {STRING 20} ineffective!$"
+ .string "{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\n"
+ .string "made {B_CURRENT_MOVE} ineffective!$"
gUnknown_83FC9C7:: @ 83FC9C7
- .string "{STRING 19}'s {STRING 26}\n"
- .string "cured its {STRING 00} problem!$"
+ .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\n"
+ .string "cured its {B_BUFF1} problem!$"
gUnknown_83FC9E5:: @ 83FC9E5
.string "It sucked up the\n"
.string "LIQUID OOZE!$"
gUnknown_83FCA03:: @ 83FCA03
- .string "{STRING 19} transformed!$"
+ .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX} transformed!$"
gUnknown_83FCA13:: @ 83FCA13
- .string "{STRING 16}'s {STRING 25}\n"
+ .string "{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\n"
.string "took the attack!$"
gText_PkmnsXPreventsSwitching:: @ 83FCA2C
- .string "{STRING 00}'s {STRING 23}\n"
+ .string "{B_BUFF1}'s {B_LAST_ABILITY}\n"
.string "prevents switching!\p"
.string "$"
gUnknown_83FCA49:: @ 83FCA49
- .string "{STRING 16}'s {STRING 25}\n"
- .string "prevented {STRING 19}'s\l"
- .string "{STRING 00} from working!$"
+ .string "{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}\n"
+ .string "prevented {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s\l"
+ .string "{B_BUFF1} from working!$"
gUnknown_83FCA71:: @ 83FCA71
- .string "{STRING 19}'s {STRING 26}\n"
+ .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\n"
.string "made it ineffective!$"
gUnknown_83FCA8E:: @ 83FCA8E
- .string "{STRING 17}'s {STRING 27}\n"
+ .string "{B_EFF_NAME_WITH_PREFIX}'s {B_EFF_ABILITY}\n"
.string "prevents flinching!$"
gUnknown_83FCAAA:: @ 83FCAAA
- .string "{STRING 15}'s {STRING 24}\n"
- .string "prevents {STRING 16}'s\l"
- .string "{STRING 25} from working!$"
+ .string "{B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY}\n"
+ .string "prevents {B_DEF_NAME_WITH_PREFIX}'s\l"
+ .string "{B_DEF_ABILITY} from working!$"
gUnknown_83FCAD1:: @ 83FCAD1
- .string "{STRING 19}'s {STRING 26}\n"
- .string "cured its {STRING 00} problem!$"
+ .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\n"
+ .string "cured its {B_BUFF1} problem!$"
gUnknown_83FCAEF:: @ 83FCAEF
- .string "{STRING 19}'s {STRING 26}\n"
- .string "had no effect on {STRING 17}!$"
+ .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY}\n"
+ .string "had no effect on {B_EFF_NAME_WITH_PREFIX}!$"
gUnknown_83FCB0C:: @ 83FCB0C
- .string "{STRING 15} is too scared to move!$"
+ .string "{B_ATK_NAME_WITH_PREFIX} is too scared to move!$"
gUnknown_83FCB26:: @ 83FCB26
.string "GHOST: Get out…… Get out……$"
@@ -1048,31 +1048,31 @@ gUnknown_83FCB59:: @ 83FCB59
.string "fell!$"
gUnknown_83FCB5F:: @ 83FCB5F
- .string "{STRING 15}'s {STRING 00}\n"
- .string "{STRING 01}$"
+ .string "{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1}\n"
+ .string "{B_BUFF2}$"
BattleText_UnknownString3:: @ 83FCB6A
- .string "{STRING 16}'s {STRING 00}\n"
- .string "{STRING 01}$"
+ .string "{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}\n"
+ .string "{B_BUFF2}$"
gUnknown_83FCB75:: @ 83FCB75
- .string "Using {STRING 22}, the {STRING 00}\n"
- .string "of {STRING 19} {STRING 01}$"
+ .string "Using {B_LAST_ITEM}, the {B_BUFF1}\n"
+ .string "of {B_SCR_ACTIVE_NAME_WITH_PREFIX} {B_BUFF2}$"
gUnknown_83FCB8F:: @ 83FCB8F
- .string "{STRING 15}'s {STRING 00}\n"
- .string "{STRING 01}$"
+ .string "{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1}\n"
+ .string "{B_BUFF2}$"
gUnknown_83FCB9A:: @ 83FCB9A
- .string "{STRING 16}'s {STRING 00}\n"
- .string "{STRING 01}$"
+ .string "{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}\n"
+ .string "{B_BUFF2}$"
gUnknown_83FCBA5:: @ 83FCBA5
- .string "{STRING 15}'s stats won't\n"
+ .string "{B_ATK_NAME_WITH_PREFIX}'s stats won't\n"
.string "go any higher!$"
gUnknown_83FCBC5:: @ 83FCBC5
- .string "{STRING 16}'s stats won't\n"
+ .string "{B_DEF_NAME_WITH_PREFIX}'s stats won't\n"
.string "go any lower!$"
gUnknown_83FCBE4:: @ 83FCBE4
@@ -1105,48 +1105,48 @@ gUnknown_83FCC8A:: @ 83FCC8A
.string "$"
gUnknown_83FCCA0:: @ 83FCCA0
- .string "{PLAY_SE SE_NIGERU}{STRING 15} fled\n"
- .string "using its {STRING 22}!\p"
+ .string "{PLAY_SE SE_NIGERU}{B_ATK_NAME_WITH_PREFIX} fled\n"
+ .string "using its {B_LAST_ITEM}!\p"
.string "$"
gUnknown_83FCCBB:: @ 83FCCBB
- .string "{PLAY_SE SE_NIGERU}{STRING 15} fled\n"
- .string "using {STRING 24}!\p"
+ .string "{PLAY_SE SE_NIGERU}{B_ATK_NAME_WITH_PREFIX} fled\n"
+ .string "using {B_ATK_ABILITY}!\p"
.string "$"
gUnknown_83FCCD2:: @ 83FCCD2
- .string "{PLAY_SE SE_NIGERU}Wild {STRING 00} fled!$"
+ .string "{PLAY_SE SE_NIGERU}Wild {B_BUFF1} fled!$"
gUnknown_83FCCE4:: @ 83FCCE4
.string "Player defeated\n"
- .string "{STRING 32}!$"
+ .string "{B_LINK_OPPONENT1_NAME}!$"
gUnknown_83FCCF8:: @ 83FCCF8
- .string "Player beat {STRING 32}\n"
- .string "and {STRING 33}!$"
+ .string "Player beat {B_LINK_OPPONENT1_NAME}\n"
+ .string "and {B_LINK_OPPONENT2_NAME}!$"
gUnknown_83FCD0F:: @ 83FCD0F
.string "Player lost against\n"
- .string "{STRING 32}!$"
+ .string "{B_LINK_OPPONENT1_NAME}!$"
gUnknown_83FCD27:: @ 83FCD27
- .string "Player lost to {STRING 32}\n"
- .string "and {STRING 33}!$"
+ .string "Player lost to {B_LINK_OPPONENT1_NAME}\n"
+ .string "and {B_LINK_OPPONENT2_NAME}!$"
gUnknown_83FCD41:: @ 83FCD41
.string "Player battled to a draw against\n"
- .string "{STRING 32}!$"
+ .string "{B_LINK_OPPONENT1_NAME}!$"
gUnknown_83FCD66:: @ 83FCD66
.string "Player battled to a draw against\n"
- .string "{STRING 32} and {STRING 33}!$"
+ .string "{B_LINK_OPPONENT1_NAME} and {B_LINK_OPPONENT2_NAME}!$"
gUnknown_83FCD92:: @ 83FCD92
- .string "{PLAY_SE SE_NIGERU}{STRING 32} fled!$"
+ .string "{PLAY_SE SE_NIGERU}{B_LINK_OPPONENT1_NAME} fled!$"
gUnknown_83FCD9F:: @ 83FCD9F
- .string "{PLAY_SE SE_NIGERU}{STRING 32} and\n"
- .string "{STRING 33} fled!$"
+ .string "{PLAY_SE SE_NIGERU}{B_LINK_OPPONENT1_NAME} and\n"
+ .string "{B_LINK_OPPONENT2_NAME} fled!$"
gUnknown_83FCDB3:: @ 83FCDB3
.string "No! There's no running\n"
@@ -1259,63 +1259,63 @@ gUnknown_83FD0CA:: @ 83FD0CA
.string "for the move!$"
gUnknown_83FD0F1:: @ 83FD0F1
- .string "{STRING 15} ignored\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} ignored\n"
.string "orders while asleep!$"
gUnknown_83FD111:: @ 83FD111
- .string "{STRING 15} ignored\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} ignored\n"
.string "orders!$"
gUnknown_83FD124:: @ 83FD124
- .string "{STRING 15} began to nap!$"
+ .string "{B_ATK_NAME_WITH_PREFIX} began to nap!$"
gUnknown_83FD135:: @ 83FD135
- .string "{STRING 15} is\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} is\n"
.string "loafing around!$"
gUnknown_83FD14B:: @ 83FD14B
- .string "{STRING 15} won't\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} won't\n"
.string "obey!$"
gUnknown_83FD15A:: @ 83FD15A
- .string "{STRING 15} turned away!$"
+ .string "{B_ATK_NAME_WITH_PREFIX} turned away!$"
gUnknown_83FD16A:: @ 83FD16A
- .string "{STRING 15} pretended\n"
+ .string "{B_ATK_NAME_WITH_PREFIX} pretended\n"
.string "not to notice!$"
gUnknown_83FD186:: @ 83FD186
- .string "{STRING 28} {STRING 29} is\n"
- .string "about to use {STRING 01}.\p"
- .string "Will {STRING 35} change\n"
+ .string "{B_TRAINER1_CLASS} {B_TRAINER1_NAME} is\n"
+ .string "about to use {B_BUFF2}.\p"
+ .string "Will {B_PLAYER_NAME} change\n"
.string "POKéMON?$"
gUnknown_83FD1B8:: @ 83FD1B8
- .string "{STRING 15} learned\n"
- .string "{STRING 00}!$"
+ .string "{B_ATK_NAME_WITH_PREFIX} learned\n"
+ .string "{B_BUFF1}!$"
gUnknown_83FD1C7:: @ 83FD1C7
.string "Player defeated\n"
- .string "{STRING 28} {STRING 29}!\p"
+ .string "{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!\p"
.string "$"
gUnknown_83FD1DF:: @ 83FD1DF
- .string "{STRING 35} threw a ROCK\n"
- .string "at the {STRING 06}!$"
+ .string "{B_PLAYER_NAME} threw a ROCK\n"
+ .string "at the {B_OPPONENT_MON1_NAME}!$"
gUnknown_83FD1FA:: @ 83FD1FA
- .string "{STRING 35} threw some BAIT\n"
- .string "at the {STRING 06}!$"
+ .string "{B_PLAYER_NAME} threw some BAIT\n"
+ .string "at the {B_OPPONENT_MON1_NAME}!$"
gUnknown_83FD218:: @ 83FD218
- .string "{STRING 06} is watching\n"
+ .string "{B_OPPONENT_MON1_NAME} is watching\n"
.string "carefully!$"
gUnknown_83FD232:: @ 83FD232
- .string "{STRING 06} is angry!$"
+ .string "{B_OPPONENT_MON1_NAME} is angry!$"
gUnknown_83FD23F:: @ 83FD23F
- .string "{STRING 06} is eating!$"
+ .string "{B_OPPONENT_MON1_NAME} is eating!$"
gUnknown_83FD24D:: @ 83FD24D
.string "{PLAY_SE SE_PINPON}ANNOUNCER: You're out of\n"
@@ -1323,19 +1323,19 @@ gUnknown_83FD24D:: @ 83FD24D
.string "$"
gUnknown_83FD284:: @ 83FD284
- .string "Wild {STRING 06} appeared!\p"
+ .string "Wild {B_OPPONENT_MON1_NAME} appeared!\p"
.string "$"
gUnknown_83FD297:: @ 83FD297
- .string "Wild {STRING 06} appeared!\p"
+ .string "Wild {B_OPPONENT_MON1_NAME} appeared!\p"
.string "$"
gUnknown_83FD2AA:: @ 83FD2AA
- .string "Wild {STRING 06} appeared!{PAUSE 127}$"
+ .string "Wild {B_OPPONENT_MON1_NAME} appeared!{PAUSE 127}$"
gUnknown_83FD2BF:: @ 83FD2BF
- .string "Wild {STRING 06} and\n"
- .string "{STRING 08} appeared!\p"
+ .string "Wild {B_OPPONENT_MON1_NAME} and\n"
+ .string "{B_OPPONENT_MON2_NAME} appeared!\p"
.string "$"
gUnknown_83FD2D9:: @ 83FD2D9
@@ -1358,100 +1358,100 @@ gUnknown_83FD34D:: @ 83FD34D
.string "$"
gUnknown_83FD366:: @ 83FD366
- .string "{STRING 28} {STRING 29}\n"
+ .string "{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\n"
.string "would like to battle!\p"
.string "$"
gUnknown_83FD383:: @ 83FD383
- .string "{STRING 32}\n"
+ .string "{B_LINK_OPPONENT1_NAME}\n"
.string "wants to battle!$"
gUnknown_83FD397:: @ 83FD397
- .string "{STRING 32} and {STRING 33}\n"
+ .string "{B_LINK_OPPONENT1_NAME} and {B_LINK_OPPONENT2_NAME}\n"
.string "want to battle!$"
gUnknown_83FD3B1:: @ 83FD3B1
- .string "{STRING 28} {STRING 29} sent\n"
- .string "out {STRING 06}!{PAUSE 60}$"
+ .string "{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\n"
+ .string "out {B_OPPONENT_MON1_NAME}!{PAUSE 60}$"
gUnknown_83FD3C7:: @ 83FD3C7
- .string "{STRING 28} {STRING 29} sent\n"
- .string "out {STRING 06} and {STRING 08}!{PAUSE 60}$"
+ .string "{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\n"
+ .string "out {B_OPPONENT_MON1_NAME} and {B_OPPONENT_MON2_NAME}!{PAUSE 60}$"
gUnknown_83FD3E4:: @ 83FD3E4
- .string "{STRING 28} {STRING 29} sent\n"
- .string "out {STRING 00}!$"
+ .string "{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\n"
+ .string "out {B_BUFF1}!$"
gUnknown_83FD3F7:: @ 83FD3F7
- .string "{STRING 32} sent out\n"
- .string "{STRING 06}!$"
+ .string "{B_LINK_OPPONENT1_NAME} sent out\n"
+ .string "{B_OPPONENT_MON1_NAME}!$"
gUnknown_83FD407:: @ 83FD407
- .string "{STRING 32} sent out\n"
- .string "{STRING 06} and {STRING 08}!$"
+ .string "{B_LINK_OPPONENT1_NAME} sent out\n"
+ .string "{B_OPPONENT_MON1_NAME} and {B_OPPONENT_MON2_NAME}!$"
gUnknown_83FD41E:: @ 83FD41E
- .string "{STRING 32} sent out {STRING 10}!\n"
- .string "{STRING 33} sent out {STRING 12}!$"
+ .string "{B_LINK_OPPONENT1_NAME} sent out {B_LINK_OPPONENT_MON1_NAME}!\n"
+ .string "{B_LINK_OPPONENT2_NAME} sent out {B_LINK_OPPONENT_MON2_NAME}!$"
gUnknown_83FD43E:: @ 83FD43E
- .string "{STRING 32} sent out\n"
- .string "{STRING 00}!$"
+ .string "{B_LINK_OPPONENT1_NAME} sent out\n"
+ .string "{B_BUFF1}!$"
gUnknown_83FD44E:: @ 83FD44E
- .string "{STRING 34} sent out\n"
- .string "{STRING 00}!$"
+ .string "{B_LINK_SCR_TRAINER_NAME} sent out\n"
+ .string "{B_BUFF1}!$"
gUnknown_83FD45E:: @ 83FD45E
- .string "Go! {STRING 05}!$"
+ .string "Go! {B_PLAYER_MON1_NAME}!$"
gUnknown_83FD466:: @ 83FD466
- .string "Go! {STRING 05} and\n"
- .string "{STRING 07}!$"
+ .string "Go! {B_PLAYER_MON1_NAME} and\n"
+ .string "{B_PLAYER_MON2_NAME}!$"
gUnknown_83FD475:: @ 83FD475
- .string "Go! {STRING 00}!$"
+ .string "Go! {B_BUFF1}!$"
gUnknown_83FD47D:: @ 83FD47D
- .string "Do it! {STRING 00}!$"
+ .string "Do it! {B_BUFF1}!$"
gUnknown_83FD488:: @ 83FD488
- .string "Go for it, {STRING 00}!$"
+ .string "Go for it, {B_BUFF1}!$"
gUnknown_83FD497:: @ 83FD497
.string "Your foe's weak!\n"
- .string "Get 'em, {STRING 00}!$"
+ .string "Get 'em, {B_BUFF1}!$"
gUnknown_83FD4B5:: @ 83FD4B5
- .string "{STRING 31} sent out {STRING 11}!\n"
+ .string "{B_LINK_PARTNER_NAME} sent out {B_LINK_PLAYER_MON2_NAME}!\n"
.string "Go! {GOOD_TEAM}!$"
gUnknown_83FD4CD:: @ 83FD4CD
- .string "{STRING 00}, that's enough!\n"
+ .string "{B_BUFF1}, that's enough!\n"
.string "Come back!$"
gUnknown_83FD4EB:: @ 83FD4EB
- .string "{STRING 00}, come back!$"
+ .string "{B_BUFF1}, come back!$"
gUnknown_83FD4FA:: @ 83FD4FA
- .string "{STRING 00}, OK!\n"
+ .string "{B_BUFF1}, OK!\n"
.string "Come back!$"
gUnknown_83FD50D:: @ 83FD50D
- .string "{STRING 00}, good!\n"
+ .string "{B_BUFF1}, good!\n"
.string "Come back!$"
gUnknown_83FD522:: @ 83FD522
- .string "{STRING 28} {STRING 29}\n"
- .string "withdrew {STRING 00}!$"
+ .string "{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\n"
+ .string "withdrew {B_BUFF1}!$"
gUnknown_83FD535:: @ 83FD535
- .string "{STRING 32} withdrew\n"
- .string "{STRING 00}!$"
+ .string "{B_LINK_OPPONENT1_NAME} withdrew\n"
+ .string "{B_BUFF1}!$"
gUnknown_83FD545:: @ 83FD545
- .string "{STRING 34} withdrew\n"
- .string "{STRING 00}!$"
+ .string "{B_LINK_SCR_TRAINER_NAME} withdrew\n"
+ .string "{B_BUFF1}!$"
gUnknown_83FD555:: @ 83FD555
.string "Wild $"
@@ -1478,8 +1478,8 @@ gUnknown_83FD576:: @ 83FD576
.string "Ally$"
gUnknown_83FD57B:: @ 83FD57B
- .string "{STRING 15} used\n"
- .string "{STRING 01}$"
+ .string "{B_ATK_NAME_WITH_PREFIX} used\n"
+ .string "{B_BUFF2}$"
gUnknown_83FD586:: @ 83FD586
.string "!$"
@@ -1555,20 +1555,20 @@ gUnknown_83FD63C:: @ 83FD63C
.4byte gUnknown_83FD62B
gUnknown_83FD650:: @ 83FD650
- .string "{STRING 35} used\n"
- .string "{STRING 22}!$"
+ .string "{B_PLAYER_NAME} used\n"
+ .string "{B_LAST_ITEM}!$"
gUnknown_83FD65C:: @ 83FD65C
.string "The old man used\n"
- .string "{STRING 22}!$"
+ .string "{B_LAST_ITEM}!$"
gUnknown_83FD671:: @ 83FD671
.string "The POKé DUDE used\n"
- .string "{STRING 22}!$"
+ .string "{B_LAST_ITEM}!$"
gUnknown_83FD688:: @ 83FD688
- .string "{STRING 28} {STRING 29}\n"
- .string "used {STRING 22}!$"
+ .string "{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\n"
+ .string "used {B_LAST_ITEM}!$"
gUnknown_83FD697:: @ 83FD697
.string "The TRAINER blocked the BALL!$"
@@ -1605,20 +1605,20 @@ gUnknown_83FD78A:: @ 83FD78A
gUnknown_83FD7A2:: @ 83FD7A2
.string "Gotcha!\n"
- .string "{STRING 06} was caught!{WAIT_SE}{PLAY_BGM MUS_GET_YASEI}\p"
+ .string "{B_OPPONENT_MON1_NAME} was caught!{WAIT_SE}{PLAY_BGM MUS_GET_YASEI}\p"
.string "$"
gUnknown_83FD7C0:: @ 83FD7C0
.string "Gotcha!\n"
- .string "{STRING 06} was caught!{WAIT_SE}{PLAY_BGM MUS_GET_YASEI}{PAUSE 127}$"
+ .string "{B_OPPONENT_MON1_NAME} was caught!{WAIT_SE}{PLAY_BGM MUS_GET_YASEI}{PAUSE 127}$"
gUnknown_83FD7E0:: @ 83FD7E0
.string "Give a nickname to the\n"
- .string "captured {STRING 06}?$"
+ .string "captured {B_OPPONENT_MON1_NAME}?$"
gUnknown_83FD804:: @ 83FD804
- .string "{STRING 06} was sent to\n"
- .string "{STRING 39} PC.$"
+ .string "{B_OPPONENT_MON1_NAME} was sent to\n"
+ .string "{B_PC_CREATOR_NAME} PC.$"
gUnknown_83FD81A:: @ 83FD81A
.string "someone's$"
@@ -1627,7 +1627,7 @@ gUnknown_83FD824:: @ 83FD824
.string "BILL's$"
gUnknown_83FD82B:: @ 83FD82B
- .string "{STRING 06}'s data was\n"
+ .string "{B_OPPONENT_MON1_NAME}'s data was\n"
.string "added to the POKéDEX.\p"
.string "$"
@@ -1652,72 +1652,72 @@ gUnknown_83FD8B6:: @ 83FD8B6
.string "ナゾ$"
gUnknown_83FD8B9:: @ 83FD8B9
- .string "{STRING 19}'s {STRING 22}\n"
+ .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\n"
.string "cured paralysis!$"
gUnknown_83FD8D2:: @ 83FD8D2
- .string "{STRING 19}'s {STRING 22}\n"
+ .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\n"
.string "cured poison!$"
gUnknown_83FD8E8:: @ 83FD8E8
- .string "{STRING 19}'s {STRING 22}\n"
+ .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\n"
.string "healed its burn!$"
gUnknown_83FD901:: @ 83FD901
- .string "{STRING 19}'s {STRING 22}\n"
+ .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\n"
.string "defrosted it!$"
gUnknown_83FD917:: @ 83FD917
- .string "{STRING 19}'s {STRING 22}\n"
+ .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\n"
.string "woke it from its sleep!$"
gUnknown_83FD937:: @ 83FD937
- .string "{STRING 19}'s {STRING 22}\n"
+ .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\n"
.string "snapped it out of confusion!$"
gUnknown_83FD95C:: @ 83FD95C
- .string "{STRING 19}'s {STRING 22}\n"
- .string "cured its {STRING 00} problem!$"
+ .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\n"
+ .string "cured its {B_BUFF1} problem!$"
gUnknown_83FD97A:: @ 83FD97A
- .string "{STRING 19}'s {STRING 22}\n"
+ .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\n"
.string "normalized its status!$"
gUnknown_83FD999:: @ 83FD999
- .string "{STRING 19}'s {STRING 22}\n"
+ .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\n"
.string "restored health!$"
gUnknown_83FD9B2:: @ 83FD9B2
- .string "{STRING 19}'s {STRING 22}\n"
- .string "restored {STRING 00}'s PP!$"
+ .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\n"
+ .string "restored {B_BUFF1}'s PP!$"
gUnknown_83FD9CC:: @ 83FD9CC
- .string "{STRING 19}'s {STRING 22}\n"
+ .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\n"
.string "restored its status!$"
gUnknown_83FD9E9:: @ 83FD9E9
- .string "{STRING 19}'s {STRING 22}\n"
+ .string "{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\n"
.string "restored its HP a little!$"
gUnknown_83FDA0B:: @ 83FDA0B
- .string "{STRING 22}'s effect allows only\n"
- .string "{STRING 20} to be used!\p"
+ .string "{B_LAST_ITEM}'s effect allows only\n"
+ .string "{B_CURRENT_MOVE} to be used!\p"
.string "$"
gUnknown_83FDA33:: @ 83FDA33
- .string "{STRING 16} hung on\n"
- .string "using its {STRING 22}!$"
+ .string "{B_DEF_NAME_WITH_PREFIX} hung on\n"
+ .string "using its {B_LAST_ITEM}!$"
gUnknown_83FDA4C:: @ 83FDA4C
.string "$"
gUnknown_83FDA4D:: @ 83FDA4D
- .string "{STRING 35} played the {STRING 22}.\p"
+ .string "{B_PLAYER_NAME} played the {B_LAST_ITEM}.\p"
.string "Now, that's a catchy tune!$"
gUnknown_83FDA7A:: @ 83FDA7A
- .string "{STRING 35} played the\n"
- .string "{STRING 22}.$"
+ .string "{B_PLAYER_NAME} played the\n"
+ .string "{B_LAST_ITEM}.$"
gUnknown_83FDA8C:: @ 83FDA8C
.string "The POKéMON hearing the FLUTE\n"
@@ -1730,7 +1730,7 @@ gUnknown_83FDAB1:: @ 83FDAB1
gUnknown_83FDAE2:: @ 83FDAE2
.string "OAK: Oh, for Pete's sake…\n"
.string "So pushy, as always.\p"
- .string "{STRING 35}.\p"
+ .string "{B_PLAYER_NAME}.\p"
.string "You've never had a POKéMON battle\n"
.string "before, have you?\p"
.string "A POKéMON battle is when TRAINERS\n"
@@ -1785,7 +1785,7 @@ gUnknown_83FDDEB:: @ 83FDDEB
.string "How disappointing…\p"
.string "If you win, you earn prize money,\n"
.string "and your POKéMON grow.\p"
- .string "But if you lose, {STRING 35}, you end\n"
+ .string "But if you lose, {B_PLAYER_NAME}, you end\n"
.string "up paying prize money…\p"
.string "However, since you had no warning\n"
.string "this time, I'll pay for you.\p"
@@ -2245,10 +2245,10 @@ gUnknown_83FE6D0:: @ 83FE6D0
gText_WhatWillPkmnDo:: @ 83FE6D5
.string "What will\n"
- .string "{STRING 18} do?$"
+ .string "{B_ACTIVE_NAME_WITH_PREFIX} do?$"
gUnknown_83FE6E6:: @ 83FE6E6
- .string "What will {STRING 35}\n"
+ .string "What will {B_PLAYER_NAME}\n"
.string "throw?$"
gUnknown_83FE6FA:: @ 83FE6FA
@@ -2485,15 +2485,15 @@ gUnknown_83FE9C4:: @ 83FE9C4
.4byte gOtherText_Mixed
gUnknown_83FE9D4::
- .string "{PLAY_SE SE_NIGERU}{STRING 28} {STRING 29} fled!$"
+ .string "{PLAY_SE SE_NIGERU}{B_TRAINER1_CLASS} {B_TRAINER1_NAME} fled!$"
gUnknown_83FE9E4:: @ 83FE9E4
.string "Player lost against\n"
- .string "{STRING 28} {STRING 29}!$"
+ .string "{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!$"
gUnknown_83FE9FF:: @ 83FE9FF
.string "Player battled to a draw against\n"
- .string "{STRING 28} {STRING 29}!$"
+ .string "{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!$"
.align 2
gUnknown_83FEA28:: @ 83FEA28
diff --git a/data/hall_of_fame.s b/data/hall_of_fame.s
deleted file mode 100644
index 3cd0876fc..000000000
--- a/data/hall_of_fame.s
+++ /dev/null
@@ -1,43 +0,0 @@
-#include "constants/region_map.h"
-#include "constants/flags.h"
-#include "constants/moves.h"
- .include "asm/macros.inc"
- .include "constants/constants.inc"
- .section .rodata
- .align 2
-
-gUnknown_840C228:: @ 840C228
- .incbin "baserom.gba", 0x40C228, 0xC
-
-gUnknown_840C234:: @ 840C234
- .incbin "baserom.gba", 0x40C234, 0x8
-
-gUnknown_840C23C:: @ 840C23C
- .incbin "baserom.gba", 0x40C23C, 0x4
-
-gUnknown_840C240:: @ 840C240
- .incbin "baserom.gba", 0x40C240, 0x8
-
-gUnknown_840C248:: @ 840C248
- .incbin "baserom.gba", 0x40C248, 0x10
-
-gUnknown_840C258:: @ 840C258
- .incbin "baserom.gba", 0x40C258, 0x10
-
-gUnknown_840C268:: @ 840C268
- .incbin "baserom.gba", 0x40C268, 0x6
-
-gUnknown_840C26E:: @ 840C26E
- .incbin "baserom.gba", 0x40C26E, 0x2A
-
-gUnknown_840C298:: @ 840C298
- .incbin "baserom.gba", 0x40C298, 0xEC
-
-gUnknown_840C384:: @ 840C384
- .incbin "baserom.gba", 0x40C384, 0x18
-
-gUnknown_840C39C:: @ 840C39C
- .incbin "baserom.gba", 0x40C39C, 0x20
-
-gUnknown_840C3BC:: @ 840C3BC
- .incbin "baserom.gba", 0x40C3BC, 0x1E8
diff --git a/data/link_rfu_3.s b/data/link_rfu_3.s
index ed1a09b16..9235d4b62 100644
--- a/data/link_rfu_3.s
+++ b/data/link_rfu_3.s
@@ -370,7 +370,22 @@ gUnknown_8459580:: @ 8459580
.incbin "baserom.gba", 0x459580, 0x8
gUnknown_8459588:: @ 8459588
- .incbin "baserom.gba", 0x459588, 0x64
+ .incbin "baserom.gba", 0x459588, 0x28
-gUnknown_84595EC:: @ 84595EC @ referenced in mevent/script_common.inc
- .incbin "baserom.gba", 0x4595EC, 0x48
+gUnknown_84595B0::
+ .string "Canceled reading the Card.$"
+
+ .align 2
+gUnknown_84595CC::
+ .4byte 0x02, 0x15 @ RECEIVE ID(0x15)
+ .4byte 0x0c, 0x00 @ READ PACKET AND COMPUTER SOMETHING
+ .4byte 0x14, 0x00 @ SEND ALL
+ .4byte 0x01, 0x0e @ RETURN 0x0e
+
+gMEventSrvScript_OtherTrainerCanceled:: @ 84595EC @ referenced in mevent/script_common.inc
+ .4byte 0x12, 0x20, gUnknown_84595CC @ SEND
+ .4byte 0x01, 0x00, NULL @ WAIT SEND
+ .4byte 0x14, 0x1b, gUnknown_84595B0 @ SEND_STR
+ .4byte 0x01, 0x00, NULL @ WAIT SEND
+ .4byte 0x02, 0x14, NULL @ RECV
+ .4byte 0x00, 0x09, NULL @ RETURN (other trainer canceled)
diff --git a/data/mevent/script_common.inc b/data/mevent/script_common.inc
index abf03ab95..f3ca09e3d 100644
--- a/data/mevent/script_common.inc
+++ b/data/mevent/script_common.inc
@@ -1,84 +1,87 @@
-gUnknown_8468920::
- .4byte 0x12, 0x10, gUnknown_8468810
- .4byte 0x01, 0x00, NULL
- .4byte 0x02, 0x14, NULL
- .4byte 0x00, 0x0a, NULL
- .4byte 0x12, 0x10, gUnknown_8468820
- .4byte 0x01, 0x00, NULL
- .4byte 0x02, 0x14, NULL
- .4byte 0x00, 0x0b, NULL
- .4byte 0x12, 0x10, gUnknown_84688E0
- .4byte 0x01, 0x00, NULL
- .4byte 0x02, 0x14, NULL
- .4byte 0x00, 0x09, NULL
+gMEventSrvScript_UnableToSend::
+ .4byte 0x12, 0x10, gMEventClientScript_UnableToRecv @ SEND
+ .4byte 0x01, 0x00, NULL @ WAIT SEND
+ .4byte 0x02, 0x14, NULL @ RECV
+ .4byte 0x00, 0x0a, NULL @ RETURN (can't send)
-gUnknown_84689B0::
- .4byte 0x12, 0x10, gUnknown_8468898
- .4byte 0x01, 0x00, NULL
- .4byte 0x02, 0x14, NULL
- .4byte 0x00, 0x07, NULL
+ .4byte 0x12, 0x10, gMEventClientScript_CommError @ SEND
+ .4byte 0x01, 0x00, NULL @ WAIT SEND
+ .4byte 0x02, 0x14, NULL @ RECV
+ .4byte 0x00, 0x0b, NULL @ RETURN (comm error)
-gUnknown_84689E0::
- .4byte 0x12, 0x28, gUnknown_8468870
- .4byte 0x01, 0x00, NULL
- .4byte 0x0e, 0x00, NULL
- .4byte 0x01, 0x00, NULL
- .4byte 0x02, 0x13, NULL
- .4byte 0x08, 0x00, NULL
- .4byte 0x04, 0x01, gUnknown_84689B0
- .4byte 0x12, 0x10, gUnknown_84688A8
- .4byte 0x01, 0x00, NULL
- .4byte 0x02, 0x14, NULL
- .4byte 0x00, 0x03, NULL
+ .4byte 0x12, 0x10, gMEventClientScript_OtherTrainerCanceled @ SEND
+ .4byte 0x01, 0x00, NULL @ WAIT SEND
+ .4byte 0x02, 0x14, NULL @ RECV
+ .4byte 0x00, 0x09, NULL @ RETURN (other trn canceled)
-gUnknown_8468A64::
- .4byte 0x12, 0x30, gUnknown_8468840
- .4byte 0x01, 0x00, NULL
- .4byte 0x0d, 0x00, NULL
- .4byte 0x01, 0x00, NULL
- .4byte 0x0f, 0x00, NULL
- .4byte 0x01, 0x00, NULL
- .4byte 0x02, 0x14, NULL
- .4byte 0x00, 0x02, NULL
+gMEventSrvScript_OtherTrnHasNews::
+ .4byte 0x12, 0x10, gMEventClientScript_AlreadyHadNews @ SEND
+ .4byte 0x01, 0x00, NULL @ WAIT SEND
+ .4byte 0x02, 0x14, NULL @ RECV
+ .4byte 0x00, 0x07, NULL @ RETURN (other trn has news)
-gUnknown_8468AC4::
- .4byte 0x12, 0x28, gUnknown_84688B8
- .4byte 0x01, 0x00, NULL
- .4byte 0x02, 0x13, NULL
- .4byte 0x08, 0x00, NULL
- .4byte 0x04, 0x00, gUnknown_8468A64
- .4byte 0x03, 0x00, gUnknown_84595EC
+gMEventSrvScript_SentNewsSuccess::
+ .4byte 0x12, 0x28, gMEventClientScript_ReceiveNewsAndValidate @ SEND
+ .4byte 0x01, 0x00, NULL @ WAIT SEND
+ .4byte 0x0e, 0x00, NULL @ SEND_NEWS
+ .4byte 0x01, 0x00, NULL @ WAIT SEND
+ .4byte 0x02, 0x13, NULL @ RECV
+ .4byte 0x08, 0x00, NULL @ READWORD
+ .4byte 0x04, 0x01, gMEventSrvScript_OtherTrnHasNews @ BRANCH_EQ
+ .4byte 0x12, 0x10, gMEventClientScript_RecvNewsSuccess @ SEND
+ .4byte 0x01, 0x00, NULL @ WAIT SEND
+ .4byte 0x02, 0x14, NULL @ RECV
+ .4byte 0x00, 0x03, NULL @ RETURN (news sent to)
-gUnknown_8468B0C::
- .4byte 0x12, 0x10, gUnknown_84688F0
- .4byte 0x01, 0x00, NULL
- .4byte 0x02, 0x14, NULL
- .4byte 0x00, 0x05, NULL
- .4byte 0x12, 0x10, gUnknown_8468830
- .4byte 0x01, 0x00, NULL
- .4byte 0x02, 0x14, NULL
- .4byte 0x00, 0x00, NULL
+gMEventSrvScript_SendCardSuccess::
+ .4byte 0x12, 0x30, gMEventClientScript_ReceiveCardAndReturnSuccess @ SEND
+ .4byte 0x01, 0x00, NULL @ WAIT SEND
+ .4byte 0x0d, 0x00, NULL @ SEND_CARD
+ .4byte 0x01, 0x00, NULL @ WAIT SEND
+ .4byte 0x0f, 0x00, NULL @ BUFFER_SEND
+ .4byte 0x01, 0x00, NULL @ WAIT SEND
+ .4byte 0x02, 0x14, NULL @ RECV
+ .4byte 0x00, 0x02, NULL @ RETURN (card sent to)
-gUnknown_8468B6C:: @ 8468B6C
- .4byte 0x1b, 0x00, NULL
- .4byte 0x12, 0x20, gUnknown_84687F0
- .4byte 0x01, 0x00, NULL
- .4byte 0x02, 0x11, NULL
- .4byte 0x05, 0x00, NULL
- .4byte 0x06, 0x00, NULL
- .4byte 0x04, 0x00, gUnknown_8468920
- .4byte 0x03, 0x00, gUnknown_84689E0
+gMEventSrvScript_AskClientToOverwriteCard::
+ .4byte 0x12, 0x28, gMEventClientScript_AskWouldLikeToTossCard @ SEND
+ .4byte 0x01, 0x00, NULL @ WAIT SEND
+ .4byte 0x02, 0x13, NULL @ RECV
+ .4byte 0x08, 0x00, NULL @ READWORD
+ .4byte 0x04, 0x00, gMEventSrvScript_SendCardSuccess @ BRANCH_EQ
+ .4byte 0x03, 0x00, gMEventSrvScript_OtherTrainerCanceled @ BRANCH
-gUnknown_8468BCC:: @ 8468BCC
- .4byte 0x1a, 0x00, NULL
- .4byte 0x1c, 0x00, NULL
- .4byte 0x12, 0x20, gUnknown_84687F0
- .4byte 0x01, 0x00, NULL
- .4byte 0x02, 0x11, NULL
- .4byte 0x05, 0x00, NULL
- .4byte 0x06, 0x00, NULL
- .4byte 0x04, 0x00, gUnknown_8468920
- .4byte 0x07, 0x00, NULL
- .4byte 0x04, 0x02, gUnknown_8468AC4
- .4byte 0x04, 0x00, gUnknown_8468A64
- .4byte 0x03, 0x00, gUnknown_8468B0C
+gMEventSrvScript_OtherTrnHasCard::
+ .4byte 0x12, 0x10, gMEventClientScript_AlreadyHadCard @ SEND
+ .4byte 0x01, 0x00, NULL @ WAIT SEND
+ .4byte 0x02, 0x14, NULL @ RECV
+ .4byte 0x00, 0x05, NULL @ RETURN (other trn has card)
+
+ .4byte 0x12, 0x10, gMEventClientScript_NothingSentOver @ SEND
+ .4byte 0x01, 0x00, NULL @ WAIT SEND
+ .4byte 0x02, 0x14, NULL @ RECV
+ .4byte 0x00, 0x00, NULL @ RETURN (nothing sent over)
+
+gMEventSrvScript_SendNews:: @ 8468B6C
+ .4byte 0x1b, 0x00, NULL @ BUFFER_SAVED_NEWS
+ .4byte 0x12, 0x20, gMEventClientScript_Send1442CC @ SEND
+ .4byte 0x01, 0x00, NULL @ WAIT SEND
+ .4byte 0x02, 0x11, NULL @ RECV
+ .4byte 0x05, 0x00, NULL @ READ_1442CC
+ .4byte 0x06, 0x00, NULL @ VALID_1442CC
+ .4byte 0x04, 0x00, gMEventSrvScript_UnableToSend @ BRANCH_EQ
+ .4byte 0x03, 0x00, gMEventSrvScript_SentNewsSuccess @ BRANCH
+
+gMEventSrvScript_SendCard:: @ 8468BCC
+ .4byte 0x1a, 0x00, NULL @ BUFFER_SAVED_CARD
+ .4byte 0x1c, 0x00, NULL @ RAM_SCRIPT_IF_VALID
+ .4byte 0x12, 0x20, gMEventClientScript_Send1442CC @ SEND
+ .4byte 0x01, 0x00, NULL @ WAIT SEND
+ .4byte 0x02, 0x11, NULL @ RECV
+ .4byte 0x05, 0x00, NULL @ READ_1442CC
+ .4byte 0x06, 0x00, NULL @ VALID_1442CC
+ .4byte 0x04, 0x00, gMEventSrvScript_UnableToSend @ BRANCH_EQ
+ .4byte 0x07, 0x00, NULL @ CHECK_1442CC_14
+ .4byte 0x04, 0x02, gMEventSrvScript_AskClientToOverwriteCard @ BRANCH_EQ
+ .4byte 0x04, 0x00, gMEventSrvScript_SendCardSuccess @ BRANCH_EQ
+ .4byte 0x03, 0x00, gMEventSrvScript_OtherTrnHasCard @ BRANCH
diff --git a/data/mevent/script_ish.inc b/data/mevent/script_ish.inc
index 3d79cf1ee..ed6b639da 100644
--- a/data/mevent/script_ish.inc
+++ b/data/mevent/script_ish.inc
@@ -1,26 +1,26 @@
-gUnknown_84687E0:: @ 84687E0
+gMEventClientScript_InotialListen:: @ 84687E0
.4byte 0x02, 0x10 @ RECEIVE ID(0x10)
.4byte 0x04, 0x00 @ JUMP TO RECEIVE BUFFER
-gUnknown_84687F0::
+gMEventClientScript_Send1442CC::
.4byte 0x08, 0x00 @ SEND HEADER MAYBE
.4byte 0x03, 0x00 @ WAIT SEND
.4byte 0x02, 0x10 @ RECEIVE ID(0x10)
.4byte 0x04, 0x00 @ JUMP TO RECEIVE BUFFER
-gUnknown_8468810::
+gMEventClientScript_UnableToRecv:: @ can't accept card or news
.4byte 0x14, 0x00 @ SEND ALL
.4byte 0x01, 0x0a @ RETURN 0x0a
-gUnknown_8468820::
+gMEventClientScript_CommError:: @ comm error
.4byte 0x14, 0x00 @ SEND ALL
.4byte 0x01, 0x0b @ RETURN 0x0b
-gUnknown_8468830::
+gMEventClientScript_NothingSentOver:: @ nothing sent
.4byte 0x14, 0x00 @ SEND ALL
.4byte 0x01, 0x00 @ RETURN 0x00
-gUnknown_8468840::
+gMEventClientScript_ReceiveCardAndReturnSuccess:: @ card success
.4byte 0x02, 0x16 @ RECEIVE ID(0x16)
.4byte 0x0a, 0x00 @ RECEIVE_TO_SAVE_FILE
.4byte 0x02, 0x19 @ RECEIVE ID(0x19)
@@ -28,37 +28,37 @@ gUnknown_8468840::
.4byte 0x14, 0x00 @ SEND ALL
.4byte 0x01, 0x02 @ RETURN 0x02
-gUnknown_8468870::
+gMEventClientScript_ReceiveNewsAndValidate::
.4byte 0x02, 0x17 @ RECEIVE ID(0x17)
- .4byte 0x09, 0x00 @ VALIDATE BUFF3120
+ .4byte 0x09, 0x00 @ VALIDATE NEWS
.4byte 0x03, 0x00 @ WAIT SEND
.4byte 0x02, 0x10 @ RECEIVE ID(0x10)
.4byte 0x04, 0x00 @ JUMP TO RECEIVE BUFFER
-gUnknown_8468898::
+gMEventClientScript_AlreadyHadNews:: @ already had news
.4byte 0x14, 0x00 @ SEND ALL
.4byte 0x01, 0x07 @ RETURN 0x07
-gUnknown_84688A8::
+gMEventClientScript_RecvNewsSuccess:: @ news success
.4byte 0x14, 0x00 @ SEND ALL
.4byte 0x01, 0x03 @ RETURN 0x03
-gUnknown_84688B8::
+gMEventClientScript_AskWouldLikeToTossCard::
.4byte 0x0d, 0x00 @ REQUEST PARAMETER
.4byte 0x0e, 0x00 @ SEND PARAMETER
.4byte 0x03, 0x00 @ WAIT SEND
.4byte 0x02, 0x10 @ RECEIVE ID(0x10)
.4byte 0x04, 0x00 @ JUMP TO RECEIVE BUFFER
-gUnknown_84688E0::
+gMEventClientScript_OtherTrainerCanceled:: @ comm canceled
.4byte 0x14, 0x00 @ SEND ALL
.4byte 0x01, 0x09 @ RETURN 0x09
-gUnknown_84688F0::
+gMEventClientScript_AlreadyHadCard:: @ already had card
.4byte 0x14, 0x00 @ SEND ALL
.4byte 0x01, 0x05 @ RETURN 0x05
-gUnknown_8468900::
+gMEventClientScript_SuccessFromBuffer:: @ success from buffer
.4byte 0x02, 0x15 @ RECEIVE ID(0x15)
.4byte 0x0c, 0x00 @ READ PACKET AND COMPUTE SOMETHING
.4byte 0x14, 0x00 @ SEND ALL
diff --git a/data/strings.s b/data/strings.s
index 4914f9062..9b223df62 100644
--- a/data/strings.s
+++ b/data/strings.s
@@ -122,7 +122,7 @@ gUnknown_8415CD9:: @ 0x8415CD9
gUnknown_8415CE0:: @ 0x8415CE0
.string "ポケモンずかん$"
-gUnknown_8415CE8:: @ 8415CE8
+gText_MainMenuTime:: @ 8415CE8
.string "TIME$"
gUnknown_8415CED:: @ 0x8415CED
@@ -330,7 +330,7 @@ gUnknown_8416002:: @ 8416002
.string "PAGE$"
.align 2
-gUnknown_8416008:: @ 8416008
+gText_WelcomeToHOF:: @ 8416008
.string "Welcome to the HALL OF FAME!$"
gUnknown_8416025:: @ 0x8416025
@@ -346,31 +346,31 @@ gUnknown_8416067:: @ 0x8416067
.string "でんげんを きらないでください$"
.align 2
-gUnknown_8416090:: @ 8416090
+gText_HOFCorrupted:: @ 8416090
.string "The HALL OF FAME data is\n"
.string "corrupted.$"
-gUnknown_84160B4:: @ 84160B4
+gText_HOFNumber:: @ 84160B4
.string "HALL OF FAME No. {STR_VAR_1}$"
-gUnknown_84160C8:: @ 84160C8
+gText_LeagueChamp:: @ 84160C8
.string "LEAGUE CHAMPION!\n"
.string "CONGRATULATIONS!$"
.align 2
-gUnknown_84160EC:: @ 84160EC
+gText_Number:: @ 84160EC
.string "No. $"
.align 2
-gUnknown_84160F4:: @ 84160F4
+gText_Level:: @ 84160F4
.string "Lv. $"
.align 2
-gUnknown_84160FC:: @ 84160FC
+gText_Name:: @ 84160FC
.string "NAME$"
.align 2
-gUnknown_8416104:: @ 8416104
+gText_IDNumber:: @ 8416104
.string "IDNo.$"
gUnknown_841610A:: @ 0x841610A
diff --git a/graphics/hall_of_fame/unk_840C3BC.png b/graphics/hall_of_fame/unk_840C3BC.png
new file mode 100644
index 000000000..567665495
--- /dev/null
+++ b/graphics/hall_of_fame/unk_840C3BC.png
Binary files differ
diff --git a/include/credits.h b/include/credits.h
new file mode 100644
index 000000000..763abd77f
--- /dev/null
+++ b/include/credits.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_CREDITS_H
+#define GUARD_CREDITS_H
+
+extern bool8 gHasHallOfFameRecords;
+
+#endif //GUARD_CREDITS_H
diff --git a/include/easy_chat.h b/include/easy_chat.h
index 6c3947ea9..765758035 100644
--- a/include/easy_chat.h
+++ b/include/easy_chat.h
@@ -34,7 +34,7 @@ void InitEasyChatPhrases(void);
u8 *CopyEasyChatWord(u8 *dest, u16 word);
u8 *ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 length1, u16 length2);
bool8 EC_DoesEasyChatStringFitOnLine(const u16 *easyChatWords, u8 columns, u8 rows, u16 maxLength);
-void ResetSomeMEventECBuffer_3120_338(void);
+void EC_ResetMEventProfileMaybe(void);
void InitEasyChatPhrases(void);
void EnableRareWord(u8);
bool8 InitEasyChatSelection(void);
diff --git a/include/global.h b/include/global.h
index 22faa7b1c..874717784 100644
--- a/include/global.h
+++ b/include/global.h
@@ -636,7 +636,7 @@ struct FameCheckerSaveData
#define NUM_EASY_CHAT_EXTRA_PHRASES 33
#define EASY_CHAT_EXTRA_PHRASES_SIZE ((NUM_EASY_CHAT_EXTRA_PHRASES >> 3) + (NUM_EASY_CHAT_EXTRA_PHRASES % 8 ? 1 : 0))
-struct MEventBuffer_3120_Sub
+struct MEWonderNewsData
{
u16 unk_00;
u8 unk_02;
@@ -645,13 +645,13 @@ struct MEventBuffer_3120_Sub
u8 unk_2C[10][40];
};
-struct MEventBuffer_3120
+struct MEWonderNewsStruct
{
u32 crc;
- struct MEventBuffer_3120_Sub data;
+ struct MEWonderNewsData data;
};
-struct MEventBuffer_32E0_Sub
+struct MEWonderCardData
{
u16 unk_00;
u16 unk_02;
@@ -667,10 +667,10 @@ struct MEventBuffer_32E0_Sub
u8 unk_122[40];
};
-struct MEventBuffer_32E0
+struct MEWonderCardStruct
{
u32 crc;
- struct MEventBuffer_32E0_Sub data;
+ struct MEWonderCardData data;
};
struct MEventBuffer_3430_Sub
@@ -690,11 +690,11 @@ struct MEventBuffer_3430
struct MEventBuffers
{
- /*0x000 0x3120*/ struct MEventBuffer_3120 buffer_000;
- /*0x1c0 0x32e0*/ struct MEventBuffer_32E0 buffer_1c0;
+ /*0x000 0x3120*/ struct MEWonderNewsStruct menews;
+ /*0x1c0 0x32e0*/ struct MEWonderCardStruct mecard;
/*0x310 0x3430*/ struct MEventBuffer_3430 buffer_310;
- /*0x338 0x3458*/ u16 unk_338[4];
- /*0x340 0x3460*/ struct MENewsJisanStruct unk_340;
+ /*0x338 0x3458*/ u16 ec_profile_maybe[4];
+ /*0x340 0x3460*/ struct MENewsJisanStruct me_jisan;
/*0x344 0x3464*/ u32 unk_344[2][5];
}; // 0x36C 0x348C
@@ -766,7 +766,7 @@ struct SaveBlock1
/*0x309C*/ u8 giftRibbons[52];
/*0x30D0*/ struct Roamer roamer;
/*0x30EC*/ struct EnigmaBerry enigmaBerry;
- /*0x3120*/ struct MEventBuffers unk_3120;
+ /*0x3120*/ struct MEventBuffers mysteryEventBuffers;
/*0x348C*/ u8 filler_348C[400];
/*0x361C*/ struct RamScript ramScript;
/*0x3A08*/ u8 filler3A08[12];
diff --git a/include/graphics.h b/include/graphics.h
index 0e804e17c..bc87e4d53 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -4226,4 +4226,7 @@ extern const u16 gTradeMenuMonBox_Tilemap[];
extern const u16 gUnknown_8E9CBBC[];
extern const u16 gUnknown_8E9CB9C[];
+extern const u32 gFile_graphics_misc_confetti_sheet[];
+extern const u32 gFile_graphics_misc_confetti_palette[];
+
#endif //GUARD_GRAPHICS_H
diff --git a/include/hall_of_fame.h b/include/hall_of_fame.h
index 1d2122399..fd8aed909 100644
--- a/include/hall_of_fame.h
+++ b/include/hall_of_fame.h
@@ -7,7 +7,7 @@ void CB2_DoHallOfFameScreen(void);
void CB2_DoHallOfFameScreenDontSaveData(void);
void CB2_DoHallOfFamePC(void);
void sub_8175280(void);
-void sub_80F2978(void);
+void CB2_InitHofPC(void);
void HallOfFamePCBeginFade(void);
void ReturnFromHallOfFamePC(void);
diff --git a/include/mevent.h b/include/mevent.h
index 31ab9e421..81caeb42f 100644
--- a/include/mevent.h
+++ b/include/mevent.h
@@ -3,22 +3,22 @@
#include "global.h"
-struct MEventStruct_Unk1442CC
+struct MEventClientHeaderStruct
{
u32 unk_00;
u16 unk_04;
u32 unk_08;
u16 unk_0C;
u32 unk_10;
- u16 unk_14;
+ u16 id;
u16 unk_16[4];
struct MEventBuffer_3430_Sub unk_20;
u8 unk_44;
- u8 unk_45[7];
- u8 unk_4C[4];
- u16 unk_50[6];
- u8 unk_5C[4];
- u8 unk_60;
+ u8 playerName[7];
+ u8 playerTrainerId[4];
+ u16 easyChatProfile[6];
+ u8 gameCode[4];
+ u8 version;
};
struct MEvent_Str_1
@@ -33,25 +33,25 @@ struct MEvent_Str_2
u8 fill_00[0x40];
};
-struct MEventBuffer_3120_Sub * GetSavedWonderNews(void);
-struct MEventBuffer_32E0_Sub * GetSavedWonderCard(void);
+struct MEWonderNewsData * GetSavedWonderNews(void);
+struct MEWonderCardData * GetSavedWonderCard(void);
struct MEventBuffer_3430_Sub * sav1_get_mevent_buffer_2(void);
struct MENewsJisanStruct * GetMENewsJisanStructPtr(void);
-bool32 sub_8143DC8(const struct MEventBuffer_3120_Sub * src);
+bool32 sub_8143DC8(const struct MEWonderNewsData * src);
bool32 ValidateReceivedWonderNews(void);
bool32 ValidateReceivedWonderCard(void);
bool32 sub_8143EF4(const u8 * src);
-bool32 sub_8143F68(const struct MEventBuffer_32E0_Sub * data);
-void sub_814410C(struct MEventBuffer_32E0_Sub * buffer);
+bool32 sub_8143F68(const struct MEWonderCardData * data);
+void sub_814410C(struct MEWonderCardData * buffer);
bool32 sub_8144254(const u16 * data);
-void sub_81442CC(struct MEventStruct_Unk1442CC * data);
-bool32 sub_81443D4(const struct MEventStruct_Unk1442CC * data);
-u32 sub_8144418(const u16 * a0, const struct MEventStruct_Unk1442CC * a1, void * unused);
-u32 sub_8144434(const u16 * a0, const struct MEventStruct_Unk1442CC * a1, void * unused);
-bool32 sub_8144474(const struct MEventStruct_Unk1442CC * a0, const u16 * a1);
-u16 sub_81444B0(const struct MEventStruct_Unk1442CC * a0, u32 command);
-bool32 InitWonderCardResources(struct MEventBuffer_32E0_Sub * r5, struct MEventBuffer_3430_Sub * r6);
-bool32 InitWonderNewsResources(const struct MEventBuffer_3120_Sub * a0);
+void BuildMEventClientHeader(struct MEventClientHeaderStruct * data);
+bool32 ValidateMEventClientHeader(const struct MEventClientHeaderStruct * data);
+u32 sub_8144418(const u16 * a0, const struct MEventClientHeaderStruct * a1, void * unused);
+u32 sub_8144434(const u16 * a0, const struct MEventClientHeaderStruct * a1, void * unused);
+bool32 sub_8144474(const struct MEventClientHeaderStruct * a0, const u16 * a1);
+u16 sub_81444B0(const struct MEventClientHeaderStruct * a0, u32 command);
+bool32 InitWonderCardResources(struct MEWonderCardData * r5, struct MEventBuffer_3430_Sub * r6);
+bool32 InitWonderNewsResources(const struct MEWonderNewsData * a0);
s32 FadeToWonderCardMenu(void);
s32 FadeToWonderNewsMenu(void);
void DestroyWonderCard(void);
@@ -69,6 +69,6 @@ u32 MENews_GetInput(u16 input);
void sub_8143D24(void);
u16 sub_81445C0(u32 command);
void sub_8144714(u32 a0, u32 a1);
-u16 *sub_8143DA8(void);
+u16 *GetMEventProfileECWordsMaybe(void);
#endif //GUARD_MEVENT_H
diff --git a/include/mevent_server.h b/include/mevent_server.h
index 10ee96401..ddc00b978 100644
--- a/include/mevent_server.h
+++ b/include/mevent_server.h
@@ -31,7 +31,7 @@ struct send_recv_header
u16 size;
};
-struct mevent_cmd_ish
+struct mevent_client_cmd
{
u32 instr;
u32 parameter;
@@ -46,12 +46,12 @@ struct mevent_client
u32 cmdidx;
void * sendBuffer;
void * recvBuffer;
- struct mevent_cmd_ish * cmdBuffer;
+ struct mevent_client_cmd * cmdBuffer;
void * buffer;
struct mevent_srv_sub manager;
};
-struct mevent_cmd
+struct mevent_server_cmd
{
u32 instr;
bool32 flag;
@@ -64,11 +64,11 @@ struct mevent_srv_common
u32 param;
u32 mainseqno;
u32 cmdidx;
- const struct mevent_cmd * cmdBuffer;
+ const struct mevent_server_cmd * cmdBuffer;
void * recvBuffer;
- struct MEventBuffer_32E0_Sub * mevent_32e0;
- struct MEventBuffer_3120_Sub * mevent_3120;
- struct MEventStruct_Unk1442CC * mevent_unk1442cc;
+ struct MEWonderCardData * card;
+ struct MEWonderNewsData * news;
+ struct MEventClientHeaderStruct * mevent_unk1442cc;
void * sendBuffer1;
u32 sendBuffer1Size;
void * sendBuffer2;
diff --git a/include/mystery_event_script.h b/include/mystery_event_script.h
index be64663ed..8c59136c1 100644
--- a/include/mystery_event_script.h
+++ b/include/mystery_event_script.h
@@ -7,7 +7,7 @@ u32 RunMysteryEventScript(u8 *);
void SetMysteryEventScriptStatus(u32 val);
u16 GetRecordMixingGift(void);
-void sub_80DA89C(u8 *);
-bool32 sub_80DA8B0(u32 *);
+void MEventScript_InitContext(u8 *);
+bool32 MEventScript_Run(u32 *);
#endif // GUARD_MYSTERY_EVENT_SCRIPT_H
diff --git a/include/pokemon.h b/include/pokemon.h
index 79933a22c..3d0faca36 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -609,7 +609,7 @@ u32 CanMonLearnTMHM(struct Pokemon *mon, u8 tm);
u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves);
u8 GetLevelUpMovesBySpecies(u16 species, u16 *moves);
u8 GetNumberOfRelearnableMoves(struct Pokemon *mon);
-u16 sub_8043F90(u16 species);
+u16 SpeciesToPokedexNum(u16 species);
void ClearBattleMonForms(void);
void PlayBattleBGM(void);
void PlayMapChosenOrBattleBGM(u16 songId);
diff --git a/include/reset_save_heap.h b/include/reset_save_heap.h
index 8cb038906..e29448815 100644
--- a/include/reset_save_heap.h
+++ b/include/reset_save_heap.h
@@ -7,7 +7,7 @@
// Exported ROM declarations
-void sub_8079B7C(void);
+void ResetSaveHeap(void);
#endif //GUARD_RESET_SAVE_HEAP_H
diff --git a/include/save.h b/include/save.h
index 41d2ec666..ed527eefd 100644
--- a/include/save.h
+++ b/include/save.h
@@ -54,6 +54,11 @@ struct SaveSectionOffsets
#define UNKNOWN_CHECK_VALUE 0x8012025
+#define SECTOR_SAVE1(n) (n)
+#define SECTOR_SAVE2(n) ((n) + NUM_SECTORS_PER_SAVE_SLOT)
+#define SECTOR_HOF(n) ((n) + 2 * NUM_SECTORS_PER_SAVE_SLOT)
+#define SECTOR_TTOWER(n) ((n) + 2 * NUM_SECTORS_PER_SAVE_SLOT + 2)
+
// SetSectorDamagedStatus states
enum
{
@@ -62,17 +67,6 @@ enum
CHECK // unused
};
-// Do save types
-enum
-{
- NORMAL_SAVE,
- LINK_SAVE,
- EREADER_SAVE,
- HOF_SAVE,
- DIFFERENT_FILE_SAVE,
- HOF_DELETE_SAVE // unused
-};
-
extern u16 gFirstSaveSector;
extern u32 gPrevSaveCounter;
extern u16 gLastKnownGoodSector;
@@ -117,7 +111,7 @@ u8 sub_80DA40C(void);
u8 sub_80DA434(void);
u8 sub_80DA45C(void);
bool8 sub_80DA4A0(void);
-u8 Save_LoadGameData(u8 a1);
+u8 Save_LoadGameData(u8 saveType);
u32 TryCopySpecialSaveSection(u8 sector, u8* dst);
u32 sub_8153634(u8 sector, u8* src);
void sub_8153688(u8 taskId);
diff --git a/include/script.h b/include/script.h
index 4e8b8c305..c0b23e248 100644
--- a/include/script.h
+++ b/include/script.h
@@ -63,7 +63,7 @@ bool32 sub_80991F8(void);
u8 *sub_8099244(void);
void sub_80992A0(u8 *script, u16 scriptSize);
bool32 sub_8069DFC(void);
-void sub_8069EA4(u8 * script, u16 scriptSize);
+void MEventSetRamScript(u8 * script, u16 scriptSize);
u8 * sub_8069E48(void);
void sub_8069998(u8 var);
void sub_80699F8(void);
diff --git a/include/strings.h b/include/strings.h
index 32f4dcf43..80ede79ef 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -710,4 +710,18 @@ extern const u8 gEasyChatGroupName_TrendySaying[];
extern const u8 gEasyChatGroupName_Pokemon2[];
extern const u8 gText_ThreeQuestionMarks[];
+// hall_of_fame
+extern const u8 gText_LeagueChamp[];
+extern const u8 gText_HOFNumber[];
+extern const u8 gText_UPDOWNPick_ABUTTONBBUTTONCancel[];
+extern const u8 gText_UPDOWNPick_ABUTTONNext_BBUTTONBack[];
+extern const u8 gText_ABUTTONExit[];
+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[];
+
#endif //GUARD_STRINGS_H
diff --git a/include/trainer_pokemon_sprites.h b/include/trainer_pokemon_sprites.h
index a267737f5..3e27f58e4 100644
--- a/include/trainer_pokemon_sprites.h
+++ b/include/trainer_pokemon_sprites.h
@@ -12,6 +12,7 @@ u16 sub_818D8F0(u16 spriteId);
u16 sub_818D938(u16 species, bool8 isFrontPic, u16 destX, u16 destY, u8 paletteSlot, u8 windowId);
u8 sub_818D97C(u8 a0, u8 a1);
u16 CreateTrainerPicSprite(u16 species, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag);
+u16 FreeAndDestroyMonPicSprite(u16);
u16 FreeAndDestroyTrainerPicSprite(u16);
u16 PlayerGenderToFrontTrainerPicId_Debug(u8 gender, bool8 getClass);
u16 CreateMonPicSprite_HandleDeoxys(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag);
diff --git a/ld_script.txt b/ld_script.txt
index f06309dfc..d4a89d6ca 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -213,7 +213,7 @@ SECTIONS {
src/player_pc.o(.text);
src/intro.o(.text);
asm/battle_anim_special.o(.text);
- asm/hall_of_fame.o(.text);
+ src/hall_of_fame.o(.text);
src/credits.o(.text);
src/diploma.o(.text);
asm/save_failed_screen.o(.text);
@@ -261,6 +261,7 @@ SECTIONS {
src/mystery_gift_menu.o(.text);
src/mevent.o(.text);
src/mevent_server_helpers.o(.text);
+ src/mevent_client.o(.text);
src/mevent_server.o(.text);
src/mevent_8145654.o(.text);
src/menews_jisan.o(.text);
@@ -483,7 +484,7 @@ SECTIONS {
src/player_pc.o(.rodata);
src/intro.o(.rodata);
data/battle_anim_special.o(.rodata);
- data/hall_of_fame.o(.rodata);
+ src/hall_of_fame.o(.rodata);
src/credits.o(.rodata);
src/diploma.o(.rodata);
data/strings.o(.rodata);
@@ -532,6 +533,7 @@ SECTIONS {
src/mystery_gift_menu.o(.rodata);
src/mevent.o(.rodata);
src/mevent_server_helpers.o(.rodata);
+ src/mevent_client.o(.rodata);
src/mevent_server.o(.rodata);
src/mevent_8145654.o(.rodata);
data/data_8466FB8.o(.rodata);
diff --git a/src/cereader_tool.c b/src/cereader_tool.c
index 066702fe0..654a70b48 100644
--- a/src/cereader_tool.c
+++ b/src/cereader_tool.c
@@ -47,11 +47,11 @@ static bool32 CEReaderTool_SaveTrainerTower_r(struct EReaderTrainerHillSet * ttd
memset(buffer, 0, 0x1000);
memcpy(buffer, ttdata, SEC30_SIZE);
buffer[1] = sub_815D654();
- if (TryWriteSpecialSaveSection(30, buffer) != TRUE)
+ if (TryWriteSpecialSaveSection(SECTOR_TTOWER(0), buffer) != TRUE)
return FALSE;
memset(buffer, 0, 0x1000);
memcpy(buffer, (u8 *)ttdata + SEC30_SIZE, SEC31_SIZE);
- if (TryWriteSpecialSaveSection(31, buffer) != TRUE)
+ if (TryWriteSpecialSaveSection(SECTOR_TTOWER(1), buffer) != TRUE)
return FALSE;
return TRUE;
}
@@ -66,11 +66,11 @@ bool32 CEReaderTool_SaveTrainerTower(struct EReaderTrainerHillSet * ttdata)
static bool32 CEReaderTool_LoadTrainerTower_r(struct EReaderTrainerHillSet * ttdata, void * buffer)
{
- if (TryCopySpecialSaveSection(30, buffer) != 1)
+ if (TryCopySpecialSaveSection(SECTOR_TTOWER(0), buffer) != 1)
return FALSE;
memcpy(ttdata + 0x000, buffer, SEC30_SIZE);
- if (TryCopySpecialSaveSection(31, buffer) != 1)
+ if (TryCopySpecialSaveSection(SECTOR_TTOWER(1), buffer) != 1)
return FALSE;
memcpy((u8 *)ttdata + SEC30_SIZE, buffer, SEC31_SIZE);
diff --git a/src/credits.c b/src/credits.c
index ad78d875c..a0138e57a 100644
--- a/src/credits.c
+++ b/src/credits.c
@@ -188,6 +188,7 @@ struct CreditsTaskData
};
static EWRAM_DATA struct CreditsResources * sCreditsMgr = NULL;
+EWRAM_DATA bool8 gHasHallOfFameRecords = FALSE;
static void CB2_Credits(void);
static s32 RollCredits(void);
diff --git a/src/easy_chat.c b/src/easy_chat.c
index fd96f6a30..be617133b 100644
--- a/src/easy_chat.c
+++ b/src/easy_chat.c
@@ -485,10 +485,10 @@ void InitEasyChatPhrases(void)
gSaveBlock1Ptr->additionalPhrases[i] = 0;
}
-void ResetSomeMEventECBuffer_3120_338(void)
+void EC_ResetMEventProfileMaybe(void)
{
s32 i;
- u16 *ptr = sub_8143DA8();
+ u16 *ptr = GetMEventProfileECWordsMaybe();
for (i = 0; i < 4; i++)
ptr[i] = EC_WORD_UNDEFINED;
}
diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c
new file mode 100644
index 000000000..4ed0d3f04
--- /dev/null
+++ b/src/hall_of_fame.c
@@ -0,0 +1,1293 @@
+#include "global.h"
+#include "palette.h"
+#include "malloc.h"
+#include "decompress.h"
+#include "bg.h"
+#include "scanline_effect.h"
+#include "gpu_regs.h"
+#include "task.h"
+#include "text.h"
+#include "main.h"
+#include "sound.h"
+#include "save.h"
+#include "data.h"
+#include "m4a.h"
+#include "help_system.h"
+#include "hall_of_fame.h"
+#include "quest_log.h"
+#include "pc_screen_effect.h"
+#include "new_menu_helpers.h"
+#include "strings.h"
+#include "credits.h"
+#include "event_data.h"
+#include "overworld.h"
+#include "trainer_pokemon_sprites.h"
+#include "text_window.h"
+#include "field_fadetransition.h"
+#include "menu.h"
+#include "string_util.h"
+#include "trig.h"
+#include "random.h"
+#include "graphics.h"
+#include "constants/songs.h"
+#include "constants/species.h"
+#include "constants/flags.h"
+#include "constants/vars.h"
+#include "constants/maps.h"
+
+struct HallofFameMon
+{
+ u32 tid;
+ u32 personality;
+ u16 species:9;
+ u16 lvl:7;
+ u8 nick[10];
+};
+
+struct HallofFameTeam
+{
+ struct HallofFameMon mon[PARTY_SIZE];
+};
+
+struct HofGfx
+{
+ u16 state;
+ u8 field_2[4];
+ u8 tilemap1[0x1000];
+ u8 tilemap2[0x1000];
+};
+
+static EWRAM_DATA u32 sSelectedPaletteIndices = 0;
+static EWRAM_DATA struct HallofFameTeam * sHofMonPtr = NULL;
+static EWRAM_DATA struct HofGfx * sHofGfxPtr = NULL;
+
+#define HALL_OF_FAME_MAX_TEAMS 50
+#define HALL_OF_FAME_BG_PAL (RGB(22, 24, 29))
+
+static void Task_Hof_InitMonData(u8 taskId);
+static void Task_Hof_InitTeamSaveData(u8 taskId);
+static void Task_Hof_TrySaveData(u8 taskId);
+static void Task_Hof_DelayAfterSave(u8 taskId);
+static void Task_Hof_StartDisplayingMons(u8 taskId);
+static void Task_Hof_DisplayMon(u8 taskId);
+static void Task_Hof_PlayMonCryAndPrintInfo(u8 taskId);
+static void Task_Hof_TryDisplayAnotherMon(u8 taskId);
+static void Task_Hof_PaletteFadeAndPrintWelcomeText(u8 taskId);
+static void Task_Hof_ApplauseAndConfetti(u8 taskId);
+static void Task_Hof_WaitBorderFadeAway(u8 taskId);
+static void Task_Hof_SpawnPlayerPic(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 SetWarpsToRollCredits(void);
+static void Task_HofPC_CopySaveData(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_PrintDataIsCorrupted(u8 taskId);
+static void Task_HofPC_ExitOnButtonPress(u8 taskId);
+static void HallOfFame_PrintWelcomeText(u8 a0, u8 a1);
+static void HallOfFame_PrintMonInfo(struct HallofFameMon * hofMon, u8 a1, u8 a2);
+static void HallOfFame_PrintPlayerInfo(u8 a0, u8 a1);
+static void ClearVramOamPltt_LoadHofPal(void);
+static void HofInit_ResetGpuBuffersAndLoadConfettiGfx(void);
+static void Hof_InitBgs(void);
+static bool8 DrawHofBackground(void);
+static void SpriteCB_GetOnScreen(struct Sprite * sprite);
+static void SpriteCB_Confetti(struct Sprite * sprite);
+static bool8 Hof_SpawnConfetti(void);
+
+static const struct BgTemplate sHof_BgTemplates[] = {
+ {
+ .bg = 0,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0x000
+ },
+ {
+ .bg = 1,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 30,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0x000
+ },
+ {
+ .bg = 3,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 29,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0x000
+ }
+};
+
+static const struct WindowTemplate sWindowTemplate = {
+ .bg = 0,
+ .tilemapLeft = 2,
+ .tilemapTop = 2,
+ .width = 17,
+ .height = 6,
+ .paletteNum = 13,
+ .baseBlock = 0x001
+};
+
+static const u8 sTextColors[][4] = {
+ { 0, 1, 2 },
+ { 0, 2, 3 },
+ { 4, 5, 0 }
+};
+
+static const struct CompressedSpriteSheet sHallOfFame_ConfettiSpriteSheet[] = {
+ {gFile_graphics_misc_confetti_sheet, 0x220, 1001},
+ {}
+};
+
+static const struct CompressedSpritePalette sHallOfFame_ConfettiSpritePalette[] = {
+ {gFile_graphics_misc_confetti_palette, 1001},
+ {}
+};
+
+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_Confetti = {
+ .shape = SPRITE_SHAPE(8x8),
+ .size = SPRITE_SIZE(8x8)
+};
+
+static const union AnimCmd sAnimCmd_Frame00[] = {
+ ANIMCMD_FRAME( 0, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sAnimCmd_Frame01[] = {
+ ANIMCMD_FRAME( 1, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sAnimCmd_Frame02[] = {
+ ANIMCMD_FRAME( 2, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sAnimCmd_Frame03[] = {
+ ANIMCMD_FRAME( 3, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sAnimCmd_Frame04[] = {
+ ANIMCMD_FRAME( 4, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sAnimCmd_Frame05[] = {
+ ANIMCMD_FRAME( 5, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sAnimCmd_Frame06[] = {
+ ANIMCMD_FRAME( 6, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sAnimCmd_Frame07[] = {
+ ANIMCMD_FRAME( 7, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sAnimCmd_Frame08[] = {
+ ANIMCMD_FRAME( 8, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sAnimCmd_Frame09[] = {
+ ANIMCMD_FRAME( 9, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sAnimCmd_Frame10[] = {
+ ANIMCMD_FRAME(10, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sAnimCmd_Frame11[] = {
+ ANIMCMD_FRAME(11, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sAnimCmd_Frame12[] = {
+ ANIMCMD_FRAME(12, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sAnimCmd_Frame13[] = {
+ ANIMCMD_FRAME(13, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sAnimCmd_Frame14[] = {
+ ANIMCMD_FRAME(14, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sAnimCmd_Frame15[] = {
+ ANIMCMD_FRAME(15, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sAnimCmd_Frame16[] = {
+ ANIMCMD_FRAME(16, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpriteAnimTable_Confetti[] = {
+ sAnimCmd_Frame00,
+ sAnimCmd_Frame01,
+ sAnimCmd_Frame02,
+ sAnimCmd_Frame03,
+ sAnimCmd_Frame04,
+ sAnimCmd_Frame05,
+ sAnimCmd_Frame06,
+ sAnimCmd_Frame07,
+ sAnimCmd_Frame08,
+ sAnimCmd_Frame09,
+ sAnimCmd_Frame10,
+ sAnimCmd_Frame11,
+ sAnimCmd_Frame12,
+ sAnimCmd_Frame13,
+ sAnimCmd_Frame14,
+ sAnimCmd_Frame15,
+ sAnimCmd_Frame16
+};
+
+static const struct SpriteTemplate sSpriteTemplate_Confetti = {
+ .tileTag = 1001,
+ .paletteTag = 1001,
+ .oam = &sOamData_Confetti,
+ .anims = sSpriteAnimTable_Confetti,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCB_Confetti
+};
+
+static const u16 sHallOfFame_Pal[] = INCBIN_U16("graphics/hall_of_fame/unk_840C3BC.gbapal");
+static const u32 sHallOfFame_Gfx[] = INCBIN_U32("graphics/hall_of_fame/unk_840C3BC.4bpp.lz");
+
+static const struct HallofFameMon sDummyHofMon = {
+ .tid = 0x03EA03EA, // (u16[]){1002, 1002} corrupted sprite template?
+ .personality = 0,
+ .species = SPECIES_NONE,
+ .lvl = 0,
+ .nick = __(" ")
+};
+
+static const u8 sUnused[] = {2, 1, 3, 6, 4, 5};
+
+static void VBlankCB_HofIdle(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static void CB2_HofIdle(void)
+{
+ RunTasks();
+ RunTextPrinters();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static bool8 InitHallOfFameScreen(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ gHelpSystemEnabled = FALSE;
+ SetVBlankCallback(NULL);
+ ClearVramOamPltt_LoadHofPal();
+ sHofGfxPtr = AllocZeroed(sizeof(struct HofGfx));
+ gMain.state = 1;
+ break;
+ case 1:
+ HofInit_ResetGpuBuffersAndLoadConfettiGfx();
+ gMain.state++;
+ break;
+ case 2:
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 7));
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ Hof_InitBgs();
+ sHofGfxPtr->state = 0;
+ gMain.state++;
+ break;
+ case 3:
+ if (!DrawHofBackground())
+ {
+ SetVBlankCallback(VBlankCB_HofIdle);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ gMain.state++;
+ }
+ break;
+ case 4:
+ UpdatePaletteFade();
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(CB2_HofIdle);
+ PlayBGM(MUS_DENDOU);
+ return FALSE;
+ }
+ break;
+ }
+ return TRUE;
+}
+
+void CB2_DoHallOfFameScreen(void)
+{
+ u8 taskId;
+ if (!InitHallOfFameScreen())
+ {
+ taskId = CreateTask(Task_Hof_InitMonData, 0);
+ gTasks[taskId].data[0] = FALSE;
+ sHofMonPtr = AllocZeroed(sizeof(struct HallofFameTeam));
+ }
+}
+
+void CB2_DoHallOfFameScreenDontSaveData(void)
+{
+ u8 taskId;
+ if (!InitHallOfFameScreen())
+ {
+ taskId = CreateTask(Task_Hof_InitMonData, 0);
+ gTasks[taskId].data[0] = TRUE;
+ }
+}
+
+static void Task_Hof_InitMonData(u8 taskId)
+{
+ u16 i;
+ u16 j;
+ u8 nick[11];
+
+ gTasks[taskId].data[2] = 0;
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != SPECIES_NONE)
+ {
+ sHofMonPtr[0].mon[i].species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
+ sHofMonPtr[0].mon[i].tid = GetMonData(&gPlayerParty[i], MON_DATA_OT_ID);
+ sHofMonPtr[0].mon[i].personality = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY);
+ sHofMonPtr[0].mon[i].lvl = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL);
+ GetMonData(&gPlayerParty[i], MON_DATA_NICKNAME, nick);
+ for (j = 0; j < 10; j++)
+ sHofMonPtr[0].mon[i].nick[j] = nick[j];
+ gTasks[taskId].data[2]++;
+ }
+ else
+ {
+ sHofMonPtr[0].mon[i].species = SPECIES_NONE;
+ sHofMonPtr[0].mon[i].tid = 0;
+ sHofMonPtr[0].mon[i].personality = 0;
+ sHofMonPtr[0].mon[i].lvl = 0;
+ sHofMonPtr[0].mon[i].nick[0] = EOS;
+ }
+ }
+ sSelectedPaletteIndices = 0;
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].data[4] = 0xFF;
+ for (i = 0; i < 6; i++)
+ gTasks[taskId].data[i + 5] = 0xFF;
+ if (gTasks[taskId].data[0])
+ gTasks[taskId].func = Task_Hof_StartDisplayingMons;
+ else
+ gTasks[taskId].func = Task_Hof_InitTeamSaveData;
+}
+
+static void Task_Hof_InitTeamSaveData(u8 taskId)
+{
+ u16 i;
+ struct HallofFameTeam* lastSavedTeam = (struct HallofFameTeam *)(gDecompressionBuffer);
+
+ sub_8112450();
+ if (!gHasHallOfFameRecords)
+ {
+ memset(gDecompressionBuffer, 0, 0x2000);
+ }
+ else
+ {
+ if (Save_LoadGameData(SAVE_HALL_OF_FAME) != TRUE)
+ memset(gDecompressionBuffer, 0, 0x2000);
+ }
+
+ for (i = 0; i < HALL_OF_FAME_MAX_TEAMS; i++, lastSavedTeam++)
+ {
+ if (lastSavedTeam[0].mon[0].species == SPECIES_NONE)
+ 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;
+
+ DrawDialogueFrame(0, 0);
+ AddTextPrinterParameterized2(0, 2, gText_SavingDontTurnOffThePower2, 0, NULL, 2, 1, 3);
+ CopyWindowToVram(0, 3);
+ gTasks[taskId].func = Task_Hof_TrySaveData;
+}
+
+static void Task_Hof_TrySaveData(u8 taskId)
+{
+ gGameContinueCallback = CB2_DoHallOfFameScreenDontSaveData;
+ TrySavingData(SAVE_HALL_OF_FAME);
+ PlaySE(SE_SAVE);
+ gTasks[taskId].func = Task_Hof_DelayAfterSave;
+ gTasks[taskId].data[3] = 32;
+}
+
+static void Task_Hof_DelayAfterSave(u8 taskId)
+{
+ if (gTasks[taskId].data[3] != 0)
+ gTasks[taskId].data[3]--;
+ else
+ gTasks[taskId].func = Task_Hof_StartDisplayingMons;
+}
+
+static void Task_Hof_StartDisplayingMons(u8 taskId)
+{
+ gTasks[taskId].func = Task_Hof_DisplayMon;
+}
+
+static void Task_Hof_DisplayMon(u8 taskId)
+{
+ u8 spriteId;
+ s16 srcX;
+ s16 srcY;
+ s16 dstX;
+ s16 dstY;
+
+ u16 currMonId = gTasks[taskId].data[1];
+ struct HallofFameMon* currMon = &sHofMonPtr[0].mon[currMonId];
+
+
+ if (gTasks[taskId].data[2] > 3)
+ {
+ srcX = sHallOfFame_MonFullTeamPositions[currMonId][0];
+ srcY = sHallOfFame_MonFullTeamPositions[currMonId][1];
+ dstX = sHallOfFame_MonFullTeamPositions[currMonId][2];
+ dstY = sHallOfFame_MonFullTeamPositions[currMonId][3];
+ }
+ else
+ {
+ srcX = sHallOfFame_MonHalfTeamPositions[currMonId][0];
+ srcY = sHallOfFame_MonHalfTeamPositions[currMonId][1];
+ dstX = sHallOfFame_MonHalfTeamPositions[currMonId][2];
+ dstY = sHallOfFame_MonHalfTeamPositions[currMonId][3];
+ }
+
+ spriteId = CreateMonPicSprite_HandleDeoxys(currMon->species, currMon->tid, currMon->personality, 1, srcX, srcY, currMonId, 0xFFFF);
+ gSprites[spriteId].data[1] = dstX;
+ gSprites[spriteId].data[2] = dstY;
+ gSprites[spriteId].data[0] = 0;
+ gSprites[spriteId].callback = SpriteCB_GetOnScreen;
+ gTasks[taskId].data[5 + currMonId] = spriteId;
+ ClearDialogWindowAndFrame(0, TRUE);
+ gTasks[taskId].func = Task_Hof_PlayMonCryAndPrintInfo;
+}
+
+static void Task_Hof_PlayMonCryAndPrintInfo(u8 taskId)
+{
+ u16 currMonId = gTasks[taskId].data[1];
+ struct HallofFameMon* currMon = &sHofMonPtr[0].mon[currMonId];
+ if (gSprites[gTasks[taskId].data[5 + currMonId]].data[0])
+ {
+ if (currMon->species != SPECIES_EGG)
+ PlayCry1(currMon->species, 0);
+ HallOfFame_PrintMonInfo(currMon, 0, 14);
+ gTasks[taskId].data[3] = 120;
+ gTasks[taskId].func = Task_Hof_TryDisplayAnotherMon;
+ }
+}
+
+static void Task_Hof_TryDisplayAnotherMon(u8 taskId)
+{
+ u16 currPokeId = gTasks[taskId].data[1];
+ struct HallofFameMon* currMon = &sHofMonPtr[0].mon[currPokeId];
+
+ if (gTasks[taskId].data[3] != 0)
+ {
+ gTasks[taskId].data[3]--;
+ }
+ else
+ {
+ sSelectedPaletteIndices |= (0x10000 << gSprites[gTasks[taskId].data[5 + currPokeId]].oam.paletteNum);
+ if (gTasks[taskId].data[1] < PARTY_SIZE - 1 && currMon[1].species != SPECIES_NONE) // there is another pokemon to display
+ {
+ gTasks[taskId].data[1]++;
+ BeginNormalPaletteFade(sSelectedPaletteIndices, 0, 12, 12, HALL_OF_FAME_BG_PAL);
+ gSprites[gTasks[taskId].data[5 + 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, RGB_BLACK);
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ if (gTasks[taskId].data[5 + i] != 0xFF)
+ gSprites[gTasks[taskId].data[5 + i]].oam.priority = 0;
+ }
+
+ HallOfFame_PrintWelcomeText(0, 15);
+ PlaySE(SE_DENDOU);
+ gTasks[taskId].data[3] = 400;
+ gTasks[taskId].func = Task_Hof_ApplauseAndConfetti;
+}
+
+static void Task_Hof_ApplauseAndConfetti(u8 taskId)
+{
+ if (gTasks[taskId].data[3] != 0)
+ {
+ gTasks[taskId].data[3]--;
+ if ((gTasks[taskId].data[3] & 3) == 0 && gTasks[taskId].data[3] > 110)
+ Hof_SpawnConfetti();
+ }
+ else
+ {
+ u16 i;
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ if (gTasks[taskId].data[5 + i] != 0xFF)
+ gSprites[gTasks[taskId].data[5 + i]].oam.priority = 1;
+ }
+ BeginNormalPaletteFade(sSelectedPaletteIndices, 0, 12, 12, HALL_OF_FAME_BG_PAL);
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
+ CopyWindowToVram(0, 3);
+ gTasks[taskId].data[3] = 7;
+ gTasks[taskId].func = Task_Hof_WaitBorderFadeAway;
+ }
+}
+
+static void Task_Hof_WaitBorderFadeAway(u8 taskId)
+{
+ if (gTasks[taskId].data[3] > 15)
+ {
+ gTasks[taskId].func = Task_Hof_SpawnPlayerPic;
+ }
+ else
+ {
+ gTasks[taskId].data[3]++;
+ SetGpuReg(REG_OFFSET_BLDALPHA, 256 * gTasks[taskId].data[3]);
+ }
+}
+
+static void Task_Hof_SpawnPlayerPic(u8 taskId)
+{
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON);
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(3);
+ gTasks[taskId].data[4] = CreateTrainerPicSprite(PlayerGenderToFrontTrainerPicId_Debug(gSaveBlock2Ptr->playerGender, TRUE), TRUE, 0x78, 0x48, 6, 0xFFFF);
+ AddWindow(&sWindowTemplate);
+ TextWindow_SetStdFrame0_WithPal(1, 0x21D, 0xD0);
+ gTasks[taskId].data[3] = 120;
+ gTasks[taskId].func = Task_Hof_WaitAndPrintPlayerInfo;
+}
+
+static void Task_Hof_WaitAndPrintPlayerInfo(u8 taskId)
+{
+ if (gTasks[taskId].data[3] != 0)
+ {
+ gTasks[taskId].data[3]--;
+ }
+ else if (gSprites[gTasks[taskId].data[4]].pos1.x != 192)
+ {
+ gSprites[gTasks[taskId].data[4]].pos1.x++;
+ }
+ else
+ {
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x20, 0x20);
+ HallOfFame_PrintPlayerInfo(1, 2);
+ DrawDialogueFrame(0, 0);
+ AddTextPrinterParameterized2(0, 2, gText_LeagueChamp, 0, NULL, 2, 1, 3);
+ CopyWindowToVram(0, 3);
+ gTasks[taskId].func = Task_Hof_ExitOnKeyPressed;
+ }
+}
+
+static void Task_Hof_ExitOnKeyPressed(u8 taskId)
+{
+ if (JOY_NEW(A_BUTTON))
+ {
+ FadeOutBGM(4);
+ gTasks[taskId].func = Task_Hof_HandlePaletteOnExit;
+ }
+}
+
+static void Task_Hof_HandlePaletteOnExit(u8 taskId)
+{
+ CpuCopy16(gPlttBufferFaded, gPlttBufferUnfaded, PLTT_BUFFER_SIZE * sizeof(u16));
+ BeginNormalPaletteFade(0xFFFFFFFF, 8, 0, 16, RGB_BLACK);
+ gTasks[taskId].func = Task_Hof_HandleExit;
+}
+
+static void Task_Hof_HandleExit(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ s32 i;
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ u8 spriteId = gTasks[taskId].data[5 + i];
+ if (spriteId != 0xFF)
+ {
+ FreeAndDestroyMonPicSprite(spriteId);
+ }
+ }
+
+ FreeAndDestroyTrainerPicSprite(gTasks[taskId].data[4]);
+ 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);
+
+ SetWarpsToRollCredits();
+ }
+}
+
+static void SetWarpsToRollCredits(void)
+{
+ VarSet(VAR_MAP_SCENE_INDIGO_PLATEAU_EXTERIOR, 1);
+ FlagSet(FLAG_SPECIAL_FLAG_0x4000);
+ gDisableMapMusicChangeOnMapLoad = 2;
+ SetWarpDestination(MAP_GROUP(INDIGO_PLATEAU_EXTERIOR), MAP_NUM(INDIGO_PLATEAU_EXTERIOR), -1, 11, 6);
+ DoWarp();
+ ResetInitialPlayerAvatarState();
+}
+
+void CB2_InitHofPC(void)
+{
+ switch (gMain.state)
+ {
+ default:
+ case 0:
+ SetVBlankCallback(NULL);
+ ClearVramOamPltt_LoadHofPal();
+ sHofGfxPtr = AllocZeroed(sizeof(struct HofGfx));
+ gMain.state = 1;
+ break;
+ case 1:
+ HofInit_ResetGpuBuffersAndLoadConfettiGfx();
+ gMain.state++;
+ break;
+ case 2:
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ Hof_InitBgs();
+ gMain.state++;
+ break;
+ case 3:
+ if (!DrawHofBackground())
+ {
+ sub_80A0A48(0, 0, 0);
+ SetVBlankCallback(VBlankCB_HofIdle);
+ gMain.state++;
+ }
+ break;
+ case 4:
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+ if (!sub_80A0A98())
+ gMain.state++;
+ break;
+ case 5:
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 7));
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ CreateTask(Task_HofPC_CopySaveData, 0);
+ sHofMonPtr = AllocZeroed(0x2000);
+ SetMainCallback2(CB2_HofIdle);
+ break;
+ }
+}
+
+static void Task_HofPC_CopySaveData(u8 taskId)
+{
+ u16 i;
+ struct HallofFameTeam* savedTeams;
+
+ CreateTopBarWindowLoadPalette(0, 30, 0, 0x0C, 0x226);
+ if (Save_LoadGameData(SAVE_HALL_OF_FAME) != SAVE_STATUS_OK)
+ {
+ gTasks[taskId].func = Task_HofPC_PrintDataIsCorrupted;
+ }
+ else
+ {
+ 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].data[0] = i - 1;
+ else
+ gTasks[taskId].data[0] = HALL_OF_FAME_MAX_TEAMS - 1;
+
+ gTasks[taskId].data[1] = 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].data[0]; i++)
+ savedTeams++;
+
+ currMon = &savedTeams->mon[0];
+ sSelectedPaletteIndices = 0;
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[4] = 0;
+
+ for (i = 0; i < PARTY_SIZE; i++, currMon++)
+ {
+ if (currMon->species != SPECIES_NONE)
+ gTasks[taskId].data[4]++;
+ }
+
+ currMon = &savedTeams->mon[0];
+
+ for (i = 0; i < PARTY_SIZE; i++, currMon++)
+ {
+ if (currMon->species != SPECIES_NONE)
+ {
+ u16 spriteId;
+ s16 posX, posY;
+
+ if (gTasks[taskId].data[4] > 3)
+ {
+ posX = sHallOfFame_MonFullTeamPositions[i][2];
+ posY = sHallOfFame_MonFullTeamPositions[i][3];
+ }
+ else
+ {
+ posX = sHallOfFame_MonHalfTeamPositions[i][2];
+ posY = sHallOfFame_MonHalfTeamPositions[i][3];
+ }
+
+ spriteId = CreateMonPicSprite_HandleDeoxys(currMon->species, currMon->tid, currMon->personality, TRUE, posX,
+ posY, i, 0xFFFF);
+ gSprites[spriteId].oam.priority = 1;
+ gTasks[taskId].data[5 + i] = spriteId;
+ }
+ else
+ {
+ gTasks[taskId].data[5 + i] = 0xFF;
+ }
+ }
+
+ BlendPalettes(0xFFFF0000, 0xC, HALL_OF_FAME_BG_PAL);
+
+ ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[1], STR_CONV_MODE_LEFT_ALIGN, 3);
+ StringExpandPlaceholders(gStringVar4, gText_HOFNumber);
+
+ if (gTasks[taskId].data[0] <= 0)
+ TopBarWindowPrintTwoStrings(gStringVar4, gText_UPDOWNPick_ABUTTONBBUTTONCancel, 0, 0, TRUE);
+ else
+ TopBarWindowPrintTwoStrings(gStringVar4, gText_UPDOWNPick_ABUTTONNext_BBUTTONBack, 0, 0, TRUE);
+
+ 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].data[0]; i++)
+ savedTeams++;
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ u16 spriteId = gTasks[taskId].data[5 + i];
+ if (spriteId != 0xFF)
+ gSprites[spriteId].oam.priority = 1;
+ }
+
+ currMonId = gTasks[taskId].data[5 + gTasks[taskId].data[2]];
+ gSprites[currMonId].oam.priority = 0;
+ sSelectedPaletteIndices = (0x10000 << gSprites[currMonId].oam.paletteNum) ^ 0xFFFF0000;
+ BlendPalettesUnfaded(sSelectedPaletteIndices, 0xC, HALL_OF_FAME_BG_PAL);
+
+ currMon = &savedTeams->mon[gTasks[taskId].data[2]];
+ 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 (JOY_NEW(A_BUTTON))
+ {
+ if (gTasks[taskId].data[0] != 0) // prepare another team to view
+ {
+ gTasks[taskId].data[0]--;
+ for (i = 0; i < 6; i++)
+ {
+ u8 spriteId = gTasks[taskId].data[5 + i];
+ if (spriteId != 0xFF)
+ {
+ FreeAndDestroyMonPicSprite(spriteId);
+ }
+ }
+ if (gTasks[taskId].data[1] != 0)
+ gTasks[taskId].data[1]--;
+ gTasks[taskId].func = Task_HofPC_DrawSpritesPrintText;
+ }
+ else // no more teams to view, turn off hall of fame PC
+ {
+ if (IsCryPlayingOrClearCrySongs())
+ {
+ StopCryAndClearCrySongs();
+ m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x100);
+ }
+ gTasks[taskId].func = Task_HofPC_HandlePaletteOnExit;
+ }
+ }
+ else if (JOY_NEW(B_BUTTON)) // turn off hall of fame PC
+ {
+ if (IsCryPlayingOrClearCrySongs())
+ {
+ StopCryAndClearCrySongs();
+ m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x100);
+ }
+ gTasks[taskId].func = Task_HofPC_HandlePaletteOnExit;
+ }
+ else if (JOY_NEW(DPAD_UP) && gTasks[taskId].data[2] != 0) // change mon -1
+ {
+ gTasks[taskId].data[2]--;
+ gTasks[taskId].func = Task_HofPC_PrintMonInfo;
+ }
+ else if (JOY_NEW(DPAD_DOWN) && gTasks[taskId].data[2] < gTasks[taskId].data[4] - 1) // change mon +1
+ {
+ gTasks[taskId].data[2]++;
+ gTasks[taskId].func = Task_HofPC_PrintMonInfo;
+ }
+}
+static void Task_HofPC_HandlePaletteOnExit(u8 taskId)
+{
+ struct HallofFameTeam* fameTeam;
+
+ CpuCopy16(gPlttBufferFaded, gPlttBufferUnfaded, 0x400);
+ sub_80A0A70(0, 0, 0);
+ gTasks[taskId].func = Task_HofPC_HandleExit;
+}
+
+static void Task_HofPC_HandleExit(u8 taskId)
+{
+ if (!sub_80A0AAC())
+ {
+ HideBg(0);
+ HideBg(1);
+ HideBg(3);
+ DestroyTopBarWindow();
+ FreeAllWindowBuffers();
+ UnsetBgTilemapBuffer(1);
+ UnsetBgTilemapBuffer(3);
+ ResetBgsAndClearDma3BusyFlags(FALSE);
+ DestroyTask(taskId);
+
+ if (sHofGfxPtr != NULL)
+ FREE_AND_SET_NULL(sHofGfxPtr);
+ if (sHofMonPtr != NULL)
+ FREE_AND_SET_NULL(sHofMonPtr);
+
+ ReturnFromHallOfFamePC();
+ }
+}
+
+static void Task_HofPC_PrintDataIsCorrupted(u8 taskId)
+{
+ TopBarWindowPrintString(gText_ABUTTONExit, 8, TRUE);
+ DrawDialogueFrame(0, 0);
+ AddTextPrinterParameterized2(0, 2, gText_HOFCorrupted, 0, NULL, 2, 1, 3);
+ CopyWindowToVram(0, 3);
+ gTasks[taskId].func = Task_HofPC_ExitOnButtonPress;
+}
+
+static void Task_HofPC_ExitOnButtonPress(u8 taskId)
+{
+ if (JOY_NEW(A_BUTTON))
+ gTasks[taskId].func = Task_HofPC_HandlePaletteOnExit;
+}
+
+static void HallOfFame_PrintWelcomeText(u8 not, u8 used)
+{
+ u8 x = (0xD0 - GetStringWidth(2, gText_WelcomeToHOF, 0)) / 2;
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
+ PutWindowTilemap(0);
+ AddTextPrinterParameterized3(0, 2, x, 1, sTextColors[0], 0, gText_WelcomeToHOF);
+ CopyWindowToVram(0, 3);
+}
+
+static void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 unused1, u8 unused2)
+{
+ u8 text[16];
+ u8 text2[24];
+ u16 i;
+ u8 *stringPtr;
+ u16 dexNumber;
+ u8 gender;
+ s32 width;
+ s32 x;
+
+ FillWindowPixelBuffer(0, PIXEL_FILL(0));
+ PutWindowTilemap(0);
+
+ // dex number
+ if (currMon->species != SPECIES_EGG)
+ {
+ StringCopy(text2, gText_Number);
+ dexNumber = SpeciesToPokedexNum(currMon->species);
+ if (dexNumber != 0xFFFF)
+ {
+ text[0] = (dexNumber / 100) + CHAR_0;
+ text[1] = ((dexNumber %= 100) / 10) + CHAR_0;
+ text[2] = (dexNumber % 10) + CHAR_0;
+ }
+ else
+ {
+ text[0] = text[1] = text[2] = CHAR_QUESTION_MARK;
+ }
+ text[3] = EOS;
+ StringAppend(text2, text);
+ AddTextPrinterParameterized3(0, 2, 0x10, 1, sTextColors[0], 0, text2);
+ }
+
+ // nick, species names, gender and lvl
+ i = 0;
+ if (currMon->nick[0] != EOS)
+ {
+ for (i = 0; i < 10 && currMon->nick[i] != EOS; i++)
+ {
+ text[i] = currMon->nick[i];
+ }
+ }
+ text[i] = EOS;
+ width = GetStringWidth(2, text, GetFontAttribute(2, FONTATTR_LETTER_SPACING));
+ if (currMon->species == SPECIES_EGG)
+ x = 0x80 - width / 2;
+ else
+ x = 0x80 - width;
+ AddTextPrinterParameterized3(0, 2, x, 1, sTextColors[0], 0, text);
+ if (currMon->species != SPECIES_EGG)
+ {
+ text[0] = CHAR_SLASH;
+ stringPtr = StringCopy(text + 1, gSpeciesNames[currMon->species]);
+
+ if (currMon->species == SPECIES_NIDORAN_M || currMon->species == SPECIES_NIDORAN_F)
+ gender = MON_GENDERLESS;
+ else
+ gender = GetGenderFromSpeciesAndPersonality(currMon->species, currMon->personality);
+ switch (gender)
+ {
+ case MON_MALE:
+ *stringPtr++ = CHAR_MALE;
+ break;
+ case MON_FEMALE:
+ *stringPtr++ = CHAR_FEMALE;
+ break;
+ default:
+ *stringPtr++ = CHAR_SPACE;
+ break;
+ }
+ *stringPtr = EOS;
+
+ AddTextPrinterParameterized3(0, 2, 0x80, 1, sTextColors[0], 0, text);
+
+ stringPtr = StringCopy(text, gText_Level);
+ ConvertIntToDecimalStringN(stringPtr, currMon->lvl, STR_CONV_MODE_LEFT_ALIGN, 3);
+ AddTextPrinterParameterized3(0, 2, 0x20, 0x11, sTextColors[0], 0, text);
+
+ stringPtr = StringCopy(text, gText_IDNumber);
+ ConvertIntToDecimalStringN(stringPtr, (u16)(currMon->tid), STR_CONV_MODE_LEADING_ZEROS, 5);
+ AddTextPrinterParameterized3(0, 2, 0x60, 0x11, sTextColors[0], 0, text);
+
+ }
+ CopyWindowToVram(0, 3);
+}
+
+static void HallOfFame_PrintPlayerInfo(u8 unused1, u8 unused2)
+{
+ u8 text[20];
+ u16 trainerId;
+ s32 textWidth = sWindowTemplate.width * 8 - 6;
+
+ FillWindowPixelBuffer(1, PIXEL_FILL(1));
+ PutWindowTilemap(1);
+ DrawStdFrameWithCustomTileAndPalette(1, FALSE, 0x21D, 0xD);
+ AddTextPrinterParameterized4(1, 2, 4, 3, 0, 0, sTextColors[1], 0, gText_Name);
+
+ AddTextPrinterParameterized3(1, 2, textWidth - GetStringWidth(2, gSaveBlock2Ptr->playerName, 0), 3, sTextColors[1], 0, gSaveBlock2Ptr->playerName);
+
+ trainerId = (gSaveBlock2Ptr->playerTrainerId[0]) | (gSaveBlock2Ptr->playerTrainerId[1] << 8);
+ AddTextPrinterParameterized3(1, 2, 4, 18, sTextColors[1], 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;
+ AddTextPrinterParameterized3(1, 2, textWidth - 30, 18, sTextColors[1], 0, text);
+
+ AddTextPrinterParameterized3(1, 2, 4, 32, sTextColors[1], 0, 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[1] = CHAR_SPACE;
+
+ text[3] = CHAR_COLON;
+ text[4] = (gSaveBlock2Ptr->playTimeMinutes % 100) / 10 + CHAR_0;
+ text[5] = (gSaveBlock2Ptr->playTimeMinutes % 10) + CHAR_0;
+ text[6] = EOS;
+
+ AddTextPrinterParameterized3(1, 2, textWidth - 36, 32, sTextColors[1], 0, 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 HofInit_ResetGpuBuffersAndLoadConfettiGfx(void)
+{
+ ScanlineEffect_Stop();
+ ResetTasks();
+ ResetSpriteData();
+ ResetTempTileDataBuffers();
+ ResetAllPicSprites();
+ FreeAllSpritePalettes();
+ gReservedSpritePaletteCount = 8;
+ LoadCompressedSpriteSheet(sHallOfFame_ConfettiSpriteSheet);
+ LoadCompressedSpritePalette(sHallOfFame_ConfettiSpritePalette);
+}
+
+static void Hof_InitBgs(void)
+{
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, sHof_BgTemplates, NELEMS(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 DrawHofBackground(void)
+{
+ switch (sHofGfxPtr->state)
+ {
+ case 0:
+ DecompressAndCopyTileDataToVram(1, sHallOfFame_Gfx, 0, 0, 0);
+ break;
+ case 1:
+ if (FreeTempTileDataBuffersIfPossible())
+ 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:
+ InitStandardTextBoxWindows();
+ ResetBg0();
+ 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_EndGetOnScreen(struct Sprite * sprite)
+{
+
+}
+
+static void SpriteCB_GetOnScreen(struct Sprite * sprite)
+{
+ if (sprite->pos1.x != sprite->data[1]
+ || sprite->pos1.y != sprite->data[2])
+ {
+ if (sprite->pos1.x < sprite->data[1])
+ sprite->pos1.x += 15;
+ if (sprite->pos1.x > sprite->data[1])
+ sprite->pos1.x -= 15;
+
+ if (sprite->pos1.y < sprite->data[2])
+ sprite->pos1.y += 10;
+ if (sprite->pos1.y > sprite->data[2])
+ sprite->pos1.y -= 10;
+ }
+ else
+ {
+ sprite->data[0] = 1;
+ sprite->callback = SpriteCB_EndGetOnScreen;
+ }
+}
+
+static void SpriteCB_Confetti(struct Sprite* sprite)
+{
+ if (sprite->pos2.y > 120)
+ {
+ DestroySprite(sprite);
+ }
+ else
+ {
+ u16 rand;
+ u8 tableID;
+
+ sprite->pos2.y++;
+ sprite->pos2.y += sprite->data[1];
+
+ tableID = sprite->data[0];
+ rand = (Random() % 4) + 8;
+ sprite->pos2.x = rand * gSineTable[tableID] / 256;
+
+ sprite->data[0] += 4;
+ }
+}
+
+static bool8 Hof_SpawnConfetti(void)
+{
+ u8 spriteId;
+ struct Sprite* sprite;
+
+ s16 posX = Random() % 240;
+ s16 posY = -(Random() % 8);
+
+ spriteId = CreateSprite(&sSpriteTemplate_Confetti, posX, posY, 0);
+ sprite = &gSprites[spriteId];
+
+ StartSpriteAnim(sprite, Random() % 17);
+
+ if (Random() & 3)
+ sprite->data[1] = 0;
+ else
+ sprite->data[1] = 1;
+
+ return FALSE;
+}
diff --git a/src/hof_pc.c b/src/hof_pc.c
index 241fbc4f3..76fd06abf 100644
--- a/src/hof_pc.c
+++ b/src/hof_pc.c
@@ -19,7 +19,7 @@ static void Task_WaitFadeAndSetCallback(u8 taskId)
FreeAllWindowBuffers();
ResetBgsAndClearDma3BusyFlags(0);
DestroyTask(taskId);
- SetMainCallback2(sub_80F2978);
+ SetMainCallback2(CB2_InitHofPC);
}
}
diff --git a/src/intro.c b/src/intro.c
index e2432b6a2..33a03a389 100644
--- a/src/intro.c
+++ b/src/intro.c
@@ -574,7 +574,7 @@ void c2_copyright_1(void)
{
ResetMenuAndMonGlobals();
Save_ResetSaveCounters();
- Save_LoadGameData(0);
+ Save_LoadGameData(SAVE_NORMAL);
if (gSaveFileStatus == SAVE_STATUS_EMPTY || gSaveFileStatus == SAVE_STATUS_INVALID)
Sav2_ClearSetDefault();
SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound);
diff --git a/src/link.c b/src/link.c
index ac9cf9cfe..dfbc9fcb2 100644
--- a/src/link.c
+++ b/src/link.c
@@ -464,7 +464,7 @@ void LinkTestProcessKeyInput(void)
}
if (JOY_NEW(R_BUTTON))
{
- TrySavingData(1);
+ TrySavingData(SAVE_LINK);
}
if (JOY_NEW(SELECT_BUTTON))
{
@@ -1581,7 +1581,7 @@ static void CB2_PrintErrorMessage(void)
PlaySE(SE_PIN);
gWirelessCommType = 0;
sLinkErrorBuffer.unk_06 = 0;
- sub_8079B7C();
+ ResetSaveHeap();
}
}
else if (gWirelessCommType == 2)
diff --git a/src/mevent.c b/src/mevent.c
index 00bffdfc3..846ccbaa8 100644
--- a/src/mevent.c
+++ b/src/mevent.c
@@ -39,12 +39,12 @@ struct MEventTaskData1
};
void sub_8143910(u8 taskId);
-bool32 sub_8143E64(const struct MEventBuffer_3120_Sub * src);
+bool32 sub_8143E64(const struct MEWonderNewsData * src);
void sub_8143E9C(void);
void sub_8143ED0(void);
-bool32 sub_8144018(const struct MEventBuffer_32E0_Sub * src);
-void sub_814407C(void);
-void sub_81440B4(void);
+bool32 sub_8144018(const struct MEWonderCardData * src);
+void BlankSavedWonderCard(void);
+void BlankMEventBuffer2(void);
void sub_8144824(u32, u32, u32 *, s32);
void sub_8144790(void);
@@ -485,34 +485,34 @@ void sub_8143910(u8 taskId)
void sub_8143D24(void)
{
- CpuFill32(0, &gSaveBlock1Ptr->unk_3120, sizeof(gSaveBlock1Ptr->unk_3120));
+ CpuFill32(0, &gSaveBlock1Ptr->mysteryEventBuffers, sizeof(gSaveBlock1Ptr->mysteryEventBuffers));
sub_8143ED0();
- ResetSomeMEventECBuffer_3120_338();
+ EC_ResetMEventProfileMaybe();
}
-struct MEventBuffer_3120_Sub * GetSavedWonderNews(void)
+struct MEWonderNewsData * GetSavedWonderNews(void)
{
- return &gSaveBlock1Ptr->unk_3120.buffer_000.data;
+ return &gSaveBlock1Ptr->mysteryEventBuffers.menews.data;
}
-struct MEventBuffer_32E0_Sub * GetSavedWonderCard(void)
+struct MEWonderCardData * GetSavedWonderCard(void)
{
- return &gSaveBlock1Ptr->unk_3120.buffer_1c0.data;
+ return &gSaveBlock1Ptr->mysteryEventBuffers.mecard.data;
}
struct MEventBuffer_3430_Sub * sav1_get_mevent_buffer_2(void)
{
- return &gSaveBlock1Ptr->unk_3120.buffer_310.data;
+ return &gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data;
}
struct MENewsJisanStruct * GetMENewsJisanStructPtr(void)
{
- return &gSaveBlock1Ptr->unk_3120.unk_340;
+ return &gSaveBlock1Ptr->mysteryEventBuffers.me_jisan;
}
-u16 * sub_8143DA8(void)
+u16 * GetMEventProfileECWordsMaybe(void)
{
- return gSaveBlock1Ptr->unk_3120.unk_338;
+ return gSaveBlock1Ptr->mysteryEventBuffers.ec_profile_maybe;
}
void DestroyWonderNews(void)
@@ -520,26 +520,26 @@ void DestroyWonderNews(void)
sub_8143E9C();
}
-bool32 sub_8143DC8(const struct MEventBuffer_3120_Sub * src)
+bool32 sub_8143DC8(const struct MEWonderNewsData * src)
{
if (!sub_8143E64(src))
return FALSE;
sub_8143E9C();
- gSaveBlock1Ptr->unk_3120.buffer_000.data = *src;
- gSaveBlock1Ptr->unk_3120.buffer_000.crc = CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_3120.buffer_000.data, sizeof(struct MEventBuffer_3120_Sub));
+ gSaveBlock1Ptr->mysteryEventBuffers.menews.data = *src;
+ gSaveBlock1Ptr->mysteryEventBuffers.menews.crc = CalcCRC16WithTable((void *)&gSaveBlock1Ptr->mysteryEventBuffers.menews.data, sizeof(struct MEWonderNewsData));
return TRUE;
}
bool32 ValidateReceivedWonderNews(void)
{
- if (CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_3120.buffer_000.data, sizeof(struct MEventBuffer_3120_Sub)) != gSaveBlock1Ptr->unk_3120.buffer_000.crc)
+ if (CalcCRC16WithTable((void *)&gSaveBlock1Ptr->mysteryEventBuffers.menews.data, sizeof(struct MEWonderNewsData)) != gSaveBlock1Ptr->mysteryEventBuffers.menews.crc)
return FALSE;
- if (!sub_8143E64(&gSaveBlock1Ptr->unk_3120.buffer_000.data))
+ if (!sub_8143E64(&gSaveBlock1Ptr->mysteryEventBuffers.menews.data))
return FALSE;
return TRUE;
}
-bool32 sub_8143E64(const struct MEventBuffer_3120_Sub * data)
+bool32 sub_8143E64(const struct MEWonderNewsData * data)
{
if (data->unk_00 == 0)
return FALSE;
@@ -548,7 +548,7 @@ bool32 sub_8143E64(const struct MEventBuffer_3120_Sub * data)
bool32 WonderNews_Test_Unk_02(void)
{
- const struct MEventBuffer_3120_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_000.data;
+ const struct MEWonderNewsData * data = &gSaveBlock1Ptr->mysteryEventBuffers.menews.data;
if (data->unk_02 == 0)
return FALSE;
return TRUE;
@@ -556,8 +556,8 @@ bool32 WonderNews_Test_Unk_02(void)
void sub_8143E9C(void)
{
- CpuFill32(0, GetSavedWonderNews(), sizeof(gSaveBlock1Ptr->unk_3120.buffer_000.data));
- gSaveBlock1Ptr->unk_3120.buffer_000.crc = 0;
+ CpuFill32(0, GetSavedWonderNews(), sizeof(gSaveBlock1Ptr->mysteryEventBuffers.menews.data));
+ gSaveBlock1Ptr->mysteryEventBuffers.menews.crc = 0;
}
void sub_8143ED0(void)
@@ -568,11 +568,11 @@ void sub_8143ED0(void)
bool32 sub_8143EF4(const u8 * src)
{
- const u8 * r5 = (const u8 *)&gSaveBlock1Ptr->unk_3120.buffer_000.data;
+ const u8 * r5 = (const u8 *)&gSaveBlock1Ptr->mysteryEventBuffers.menews.data;
u32 i;
if (!ValidateReceivedWonderNews())
return FALSE;
- for (i = 0; i < sizeof(struct MEventBuffer_3120_Sub); i++)
+ for (i = 0; i < sizeof(struct MEWonderNewsData); i++)
{
if (r5[i] != src[i])
return FALSE;
@@ -582,8 +582,8 @@ bool32 sub_8143EF4(const u8 * src)
void DestroyWonderCard(void)
{
- sub_814407C();
- sub_81440B4();
+ BlankSavedWonderCard();
+ BlankMEventBuffer2();
sub_8144790();
ClearRamScript();
sub_806E2D0();
@@ -591,33 +591,33 @@ void DestroyWonderCard(void)
sub_80E7524(&gSaveBlock2Ptr->unk_B0.field_3F0);
}
-bool32 sub_8143F68(const struct MEventBuffer_32E0_Sub * data)
+bool32 sub_8143F68(const struct MEWonderCardData * data)
{
struct MEventBuffer_3430_Sub * r2;
- struct MEventBuffer_32E0_Sub * r1;
+ struct MEWonderCardData * r1;
if (!sub_8144018(data))
return FALSE;
DestroyWonderCard();
- memcpy(&gSaveBlock1Ptr->unk_3120.buffer_1c0.data, data, sizeof(struct MEventBuffer_32E0_Sub));
- gSaveBlock1Ptr->unk_3120.buffer_1c0.crc = CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_3120.buffer_1c0.data, sizeof(struct MEventBuffer_32E0_Sub));
- r2 = &gSaveBlock1Ptr->unk_3120.buffer_310.data;
- r1 = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data;
+ memcpy(&gSaveBlock1Ptr->mysteryEventBuffers.mecard.data, data, sizeof(struct MEWonderCardData));
+ gSaveBlock1Ptr->mysteryEventBuffers.mecard.crc = CalcCRC16WithTable((void *)&gSaveBlock1Ptr->mysteryEventBuffers.mecard.data, sizeof(struct MEWonderCardData));
+ r2 = &gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data;
+ r1 = &gSaveBlock1Ptr->mysteryEventBuffers.mecard.data;
r2->unk_06 = r1->unk_02;
return TRUE;
}
bool32 ValidateReceivedWonderCard(void)
{
- if (gSaveBlock1Ptr->unk_3120.buffer_1c0.crc != CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_3120.buffer_1c0.data, sizeof(struct MEventBuffer_32E0_Sub)))
+ if (gSaveBlock1Ptr->mysteryEventBuffers.mecard.crc != CalcCRC16WithTable((void *)&gSaveBlock1Ptr->mysteryEventBuffers.mecard.data, sizeof(struct MEWonderCardData)))
return FALSE;
- if (!sub_8144018(&gSaveBlock1Ptr->unk_3120.buffer_1c0.data))
+ if (!sub_8144018(&gSaveBlock1Ptr->mysteryEventBuffers.mecard.data))
return FALSE;
if (!sub_8069DFC())
return FALSE;
return TRUE;
}
-bool32 sub_8144018(const struct MEventBuffer_32E0_Sub * data)
+bool32 sub_8144018(const struct MEWonderCardData * data)
{
if (data->unk_00 == 0)
return FALSE;
@@ -634,32 +634,32 @@ bool32 sub_8144018(const struct MEventBuffer_32E0_Sub * data)
bool32 WonderCard_Test_Unk_08_6(void)
{
- const struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data;
+ const struct MEWonderCardData * data = &gSaveBlock1Ptr->mysteryEventBuffers.mecard.data;
if (data->unk_08_6 == 0)
return FALSE;
return TRUE;
}
-void sub_814407C(void)
+void BlankSavedWonderCard(void)
{
- CpuFill32(0, &gSaveBlock1Ptr->unk_3120.buffer_1c0.data, sizeof(struct MEventBuffer_32E0_Sub));
- gSaveBlock1Ptr->unk_3120.buffer_1c0.crc = 0;
+ CpuFill32(0, &gSaveBlock1Ptr->mysteryEventBuffers.mecard.data, sizeof(struct MEWonderCardData));
+ gSaveBlock1Ptr->mysteryEventBuffers.mecard.crc = 0;
}
-void sub_81440B4(void)
+void BlankMEventBuffer2(void)
{
CpuFill32(0, sav1_get_mevent_buffer_2(), 18 * sizeof(u16));
- gSaveBlock1Ptr->unk_3120.buffer_310.crc = 0;
+ gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.crc = 0;
}
u16 sub_81440E8(void)
{
if (ValidateReceivedWonderCard())
- return gSaveBlock1Ptr->unk_3120.buffer_1c0.data.unk_00;
+ return gSaveBlock1Ptr->mysteryEventBuffers.mecard.data.unk_00;
return 0;
}
-void sub_814410C(struct MEventBuffer_32E0_Sub * buffer)
+void sub_814410C(struct MEWonderCardData * buffer)
{
if (buffer->unk_08_6 == 1)
buffer->unk_08_6 = 0;
@@ -707,11 +707,11 @@ bool32 sub_81441AC(const struct MEventBuffer_3430_Sub * data1, const u16 * data2
return FALSE;
}
-bool32 sub_81441F0(const u16 * data)
+static bool32 IsWonderCardSpeciesValid(const u16 * data)
{
if (data[1] == 0)
return FALSE;
- if (data[0] == 0)
+ if (data[0] == SPECIES_NONE)
return FALSE;
if (data[0] >= NUM_SPECIES)
return FALSE;
@@ -720,64 +720,72 @@ bool32 sub_81441F0(const u16 * data)
s32 sub_8144218(void)
{
- struct MEventBuffer_32E0_Sub * data;
+ struct MEWonderCardData * data;
if (!ValidateReceivedWonderCard())
return 0;
- data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data;
+ data = &gSaveBlock1Ptr->mysteryEventBuffers.mecard.data;
if (data->unk_08_0 != 1)
return 0;
- return sub_8144184(&gSaveBlock1Ptr->unk_3120.buffer_310.data, data->unk_09);
+ return sub_8144184(&gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data, data->unk_09);
}
bool32 sub_8144254(const u16 * data)
{
- struct MEventBuffer_32E0_Sub * buffer = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data;
+ struct MEWonderCardData * buffer = &gSaveBlock1Ptr->mysteryEventBuffers.mecard.data;
s32 size = buffer->unk_09;
s32 i;
- if (!sub_81441F0(data))
+ if (!IsWonderCardSpeciesValid(data))
return FALSE;
- if (sub_81441AC(&gSaveBlock1Ptr->unk_3120.buffer_310.data, data, size))
+ if (sub_81441AC(&gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data, data, size))
return FALSE;
for (i = 0; i < size; i++)
{
- if (gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_08[1][i] == 0 && gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_08[0][i] == 0)
+ if (gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data.unk_08[1][i] == 0 && gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data.unk_08[0][i] == 0)
{
- gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_08[1][i] = data[1];
- gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_08[0][i] = data[0];
+ gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data.unk_08[1][i] = data[1];
+ gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data.unk_08[0][i] = data[0];
return TRUE;
}
}
return FALSE;
}
-void sub_81442CC(struct MEventStruct_Unk1442CC * data)
+void BuildMEventClientHeader(struct MEventClientHeaderStruct * data)
{
s32 i;
- CpuFill32(0, data, sizeof(struct MEventStruct_Unk1442CC));
+ CpuFill32(0, data, sizeof(struct MEventClientHeaderStruct));
+ // Magic
data->unk_00 = 0x101;
data->unk_04 = 1;
data->unk_08 = 1;
data->unk_0C = 1;
data->unk_10 = 1;
+
+ // Check whether a card already exists
if (ValidateReceivedWonderCard())
{
- data->unk_14 = GetSavedWonderCard()->unk_00;
+ // Populate fields
+ data->id = GetSavedWonderCard()->unk_00;
data->unk_20 = *sav1_get_mevent_buffer_2();
data->unk_44 = GetSavedWonderCard()->unk_09;
}
else
- data->unk_14 = 0;
+ data->id = 0;
+
+ // Get something
for (i = 0; i < 4; i++)
- data->unk_16[i] = gSaveBlock1Ptr->unk_3120.unk_338[i];
- CopyTrainerId(data->unk_4C, gSaveBlock2Ptr->playerTrainerId);
- StringCopy(data->unk_45, gSaveBlock2Ptr->playerName);
+ data->unk_16[i] = gSaveBlock1Ptr->mysteryEventBuffers.ec_profile_maybe[i];
+
+ // Get player ID
+ CopyTrainerId(data->playerTrainerId, gSaveBlock2Ptr->playerTrainerId);
+ StringCopy(data->playerName, gSaveBlock2Ptr->playerName);
for (i = 0; i < 6; i++)
- data->unk_50[i] = gSaveBlock1Ptr->easyChatProfile[i];
- memcpy(data->unk_5C, RomHeaderGameCode, 4);
- data->unk_60 = RomHeaderSoftwareVersion;
+ data->easyChatProfile[i] = gSaveBlock1Ptr->easyChatProfile[i];
+ memcpy(data->gameCode, RomHeaderGameCode, 4);
+ data->version = RomHeaderSoftwareVersion;
}
-bool32 sub_81443D4(const struct MEventStruct_Unk1442CC * data)
+bool32 ValidateMEventClientHeader(const struct MEventClientHeaderStruct * data)
{
if (data->unk_00 != 0x101)
return FALSE;
@@ -792,16 +800,16 @@ bool32 sub_81443D4(const struct MEventStruct_Unk1442CC * data)
return TRUE;
}
-u32 sub_8144418(const u16 * a0, const struct MEventStruct_Unk1442CC * a1, void * unused)
+u32 sub_8144418(const u16 * a0, const struct MEventClientHeaderStruct * a1, void * unused)
{
- if (a1->unk_14 == 0)
+ if (a1->id == 0)
return 0;
- if (*a0 == a1->unk_14)
+ if (*a0 == a1->id)
return 1;
return 2;
}
-u32 sub_8144434(const u16 * a0, const struct MEventStruct_Unk1442CC * a1, void * unused)
+u32 sub_8144434(const u16 * a0, const struct MEventClientHeaderStruct * a1, void * unused)
{
s32 r4 = a1->unk_44 - sub_8144184(&a1->unk_20, a1->unk_44);
if (r4 == 0)
@@ -813,7 +821,7 @@ u32 sub_8144434(const u16 * a0, const struct MEventStruct_Unk1442CC * a1, void *
return 2;
}
-bool32 sub_8144474(const struct MEventStruct_Unk1442CC * a0, const u16 * a1)
+bool32 sub_8144474(const struct MEventClientHeaderStruct * a0, const u16 * a1)
{
s32 i;
for (i = 0; i < 4; i++)
@@ -824,12 +832,12 @@ bool32 sub_8144474(const struct MEventStruct_Unk1442CC * a0, const u16 * a1)
return TRUE;
}
-s32 sub_814449C(const struct MEventStruct_Unk1442CC * a0)
+s32 sub_814449C(const struct MEventClientHeaderStruct * a0)
{
return sub_8144184(&a0->unk_20, a0->unk_44);
}
-u16 sub_81444B0(const struct MEventStruct_Unk1442CC * a0, u32 command)
+u16 sub_81444B0(const struct MEventClientHeaderStruct * a0, u32 command)
{
switch (command)
{
@@ -851,20 +859,20 @@ u16 sub_81444B0(const struct MEventStruct_Unk1442CC * a0, u32 command)
void sub_814451C(u32 command)
{
- struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data;
+ struct MEWonderCardData * data = &gSaveBlock1Ptr->mysteryEventBuffers.mecard.data;
if (data->unk_08_0 == 2)
{
u16 * dest = NULL;
switch (command)
{
case 0:
- dest = &gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_00;
+ dest = &gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data.unk_00;
break;
case 1:
- dest = &gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_02;
+ dest = &gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data.unk_02;
break;
case 2:
- dest = &gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_04;
+ dest = &gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data.unk_04;
break;
case 3:
break;
@@ -888,44 +896,44 @@ u16 sub_81445C0(u32 command)
{
case 0:
{
- struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data;
+ struct MEWonderCardData * data = &gSaveBlock1Ptr->mysteryEventBuffers.mecard.data;
if (data->unk_08_0 == 2)
{
- struct MEventBuffer_3430_Sub * buffer = &gSaveBlock1Ptr->unk_3120.buffer_310.data;
+ struct MEventBuffer_3430_Sub * buffer = &gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data;
return buffer->unk_00;
}
break;
}
case 1:
{
- struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data;
+ struct MEWonderCardData * data = &gSaveBlock1Ptr->mysteryEventBuffers.mecard.data;
if (data->unk_08_0 == 2)
{
- struct MEventBuffer_3430_Sub * buffer = &gSaveBlock1Ptr->unk_3120.buffer_310.data;
+ struct MEventBuffer_3430_Sub * buffer = &gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data;
return buffer->unk_02;
}
break;
}
case 2:
{
- struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data;
+ struct MEWonderCardData * data = &gSaveBlock1Ptr->mysteryEventBuffers.mecard.data;
if (data->unk_08_0 == 2)
{
- struct MEventBuffer_3430_Sub * buffer = &gSaveBlock1Ptr->unk_3120.buffer_310.data;
+ struct MEventBuffer_3430_Sub * buffer = &gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.data;
return buffer->unk_04;
}
break;
}
case 3:
{
- struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data;
+ struct MEWonderCardData * data = &gSaveBlock1Ptr->mysteryEventBuffers.mecard.data;
if (data->unk_08_0 == 1)
return sub_8144218();
break;
}
case 4:
{
- struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data;
+ struct MEWonderCardData * data = &gSaveBlock1Ptr->mysteryEventBuffers.mecard.data;
if (data->unk_08_0 == 1)
return data->unk_09;
break;
@@ -947,7 +955,7 @@ bool32 sub_81446D0(u16 a0)
return FALSE;
if (!ValidateReceivedWonderCard())
return FALSE;
- if (gSaveBlock1Ptr->unk_3120.buffer_1c0.data.unk_00 != a0)
+ if (gSaveBlock1Ptr->mysteryEventBuffers.mecard.data.unk_00 != a0)
return FALSE;
gUnknown_203F3BC = TRUE;
return TRUE;
@@ -960,13 +968,13 @@ void sub_8144714(u32 a0, u32 a1)
switch (a0)
{
case 2:
- sub_8144824(2, a1, gSaveBlock1Ptr->unk_3120.unk_344[1], 5);
+ sub_8144824(2, a1, gSaveBlock1Ptr->mysteryEventBuffers.unk_344[1], 5);
break;
case 0:
- sub_8144824(0, a1, gSaveBlock1Ptr->unk_3120.unk_344[0], 5);
+ sub_8144824(0, a1, gSaveBlock1Ptr->mysteryEventBuffers.unk_344[0], 5);
break;
case 1:
- sub_8144824(1, a1, gSaveBlock1Ptr->unk_3120.unk_344[0], 5);
+ sub_8144824(1, a1, gSaveBlock1Ptr->mysteryEventBuffers.unk_344[0], 5);
break;
default:
AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c", 988);
@@ -976,7 +984,7 @@ void sub_8144714(u32 a0, u32 a1)
void sub_8144790(void)
{
- CpuFill32(0, gSaveBlock1Ptr->unk_3120.unk_344, sizeof(gSaveBlock1Ptr->unk_3120.unk_344));
+ CpuFill32(0, gSaveBlock1Ptr->mysteryEventBuffers.unk_344, sizeof(gSaveBlock1Ptr->mysteryEventBuffers.unk_344));
}
bool32 sub_81447BC(u32 a0, u32 * a1, s32 size)
diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c
index e42b49627..44a40c6ec 100644
--- a/src/mevent_8145654.c
+++ b/src/mevent_8145654.c
@@ -34,7 +34,7 @@ struct UnkStruct_203F3C8_02DC
struct UnkStruct_203F3C8
{
- /*0000*/ struct MEventBuffer_32E0_Sub unk_0000;
+ /*0000*/ struct MEWonderCardData unk_0000;
/*014c*/ struct MEventBuffer_3430_Sub unk_014C;
/*0170*/ const struct UnkStruct_8467FB8 * unk_0170;
/*0174*/ u8 unk_0174;
@@ -127,7 +127,7 @@ const struct UnkStruct_8467FB8 gUnknown_8467FB8[8] = {
{1, 0, 0, 7, gUnknown_8467A7C, gUnknown_8467CAC, gUnknown_846716C}
};
-bool32 InitWonderCardResources(struct MEventBuffer_32E0_Sub * r5, struct MEventBuffer_3430_Sub * r6)
+bool32 InitWonderCardResources(struct MEWonderCardData * r5, struct MEventBuffer_3430_Sub * r6)
{
if (r5 == NULL || r6 == NULL)
return FALSE;
@@ -446,7 +446,7 @@ void sub_81461D8(void)
struct UnkStruct_203F3CC
{
- /*0000*/ struct MEventBuffer_3120_Sub unk_0000;
+ /*0000*/ struct MEWonderNewsData unk_0000;
/*01bc*/ const struct UnkStruct_8467FB8 * unk_01BC;
/*01c0*/ u8 unk_01C0_0:1;
u8 unk_01C0_1:7;
@@ -509,7 +509,7 @@ const struct UnkStruct_8467FB8 gUnknown_8468720[] = {
{1, 0, 0, 0, gUnknown_84685B4, gUnknown_8468644, gUnknown_84680A0}
};
-bool32 InitWonderNewsResources(const struct MEventBuffer_3120_Sub * a0)
+bool32 InitWonderNewsResources(const struct MEWonderNewsData * a0)
{
if (a0 == NULL)
return FALSE;
diff --git a/src/mevent_client.c b/src/mevent_client.c
new file mode 100644
index 000000000..f4432cc11
--- /dev/null
+++ b/src/mevent_client.c
@@ -0,0 +1,289 @@
+#include "global.h"
+#include "malloc.h"
+#include "decompress.h"
+#include "overworld.h"
+#include "script.h"
+#include "battle_tower.h"
+#include "mystery_event_script.h"
+#include "mevent.h"
+#include "mevent_server.h"
+
+static EWRAM_DATA struct mevent_client * s_mevent_client_ptr = NULL;
+
+static void mevent_client_init(struct mevent_client *, u32, u32);
+static u32 mevent_client_exec(struct mevent_client *);
+static void mevent_client_free_resources(struct mevent_client *);
+
+extern const struct mevent_client_cmd gMEventClientScript_InotialListen[];
+
+void mevent_client_do_init(void)
+{
+ s_mevent_client_ptr = AllocZeroed(sizeof(struct mevent_client));
+ mevent_client_init(s_mevent_client_ptr, 1, 0);
+}
+
+u32 mevent_client_do_exec(u16 * a0)
+{
+ u32 result;
+ if (s_mevent_client_ptr == NULL)
+ return 6;
+ result = mevent_client_exec(s_mevent_client_ptr);
+ if (result == 6)
+ {
+ *a0 = s_mevent_client_ptr->param;
+ mevent_client_free_resources(s_mevent_client_ptr);
+ Free(s_mevent_client_ptr);
+ s_mevent_client_ptr = NULL;
+ }
+ return result;
+}
+
+void mevent_client_inc_flag(void)
+{
+ s_mevent_client_ptr->flag++;
+}
+
+void * mevent_client_get_buffer(void)
+{
+ return s_mevent_client_ptr->buffer;
+}
+
+void mevent_client_set_param(u32 a0)
+{
+ s_mevent_client_ptr->param = a0;
+}
+
+static void mevent_client_init(struct mevent_client * svr, u32 sendPlayerNo, u32 recvPlayerNo)
+{
+ svr->unk_00 = 0;
+ svr->mainseqno = 0;
+ svr->flag = 0;
+ svr->sendBuffer = AllocZeroed(ME_SEND_BUF_SIZE);
+ svr->recvBuffer = AllocZeroed(ME_SEND_BUF_SIZE);
+ svr->cmdBuffer = AllocZeroed(ME_SEND_BUF_SIZE);
+ svr->buffer = AllocZeroed(0x40);
+ mevent_srv_sub_init(&svr->manager, sendPlayerNo, recvPlayerNo);
+}
+
+static void mevent_client_free_resources(struct mevent_client * svr)
+{
+ Free(svr->sendBuffer);
+ Free(svr->recvBuffer);
+ Free(svr->cmdBuffer);
+ Free(svr->buffer);
+}
+
+static void mevent_client_jmp_buffer(struct mevent_client * svr)
+{
+ memcpy(svr->cmdBuffer, svr->recvBuffer, ME_SEND_BUF_SIZE);
+ svr->cmdidx = 0;
+}
+
+static void mevent_client_send_word(struct mevent_client * svr, u32 ident, u32 word)
+{
+ CpuFill32(0, svr->sendBuffer, ME_SEND_BUF_SIZE);
+ *(u32 *)svr->sendBuffer = word;
+ mevent_srv_sub_init_send(&svr->manager, ident, svr->sendBuffer, sizeof(u32));
+}
+
+static u32 client_mainseq_0(struct mevent_client * svr)
+{
+ // init
+ memcpy(svr->cmdBuffer, gMEventClientScript_InotialListen, ME_SEND_BUF_SIZE);
+ svr->cmdidx = 0;
+ svr->mainseqno = 4;
+ svr->flag = 0;
+ return 0;
+}
+
+static u32 client_mainseq_1(struct mevent_client * svr)
+{
+ // done
+ return 6;
+}
+
+static u32 client_mainseq_2(struct mevent_client * svr)
+{
+ // do recv
+ if (mevent_srv_sub_recv(&svr->manager))
+ {
+ svr->mainseqno = 4;
+ svr->flag = 0;
+ }
+ return 1;
+}
+
+static u32 client_mainseq_3(struct mevent_client * svr)
+{
+ // do send
+ if (mevent_srv_sub_send(&svr->manager))
+ {
+ svr->mainseqno = 4;
+ svr->flag = 0;
+ }
+ return 1;
+}
+
+static u32 client_mainseq_4(struct mevent_client * svr)
+{
+ // process command
+ struct mevent_client_cmd * cmd = &svr->cmdBuffer[svr->cmdidx];
+ ++svr->cmdidx;
+ switch (cmd->instr)
+ {
+ case 0:
+ break;
+ case 1:
+ svr->param = cmd->parameter;
+ svr->mainseqno = 1;
+ svr->flag = 0;
+ break;
+ case 2:
+ mevent_srv_sub_init_recv(&svr->manager, cmd->parameter, svr->recvBuffer);
+ svr->mainseqno = 2;
+ svr->flag = 0;
+ break;
+ case 3:
+ svr->mainseqno = 3;
+ svr->flag = 0;
+ break;
+ case 20:
+ mevent_srv_sub_init_send(&svr->manager, 0x14, svr->sendBuffer, 0);
+ svr->mainseqno = 3;
+ svr->flag = 0;
+ break;
+ case 19:
+ mevent_client_send_word(svr, 0x12, GetGameStat(cmd->parameter));
+ svr->mainseqno = 3;
+ svr->flag = 0;
+ break;
+ case 6:
+ if (svr->param == 0)
+ mevent_client_jmp_buffer(svr);
+ break;
+ case 7:
+ if (svr->param == 1)
+ mevent_client_jmp_buffer(svr);
+ break;
+ case 4:
+ mevent_client_jmp_buffer(svr);
+ break;
+ case 5:
+ memcpy(svr->buffer, svr->recvBuffer, 0x40);
+ svr->mainseqno = 5;
+ svr->flag = 0;
+ return 2;
+ case 11:
+ memcpy(svr->buffer, svr->recvBuffer, 0x40);
+ svr->mainseqno = 5;
+ svr->flag = 0;
+ return 3;
+ case 12:
+ memcpy(svr->buffer, svr->recvBuffer, 0x40);
+ svr->mainseqno = 5;
+ svr->flag = 0;
+ return 5;
+ case 13:
+ svr->mainseqno = 5;
+ svr->flag = 0;
+ return 4;
+ case 8:
+ BuildMEventClientHeader(svr->sendBuffer);
+ mevent_srv_sub_init_send(&svr->manager, 0x11, svr->sendBuffer, sizeof(struct MEventClientHeaderStruct));
+ break;
+ case 14:
+ mevent_client_send_word(svr, 0x13, svr->param);
+ break;
+ case 10:
+ sub_8143F68(svr->recvBuffer);
+ break;
+ case 9:
+ if (!sub_8143EF4(svr->recvBuffer))
+ {
+ sub_8143DC8(svr->recvBuffer);
+ mevent_client_send_word(svr, 0x13, 0);
+ }
+ else
+ mevent_client_send_word(svr, 0x13, 1);
+ break;
+ case 15:
+ svr->mainseqno = 6;
+ svr->flag = 0;
+ break;
+ case 16:
+ sub_8144254(svr->recvBuffer);
+ break;
+ case 17:
+ MEventSetRamScript(svr->recvBuffer, 1000);
+ break;
+ case 18:
+ memcpy(&gSaveBlock2Ptr->unk_B0.field_3F0, svr->recvBuffer, sizeof(struct BattleTowerEReaderTrainer));
+ ValidateEReaderTrainer();
+ break;
+ case 21:
+ memcpy(gDecompressionBuffer, svr->recvBuffer, ME_SEND_BUF_SIZE);
+ svr->mainseqno = 7;
+ svr->flag = 0;
+ break;
+ }
+
+ return 1;
+}
+
+static u32 client_mainseq_5(struct mevent_client * svr)
+{
+ // wait flag
+ if (svr->flag)
+ {
+ svr->mainseqno = 4;
+ svr->flag = 0;
+ }
+ return 1;
+}
+
+static u32 client_mainseq_6(struct mevent_client * svr)
+{
+ // Run mevent buffer script
+ switch (svr->flag)
+ {
+ case 0:
+ MEventScript_InitContext(svr->recvBuffer);
+ ++svr->flag;
+ break;
+ case 1:
+ if (!MEventScript_Run(&svr->param))
+ {
+ svr->mainseqno = 4;
+ svr->flag = 0;
+ }
+ break;
+ }
+ return 1;
+}
+
+static u32 client_mainseq_7(struct mevent_client * svr)
+{
+ // exec arbitrary code
+ u32 (*func)(u32 *, struct SaveBlock2 *, struct SaveBlock1 *) = (void *)gDecompressionBuffer;
+ if (func(&svr->param, gSaveBlock2Ptr, gSaveBlock1Ptr) == 1)
+ {
+ svr->mainseqno = 4;
+ svr->flag = 0;
+ }
+ return 1;
+}
+
+static u32 mevent_client_exec(struct mevent_client * svr)
+{
+ u32 (*funcs[])(struct mevent_client *) = {
+ client_mainseq_0,
+ client_mainseq_1,
+ client_mainseq_2,
+ client_mainseq_3,
+ client_mainseq_4,
+ client_mainseq_5,
+ client_mainseq_6,
+ client_mainseq_7
+ };
+ return funcs[svr->mainseqno](svr);
+}
diff --git a/src/mevent_server.c b/src/mevent_server.c
index 9fe9e9e79..252a8885f 100644
--- a/src/mevent_server.c
+++ b/src/mevent_server.c
@@ -1,9 +1,6 @@
#include "global.h"
#include "malloc.h"
#include "decompress.h"
-#include "util.h"
-#include "link.h"
-#include "link_rfu.h"
#include "overworld.h"
#include "script.h"
#include "battle_tower.h"
@@ -11,302 +8,25 @@
#include "mevent.h"
#include "mevent_server.h"
-EWRAM_DATA struct mevent_client * s_mevent_client_ptr = NULL;
EWRAM_DATA struct mevent_srv_common * s_mevent_srv_common_ptr = NULL;
-static void mevent_client_init(struct mevent_client *, u32, u32);
-static u32 mevent_client_exec(struct mevent_client *);
-static void mevent_client_free_resources(struct mevent_client *);
static void mevent_srv_init_common(struct mevent_srv_common *, const void *, u32, u32);
static void mevent_srv_free_resources(struct mevent_srv_common *);
static u32 mevent_srv_exec_common(struct mevent_srv_common *);
-extern const u8 gUnknown_84687E0[];
-extern const struct mevent_cmd gUnknown_8468B6C[];
-extern const struct mevent_cmd gUnknown_8468BCC[];
-
-void mevent_client_do_init(void)
-{
- s_mevent_client_ptr = AllocZeroed(sizeof(struct mevent_client));
- mevent_client_init(s_mevent_client_ptr, 1, 0);
-}
-
-u32 mevent_client_do_exec(u16 * a0)
-{
- u32 result;
- if (s_mevent_client_ptr == NULL)
- return 6;
- result = mevent_client_exec(s_mevent_client_ptr);
- if (result == 6)
- {
- *a0 = s_mevent_client_ptr->param;
- mevent_client_free_resources(s_mevent_client_ptr);
- Free(s_mevent_client_ptr);
- s_mevent_client_ptr = NULL;
- }
- return result;
-}
-
-void mevent_client_inc_flag(void)
-{
- s_mevent_client_ptr->flag++;
-}
-
-void * mevent_client_get_buffer(void)
-{
- return s_mevent_client_ptr->buffer;
-}
-
-void mevent_client_set_param(u32 a0)
-{
- s_mevent_client_ptr->param = a0;
-}
-
-static void mevent_client_init(struct mevent_client * svr, u32 sendPlayerNo, u32 recvPlayerNo)
-{
- svr->unk_00 = 0;
- svr->mainseqno = 0;
- svr->flag = 0;
- svr->sendBuffer = AllocZeroed(ME_SEND_BUF_SIZE);
- svr->recvBuffer = AllocZeroed(ME_SEND_BUF_SIZE);
- svr->cmdBuffer = AllocZeroed(ME_SEND_BUF_SIZE);
- svr->buffer = AllocZeroed(0x40);
- mevent_srv_sub_init(&svr->manager, sendPlayerNo, recvPlayerNo);
-}
-
-static void mevent_client_free_resources(struct mevent_client * svr)
-{
- Free(svr->sendBuffer);
- Free(svr->recvBuffer);
- Free(svr->cmdBuffer);
- Free(svr->buffer);
-}
-
-static void mevent_client_jmp_buffer(struct mevent_client * svr)
-{
- memcpy(svr->cmdBuffer, svr->recvBuffer, ME_SEND_BUF_SIZE);
- svr->cmdidx = 0;
-}
-
-static void mevent_client_send_word(struct mevent_client * svr, u32 ident, u32 word)
-{
- CpuFill32(0, svr->sendBuffer, ME_SEND_BUF_SIZE);
- *(u32 *)svr->sendBuffer = word;
- mevent_srv_sub_init_send(&svr->manager, ident, svr->sendBuffer, sizeof(u32));
-}
-
-static u32 ish_mainseq_0(struct mevent_client * svr)
-{
- // init
- memcpy(svr->cmdBuffer, gUnknown_84687E0, ME_SEND_BUF_SIZE);
- svr->cmdidx = 0;
- svr->mainseqno = 4;
- svr->flag = 0;
- return 0;
-}
-
-static u32 ish_mainseq_1(struct mevent_client * svr)
-{
- // done
- return 6;
-}
-
-static u32 ish_mainseq_2(struct mevent_client * svr)
-{
- // do recv
- if (mevent_srv_sub_recv(&svr->manager))
- {
- svr->mainseqno = 4;
- svr->flag = 0;
- }
- return 1;
-}
-
-static u32 ish_mainseq_3(struct mevent_client * svr)
-{
- // do send
- if (mevent_srv_sub_send(&svr->manager))
- {
- svr->mainseqno = 4;
- svr->flag = 0;
- }
- return 1;
-}
-
-static u32 ish_mainseq_4(struct mevent_client * svr)
-{
- // process command
- struct mevent_cmd_ish * cmd = &svr->cmdBuffer[svr->cmdidx];
- ++svr->cmdidx;
- switch (cmd->instr)
- {
- case 0:
- break;
- case 1:
- svr->param = cmd->parameter;
- svr->mainseqno = 1;
- svr->flag = 0;
- break;
- case 2:
- mevent_srv_sub_init_recv(&svr->manager, cmd->parameter, svr->recvBuffer);
- svr->mainseqno = 2;
- svr->flag = 0;
- break;
- case 3:
- svr->mainseqno = 3;
- svr->flag = 0;
- break;
- case 20:
- mevent_srv_sub_init_send(&svr->manager, 0x14, svr->sendBuffer, 0);
- svr->mainseqno = 3;
- svr->flag = 0;
- break;
- case 19:
- mevent_client_send_word(svr, 0x12, GetGameStat(cmd->parameter));
- svr->mainseqno = 3;
- svr->flag = 0;
- break;
- case 6:
- if (svr->param == 0)
- mevent_client_jmp_buffer(svr);
- break;
- case 7:
- if (svr->param == 1)
- mevent_client_jmp_buffer(svr);
- break;
- case 4:
- mevent_client_jmp_buffer(svr);
- break;
- case 5:
- memcpy(svr->buffer, svr->recvBuffer, 0x40);
- svr->mainseqno = 5;
- svr->flag = 0;
- return 2;
- case 11:
- memcpy(svr->buffer, svr->recvBuffer, 0x40);
- svr->mainseqno = 5;
- svr->flag = 0;
- return 3;
- case 12:
- memcpy(svr->buffer, svr->recvBuffer, 0x40);
- svr->mainseqno = 5;
- svr->flag = 0;
- return 5;
- case 13:
- svr->mainseqno = 5;
- svr->flag = 0;
- return 4;
- case 8:
- sub_81442CC(svr->sendBuffer);
- mevent_srv_sub_init_send(&svr->manager, 0x11, svr->sendBuffer, sizeof(struct MEventStruct_Unk1442CC));
- break;
- case 14:
- mevent_client_send_word(svr, 0x13, svr->param);
- break;
- case 10:
- sub_8143F68(svr->recvBuffer);
- break;
- case 9:
- if (!sub_8143EF4(svr->recvBuffer))
- {
- sub_8143DC8(svr->recvBuffer);
- mevent_client_send_word(svr, 0x13, 0);
- }
- else
- mevent_client_send_word(svr, 0x13, 1);
- break;
- case 15:
- svr->mainseqno = 6;
- svr->flag = 0;
- break;
- case 16:
- sub_8144254(svr->recvBuffer);
- break;
- case 17:
- sub_8069EA4(svr->recvBuffer, 1000);
- break;
- case 18:
- memcpy(&gSaveBlock2Ptr->unk_B0.field_3F0, svr->recvBuffer, sizeof(struct BattleTowerEReaderTrainer));
- ValidateEReaderTrainer();
- break;
- case 21:
- memcpy(gDecompressionBuffer, svr->recvBuffer, ME_SEND_BUF_SIZE);
- svr->mainseqno = 7;
- svr->flag = 0;
- break;
- }
-
- return 1;
-}
-
-static u32 ish_mainseq_5(struct mevent_client * svr)
-{
- // wait flag
- if (svr->flag)
- {
- svr->mainseqno = 4;
- svr->flag = 0;
- }
- return 1;
-}
-
-static u32 ish_mainseq_6(struct mevent_client * svr)
-{
- // ???
- switch (svr->flag)
- {
- case 0:
- sub_80DA89C(svr->recvBuffer);
- ++svr->flag;
- break;
- case 1:
- if (!sub_80DA8B0(&svr->param))
- {
- svr->mainseqno = 4;
- svr->flag = 0;
- }
- break;
- }
- return 1;
-}
-
-static u32 ish_mainseq_7(struct mevent_client * svr)
-{
- // exec arbitrary code
- u32 (*func)(u32 *, struct SaveBlock2 *, struct SaveBlock1 *) = (void *)gDecompressionBuffer;
- if (func(&svr->param, gSaveBlock2Ptr, gSaveBlock1Ptr) == 1)
- {
- svr->mainseqno = 4;
- svr->flag = 0;
- }
- return 1;
-}
-
-static u32 mevent_client_exec(struct mevent_client * svr)
-{
- u32 (*funcs[])(struct mevent_client *) = {
- ish_mainseq_0,
- ish_mainseq_1,
- ish_mainseq_2,
- ish_mainseq_3,
- ish_mainseq_4,
- ish_mainseq_5,
- ish_mainseq_6,
- ish_mainseq_7
- };
- return funcs[svr->mainseqno](svr);
-}
+extern const struct mevent_server_cmd gMEventSrvScript_SendNews[];
+extern const struct mevent_server_cmd gMEventSrvScript_SendCard[];
void mevent_srv_init_wnews(void)
{
s_mevent_srv_common_ptr = AllocZeroed(sizeof(struct mevent_srv_common));
- mevent_srv_init_common(s_mevent_srv_common_ptr, gUnknown_8468B6C, 0, 1);
+ mevent_srv_init_common(s_mevent_srv_common_ptr, gMEventSrvScript_SendNews, 0, 1);
}
void mevent_srv_new_wcard(void)
{
s_mevent_srv_common_ptr = AllocZeroed(sizeof(struct mevent_srv_common));
- mevent_srv_init_common(s_mevent_srv_common_ptr, gUnknown_8468BCC, 0, 1);
+ mevent_srv_init_common(s_mevent_srv_common_ptr, gMEventSrvScript_SendCard, 0, 1);
}
u32 mevent_srv_common_do_exec(u16 * a0)
@@ -329,10 +49,10 @@ static void mevent_srv_init_common(struct mevent_srv_common * svr, const void *
{
svr->unk_00 = 0;
svr->mainseqno = 0;
- svr->mevent_32e0 = AllocZeroed(sizeof(struct MEventBuffer_32E0_Sub));
- svr->mevent_3120 = AllocZeroed(sizeof(struct MEventBuffer_3120_Sub));
+ svr->card = AllocZeroed(sizeof(struct MEWonderCardData));
+ svr->news = AllocZeroed(sizeof(struct MEWonderNewsData));
svr->recvBuffer = AllocZeroed(ME_SEND_BUF_SIZE);
- svr->mevent_unk1442cc = AllocZeroed(sizeof(struct MEventStruct_Unk1442CC));
+ svr->mevent_unk1442cc = AllocZeroed(sizeof(struct MEventClientHeaderStruct));
svr->cmdBuffer = cmdBuffer;
svr->cmdidx = 0;
mevent_srv_sub_init(&svr->manager, sendPlayerNo, recvPlayerNo);
@@ -340,8 +60,8 @@ static void mevent_srv_init_common(struct mevent_srv_common * svr, const void *
static void mevent_srv_free_resources(struct mevent_srv_common * svr)
{
- Free(svr->mevent_32e0);
- Free(svr->mevent_3120);
+ Free(svr->card);
+ Free(svr->news);
Free(svr->recvBuffer);
Free(svr->mevent_unk1442cc);
}
@@ -402,7 +122,7 @@ static u32 common_mainseq_3(struct mevent_srv_common * svr)
static u32 common_mainseq_4(struct mevent_srv_common * svr)
{
// process command
- const struct mevent_cmd * cmd = &svr->cmdBuffer[svr->cmdidx];
+ const struct mevent_server_cmd * cmd = &svr->cmdBuffer[svr->cmdidx];
void * ptr;
svr->cmdidx++;
@@ -429,12 +149,12 @@ static u32 common_mainseq_4(struct mevent_srv_common * svr)
case 5:
AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 376);
AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 377);
- memcpy(svr->mevent_unk1442cc, svr->recvBuffer, sizeof(struct MEventStruct_Unk1442CC));
+ memcpy(svr->mevent_unk1442cc, svr->recvBuffer, sizeof(struct MEventClientHeaderStruct));
break;
case 6:
AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 382);
AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 383);
- svr->param = sub_81443D4(svr->mevent_unk1442cc);
+ svr->param = ValidateMEventClientHeader(svr->mevent_unk1442cc);
break;
case 4:
if (svr->param == cmd->flag)
@@ -445,7 +165,7 @@ static u32 common_mainseq_4(struct mevent_srv_common * svr)
break;
case 7:
AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 396);
- ptr = mevent_first_if_not_null_else_second(cmd->parameter, svr->mevent_32e0);
+ ptr = mevent_first_if_not_null_else_second(cmd->parameter, svr->card);
svr->param = sub_8144418(ptr, svr->mevent_unk1442cc, ptr);
break;
case 8:
@@ -472,11 +192,11 @@ static u32 common_mainseq_4(struct mevent_srv_common * svr)
break;
case 14:
AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 432);
- mevent_srv_common_init_send(svr, 0x17, mevent_first_if_not_null_else_second(cmd->parameter, svr->mevent_3120), sizeof(struct MEventBuffer_3120_Sub));
+ mevent_srv_common_init_send(svr, 0x17, mevent_first_if_not_null_else_second(cmd->parameter, svr->news), sizeof(struct MEWonderNewsData));
break;
case 13:
AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 438);
- mevent_srv_common_init_send(svr, 0x16, mevent_first_if_not_null_else_second(cmd->parameter, svr->mevent_32e0), sizeof(struct MEventBuffer_32E0_Sub));
+ mevent_srv_common_init_send(svr, 0x16, mevent_first_if_not_null_else_second(cmd->parameter, svr->card), sizeof(struct MEWonderCardData));
break;
case 16:
AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 444);
@@ -506,11 +226,11 @@ static u32 common_mainseq_4(struct mevent_srv_common * svr)
break;
case 22:
AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 481);
- memcpy(svr->mevent_32e0, cmd->parameter, 332);
+ memcpy(svr->card, cmd->parameter, 332);
break;
case 23:
AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 486);
- memcpy(svr->mevent_3120, cmd->parameter, 444);
+ memcpy(svr->news, cmd->parameter, 444);
break;
case 21:
AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 491);
@@ -526,12 +246,12 @@ static u32 common_mainseq_4(struct mevent_srv_common * svr)
break;
case 26:
AGB_ASSERT_EX(cmd->flag == FALSE && cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 506);
- memcpy(svr->mevent_32e0, GetSavedWonderCard(), 332);
- sub_814410C(svr->mevent_32e0);
+ memcpy(svr->card, GetSavedWonderCard(), 332);
+ sub_814410C(svr->card);
break;
case 27:
AGB_ASSERT_EX(cmd->flag == FALSE && cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 512);
- memcpy(svr->mevent_3120, GetSavedWonderNews(), 444);
+ memcpy(svr->news, GetSavedWonderNews(), 444);
break;
case 28:
AGB_ASSERT_EX(cmd->flag == FALSE && cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 517);
diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c
index 146595272..68a045f2c 100644
--- a/src/mystery_event_script.c
+++ b/src/mystery_event_script.c
@@ -67,12 +67,12 @@ static bool32 RunMysteryEventScriptCommand(struct ScriptContext *ctx)
return FALSE;
}
-void sub_80DA89C(u8 *script)
+void MEventScript_InitContext(u8 *script)
{
InitMysteryEventScript(&sMysteryEventScriptContext, script);
}
-bool32 sub_80DA8B0(u32 *a0)
+bool32 MEventScript_Run(u32 *a0)
{
bool32 ret = RunMysteryEventScriptCommand(&sMysteryEventScriptContext);
*a0 = sMysteryEventScriptContext.data[2];
@@ -83,8 +83,8 @@ bool32 sub_80DA8B0(u32 *a0)
u32 RunMysteryEventScript(u8 *script)
{
u32 ret;
- sub_80DA89C(script);
- while (sub_80DA8B0(&ret));
+ MEventScript_InitContext(script);
+ while (MEventScript_Run(&ret));
return ret;
}
diff --git a/src/mystery_gift_menu.c b/src/mystery_gift_menu.c
index 13a6d37e2..8384d211d 100644
--- a/src/mystery_gift_menu.c
+++ b/src/mystery_gift_menu.c
@@ -1,6 +1,5 @@
#include "global.h"
#include "palette.h"
-#include "dma3.h"
#include "gpu_regs.h"
#include "bg.h"
#include "task.h"
@@ -915,7 +914,7 @@ bool32 mevent_save_game(u8 * state)
(*state)++;
break;
case 1:
- TrySavingData(0);
+ TrySavingData(SAVE_NORMAL);
(*state)++;
break;
case 2:
@@ -1095,7 +1094,7 @@ const u8 * mevent_message_stamp_card_etc_send_status(u32 * a0, u8 unused, u32 ms
return result;
}
-bool32 PrintMGSendStatus(u8 * state, u16 * arg1, u8 arg2, u32 msgId)
+static bool32 PrintMGSendStatus(u8 * state, u16 * arg1, u8 arg2, u32 msgId)
{
u32 flag;
const u8 * str = mevent_message_stamp_card_etc_send_status(&flag, arg2, msgId);
@@ -1278,7 +1277,7 @@ void task00_mystery_gift(u8 taskId)
case 8:
switch (mevent_client_do_exec(&data->curPromptWindowId))
{
- case 6:
+ case 6: // done
task_add_05_task_del_08FA224_when_no_RfuFunc();
data->prevPromptWindowId = data->curPromptWindowId;
data->state = 13;
diff --git a/src/pokemon.c b/src/pokemon.c
index fb7a8c626..c4ae0c4da 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -5624,8 +5624,7 @@ u8 GetNumberOfRelearnableMoves(struct Pokemon *mon)
return numMoves;
}
-// SpeciesToPokedexNum?
-u16 sub_8043F90(u16 species)
+u16 SpeciesToPokedexNum(u16 species)
{
species = SpeciesToNationalPokedexNum(species);
diff --git a/src/quest_log.c b/src/quest_log.c
index 7ce3ede12..dfb3bad5b 100644
--- a/src/quest_log.c
+++ b/src/quest_log.c
@@ -1067,7 +1067,7 @@ static void QuestLog_EndPlayback(void)
{
ResetSpecialVars();
Save_ResetSaveCounters();
- Save_LoadGameData(0);
+ Save_LoadGameData(SAVE_NORMAL);
SetMainCallback2(sub_8057430);
gFieldCallback2 = sub_8111F60;
FreeAllWindowBuffers();
diff --git a/src/reset_save_heap.c b/src/reset_save_heap.c
index 428f7b88d..7b9d30c06 100644
--- a/src/reset_save_heap.c
+++ b/src/reset_save_heap.c
@@ -8,7 +8,7 @@
#include "overworld.h"
#include "malloc.h"
-void sub_8079B7C(void)
+void ResetSaveHeap(void)
{
u16 imeBackup = REG_IME;
@@ -20,8 +20,8 @@ void sub_8079B7C(void)
SetSaveBlocksPointers();
ResetMenuAndMonGlobals();
Save_ResetSaveCounters();
- Save_LoadGameData(0);
- if (gSaveFileStatus == 0 || gSaveFileStatus == 2)
+ Save_LoadGameData(SAVE_NORMAL);
+ if (gSaveFileStatus == SAVE_STATUS_EMPTY || gSaveFileStatus == SAVE_STATUS_INVALID)
Sav2_ClearSetDefault();
SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound);
InitHeap(gHeap, HEAP_SIZE);
diff --git a/src/save.c b/src/save.c
index 57364b10b..a2d365886 100644
--- a/src/save.c
+++ b/src/save.c
@@ -672,7 +672,7 @@ u8 HandleSavingData(u8 saveType)
for(i = 0; i < 5; i++)
save_write_to_flash(i, gRamSaveSectionLocations);
break;
- case EREADER_SAVE:
+ case SAVE_EREADER:
SaveSerializedGame();
save_write_to_flash(0, gRamSaveSectionLocations);
break;
@@ -719,7 +719,7 @@ bool8 sub_80DA3D8(void)
{
u8 retVal = sub_80D9AA4(0xE, gRamSaveSectionLocations);
if (gDamagedSaveSectors)
- DoSaveFailedScreen(0);
+ DoSaveFailedScreen(SAVE_NORMAL);
if (retVal == 0xFF)
return 1;
else
@@ -730,7 +730,7 @@ u8 sub_80DA40C(void)
{
sub_80D9B04(0xE, gRamSaveSectionLocations);
if (gDamagedSaveSectors)
- DoSaveFailedScreen(0);
+ DoSaveFailedScreen(SAVE_NORMAL);
return 0;
}
@@ -738,7 +738,7 @@ u8 sub_80DA434(void)
{
sav12_xor_get(0xE, gRamSaveSectionLocations);
if (gDamagedSaveSectors)
- DoSaveFailedScreen(0);
+ DoSaveFailedScreen(SAVE_NORMAL);
return 0;
}
@@ -769,34 +769,34 @@ bool8 sub_80DA4A0(void)
retVal = TRUE;
}
if (gDamagedSaveSectors)
- DoSaveFailedScreen(1);
+ DoSaveFailedScreen(SAVE_LINK);
return retVal;
}
-u8 Save_LoadGameData(u8 a1)
+u8 Save_LoadGameData(u8 saveType)
{
u8 result;
if (gFlashMemoryPresent != TRUE)
{
- gSaveFileStatus = 4;
- return 0xFF;
+ gSaveFileStatus = SAVE_STATUS_NO_FLASH;
+ return SAVE_STATUS_ERROR;
}
UpdateSaveAddresses();
- switch (a1)
+ switch (saveType)
{
- case 0:
+ case SAVE_NORMAL:
default:
result = sub_80D9E14(0xFFFF, gRamSaveSectionLocations);
LoadSerializedGame();
gSaveFileStatus = result;
gGameContinueCallback = 0;
break;
- case 3:
- result = sub_80DA120(0x1C, gDecompressionBuffer, 0xF80);
- if(result == 1)
- result = sub_80DA120(0x1D, gDecompressionBuffer + 0xF80, 0xF80);
+ case SAVE_HALL_OF_FAME:
+ result = sub_80DA120(SECTOR_HOF(0), gDecompressionBuffer, 0xF80);
+ if (result == SAVE_STATUS_OK)
+ result = sub_80DA120(SECTOR_HOF(1), gDecompressionBuffer + 0xF80, 0xF80);
break;
}
@@ -809,7 +809,7 @@ u32 TryCopySpecialSaveSection(u8 sector, u8* dst)
s32 size;
u8* savData;
- if (sector != 30 && sector != 31)
+ if (sector != SECTOR_TTOWER(0) && sector != SECTOR_TTOWER(1))
return 0xFF;
ReadFlash(sector, 0, (u8 *)&gSaveDataBuffer, sizeof(struct SaveSection));
if (*(u32*)(&gSaveDataBuffer.data[0]) != 0xB39D)
@@ -830,7 +830,7 @@ u32 TryWriteSpecialSaveSection(u8 sector, u8* src)
u8* savData;
void* savDataBuffer;
- if (sector != 30 && sector != 31)
+ if (sector != SECTOR_TTOWER(0) && sector != SECTOR_TTOWER(1))
return 0xFF;
savDataBuffer = &gSaveDataBuffer;
diff --git a/src/script.c b/src/script.c
index 06418b8d0..f18a8568b 100644
--- a/src/script.c
+++ b/src/script.c
@@ -546,7 +546,7 @@ u8 *sub_8069E48(void)
}
}
-void sub_8069EA4(u8 *script, u16 scriptSize)
+void MEventSetRamScript(u8 *script, u16 scriptSize)
{
if (scriptSize > sizeof(gSaveBlock1Ptr->ramScript.data.script))
scriptSize = sizeof(gSaveBlock1Ptr->ramScript.data.script);
diff --git a/src/title_screen.c b/src/title_screen.c
index 44bdc7c0f..2d6b6cf15 100644
--- a/src/title_screen.c
+++ b/src/title_screen.c
@@ -621,7 +621,7 @@ static void SetTitleScreenScene_Cry(s16 * data)
SetSaveBlocksPointers();
ResetMenuAndMonGlobals();
Save_ResetSaveCounters();
- Save_LoadGameData(0);
+ Save_LoadGameData(SAVE_NORMAL);
if (gSaveFileStatus == SAVE_STATUS_EMPTY || gSaveFileStatus == SAVE_STATUS_INVALID)
Sav2_ClearSetDefault();
SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound);
diff --git a/src/tm_case.c b/src/tm_case.c
index ca149a6c6..260efaa53 100644
--- a/src/tm_case.c
+++ b/src/tm_case.c
@@ -105,7 +105,7 @@ static void Task_SelectTMAction_Type3(u8 taskId);
static void Task_SelectTMAction_FromSellMenu(u8 taskId);
static void Task_AskConfirmSaleWithAmount(u8 taskId);
static void Task_PlaceYesNoBox(u8 taskId);
-static void Task_SaleOfTMsCancelled(u8 taskId);
+static void Task_SaleOfTMsCanceled(u8 taskId);
static void Task_InitQuantitySelectUI(u8 taskId);
static void SellTM_PrintQuantityAndSalePrice(s16 quantity, s32 value);
static void Task_QuantitySelect_HandleInput(u8 taskId);
@@ -178,7 +178,7 @@ static const struct MenuAction sMenuActions_UseGiveExit[] = {
static const u8 sMenuActionIndices_Field[] = {0, 1, 2};
static const u8 sMenuActionIndices_UnionRoom[] = {1, 2};
-static const struct YesNoFuncTable sYesNoFuncTable = {Task_PrintSaleConfirmedText, Task_SaleOfTMsCancelled};
+static const struct YesNoFuncTable sYesNoFuncTable = {Task_PrintSaleConfirmedText, Task_SaleOfTMsCanceled};
static const u8 sText_ClearTo18[] = _("{CLEAR_TO 18}");
static const u8 sText_SingleSpace[] = _(" ");
@@ -1012,7 +1012,7 @@ static void Task_PlaceYesNoBox(u8 taskId)
HandleCreateYesNoMenu(taskId, &sYesNoFuncTable);
}
-static void Task_SaleOfTMsCancelled(u8 taskId)
+static void Task_SaleOfTMsCanceled(u8 taskId)
{
s16 * data = gTasks[taskId].data;
diff --git a/sym_ewram.txt b/sym_ewram.txt
index d3e29a065..14a9fad1e 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -450,22 +450,13 @@ gUnknown_203AAB8: @ 203AAB8
.include "src/intro.o"
.align 2
-gUnknown_203AB34: @ 203AB34
- .space 0x4
-
-gUnknown_203AB38: @ 203AB38
- .space 0x4
-
-gUnknown_203AB3C: @ 203AB3C
- .space 0x4
-
+ .include "src/hall_of_fame.o"
+ .align 2
.include "src/credits.o"
-
-gUnknown_203AB44: @ 203AB44
- .space 0x4
-
+ .align 2
.include "src/diploma.o"
+ .align 2
gUnknown_203AB4C: @ 203AB4C
.space 0x4
@@ -728,13 +719,22 @@ sLocationHistory: @ 203F3A8
sRoamerLocation: @ 203F3AE
.space 0x2
+ .align 2
.include "src/mystery_gift_menu.o"
+ .align 2
.include "src/mevent.o"
+ .align 2
.include "src/mevent_server_helpers.o"
+ .align 2
+ .include "src/mevent_client.o"
+ .align 2
.include "src/mevent_server.o"
+ .align 2
.include "src/mevent_8145654.o"
+ .align 2
.include "src/seagallop.o"
+ .align 2
gUnknown_203F3D4: @ 203F3D4
.space 0x4