diff options
-rw-r--r-- | asm/mevent_8145654.s | 398 | ||||
-rw-r--r-- | data/data_8466FB8.s | 5 | ||||
-rw-r--r-- | include/pokemon_icon.h | 2 | ||||
-rw-r--r-- | src/mevent_8145654.c | 111 |
4 files changed, 100 insertions, 416 deletions
diff --git a/asm/mevent_8145654.s b/asm/mevent_8145654.s index 45465afb9..d561f2766 100644 --- a/asm/mevent_8145654.s +++ b/asm/mevent_8145654.s @@ -5,404 +5,6 @@ .text - thumb_func_start sub_8145D18 -sub_8145D18: @ 8145D18 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - lsls r0, 24 - lsrs r4, r0, 24 - mov r8, r4 - movs r0, 0 - str r0, [sp, 0xC] - ldr r7, =gUnknown_203F3C8 - ldr r0, [r7] - lsls r1, r4, 1 - movs r2, 0xBB - lsls r2, 1 - adds r0, r2 - adds r0, r1 - ldrh r0, [r0] - lsls r6, r0, 24 - lsrs r5, r6, 24 - adds r0, r5, 0 - bl PutWindowTilemap - adds r0, r5, 0 - movs r1, 0 - bl FillWindowPixelBuffer - cmp r4, 0x1 - beq _08145E40 - cmp r4, 0x1 - bgt _08145D64 - cmp r4, 0 - beq _08145D70 - mov r9, r6 - b _08146038 - .pool -_08145D64: - mov r0, r8 - cmp r0, 0x2 - bne _08145D6C - b _08145EA4 -_08145D6C: - mov r9, r6 - b _08146038 -_08145D70: - ldr r2, [r7] - movs r1, 0xB8 - lsls r1, 1 - mov r10, r1 - adds r0, r2, r1 - ldr r0, [r0] - ldrb r0, [r0] - lsls r0, 28 - lsrs r0, 28 - lsls r1, r0, 1 - adds r1, r0 - ldr r0, =gUnknown_8467068 - mov r8, r0 - add r1, r8 - str r1, [sp] - ldr r1, [sp, 0xC] - str r1, [sp, 0x4] - ldr r0, =0x0000018b - adds r2, r0 - str r2, [sp, 0x8] - adds r0, r5, 0 - movs r1, 0x3 - movs r2, 0 - movs r3, 0x1 - bl box_print - ldr r4, [r7] - movs r1, 0xDA - lsls r1, 1 - mov r9, r1 - add r4, r9 - movs r0, 0x3 - movs r1, 0x2 - bl GetFontAttribute - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - movs r0, 0x3 - adds r1, r4, 0 - bl GetStringWidth - movs r1, 0xA0 - subs r1, r0 - cmp r1, 0 - bge _08145DCE - movs r1, 0 -_08145DCE: - lsls r2, r1, 24 - lsrs r2, 24 - ldr r3, [r7] - mov r1, r10 - adds r0, r3, r1 - ldr r0, [r0] - ldrb r1, [r0] - lsls r1, 28 - lsrs r1, 28 - lsls r0, r1, 1 - adds r0, r1 - add r0, r8 - str r0, [sp] - ldr r0, [sp, 0xC] - str r0, [sp, 0x4] - add r3, r9 - str r3, [sp, 0x8] - adds r0, r5, 0 - movs r1, 0x3 - movs r3, 0x11 - bl box_print - ldr r2, [r7] - ldr r0, [r2, 0x4] - mov r9, r6 - cmp r0, 0 - bne _08145E06 - b _08146038 -_08145E06: - mov r1, r10 - adds r0, r2, r1 - ldr r0, [r0] - ldrb r1, [r0] - lsls r1, 28 - lsrs r1, 28 - lsls r0, r1, 1 - adds r0, r1 - add r0, r8 - str r0, [sp] - ldr r0, [sp, 0xC] - str r0, [sp, 0x4] - ldr r1, =0x000001dd - adds r0, r2, r1 - str r0, [sp, 0x8] - adds r0, r5, 0 - movs r1, 0x2 - movs r2, 0xA6 - movs r3, 0x11 - bl box_print - b _08146038 - .pool -_08145E40: - mov r9, r6 -_08145E42: - ldr r2, [sp, 0xC] - lsls r4, r2, 24 - asrs r4, 24 - lsls r3, r4, 4 - adds r3, 0x2 - lsls r3, 24 - lsrs r3, 24 - ldr r0, =gUnknown_203F3C8 - ldr r2, [r0] - movs r1, 0xB8 - lsls r1, 1 - adds r0, r2, r1 - ldr r0, [r0] - ldrb r0, [r0] - lsrs r0, 4 - lsls r1, r0, 1 - adds r1, r0 - ldr r0, =gUnknown_8467068 - adds r1, r0 - str r1, [sp] - movs r0, 0 - str r0, [sp, 0x4] - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r4 - movs r1, 0xF2 - lsls r1, 1 - adds r0, r1 - adds r2, r0 - str r2, [sp, 0x8] - mov r2, r9 - lsrs r0, r2, 24 - movs r1, 0x3 - movs r2, 0 - bl box_print - adds r4, 0x1 - lsls r4, 24 - lsrs r0, r4, 24 - str r0, [sp, 0xC] - asrs r4, 24 - cmp r4, 0x3 - ble _08145E42 - b _08146038 - .pool -_08145EA4: - ldr r4, =gUnknown_8467070 - ldr r2, [r7] - ldrb r0, [r2, 0x8] - lsls r0, 30 - lsrs r0, 30 - adds r0, r4 - ldrb r3, [r0] - movs r1, 0xB8 - lsls r1, 1 - adds r0, r2, r1 - ldr r0, [r0] - ldrb r0, [r0, 0x1] - lsls r0, 28 - lsrs r0, 28 - lsls r1, r0, 1 - adds r1, r0 - ldr r0, =gUnknown_8467068 - mov r10, r0 - add r1, r10 - str r1, [sp] - ldr r1, [sp, 0xC] - str r1, [sp, 0x4] - movs r1, 0xA2 - lsls r1, 2 - adds r0, r2, r1 - str r0, [sp, 0x8] - adds r0, r5, 0 - movs r1, 0x3 - movs r2, 0 - bl box_print - ldr r2, [r7] - ldrb r1, [r2, 0x8] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0x2 - beq _08145F38 - lsls r0, r1, 30 - lsrs r0, 30 - adds r0, r4 - ldrb r3, [r0] - adds r3, 0x10 - lsls r3, 24 - lsrs r3, 24 - movs r1, 0xB8 - lsls r1, 1 - adds r0, r2, r1 - ldr r0, [r0] - ldrb r1, [r0, 0x1] - lsls r1, 28 - lsrs r1, 28 - lsls r0, r1, 1 - adds r0, r1 - add r0, r10 - str r0, [sp] - ldr r0, [sp, 0xC] - str r0, [sp, 0x4] - ldr r1, =0x000002b1 - adds r0, r2, r1 - str r0, [sp, 0x8] - adds r0, r5, 0 - movs r1, 0x3 - movs r2, 0 - bl box_print - mov r9, r6 - b _08146038 - .pool -_08145F38: - movs r2, 0 - mov r8, r2 - lsls r0, r1, 30 - lsrs r0, 30 - adds r0, r4 - ldrb r0, [r0] - adds r4, r0, 0 - adds r4, 0x10 - movs r0, 0x3 - movs r1, 0x2 - bl GetFontAttribute - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, [r7] - ldr r1, =0x00000175 - adds r0, r1 - mov r9, r6 - ldr r1, [sp, 0xC] - ldrb r0, [r0] - cmp r1, r0 - bge _08146038 - str r5, [sp, 0x10] - lsls r0, r4, 24 - lsrs r0, 24 - str r0, [sp, 0x14] - mov r10, r2 -_08145F6E: - mov r0, r8 - lsls r2, r0, 24 - lsrs r2, 24 - ldr r3, [r7] - movs r1, 0xB8 - lsls r1, 1 - adds r0, r3, r1 - ldr r0, [r0] - ldrb r1, [r0, 0x1] - lsls r1, 28 - lsrs r1, 28 - lsls r0, r1, 1 - adds r0, r1 - ldr r1, =gUnknown_8467068 - adds r0, r1 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - ldr r1, [sp, 0xC] - lsls r0, r1, 24 - asrs r6, r0, 24 - lsls r0, r6, 1 - adds r0, r6 - lsls r5, r0, 4 - movs r0, 0xB7 - lsls r0, 2 - adds r4, r5, r0 - adds r3, r4 - adds r3, 0x1 - str r3, [sp, 0x8] - ldr r0, [sp, 0x10] - movs r1, 0x3 - ldr r3, [sp, 0x14] - bl box_print - ldr r1, [r7] - adds r0, r1, r5 - ldr r2, =0x00000306 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0xFF - beq _08146022 - adds r1, r4 - adds r1, 0x1 - movs r0, 0x3 - mov r2, r10 - bl GetStringWidth - add r8, r0 - mov r0, r8 - lsls r2, r0, 24 - lsrs r2, 24 - ldr r3, [r7] - movs r1, 0xB8 - lsls r1, 1 - adds r0, r3, r1 - ldr r0, [r0] - ldrb r1, [r0, 0x1] - lsls r1, 28 - lsrs r1, 28 - lsls r0, r1, 1 - adds r0, r1 - ldr r1, =gUnknown_8467068 - adds r0, r1 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - adds r3, r4 - adds r3, 0x2A - str r3, [sp, 0x8] - ldr r0, [sp, 0x10] - movs r1, 0x2 - ldr r3, [sp, 0x14] - bl box_print - ldr r1, [r7] - adds r1, r4 - adds r1, 0x2A - movs r0, 0x3 - mov r2, r10 - bl GetStringWidth - ldr r1, [r7] - adds r1, r5 - movs r2, 0xB7 - lsls r2, 2 - adds r1, r2 - ldrb r1, [r1] - adds r0, r1 - add r8, r0 -_08146022: - adds r1, r6, 0x1 - lsls r1, 24 - lsrs r0, r1, 24 - str r0, [sp, 0xC] - asrs r1, 24 - ldr r0, [r7] - ldr r2, =0x00000175 - adds r0, r2 - ldrb r0, [r0] - cmp r1, r0 - blt _08145F6E -_08146038: - mov r1, r9 - lsrs r0, r1, 24 - movs r1, 0x3 - bl CopyWindowToVram - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8145D18 - thumb_func_start sub_8146060 sub_8146060: @ 8146060 push {r4-r7,lr} diff --git a/data/data_8466FB8.s b/data/data_8466FB8.s index f6d8ebaff..e7b8c4fbb 100644 --- a/data/data_8466FB8.s +++ b/data/data_8466FB8.s @@ -89,7 +89,10 @@ gUnknown_8467CAC:: .incbin "data/graphics/mevent/tilemap_467CAC.bin.lz" gUnknown_8467DF4:: - .incbin "baserom.gba", 0x467DF4, 0x164 + .incbin "baserom.gba", 0x467DF4, 0x100 + +gUnknown_8467EF4:: + .incbin "baserom.gba", 0x467EF4, 0x64 gUnknown_8467F58:: @ 8467F58 .incbin "baserom.gba", 0x467F58, 0x8 diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h index 2c2edcc7c..cef408046 100644 --- a/include/pokemon_icon.h +++ b/include/pokemon_icon.h @@ -12,5 +12,7 @@ void sub_80D2FF0(u16 iconId); void sub_80D2EF8(struct Sprite *sprite); void sub_809707C(void); void FreeMonIconPalettes(void); +u16 sub_8096FD4(u16); +u8 sub_8096ECC(u16, void (*)(struct Sprite *), s16, s16, u8, bool32); #endif // GUARD_POKEMON_ICON_H diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c index d3ec2e0ce..ec1664643 100644 --- a/src/mevent_8145654.c +++ b/src/mevent_8145654.c @@ -1,4 +1,5 @@ #include "global.h" +#include "constants/species.h" #include "bg.h" #include "palette.h" #include "decompress.h" @@ -11,7 +12,10 @@ struct UnkStruct_8467FB8 { - u16 ident; + u8 textPal1:4; + u8 textPal2:4; + u8 textPal3:4; + u8 textPal4:4; const u8 * tiles; const u8 * map; const u16 * pal; @@ -27,14 +31,13 @@ struct UnkStruct_203F3C8_02DC struct UnkStruct_203F3C8 { /*0000*/ struct MEventBuffer_32E0_Sub unk_0000; - /*014c*/ struct MEventBuffer_3430_Sub unk_014c; + /*014c*/ struct MEventBuffer_3430_Sub unk_014C; /*0170*/ const struct UnkStruct_8467FB8 * unk_0170; /*0174*/ u8 unk_0174; /*0175*/ u8 unk_0175; - /*0176*/ u16 unk_0176; - /*0178*/ u16 unk_0178; - /*017A*/ u16 unk_017A; - /*017C*/ u8 filler_017C[15]; + /*0176*/ u16 unk_0176[3]; + /*017C*/ u8 unk_017C; + /*017D*/ u8 filler_017D[14]; /*018B*/ u8 unk_018B[41]; /*01B4*/ u8 unk_01B4[41]; /*01DD*/ u8 unk_01DD[7]; @@ -54,12 +57,15 @@ EWRAM_DATA struct UnkStruct_203F3C8 * gUnknown_203F3C8 = NULL; EWRAM_DATA struct UnkStruct_203F3CC * gUnknown_203F3CC = NULL; void sub_8145A98(void); -void sub_8145D18(u8 bgId); +void sub_8145D18(u8 whichWindow); void sub_8146060(void); void sub_81461D8(void); +extern const struct TextColor gUnknown_8467068[2]; +extern const u8 gUnknown_8467070[3]; extern const struct WindowTemplate gUnknown_8467074[3]; +extern const struct CompressedSpriteSheet gUnknown_8467F58; extern const struct UnkStruct_8467FB8 gUnknown_8467FB8[8]; bool32 sub_8145654(struct MEventBuffer_32E0_Sub * r5, struct MEventBuffer_3430_Sub * r6) @@ -70,7 +76,7 @@ bool32 sub_8145654(struct MEventBuffer_32E0_Sub * r5, struct MEventBuffer_3430_S if (gUnknown_203F3C8 == NULL) return FALSE; gUnknown_203F3C8->unk_0000 = *r5; - gUnknown_203F3C8->unk_014c = *r6; + gUnknown_203F3C8->unk_014C = *r6; if (gUnknown_203F3C8->unk_0000.unk_08_2 > 7) gUnknown_203F3C8->unk_0000.unk_08_2 = 0; if (gUnknown_203F3C8->unk_0000.unk_08_0 > 2) @@ -112,9 +118,9 @@ s32 sub_814571C(void) CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(2); decompress_and_copy_tile_data_to_vram(2, gUnknown_203F3C8->unk_0170->tiles, 0, 0x008, 0); - gUnknown_203F3C8->unk_0176 = AddWindow(&gUnknown_8467074[0]); - gUnknown_203F3C8->unk_0178 = AddWindow(&gUnknown_8467074[1]); - gUnknown_203F3C8->unk_017A = AddWindow(&gUnknown_8467074[2]); + gUnknown_203F3C8->unk_0176[0] = AddWindow(&gUnknown_8467074[0]); + gUnknown_203F3C8->unk_0176[1] = AddWindow(&gUnknown_8467074[1]); + gUnknown_203F3C8->unk_0176[2] = AddWindow(&gUnknown_8467074[2]); break; case 3: if (free_temp_tile_data_buffers_if_possible()) @@ -179,9 +185,9 @@ s32 sub_814593C(bool32 flag) case 3: HideBg(1); HideBg(2); - RemoveWindow(gUnknown_203F3C8->unk_017A); - RemoveWindow(gUnknown_203F3C8->unk_0178); - RemoveWindow(gUnknown_203F3C8->unk_0176); + RemoveWindow(gUnknown_203F3C8->unk_0176[2]); + RemoveWindow(gUnknown_203F3C8->unk_0176[1]); + RemoveWindow(gUnknown_203F3C8->unk_0176[0]); break; case 4: sub_81461D8(); @@ -235,9 +241,9 @@ void sub_8145A98(void) break; case 2: gUnknown_203F3C8->unk_02B1[00] = EOS; - sp0[0] = gUnknown_203F3C8->unk_014c.unk_00 < 999 ? gUnknown_203F3C8->unk_014c.unk_00 : 999; - sp0[1] = gUnknown_203F3C8->unk_014c.unk_02 < 999 ? gUnknown_203F3C8->unk_014c.unk_02 : 999; - sp0[2] = gUnknown_203F3C8->unk_014c.unk_04 < 999 ? gUnknown_203F3C8->unk_014c.unk_04 : 999; + sp0[0] = gUnknown_203F3C8->unk_014C.unk_00 < 999 ? gUnknown_203F3C8->unk_014C.unk_00 : 999; + sp0[1] = gUnknown_203F3C8->unk_014C.unk_02 < 999 ? gUnknown_203F3C8->unk_014C.unk_02 : 999; + sp0[2] = gUnknown_203F3C8->unk_014C.unk_04 < 999 ? gUnknown_203F3C8->unk_014C.unk_04 : 999; for (i = 0; i < 8; i++) { memset(gUnknown_203F3C8->unk_02DC[i].unk_42, EOS, 4); @@ -271,3 +277,74 @@ void sub_8145A98(void) } } } + +void sub_8145D18(u8 whichWindow) +{ + s8 sp0C = 0; + s32 windowId = gUnknown_203F3C8->unk_0176[whichWindow]; + PutWindowTilemap(windowId); + FillWindowPixelBuffer(windowId, 0); + switch (whichWindow) + { + case 0: + { + s32 x; + box_print(windowId, 3, 0, 1, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal1], 0, gUnknown_203F3C8->unk_018B); + x = 160 - GetStringWidth(3, gUnknown_203F3C8->unk_01B4, GetFontAttribute(3, 2)); + if (x < 0) + x = 0; + box_print(windowId, 3, x, 17, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal1], 0, gUnknown_203F3C8->unk_01B4); + if (gUnknown_203F3C8->unk_0000.unk_04 != 0) + { + box_print(windowId, 2, 166, 17, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal1], 0, gUnknown_203F3C8->unk_01DD); + } + break; + } + case 1: + for (; sp0C < 4; sp0C++) + { + box_print(windowId, 3, 0, 16 * sp0C + 2, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal2], 0, gUnknown_203F3C8->unk_01E4[sp0C]); + } + break; + case 2: + box_print(windowId, 3, 0, gUnknown_8467070[gUnknown_203F3C8->unk_0000.unk_08_0], &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal3], 0, gUnknown_203F3C8->unk_0288); + if (gUnknown_203F3C8->unk_0000.unk_08_0 != 2) + { + box_print(windowId, 3, 0, 16 + gUnknown_8467070[gUnknown_203F3C8->unk_0000.unk_08_0], &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal3], 0, gUnknown_203F3C8->unk_02B1); + } + else + { + s32 x = 0; + s32 y = gUnknown_8467070[gUnknown_203F3C8->unk_0000.unk_08_0] + 16; + s32 spacing = GetFontAttribute(3, 2); + for (; sp0C < gUnknown_203F3C8->unk_0175; sp0C++) + { + box_print(windowId, 3, x, y, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal3], 0, gUnknown_203F3C8->unk_02DC[sp0C].unk_01); + if (gUnknown_203F3C8->unk_02DC[sp0C].unk_42[0] != EOS) + { + x += GetStringWidth(3, gUnknown_203F3C8->unk_02DC[sp0C].unk_01, spacing); + box_print(windowId, 2, x, y, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal3], 0, gUnknown_203F3C8->unk_02DC[sp0C].unk_42); + x += GetStringWidth(3, gUnknown_203F3C8->unk_02DC[sp0C].unk_42, spacing) + gUnknown_203F3C8->unk_02DC[sp0C].unk_00; + } + } + } + break; + } + CopyWindowToVram(windowId, 3); +} + +/* +void sub_8146060(void) +{ + gUnknown_203F3C8->unk_017C = 0xFF; + if (gUnknown_203F3C8->unk_014C.unk_06 != SPECIES_NONE) + { + gUnknown_203F3C8->unk_017C = sub_8096ECC(sub_8096FD4(gUnknown_203F3C8->unk_014C.unk_06), SpriteCallbackDummy, 0xDC, 0x14, 0, FALSE); + gSprites[gUnknown_203F3C8->unk_017C].oam.priority = 2; + } + if (gUnknown_203F3C8->unk_0000.unk_09 != 0 && gUnknown_203F3C8->unk_0000.unk_08_0 == 1) + { + sub_800F034(gUnknown_8467F58); + } +} + */ |