diff options
author | PikalaxALT <PikalaxALT@users.noreply.github.com> | 2019-11-04 20:52:41 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-04 20:52:41 -0500 |
commit | 9b7d57bb6b654996df7a107c145ec49b78b33c1a (patch) | |
tree | 050d0a76f4c8a7c780ab6a951f22c77bd5d12744 | |
parent | 7bfa6d20587ed14cfa26b9fa81f45837abfafb26 (diff) | |
parent | 876a139ba385036ef34fde899b1caba0d7cc1f29 (diff) |
Merge pull request #142 from PikalaxALT/dism_more_data
Dism more data still
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 Binary files differindex 2d4bae0bd..d8b086947 100644 --- a/baserom.ips +++ b/baserom.ips 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 Binary files differnew file mode 100644 index 000000000..567665495 --- /dev/null +++ b/graphics/hall_of_fame/unk_840C3BC.png 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 |