summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xasm/mystery_gift.s193
-rw-r--r--include/mevent_801BAAC.h4
-rw-r--r--include/strings.h6
-rw-r--r--src/mystery_gift.c118
4 files changed, 120 insertions, 201 deletions
diff --git a/asm/mystery_gift.s b/asm/mystery_gift.s
index 6fc9c31d5..f4a999bc1 100755
--- a/asm/mystery_gift.s
+++ b/asm/mystery_gift.s
@@ -5,199 +5,6 @@
.text
- thumb_func_start sub_8018DAC
-sub_8018DAC: @ 8018DAC
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrb r0, [r5]
- cmp r0, 0
- beq _08018DBC
- cmp r0, 0x1
- beq _08018DE4
- b _08018E00
-_08018DBC:
- cmp r1, 0
- bne _08018DD4
- bl sav1_get_mevent_buffer_1
- adds r4, r0, 0
- bl sav1_get_mevent_buffer_2
- adds r1, r0, 0
- adds r0, r4, 0
- bl sub_801BAAC
- b _08018DDC
-_08018DD4:
- bl sub_801B00C
- bl sub_801C6C8
-_08018DDC:
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- b _08018E00
-_08018DE4:
- cmp r1, 0
- bne _08018DF2
- bl sub_801BB74
-_08018DEC:
- cmp r0, 0
- bne _08018DF8
- b _08018E00
-_08018DF2:
- bl sub_801C758
- b _08018DEC
-_08018DF8:
- movs r0, 0
- strb r0, [r5]
- movs r0, 0x1
- b _08018E02
-_08018E00:
- movs r0, 0
-_08018E02:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8018DAC
-
- thumb_func_start sub_8018E08
-sub_8018E08: @ 8018E08
- push {lr}
- cmp r0, 0
- bne _08018E14
- bl sub_801B1E8
- b _08018E18
-_08018E14:
- bl sub_801B06C
-_08018E18:
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end sub_8018E08
-
- thumb_func_start sub_8018E20
-sub_8018E20: @ 8018E20
- push {lr}
- cmp r0, 0
- bne _08018E36
- adds r0, r1, 0
- bl sub_801BDA4
- cmp r0, 0
- beq _08018E40
- bl sub_801BB48
- b _08018E48
-_08018E36:
- adds r0, r1, 0
- bl sub_801CA50
- cmp r0, 0
- bne _08018E44
-_08018E40:
- movs r0, 0
- b _08018E4A
-_08018E44:
- bl sub_801C72C
-_08018E48:
- movs r0, 0x1
-_08018E4A:
- pop {r1}
- bx r1
- thumb_func_end sub_8018E20
-
- thumb_func_start sub_8018E50
-sub_8018E50: @ 8018E50
- push {lr}
- cmp r2, 0
- beq _08018E60
- ldr r3, =gText_OkayToDiscardNews
- b _08018E62
- .pool
-_08018E60:
- ldr r3, =gText_IfThrowAwayCardEventWontHappen
-_08018E62:
- movs r2, 0x1
- bl sub_8018B08
- lsls r0, 24
- asrs r0, 24
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8018E50
-
- thumb_func_start mevent_message_was_thrown_away
-mevent_message_was_thrown_away: @ 8018E74
- push {lr}
- cmp r1, 0
- beq _08018E84
- ldr r1, =gText_WonderNewsThrownAway
- b _08018E86
- .pool
-_08018E84:
- ldr r1, =gText_WonderCardThrownAway
-_08018E86:
- bl mevent_0814257C
- pop {r1}
- bx r1
- .pool
- thumb_func_end mevent_message_was_thrown_away
-
- thumb_func_start mevent_save_game
-mevent_save_game: @ 8018E94
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4]
- cmp r0, 0x4
- bhi _08018F04
- lsls r0, 2
- ldr r1, =_08018EAC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08018EAC:
- .4byte _08018EC0
- .4byte _08018ECC
- .4byte _08018ED4
- .4byte _08018EE0
- .4byte _08018EF8
-_08018EC0:
- ldr r0, =gText_DataWillBeSaved
- bl sub_8018884
- b _08018EEC
- .pool
-_08018ECC:
- movs r0, 0
- bl TrySavingData
- b _08018EEC
-_08018ED4:
- ldr r0, =gText_SaveCompletedPressA
- bl sub_8018884
- b _08018EEC
- .pool
-_08018EE0:
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- beq _08018F04
-_08018EEC:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _08018F04
- .pool
-_08018EF8:
- movs r0, 0
- strb r0, [r4]
- bl sub_80188DC
- movs r0, 0x1
- b _08018F06
-_08018F04:
- movs r0, 0
-_08018F06:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end mevent_save_game
-
thumb_func_start mevent_message
mevent_message: @ 8018F0C
push {r4-r6,lr}
diff --git a/include/mevent_801BAAC.h b/include/mevent_801BAAC.h
index db1bb0571..d747b389c 100644
--- a/include/mevent_801BAAC.h
+++ b/include/mevent_801BAAC.h
@@ -5,5 +5,9 @@ bool32 sub_801BAAC(struct MEventBuffer_32E0_Sub * r5, struct MEventBuffer_3430_S
bool32 sub_801C6C8(const struct MEventBuffer_3120_Sub * a0);
s32 sub_801BB74(void);
s32 sub_801C758(void);
+s32 sub_801BDA4(bool32 flag);
+void sub_801BB48(void);
+s32 sub_801CA50(bool32 flag);
+void sub_801C72C(void);
#endif //GUARD_MEVENT_801BAAC_H
diff --git a/include/strings.h b/include/strings.h
index 2ef8411c7..36c4e36d9 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -2628,5 +2628,11 @@ extern const u8 gText_ReadNewsThatArrived[];
extern const u8 gText_ReturnToTitle[];
extern const u8 gText_WhatToDoWithCards[];
extern const u8 gText_WhatToDoWithNews[];
+extern const u8 gText_IfThrowAwayCardEventWontHappen[];
+extern const u8 gText_OkayToDiscardNews[];
+extern const u8 gText_WonderNewsThrownAway[];
+extern const u8 gText_WonderCardThrownAway[];
+extern const u8 gText_DataWillBeSaved[];
+extern const u8 gText_SaveCompletedPressA[];
#endif // GUARD_STRINGS_H
diff --git a/src/mystery_gift.c b/src/mystery_gift.c
index 9561fbbeb..206a9e50b 100644
--- a/src/mystery_gift.c
+++ b/src/mystery_gift.c
@@ -23,6 +23,7 @@
#include "string_util.h"
#include "mevent.h"
#include "mevent_801BAAC.h"
+#include "save.h"
void bgid_upload_textbox_1(u8 bgId);
void task_add_00_mystery_gift(void);
@@ -781,8 +782,10 @@ s32 sub_8018D98(bool32 a0)
}
}
-/*bool32 sub_8018DAC(u8 * state, bool32 arg1)
+bool32 sub_8018DAC(u8 * state, bool32 arg1)
{
+ s32 v0;
+
switch (*state)
{
case 0:
@@ -795,24 +798,123 @@ s32 sub_8018D98(bool32 a0)
sub_801C6C8(sub_801B00C());
}
(*state)++;
+ break;
case 1:
if (arg1 == 0)
{
- if (sub_801BB74() == 0)
+ v0 = sub_801BB74();
+ check:
+ if (v0 != 0)
{
- break;
+ goto done;
}
+ break;
}
else
{
- if (sub_801C758() == 0)
- {
- break;
- }
+ v0 = sub_801C758();
+ goto check;
+ }
+ done:
+ *state = 0;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+bool32 sub_8018E08(bool32 arg0)
+{
+ if (arg0 == 0)
+ {
+ sub_801B1E8();
+ }
+ else
+ {
+ sub_801B06C();
+ }
+ return TRUE;
+}
+
+bool32 sub_8018E20(bool32 arg0, bool32 arg1)
+{
+ if (arg0 == 0)
+ {
+ if (sub_801BDA4(arg1) != 0)
+ {
+ sub_801BB48();
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+ }
+ else
+ {
+ if (sub_801CA50(arg1) != 0)
+ {
+ sub_801C72C();
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+ }
+}
+
+s8 sub_8018E50(u8 * textState, u16 * windowId, bool32 r2)
+{
+ if (r2 == 0)
+ {
+ return sub_8018B08(textState, windowId, TRUE, gText_IfThrowAwayCardEventWontHappen);
+ }
+ else
+ {
+ return sub_8018B08(textState, windowId, TRUE, gText_OkayToDiscardNews);
+ }
+}
+
+bool32 mevent_message_was_thrown_away(u8 * textState, bool32 r1)
+{
+ if (r1 == 0)
+ {
+ return mevent_0814257C(textState, gText_WonderCardThrownAway);
+ }
+ else
+ {
+ return mevent_0814257C(textState, gText_WonderNewsThrownAway);
+ }
+}
+
+bool32 mevent_save_game(u8 * state)
+{
+ switch (*state)
+ {
+ case 0:
+ sub_8018884(gText_DataWillBeSaved);
+ (*state)++;
+ break;
+ case 1:
+ TrySavingData(0);
+ (*state)++;
+ break;
+ case 2:
+ sub_8018884(gText_SaveCompletedPressA);
+ (*state)++;
+ break;
+ case 3:
+ if (({gMain.newKeys & (A_BUTTON | B_BUTTON);}))
+ {
+ (*state)++;
}
+ break;
+ case 4:
*state = 0;
+ sub_80188DC();
return TRUE;
}
return FALSE;
-}*/
+}