summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-03-30 20:04:30 -0400
committerhuderlem <huderlem@gmail.com>2019-03-31 15:43:51 -0500
commit82a3f29b880037f1e06e26e10f53ecc0c045ec00 (patch)
tree41687ca1cdcaf7f396baed9db32f0da1d62f156e
parentaafe9df454f42c77146d76676cc477e876d6540b (diff)
through sub_8018A50
-rwxr-xr-xasm/mystery_gift.s366
-rw-r--r--src/mystery_gift.c147
2 files changed, 145 insertions, 368 deletions
diff --git a/asm/mystery_gift.s b/asm/mystery_gift.s
index 08866a85d..6f2ecd8ce 100755
--- a/asm/mystery_gift.s
+++ b/asm/mystery_gift.s
@@ -5,372 +5,6 @@
.text
- thumb_func_start sub_8018838
-sub_8018838: @ 8018838
- push {lr}
- sub sp, 0xC
- cmp r0, 0
- beq _08018846
- cmp r0, 0x1
- beq _0801885E
- b _08018876
-_08018846:
- movs r0, 0x20
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect
- b _08018876
-_0801885E:
- movs r0, 0x20
- str r0, [sp]
- movs r0, 0x1E
- str r0, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0x2
- bl FillBgTilemapBufferRect
-_08018876:
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- add sp, 0xC
- pop {r0}
- bx r0
- thumb_func_end sub_8018838
-
- thumb_func_start sub_8018884
-sub_8018884: @ 8018884
- push {r4,lr}
- sub sp, 0x14
- adds r1, r0, 0
- ldr r4, =gStringVar4
- adds r0, r4, 0
- bl StringExpandPlaceholders
- movs r0, 0x1
- movs r1, 0x11
- bl FillWindowPixelBuffer
- movs r1, 0
- str r1, [sp]
- str r1, [sp, 0x4]
- ldr r0, =gUnknown_082F0728
- str r0, [sp, 0x8]
- str r1, [sp, 0xC]
- str r4, [sp, 0x10]
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0
- movs r3, 0x1
- bl AddTextPrinterParameterized4
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0xF
- bl sub_8098858
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0x1
- movs r1, 0x3
- bl CopyWindowToVram
- add sp, 0x14
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8018884
-
- thumb_func_start sub_80188DC
-sub_80188DC: @ 80188DC
- push {lr}
- movs r0, 0x1
- bl rbox_fill_rectangle
- movs r0, 0x1
- bl ClearWindowTilemap
- movs r0, 0x1
- movs r1, 0x1
- bl CopyWindowToVram
- pop {r0}
- bx r0
- thumb_func_end sub_80188DC
-
- thumb_func_start mevent_0814257C
-mevent_0814257C: @ 80188F8
- push {r4,lr}
- sub sp, 0xC
- adds r4, r0, 0
- adds r0, r1, 0
- ldrb r2, [r4]
- cmp r2, 0x1
- beq _08018920
- cmp r2, 0x1
- bgt _08018910
- cmp r2, 0
- beq _0801891A
- b _08018980
-_08018910:
- cmp r2, 0x2
- beq _08018954
- cmp r2, 0xFF
- beq _0801897C
- b _08018980
-_0801891A:
- bl sub_8018884
- b _08018944
-_08018920:
- movs r0, 0
- str r0, [sp]
- ldr r0, =gUnknown_02022C58
- str r0, [sp, 0x4]
- adds r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0xD0
- movs r2, 0x14
- movs r3, 0x1
- bl DrawDownArrow
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- beq _08018980
-_08018944:
- ldrb r0, [r4]
- adds r0, 0x1
- b _0801897E
- .pool
-_08018954:
- movs r0, 0x1
- str r0, [sp]
- ldr r0, =gUnknown_02022C58
- str r0, [sp, 0x4]
- adds r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0xD0
- movs r2, 0x14
- movs r3, 0x1
- bl DrawDownArrow
- movs r0, 0
- strb r0, [r4]
- bl sub_80188DC
- movs r0, 0x1
- b _08018982
- .pool
-_0801897C:
- movs r0, 0x2
-_0801897E:
- strb r0, [r4]
-_08018980:
- movs r0, 0
-_08018982:
- add sp, 0xC
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end mevent_0814257C
-
- thumb_func_start sub_801898C
-sub_801898C: @ 801898C
- push {lr}
- sub sp, 0xC
- movs r0, 0
- str r0, [sp]
- ldr r0, =gUnknown_02022C58
- str r0, [sp, 0x4]
- adds r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0xD0
- movs r2, 0x14
- movs r3, 0x1
- bl DrawDownArrow
- add sp, 0xC
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_801898C
-
- thumb_func_start sub_80189B4
-sub_80189B4: @ 80189B4
- push {lr}
- sub sp, 0xC
- movs r0, 0x1
- str r0, [sp]
- ldr r0, =gUnknown_02022C58
- str r0, [sp, 0x4]
- adds r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0xD0
- movs r2, 0x14
- movs r3, 0x1
- bl DrawDownArrow
- add sp, 0xC
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80189B4
-
- thumb_func_start sub_80189DC
-sub_80189DC: @ 80189DC
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4]
- cmp r0, 0
- beq _080189EC
- cmp r0, 0x1
- beq _08018A08
- b _08018A14
-_080189EC:
- bl sub_801898C
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- beq _08018A14
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _08018A14
- .pool
-_08018A08:
- bl sub_80189B4
- movs r0, 0
- strb r0, [r4]
- movs r0, 0x1
- b _08018A16
-_08018A14:
- movs r0, 0
-_08018A16:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80189DC
-
- thumb_func_start sub_8018A1C
-sub_8018A1C: @ 8018A1C
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4]
- cmp r0, 0
- bne _08018A2C
- adds r0, r1, 0
- bl sub_8018884
-_08018A2C:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x78
- bhi _08018A3E
- movs r0, 0
- b _08018A48
-_08018A3E:
- movs r0, 0
- strb r0, [r4]
- bl sub_80188DC
- movs r0, 0x1
-_08018A48:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8018A1C
-
- thumb_func_start sub_8018A50
-sub_8018A50: @ 8018A50
- push {r4,r5,lr}
- sub sp, 0x24
- lsls r2, 24
- add r1, sp, 0x4
- ldr r0, =gUnknown_082F0638
- ldm r0!, {r3-r5}
- stm r1!, {r3-r5}
- ldm r0!, {r3-r5}
- stm r1!, {r3-r5}
- ldr r0, =gUnknown_082F05E0
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp, 0x1C]
- str r1, [sp, 0x20]
- cmp r2, 0
- bne _08018A80
- ldr r0, =gUnknown_082F0608
- b _08018A82
- .pool
-_08018A80:
- ldr r0, =gUnknown_082F0620
-_08018A82:
- str r0, [sp, 0x4]
- add r0, sp, 0x4
- bl sub_81DB41C
- adds r3, r0, 0
- movs r0, 0x1
- ands r0, r3
- cmp r0, 0
- beq _08018A96
- adds r3, 0x1
-_08018A96:
- lsls r1, r3, 24
- ldr r0, =0x00ffffff
- ldr r2, [sp, 0x1C]
- ands r2, r0
- orrs r2, r1
- str r2, [sp, 0x1C]
- cmp r3, 0x1D
- bgt _08018ACC
- movs r0, 0x1E
- subs r0, r3
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- lsls r0, 24
- lsrs r0, 16
- ldr r1, =0xffff00ff
- ands r1, r2
- orrs r1, r0
- str r1, [sp, 0x1C]
- b _08018AD2
- .pool
-_08018ACC:
- ldr r0, =0xffff00ff
- ands r2, r0
- str r2, [sp, 0x1C]
-_08018AD2:
- add r0, sp, 0x1C
- movs r1, 0xE0
- str r1, [sp]
- add r1, sp, 0x4
- movs r2, 0x1
- movs r3, 0xA
- bl DoMysteryGiftListMenu
- adds r4, r0, 0
- movs r0, 0x1
- negs r0, r0
- cmp r4, r0
- beq _08018AFA
- movs r0, 0x2
- bl ClearWindowTilemap
- movs r0, 0x2
- movs r1, 0x1
- bl CopyWindowToVram
-_08018AFA:
- adds r0, r4, 0
- add sp, 0x24
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8018A50
-
thumb_func_start sub_8018B08
sub_8018B08: @ 8018B08
push {r4-r6,lr}
diff --git a/src/mystery_gift.c b/src/mystery_gift.c
index 3fbe11378..7c686964d 100644
--- a/src/mystery_gift.c
+++ b/src/mystery_gift.c
@@ -20,12 +20,12 @@
#include "ereader_screen.h"
#include "international_string_util.h"
#include "list_menu.h"
+#include "string_util.h"
void bgid_upload_textbox_1(u8 bgId);
void task_add_00_mystery_gift(void);
-EWRAM_DATA u8 gUnknown_02022C58 = 0;
-EWRAM_DATA u8 gUnknown_02022C59 = 0;
+EWRAM_DATA u8 gUnknown_02022C58[2] = {};
const u16 gUnkTextboxBorderPal[] = INCBIN_U16("graphics/interface/unk_textbox_border.gbapal");
const u32 gUnkTextboxBorderGfx[] = INCBIN_U32("graphics/interface/unk_textbox_border.4bpp.lz");
@@ -492,3 +492,146 @@ void sub_8018798(u32 bg)
}
}
}
+
+void sub_8018838(bool32 arg)
+{
+ switch (arg)
+ {
+ case 0:
+ FillBgTilemapBufferRect(0, 0, 0, 0, 32, 32, 0x11);
+ break;
+ case 1:
+ FillBgTilemapBufferRect(0, 0, 0, 2, 32, 30, 0x11);
+ break;
+ }
+ CopyBgTilemapBufferToVram(0);
+}
+
+void sub_8018884(const u8 *str)
+{
+ StringExpandPlaceholders(gStringVar4, str);
+ FillWindowPixelBuffer(1, 0x11);
+ AddTextPrinterParameterized4(1, 1, 0, 1, 0, 0, gUnknown_082F0728, 0, gStringVar4);
+ sub_8098858(1, 0x001, 0xF);
+ PutWindowTilemap(1);
+ CopyWindowToVram(1, 3);
+}
+
+void sub_80188DC(void)
+{
+ rbox_fill_rectangle(1);
+ ClearWindowTilemap(1);
+ CopyWindowToVram(1, 1);
+}
+
+bool32 mevent_0814257C(u8 *textState, const u8 *str)
+{
+ switch (*textState)
+ {
+ case 0:
+ sub_8018884(str);
+ goto inc;
+ case 1:
+ DrawDownArrow(1, 0xD0, 0x14, 1, FALSE, &gUnknown_02022C58[0], &gUnknown_02022C58[1]);
+ if (({gMain.newKeys & (A_BUTTON | B_BUTTON);}))
+ {
+ inc:
+ (*textState)++;
+ }
+ break;
+ case 2:
+ DrawDownArrow(1, 0xD0, 0x14, 1, TRUE, &gUnknown_02022C58[0], &gUnknown_02022C58[1]);
+ *textState = 0;
+ sub_80188DC();
+ return TRUE;
+ case 0xFF:
+ *textState = 2;
+ break;
+ }
+ return FALSE;
+}
+
+void sub_801898C(void)
+{
+ DrawDownArrow(1, 0xD0, 0x14, 1, FALSE, &gUnknown_02022C58[0], &gUnknown_02022C58[1]);
+}
+
+void sub_80189B4(void)
+{
+ DrawDownArrow(1, 0xD0, 0x14, 1, TRUE, &gUnknown_02022C58[0], &gUnknown_02022C58[1]);
+}
+
+bool32 sub_80189DC(u8 * textState)
+{
+ switch (*textState)
+ {
+ case 0:
+ sub_801898C();
+ if (({gMain.newKeys & (A_BUTTON | B_BUTTON);}))
+ {
+ (*textState)++;
+ }
+ break;
+ case 1:
+ sub_80189B4();
+ *textState = 0;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool32 sub_8018A1C(u8 * counter, const u8 * str)
+{
+ if (*counter == 0)
+ {
+ sub_8018884(str);
+ }
+ if (++(*counter) > 120)
+ {
+ *counter = 0;
+ sub_80188DC();
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+s32 sub_8018A50(u32 unused0, u32 unused1, bool8 r2)
+{
+ struct ListMenuTemplate listMenuTemplate = gUnknown_082F0638;
+ struct WindowTemplate windowTemplate = gUnknown_082F05E0;
+ s32 r3;
+ s32 r4;
+
+ if (r2 == FALSE)
+ {
+ listMenuTemplate.items = gUnknown_082F0608;
+ }
+ else
+ {
+ listMenuTemplate.items = gUnknown_082F0620;
+ }
+ r3 = sub_81DB41C(&listMenuTemplate);
+ if (r3 & 1)
+ {
+ r3++;
+ }
+ windowTemplate.width = r3;
+ if (r3 < 30)
+ {
+ windowTemplate.tilemapLeft = (30 - r3) / 2;
+ }
+ else
+ {
+ windowTemplate.tilemapLeft = 0;
+ }
+ r4 = DoMysteryGiftListMenu(&windowTemplate, &listMenuTemplate, 1, 0x00A, 0xE0);
+ if (r4 != -1)
+ {
+ ClearWindowTilemap(2);
+ CopyWindowToVram(2, 1);
+ }
+ return r4;
+}