summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/mevent_8145654.s398
-rw-r--r--data/data_8466FB8.s5
-rw-r--r--include/pokemon_icon.h2
-rw-r--r--src/mevent_8145654.c111
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);
+ }
+}
+ */