From 913da02e2731ebc2873c5610f8d3b84eeafdac4c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 5 Apr 2024 21:38:28 -0400 Subject: [PATCH] through ov63_0221D344 --- asm/overlay_63.s | 815 +----------------------------------- include/unk_0200CF18.h | 4 +- src/register_hall_of_fame.c | 178 +++++++- src/unk_0200CF18.c | 8 +- 4 files changed, 186 insertions(+), 819 deletions(-) diff --git a/asm/overlay_63.s b/asm/overlay_63.s index d625cc540..3d34e9490 100644 --- a/asm/overlay_63.s +++ b/asm/overlay_63.s @@ -30,817 +30,9 @@ .extern ov63_0221CA1C .extern ov63_0221CB48 .extern ov63_0221CB94 - - thumb_func_start ov63_0221CE94 -ov63_0221CE94: ; 0x0221CE94 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x18 - add r4, r0, #0 - add r0, r1, #0 - mov r1, #1 - lsl r1, r1, #8 - lsl r6, r2, #4 - add r2, r4, r1 - ldr r1, _0221D204 ; =0x0000328C - add r5, r4, #0 - mul r1, r0 - ldr r0, [r2, r1] - add r5, #0x14 - add r7, r2, r1 - str r0, [sp, #0x14] - bl Mon_GetBoxMon - str r0, [sp, #0x10] - add r0, r5, r6 - mov r1, #0 - bl FillWindowPixelBuffer - add r0, r4, #0 - add r2, r4, #0 - add r0, #0x84 - add r2, #0x8c - ldr r0, [r0] - ldr r2, [r2] - mov r1, #4 - bl ReadMsgDataIntoString - add r0, r4, #0 - add r0, #0x88 - ldr r0, [r0] - ldr r2, [sp, #0x10] - mov r1, #0 - bl BufferBoxMonNickname - add r0, r4, #0 - add r1, r4, #0 - add r2, r4, #0 - add r0, #0x88 - add r1, #0x90 - add r2, #0x8c - ldr r0, [r0] - ldr r1, [r1] - ldr r2, [r2] - bl StringExpandPlaceholders - mov r1, #0 - add r2, r4, #0 - str r1, [sp] - mov r0, #0xff - str r0, [sp, #4] - ldr r0, _0221D208 ; =0x000F0200 - add r2, #0x90 - str r0, [sp, #8] - str r1, [sp, #0xc] - ldr r2, [r2] - add r0, r5, r6 - mov r3, #2 - bl AddTextPrinterParameterizedWithColor - add r0, r5, r6 - bl CopyWindowPixelsToVram_TextMode - add r0, r5, r6 - add r0, #0x10 - mov r1, #0 - bl FillWindowPixelBuffer - ldrb r1, [r7, #0x11] - cmp r1, #2 - beq _0221CF2E - ldrb r0, [r7, #0x12] - cmp r0, #0 - bne _0221CF42 -_0221CF2E: - add r0, r4, #0 - add r2, r4, #0 - add r0, #0x84 - add r2, #0x8c - ldr r0, [r0] - ldr r2, [r2] - mov r1, #3 - bl ReadMsgDataIntoString - b _0221CF84 -_0221CF42: - cmp r1, #0 - bne _0221CF5A - add r0, r4, #0 - add r2, r4, #0 - add r0, #0x84 - add r2, #0x8c - ldr r0, [r0] - ldr r2, [r2] - mov r1, #1 - bl ReadMsgDataIntoString - b _0221CF84 -_0221CF5A: - cmp r1, #1 - bne _0221CF72 - add r0, r4, #0 - add r2, r4, #0 - add r0, #0x84 - add r2, #0x8c - ldr r0, [r0] - ldr r2, [r2] - mov r1, #2 - bl ReadMsgDataIntoString - b _0221CF84 -_0221CF72: - add r0, r4, #0 - add r2, r4, #0 - add r0, #0x84 - add r2, #0x8c - ldr r0, [r0] - ldr r2, [r2] - mov r1, #3 - bl ReadMsgDataIntoString -_0221CF84: - add r0, r4, #0 - add r0, #0x88 - ldr r0, [r0] - ldr r2, [sp, #0x10] - mov r1, #0 - bl BufferBoxMonSpeciesName - add r0, r4, #0 - add r1, r4, #0 - add r2, r4, #0 - add r0, #0x88 - add r1, #0x90 - add r2, #0x8c - ldr r0, [r0] - ldr r1, [r1] - ldr r2, [r2] - bl StringExpandPlaceholders - mov r1, #0 - add r2, r4, #0 - str r1, [sp] - mov r0, #0xff - str r0, [sp, #4] - ldr r0, _0221D208 ; =0x000F0200 - add r2, #0x90 - str r0, [sp, #8] - str r1, [sp, #0xc] - add r0, r5, r6 - ldr r2, [r2] - add r0, #0x10 - mov r3, #2 - bl AddTextPrinterParameterizedWithColor - add r0, r4, #0 - add r2, r4, #0 - add r0, #0x84 - add r2, #0x8c - ldr r0, [r0] - ldr r2, [r2] - mov r1, #5 - bl ReadMsgDataIntoString - mov r1, #0 - str r1, [sp] - mov r0, #1 - str r0, [sp, #4] - add r0, r4, #0 - add r0, #0x88 - ldrh r2, [r7, #0xe] - ldr r0, [r0] - mov r3, #3 - bl BufferIntegerAsString - add r0, r4, #0 - add r1, r4, #0 - add r2, r4, #0 - add r0, #0x88 - add r1, #0x90 - add r2, #0x8c - ldr r0, [r0] - ldr r1, [r1] - ldr r2, [r2] - bl StringExpandPlaceholders - mov r0, #0x10 - str r0, [sp] - mov r0, #0xff - str r0, [sp, #4] - ldr r0, _0221D208 ; =0x000F0200 - add r2, r4, #0 - str r0, [sp, #8] - mov r1, #0 - add r0, r5, r6 - str r1, [sp, #0xc] - add r2, #0x90 - ldr r2, [r2] - add r0, #0x10 - mov r3, #2 - bl AddTextPrinterParameterizedWithColor - add r0, r5, r6 - add r0, #0x10 - bl CopyWindowPixelsToVram_TextMode - add r0, r5, r6 - add r0, #0x20 - mov r1, #0 - bl FillWindowPixelBuffer - add r0, r4, #0 - add r2, r4, #0 - add r0, #0x84 - add r2, #0x8c - ldr r0, [r0] - ldr r2, [r2] - mov r1, #6 - bl ReadMsgDataIntoString - add r0, r4, #0 - add r0, #0x88 - ldr r0, [r0] - ldr r2, [sp, #0x10] - mov r1, #0 - bl BufferBoxMonOTName - add r0, r4, #0 - add r1, r4, #0 - add r2, r4, #0 - add r0, #0x88 - add r1, #0x90 - add r2, #0x8c - ldr r0, [r0] - ldr r1, [r1] - ldr r2, [r2] - bl StringExpandPlaceholders - mov r1, #0 - str r1, [sp] - mov r0, #0xff - str r0, [sp, #4] - ldr r0, _0221D208 ; =0x000F0200 - add r2, r4, #0 - str r0, [sp, #8] - add r0, r5, r6 - str r1, [sp, #0xc] - add r2, #0x90 - ldr r2, [r2] - add r0, #0x20 - mov r3, #2 - bl AddTextPrinterParameterizedWithColor - ldr r2, [r4] - ldr r1, [sp, #0x14] - ldr r2, [r2] - add r0, r4, #0 - bl ov63_0221E310 - cmp r0, #9 - bls _0221D09C - b _0221D1DA -_0221D09C: - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0221D0A8: ; jump table - .short _0221D0BC - _0221D0A8 - 2 ; case 0 - .short _0221D0F4 - _0221D0A8 - 2 ; case 1 - .short _0221D12C - _0221D0A8 - 2 ; case 2 - .short _0221D140 - _0221D0A8 - 2 ; case 3 - .short _0221D154 - _0221D0A8 - 2 ; case 4 - .short _0221D168 - _0221D0A8 - 2 ; case 5 - .short _0221D17C - _0221D0A8 - 2 ; case 6 - .short _0221D190 - _0221D0A8 - 2 ; case 7 - .short _0221D1A4 - _0221D0A8 - 2 ; case 8 - .short _0221D1A4 - _0221D0A8 - 2 ; case 9 -_0221D0BC: - add r0, r4, #0 - add r2, r4, #0 - add r0, #0x84 - add r2, #0x8c - ldr r0, [r0] - ldr r2, [r2] - mov r1, #7 - bl ReadMsgDataIntoString - add r0, r4, #0 - add r0, #0x88 - ldr r0, [r0] - ldr r2, [r7, #0x14] - mov r1, #0 - bl BufferLandmarkName - add r0, r4, #0 - add r1, r4, #0 - add r2, r4, #0 - add r0, #0x88 - add r1, #0x90 - add r2, #0x8c - ldr r0, [r0] - ldr r1, [r1] - ldr r2, [r2] - bl StringExpandPlaceholders - b _0221D1DA -_0221D0F4: - add r0, r4, #0 - add r2, r4, #0 - add r0, #0x84 - add r2, #0x8c - ldr r0, [r0] - ldr r2, [r2] - mov r1, #8 - bl ReadMsgDataIntoString - add r0, r4, #0 - add r0, #0x88 - ldr r0, [r0] - ldr r2, [r7, #0x14] - mov r1, #0 - bl BufferLandmarkName - add r0, r4, #0 - add r1, r4, #0 - add r2, r4, #0 - add r0, #0x88 - add r1, #0x90 - add r2, #0x8c - ldr r0, [r0] - ldr r1, [r1] - ldr r2, [r2] - bl StringExpandPlaceholders - b _0221D1DA -_0221D12C: - add r0, r4, #0 - add r2, r4, #0 - add r0, #0x84 - add r2, #0x90 - ldr r0, [r0] - ldr r2, [r2] - mov r1, #9 - bl ReadMsgDataIntoString - b _0221D1DA -_0221D140: - add r0, r4, #0 - add r2, r4, #0 - add r0, #0x84 - add r2, #0x90 - ldr r0, [r0] - ldr r2, [r2] - mov r1, #0xa - bl ReadMsgDataIntoString - b _0221D1DA -_0221D154: - add r0, r4, #0 - add r2, r4, #0 - add r0, #0x84 - add r2, #0x90 - ldr r0, [r0] - ldr r2, [r2] - mov r1, #0xb - bl ReadMsgDataIntoString - b _0221D1DA -_0221D168: - add r0, r4, #0 - add r2, r4, #0 - add r0, #0x84 - add r2, #0x90 - ldr r0, [r0] - ldr r2, [r2] - mov r1, #0xe - bl ReadMsgDataIntoString - b _0221D1DA -_0221D17C: - add r0, r4, #0 - add r2, r4, #0 - add r0, #0x84 - add r2, #0x90 - ldr r0, [r0] - ldr r2, [r2] - mov r1, #0xc - bl ReadMsgDataIntoString - b _0221D1DA -_0221D190: - add r0, r4, #0 - add r2, r4, #0 - add r0, #0x84 - add r2, #0x90 - ldr r0, [r0] - ldr r2, [r2] - mov r1, #0xd - bl ReadMsgDataIntoString - b _0221D1DA -_0221D1A4: - add r0, r4, #0 - add r2, r4, #0 - add r0, #0x84 - add r2, #0x8c - ldr r0, [r0] - ldr r2, [r2] - mov r1, #0xf - bl ReadMsgDataIntoString - add r0, r4, #0 - add r0, #0x88 - ldr r0, [r0] - ldr r2, [r7, #0x14] - mov r1, #0 - bl BufferLandmarkName - add r0, r4, #0 - add r1, r4, #0 - add r2, r4, #0 - add r0, #0x88 - add r1, #0x90 - add r2, #0x8c - ldr r0, [r0] - ldr r1, [r1] - ldr r2, [r2] - bl StringExpandPlaceholders -_0221D1DA: - mov r0, #0x18 - str r0, [sp] - mov r0, #0xff - str r0, [sp, #4] - ldr r0, _0221D208 ; =0x000F0200 - mov r1, #0 - str r0, [sp, #8] - add r0, r5, r6 - str r1, [sp, #0xc] - add r4, #0x90 - ldr r2, [r4] - add r0, #0x20 - mov r3, #2 - bl AddTextPrinterParameterizedWithColor - add r0, r5, r6 - add r0, #0x20 - bl CopyWindowPixelsToVram_TextMode - add sp, #0x18 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_0221D204: .word 0x0000328C -_0221D208: .word 0x000F0200 - thumb_func_end ov63_0221CE94 - - thumb_func_start ov63_0221D20C -ov63_0221D20C: ; 0x0221D20C - push {r3, lr} - bl ov63_0221D240 - mov r0, #0x10 - mov r1, #1 - bl GfGfx_EngineATogglePlanes - pop {r3, pc} - thumb_func_end ov63_0221D20C - - thumb_func_start ov63_0221D21C -ov63_0221D21C: ; 0x0221D21C - push {r3, r4, r5, lr} - add r5, r0, #0 - mov r4, #0 -_0221D222: - add r0, r5, #0 - add r1, r4, #0 - bl ov63_0221C134 - add r4, r4, #1 - cmp r4, #0xf - blo _0221D222 - add r0, r5, #0 - bl ov63_0221CB48 - add r0, r5, #0 - bl ov63_0221C85C - pop {r3, r4, r5, pc} - .balign 4, 0 - thumb_func_end ov63_0221D21C - - thumb_func_start ov63_0221D240 -ov63_0221D240: ; 0x0221D240 - push {r3, r4, r5, r6, r7, lr} - mov r2, #1 - add r5, r0, #0 - lsl r2, r2, #8 - add r3, r5, r2 - ldr r2, _0221D2EC ; =0x0000328C - mul r2, r1 - add r1, r3, r2 - str r1, [sp] - bl ov63_0221C6FC - ldr r1, [sp] - add r0, r5, #0 - bl ov63_0221CA1C - ldr r4, _0221D2F0 ; =ov63_0221FF68 - mov r7, #0 - add r6, r5, #0 -_0221D264: - add r0, r5, #0 - add r1, r5, #0 - add r0, #0x9c - add r1, #0xa0 - ldr r0, [r0] - ldr r1, [r1] - add r2, r4, #0 - bl SpriteRenderer_LoadResourcesAndCreateSprite - add r1, r6, #0 - add r1, #0xa4 - add r7, r7, #1 - str r0, [r1] - add r4, #0x34 - add r6, r6, #4 - cmp r7, #5 - bls _0221D264 - ldr r1, [sp] - add r0, r5, #0 - mov r2, #2 - mov r3, #0 - bl ov63_0221C8E8 - ldr r1, [sp] - add r0, r5, #0 - mov r2, #0 - mov r3, #2 - bl ov63_0221C8E8 - ldr r1, [sp] - add r0, r5, #0 - mov r2, #4 - bl ov63_0221CB94 - ldr r0, [sp] - ldrh r1, [r0, #0xc] - ldr r0, _0221D2F4 ; =0x0000FF9E - add r0, r1, r0 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - cmp r0, #1 - bhi _0221D2CC - add r0, r5, #0 - mov r1, #4 - mov r2, #2 - bl ov63_0221C16C - add r0, r5, #0 - mov r1, #5 - mov r2, #2 - bl ov63_0221C16C -_0221D2CC: - add r0, r5, #0 - mov r1, #1 - mov r2, #0 - bl ov63_0221C954 - add r0, r5, #0 - mov r1, #3 - mov r2, #0 - bl ov63_0221C954 - add r0, r5, #0 - mov r1, #5 - mov r2, #0 - bl ov63_0221C954 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_0221D2EC: .word 0x0000328C -_0221D2F0: .word ov63_0221FF68 -_0221D2F4: .word 0x0000FF9E - thumb_func_end ov63_0221D240 - - thumb_func_start ov63_0221D2F8 -ov63_0221D2F8: ; 0x0221D2F8 - push {r4, lr} - add r4, r0, #0 - ldrb r0, [r1, #5] - cmp r0, #0 - beq _0221D322 - add r0, r4, #0 - add r0, #0xb4 - mov r1, #0x1f - mvn r1, r1 - ldr r0, [r0] - add r2, r1, #0 - bl UnkImageStruct_AddSpritePositionXY - add r4, #0xb8 - mov r1, #0x1f - mvn r1, r1 - ldr r0, [r4] - add r2, r1, #0 - bl UnkImageStruct_AddSpritePositionXY - pop {r4, pc} -_0221D322: - add r0, r4, #0 - add r0, #0xb4 - mov r1, #0xf - mvn r1, r1 - ldr r0, [r0] - add r2, r1, #0 - bl UnkImageStruct_AddSpritePositionXY - add r4, #0xb8 - mov r1, #0xf - mvn r1, r1 - ldr r0, [r4] - add r2, r1, #0 - bl UnkImageStruct_AddSpritePositionXY - pop {r4, pc} - .balign 4, 0 - thumb_func_end ov63_0221D2F8 - - thumb_func_start ov63_0221D344 -ov63_0221D344: ; 0x0221D344 - push {r3, r4, r5, lr} - ldr r1, _0221D54C ; =0x00013056 - add r5, r0, #0 - mov r2, #1 - lsl r2, r2, #8 - add r3, r5, r2 - ldrh r1, [r5, r1] - ldr r2, _0221D550 ; =0x0000328C - mul r2, r1 - add r4, r3, r2 - bl ov63_0221D20C - ldr r0, [r5, #0x10] - mov r1, #0 - bl BgClearTilemapBufferAndCommit - mov r1, #0 - ldr r0, [r5, #0x10] - add r2, r1, #0 - add r3, r1, #0 - bl ScheduleSetBgPosText - mov r1, #0 - ldr r0, [r5, #0x10] - mov r2, #3 - add r3, r1, #0 - bl ScheduleSetBgPosText - ldr r0, _0221D54C ; =0x00013056 - mov r1, #1 - ldrh r0, [r5, r0] - tst r0, r1 - ldr r0, [r5, #0x10] - bne _0221D44E - mov r2, #0 - add r3, r2, #0 - bl ScheduleSetBgPosText - ldr r0, [r5, #0x10] - mov r1, #1 - mov r2, #3 - mov r3, #0 - bl ScheduleSetBgPosText - mov r2, #0 - ldr r0, [r5, #0x10] - mov r1, #2 - add r3, r2, #0 - bl ScheduleSetBgPosText - ldr r0, [r5, #0x10] - mov r1, #2 - mov r2, #3 - mov r3, #0 - bl ScheduleSetBgPosText - mov r2, #0 - ldr r0, [r5, #0x10] - mov r1, #3 - add r3, r2, #0 - bl ScheduleSetBgPosText - mov r1, #3 - ldr r0, [r5, #0x10] - add r2, r1, #0 - mov r3, #0 - bl ScheduleSetBgPosText - add r0, r5, #0 - add r0, #0xa4 - mov r1, #1 - mov r2, #0x27 - ldr r0, [r0] - lsl r1, r1, #8 - mvn r2, r2 - bl UnkImageStruct_SetSpritePositionXY - add r0, r5, #0 - add r0, #0xa8 - mov r1, #0x4a - mov r2, #0x4f - ldr r0, [r0] - lsl r1, r1, #2 - mvn r2, r2 - bl UnkImageStruct_SetSpritePositionXY - ldrb r2, [r4, #0x13] - add r0, r5, #0 - add r0, #0xac - add r2, #0x98 - mov r1, #0x12 - lsl r2, r2, #0x10 - ldr r0, [r0] - lsl r1, r1, #4 - asr r2, r2, #0x10 - bl UnkImageStruct_SetSpritePositionXY - ldrb r2, [r4, #0x13] - add r0, r5, #0 - add r0, #0xb0 - add r2, #0x98 - mov r1, #0x4a - lsl r2, r2, #0x10 - ldr r0, [r0] - lsl r1, r1, #2 - asr r2, r2, #0x10 - bl UnkImageStruct_SetSpritePositionXY - add r0, r5, #0 - mov r1, #0x51 - add r0, #0xb4 - mvn r1, r1 - add r2, r1, #0 - ldr r0, [r0] - add r2, #0x50 - bl UnkImageStruct_SetSpritePositionXY - add r0, r5, #0 - mov r1, #0x58 - add r0, #0xb8 - mvn r1, r1 - add r2, r1, #0 - ldr r0, [r0] - add r2, #0x56 - bl UnkImageStruct_SetSpritePositionXY - ldr r1, _0221D54C ; =0x00013056 - add r0, r5, #0 - ldrh r1, [r5, r1] - mov r2, #1 - bl ov63_0221CE94 - b _0221D512 -_0221D44E: - mov r2, #0 - add r3, r2, #0 - bl ScheduleSetBgPosText - mov r2, #3 - add r3, r2, #0 - ldr r0, [r5, #0x10] - mov r1, #1 - add r3, #0xfd - bl ScheduleSetBgPosText - mov r2, #0 - add r3, r2, #0 - ldr r0, [r5, #0x10] - mov r1, #2 - sub r3, #0xb8 - bl ScheduleSetBgPosText - ldr r0, [r5, #0x10] - mov r1, #2 - mov r2, #3 - mov r3, #0 - bl ScheduleSetBgPosText - mov r1, #3 - add r3, r1, #0 - ldr r0, [r5, #0x10] - mov r2, #0 - add r3, #0xfd - bl ScheduleSetBgPosText - mov r1, #3 - ldr r0, [r5, #0x10] - add r2, r1, #0 - mov r3, #0 - bl ScheduleSetBgPosText - add r0, r5, #0 - add r0, #0xa4 - mov r1, #0 - add r2, r1, #0 - ldr r0, [r0] - sub r2, #0x28 - bl UnkImageStruct_SetSpritePositionXY - add r0, r5, #0 - mov r1, #0x27 - add r0, #0xa8 - mvn r1, r1 - add r2, r1, #0 - ldr r0, [r0] - sub r2, #0x28 - bl UnkImageStruct_SetSpritePositionXY - ldrb r2, [r4, #0x13] - add r0, r5, #0 - add r0, #0xac - add r2, #0x98 - mov r1, #0x4f - lsl r2, r2, #0x10 - ldr r0, [r0] - mvn r1, r1 - asr r2, r2, #0x10 - bl UnkImageStruct_SetSpritePositionXY - ldrb r2, [r4, #0x13] - add r0, r5, #0 - add r0, #0xb0 - add r2, #0x98 - mov r1, #0x5b - lsl r2, r2, #0x10 - ldr r0, [r0] - mvn r1, r1 - asr r2, r2, #0x10 - bl UnkImageStruct_SetSpritePositionXY - add r0, r5, #0 - add r0, #0xb4 - mov r2, #1 - ldr r0, [r0] - ldr r1, _0221D554 ; =0x00000152 - mvn r2, r2 - bl UnkImageStruct_SetSpritePositionXY - add r0, r5, #0 - add r0, #0xb8 - mov r2, #2 - ldr r0, [r0] - ldr r1, _0221D558 ; =0x00000159 - mvn r2, r2 - bl UnkImageStruct_SetSpritePositionXY - ldr r1, _0221D54C ; =0x00013056 - add r0, r5, #0 - ldrh r1, [r5, r1] - mov r2, #4 - bl ov63_0221CE94 -_0221D512: - add r0, r5, #0 - add r0, #0xa4 - ldr r0, [r0] - mov r1, #2 - bl sub_0200DF98 - add r0, r5, #0 - add r0, #0xa8 - ldr r0, [r0] - mov r1, #2 - bl sub_0200DF98 - add r0, r5, #0 - add r0, #0xa8 - mov r1, #0xff - lsl r1, r1, #0x16 - ldr r0, [r0] - add r2, r1, #0 - bl sub_0200E024 - add r0, r5, #0 - add r1, r4, #0 - bl ov63_0221D2F8 - ldr r0, [r5, #0x10] - mov r1, #0 - bl ScheduleBgTilemapBufferTransfer - pop {r3, r4, r5, pc} - .balign 4, 0 -_0221D54C: .word 0x00013056 -_0221D550: .word 0x0000328C -_0221D554: .word 0x00000152 -_0221D558: .word 0x00000159 - thumb_func_end ov63_0221D344 + .extern ov63_0221CE94 + .extern ov63_0221D20C + .extern ov63_0221D2F8 thumb_func_start RegisterHallOfFame_ShowMon_LeftSide RegisterHallOfFame_ShowMon_LeftSide: ; 0x0221D55C @@ -5559,6 +4751,7 @@ ov63_0221FF58: ; 0x0221FF58 .byte 0x80, 0x00, 0x64, 0x00, 0x80, 0x00, 0x78, 0x00 .byte 0x00, 0x00, 0x80, 0x3F, 0xCD, 0xCC, 0x4C, 0x3F + .public ov63_0221FF68 ov63_0221FF68: ; 0x0221FF68 .byte 0x00, 0x02, 0xE0, 0x01, 0x00, 0x00, 0x00, 0x00 .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xD8, 0xD8, 0x00, 0x00 diff --git a/include/unk_0200CF18.h b/include/unk_0200CF18.h index 05d91d221..f52323782 100644 --- a/include/unk_0200CF18.h +++ b/include/unk_0200CF18.h @@ -109,8 +109,8 @@ BOOL SpriteRenderer_LoadCellResObjFromNarcId(SpriteRenderer* renderer, SpriteGfx BOOL SpriteRenderer_LoadCellResObjFromOpenNarc(SpriteRenderer* renderer, SpriteGfxHandler* gfxHandler, NARC* narc, int fileId, BOOL compressed, int resId); BOOL SpriteRenderer_LoadAnimResObjFromNarcId(SpriteRenderer* renderer, SpriteGfxHandler* gfxHandler, NarcId narcId, int fileId, BOOL compressed, int resId); BOOL SpriteRenderer_LoadAnimResObjFromOpenNarc(SpriteRenderer* renderer, SpriteGfxHandler* gfxHandler, NARC* narc, int fileId, BOOL compressed, int resId); -UnkImageStruct* SpriteRenderer_LoadResourcesAndCreateSprite(SpriteRenderer* renderer, SpriteGfxHandler* gfxHandler, UnkTemplate_0200D748* unkTemplate); -UnkImageStruct* SpriteRenderer_LoadResourcesAndCreateSprite_CustomBottomScreenOffset(SpriteRenderer* renderer, SpriteGfxHandler* gfxHandler, UnkTemplate_0200D748* unkTemplate, fx32 yOffset); +UnkImageStruct* SpriteRenderer_LoadResourcesAndCreateSprite(SpriteRenderer* renderer, SpriteGfxHandler* gfxHandler, const UnkTemplate_0200D748* unkTemplate); +UnkImageStruct* SpriteRenderer_LoadResourcesAndCreateSprite_CustomBottomScreenOffset(SpriteRenderer* renderer, SpriteGfxHandler* gfxHandler, const UnkTemplate_0200D748* unkTemplate, fx32 yOffset); NNSG2dImagePaletteProxy* sub_0200D934(SpriteGfxHandler* gfxHandler, int id); int sub_0200D944(SpriteGfxHandler* gfxHandler, int id, int vram); BOOL SpriteGfxHandler_UnloadCharObjById(SpriteGfxHandler* gfxHandler, u32 character); diff --git a/src/register_hall_of_fame.c b/src/register_hall_of_fame.c index f54ec4fa2..ce4913be1 100644 --- a/src/register_hall_of_fame.c +++ b/src/register_hall_of_fame.c @@ -42,10 +42,13 @@ typedef struct RegisterHofMon { u8 unk_0005; u8 filler_0006[0x6]; u16 unk_000C; - u8 filler_000E[0x2]; + u16 unk_000E; u8 unk_0010; u8 unk_0011; - u8 filler_0012[0x5A]; + u8 unk_0012; + u8 unk_0013; + u32 unk_0014; + u8 filler_0018[0x54]; u16 unk_006C[3200]; u16 unk_196C[3200]; u16 unk_326C[16]; @@ -143,6 +146,11 @@ void ov63_0221CA1C(RegisterHallOfFameData *data, RegisterHofMon *mon); void ov63_0221CB48(RegisterHallOfFameData *data); void ov63_0221CB94(RegisterHallOfFameData *data, RegisterHofMon *hofMon, int a2); void ov63_0221CC78(RegisterHallOfFameData *data); +void ov63_0221CE94(RegisterHallOfFameData *data, u16 a1, int a2); +void ov63_0221D20C(RegisterHallOfFameData *data, int a1); +void ov63_0221D21C(RegisterHallOfFameData *data); +void ov63_0221D240(RegisterHallOfFameData *data, int a1); +void ov63_0221D2F8(RegisterHallOfFameData *data, RegisterHofMon *mon); void ov63_0221CD40(RegisterHallOfFameData *data); void ov63_0221CD68(RegisterHallOfFameData *data); void ov63_0221CDF8(RegisterHallOfFameData *data); @@ -152,6 +160,7 @@ void ov63_0221D344(RegisterHallOfFameData *data); BOOL RegisterHallOfFame_ShowMon_LeftSide(RegisterHallOfFameData *data); BOOL RegisterHallOfFame_ShowMon_RightSide(RegisterHallOfFameData *data); void ov63_0221E114(RegisterHallOfFameData *data); +int ov63_0221E310(RegisterHallOfFameData *data, Pokemon *pokemon, PlayerProfile *profile); int ov63_0221E404(u16 a0, u8 a1, u8 a2); void ov63_0221E450(RegisterHallOfFameData *data, int a1, int a2, int a3, int a4); BOOL ov63_0221E5A0(RegisterHallOfFameData *data); @@ -181,6 +190,7 @@ extern const u16 ov63_0221FC98[16]; extern RegisterHallOfFameScene (*const sSceneFuncs[])(RegisterHallOfFameData *data); // 0221FD18 extern const GraphicsBanks ov63_0221FD58; extern const WindowTemplate ov63_0221FD80[7]; +extern const UnkTemplate_0200D748 ov63_0221FF68[6]; BOOL RegisterHallOfFame_Init(OVY_MANAGER *man, int *state) { Main_SetVBlankIntrCB(NULL, NULL); @@ -785,3 +795,167 @@ void ov63_0221CE7C(RegisterHallOfFameData *data) { RemoveWindow(&data->unk_00014[i]); } } + +void ov63_0221CE94(RegisterHallOfFameData *data, u16 a1, int a2) { + Window *windows = &data->unk_00014[a2]; + RegisterHofMon *hofMon = &data->unk_00100[a1]; + Pokemon *mon = hofMon->mon; + BoxPokemon *boxmon = Mon_GetBoxMon(mon); + + FillWindowPixelBuffer(&windows[0], 0); + ReadMsgDataIntoString(data->msgData, msg_0180_00004, data->unk_0008C); + BufferBoxMonNickname(data->msgFormat, 0, boxmon); + StringExpandPlaceholders(data->msgFormat, data->unk_00090, data->unk_0008C); + AddTextPrinterParameterizedWithColor(&windows[0], 0, data->unk_00090, 2, 0, TEXT_SPEED_NOTRANSFER, MAKE_TEXT_COLOR(15, 2, 0), NULL); + CopyWindowPixelsToVram_TextMode(&windows[0]); + + FillWindowPixelBuffer(&windows[1], 0); + if (hofMon->unk_0011 == 2 || hofMon->unk_0012 == 0) { + ReadMsgDataIntoString(data->msgData, msg_0180_00003, data->unk_0008C); + } else if (hofMon->unk_0011 == 0) { + ReadMsgDataIntoString(data->msgData, msg_0180_00001, data->unk_0008C); + } else if (hofMon->unk_0011 == 1) { + ReadMsgDataIntoString(data->msgData, msg_0180_00002, data->unk_0008C); + } else { + ReadMsgDataIntoString(data->msgData, msg_0180_00003, data->unk_0008C); + } + BufferBoxMonSpeciesName(data->msgFormat, 0, boxmon); + StringExpandPlaceholders(data->msgFormat, data->unk_00090, data->unk_0008C); + AddTextPrinterParameterizedWithColor(&windows[1], 0, data->unk_00090, 2, 0, TEXT_SPEED_NOTRANSFER, MAKE_TEXT_COLOR(15, 2, 0), NULL); + + ReadMsgDataIntoString(data->msgData, msg_0180_00005, data->unk_0008C); + BufferIntegerAsString(data->msgFormat, 0, hofMon->unk_000E, 3, PRINTING_MODE_LEFT_ALIGN, TRUE); + StringExpandPlaceholders(data->msgFormat, data->unk_00090, data->unk_0008C); + AddTextPrinterParameterizedWithColor(&windows[1], 0, data->unk_00090, 2, 16, TEXT_SPEED_NOTRANSFER, MAKE_TEXT_COLOR(15, 2, 0), NULL); + CopyWindowPixelsToVram_TextMode(&windows[1]); + + FillWindowPixelBuffer(&windows[2], 0); + ReadMsgDataIntoString(data->msgData, msg_0180_00006, data->unk_0008C); + BufferBoxMonOTName(data->msgFormat, 0, boxmon); + StringExpandPlaceholders(data->msgFormat, data->unk_00090, data->unk_0008C); + AddTextPrinterParameterizedWithColor(&windows[2], 0, data->unk_00090, 2, 0, TEXT_SPEED_NOTRANSFER, MAKE_TEXT_COLOR(15, 2, 0), NULL); + + switch (ov63_0221E310(data, mon, data->args->profile)) { + case 0: + ReadMsgDataIntoString(data->msgData, msg_0180_00007, data->unk_0008C); + BufferLandmarkName(data->msgFormat, 0, hofMon->unk_0014); + StringExpandPlaceholders(data->msgFormat, data->unk_00090, data->unk_0008C); + break; + case 1: + ReadMsgDataIntoString(data->msgData, msg_0180_00008, data->unk_0008C); + BufferLandmarkName(data->msgFormat, 0, hofMon->unk_0014); + StringExpandPlaceholders(data->msgFormat, data->unk_00090, data->unk_0008C); + break; + case 2: + ReadMsgDataIntoString(data->msgData, msg_0180_00009, data->unk_00090); + break; + case 3: + ReadMsgDataIntoString(data->msgData, msg_0180_00010, data->unk_00090); + break; + case 4: + ReadMsgDataIntoString(data->msgData, msg_0180_00011, data->unk_00090); + break; + case 5: + ReadMsgDataIntoString(data->msgData, msg_0180_00014, data->unk_00090); + break; + case 6: + ReadMsgDataIntoString(data->msgData, msg_0180_00012, data->unk_00090); + break; + case 7: + ReadMsgDataIntoString(data->msgData, msg_0180_00013, data->unk_00090); + break; + case 8: + case 9: + ReadMsgDataIntoString(data->msgData, msg_0180_00015, data->unk_0008C); + BufferLandmarkName(data->msgFormat, 0, hofMon->unk_0014); + StringExpandPlaceholders(data->msgFormat, data->unk_00090, data->unk_0008C); + break; + } + AddTextPrinterParameterizedWithColor(&windows[2], 0, data->unk_00090, 2, 24, TEXT_SPEED_NOTRANSFER, MAKE_TEXT_COLOR(15, 2, 0), NULL); + CopyWindowPixelsToVram_TextMode(&windows[2]); +} + +void ov63_0221D20C(RegisterHallOfFameData *data, int a1) { + ov63_0221D240(data, a1); + GfGfx_EngineATogglePlanes(GX_PLANEMASK_OBJ, GF_PLANE_TOGGLE_ON); +} + +void ov63_0221D21C(RegisterHallOfFameData *data) { + for (u32 i = 0; i < 15u; ++i) { + ov63_0221C134(data, i); + } + ov63_0221CB48(data); + ov63_0221C85C(data); +} + +void ov63_0221D240(RegisterHallOfFameData *data, int a1) { + RegisterHofMon *hofMon = &data->unk_00100[a1]; + ov63_0221C6FC(data); + ov63_0221CA1C(data, hofMon); + for (int i = 0; i <= 5u; ++i) { + data->unk_000A4[i] = SpriteRenderer_LoadResourcesAndCreateSprite(data->spriteRenderer, data->spriteGfxHandler, &ov63_0221FF68[i]); + } + ov63_0221C8E8(data, hofMon, 2, 0); + ov63_0221C8E8(data, hofMon, 0, 2); + ov63_0221CB94(data, hofMon, 4); + if (hofMon->unk_000C == 98 || hofMon->unk_000C == 99) { + ov63_0221C16C(data, 4, 2); + ov63_0221C16C(data, 5, 2); + } + ov63_0221C954(data, 1, 0); + ov63_0221C954(data, 3, 0); + ov63_0221C954(data, 5, 0); +} + +void ov63_0221D2F8(RegisterHallOfFameData *data, RegisterHofMon *mon) { + if (mon->unk_0005) { + UnkImageStruct_AddSpritePositionXY(data->unk_000A4[4], -32, -32); + UnkImageStruct_AddSpritePositionXY(data->unk_000A4[5], -32, -32); + } else { + UnkImageStruct_AddSpritePositionXY(data->unk_000A4[4], -16, -16); + UnkImageStruct_AddSpritePositionXY(data->unk_000A4[5], -16, -16); + } +} + +void ov63_0221D344(RegisterHallOfFameData *data) { + RegisterHofMon *hofMon = &data->unk_00100[data->unk_13056]; + + ov63_0221D20C(data, data->unk_13056); + BgClearTilemapBufferAndCommit(data->bgConfig, GF_BG_LYR_MAIN_0); + ScheduleSetBgPosText(data->bgConfig, GF_BG_LYR_MAIN_0, BG_POS_OP_SET_X, 0); + ScheduleSetBgPosText(data->bgConfig, GF_BG_LYR_MAIN_0, BG_POS_OP_SET_Y, 0); + if ((data->unk_13056 & 1) == 0) { + ScheduleSetBgPosText(data->bgConfig, GF_BG_LYR_MAIN_1, BG_POS_OP_SET_X, 0); + ScheduleSetBgPosText(data->bgConfig, GF_BG_LYR_MAIN_1, BG_POS_OP_SET_Y, 0); + ScheduleSetBgPosText(data->bgConfig, GF_BG_LYR_MAIN_2, BG_POS_OP_SET_X, 0); + ScheduleSetBgPosText(data->bgConfig, GF_BG_LYR_MAIN_2, BG_POS_OP_SET_Y, 0); + ScheduleSetBgPosText(data->bgConfig, GF_BG_LYR_MAIN_3, BG_POS_OP_SET_X, 0); + ScheduleSetBgPosText(data->bgConfig, GF_BG_LYR_MAIN_3, BG_POS_OP_SET_Y, 0); + UnkImageStruct_SetSpritePositionXY(data->unk_000A4[0], 256, -40); + UnkImageStruct_SetSpritePositionXY(data->unk_000A4[1], 296, -80); + UnkImageStruct_SetSpritePositionXY(data->unk_000A4[2], 288, 152 + hofMon->unk_0013); + UnkImageStruct_SetSpritePositionXY(data->unk_000A4[3], 296, 152 + hofMon->unk_0013); + UnkImageStruct_SetSpritePositionXY(data->unk_000A4[4], -82, -2); + UnkImageStruct_SetSpritePositionXY(data->unk_000A4[5], -89, -3); + ov63_0221CE94(data, data->unk_13056, 1); + } else { + ScheduleSetBgPosText(data->bgConfig, GF_BG_LYR_MAIN_1, BG_POS_OP_SET_X, 0); + ScheduleSetBgPosText(data->bgConfig, GF_BG_LYR_MAIN_1, BG_POS_OP_SET_Y, 256); + ScheduleSetBgPosText(data->bgConfig, GF_BG_LYR_MAIN_2, BG_POS_OP_SET_X, -184); + ScheduleSetBgPosText(data->bgConfig, GF_BG_LYR_MAIN_2, BG_POS_OP_SET_Y, 0); + ScheduleSetBgPosText(data->bgConfig, GF_BG_LYR_MAIN_3, BG_POS_OP_SET_X, 256); + ScheduleSetBgPosText(data->bgConfig, GF_BG_LYR_MAIN_3, BG_POS_OP_SET_Y, 0); + UnkImageStruct_SetSpritePositionXY(data->unk_000A4[0], 0, -40); + UnkImageStruct_SetSpritePositionXY(data->unk_000A4[1], -40, -80); + UnkImageStruct_SetSpritePositionXY(data->unk_000A4[2], -80, 152 + hofMon->unk_0013); + UnkImageStruct_SetSpritePositionXY(data->unk_000A4[3], -92, 152 + hofMon->unk_0013); + UnkImageStruct_SetSpritePositionXY(data->unk_000A4[4], 338, -2); + UnkImageStruct_SetSpritePositionXY(data->unk_000A4[5], 345, -3); + ov63_0221CE94(data, data->unk_13056, 4); + } + sub_0200DF98(data->unk_000A4[0], 2); + sub_0200DF98(data->unk_000A4[1], 2); + sub_0200E024(data->unk_000A4[1], 1.5, 1.5); + ov63_0221D2F8(data, hofMon); + ScheduleBgTilemapBufferTransfer(data->bgConfig, GF_BG_LYR_MAIN_0); +} diff --git a/src/unk_0200CF18.c b/src/unk_0200CF18.c index 20aaa329d..10474b8c6 100644 --- a/src/unk_0200CF18.c +++ b/src/unk_0200CF18.c @@ -19,7 +19,7 @@ static void DeinitSpriteRenderer(SpriteRenderer* renderer); static void MyRemoveSpriteGfxHandler(SpriteRenderer* renderer, SpriteGfxHandler* gfxHandler); static BOOL sub_0200D124(SpriteRenderer* renderer, SpriteGfxHandler* gfxHandler, const u16* a2, int a3, int a4); static Sprite* MyCreateSprite(SpriteRenderer* renderer, SpriteGfxHandler* gfxHandler, int a2, s16 x, s16 y, s16 z, u16 animSeqNo, int rotation, int a8, NNS_G2D_VRAM_TYPE whichScreen, int a10, int a11, int a12, int a13); -static UnkImageStruct* MyLoadResourcesAndCreateSprite(SpriteRenderer* renderer, SpriteGfxHandler* gfxHandler, UnkTemplate_0200D748* unkTemplate, fx32 yOffset); +static UnkImageStruct* MyLoadResourcesAndCreateSprite(SpriteRenderer* renderer, SpriteGfxHandler* gfxHandler, const UnkTemplate_0200D748* unkTemplate, fx32 yOffset); static BOOL MyLoadCellOrAnim_NarcId(SpriteRenderer* renderer, SpriteGfxHandler* gfxHandler, NarcId narcId, int fileId, BOOL compressed, GfGfxResType a6, int resId); static BOOL MyLoadCellOrAnim_OpenNarc(SpriteRenderer* renderer, SpriteGfxHandler* gfxHandler, NARC* narc, int fileId, BOOL compressed, GfGfxResType a6, int resId); static BOOL MyInsertResObjIntoList(GF_2DGfxResObjList* list, GF_2DGfxResObj* obj); @@ -396,15 +396,15 @@ BOOL SpriteRenderer_LoadAnimResObjFromOpenNarc(SpriteRenderer* renderer, SpriteG return MyLoadCellOrAnim_OpenNarc(renderer, gfxHandler, narc, fileId, compressed, GF_GFX_RES_TYPE_ANIM, resId); } -UnkImageStruct* SpriteRenderer_LoadResourcesAndCreateSprite(SpriteRenderer* renderer, SpriteGfxHandler* gfxHandler, UnkTemplate_0200D748* template) { +UnkImageStruct* SpriteRenderer_LoadResourcesAndCreateSprite(SpriteRenderer* renderer, SpriteGfxHandler* gfxHandler, const UnkTemplate_0200D748* template) { return MyLoadResourcesAndCreateSprite(renderer, gfxHandler, template, FX32_CONST(GX_LCD_SIZE_Y)); } -UnkImageStruct* SpriteRenderer_LoadResourcesAndCreateSprite_CustomBottomScreenOffset(SpriteRenderer* renderer, SpriteGfxHandler* gfxHandler, UnkTemplate_0200D748* template, fx32 yOffset) { +UnkImageStruct* SpriteRenderer_LoadResourcesAndCreateSprite_CustomBottomScreenOffset(SpriteRenderer* renderer, SpriteGfxHandler* gfxHandler, const UnkTemplate_0200D748* template, fx32 yOffset) { return MyLoadResourcesAndCreateSprite(renderer, gfxHandler, template, yOffset); } -static UnkImageStruct* MyLoadResourcesAndCreateSprite(SpriteRenderer* renderer, SpriteGfxHandler* gfxHandler, UnkTemplate_0200D748* unkTemplate, fx32 yOffset) { +static UnkImageStruct* MyLoadResourcesAndCreateSprite(SpriteRenderer* renderer, SpriteGfxHandler* gfxHandler, const UnkTemplate_0200D748* unkTemplate, fx32 yOffset) { int i; int paletteOffset; UnkImageStruct* ret = AllocFromHeap(renderer->heapId, sizeof(UnkImageStruct));