summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-01-19 20:23:15 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2020-01-19 20:23:15 -0500
commit44337a41dbfcc4d2fe5f1e22cd87769a27c006c9 (patch)
tree04da2a28f616f180198000482248e08cb714a04d
parent407c49820e1e64ff6deb4480b6ff9aceb0a3b085 (diff)
through TryBecomeLinkLeader
-rw-r--r--asm/union_room.s237
-rw-r--r--ld_script.txt1
-rw-r--r--src/union_room.c79
3 files changed, 80 insertions, 237 deletions
diff --git a/asm/union_room.s b/asm/union_room.s
index cd549c173..222ecaa7a 100644
--- a/asm/union_room.s
+++ b/asm/union_room.s
@@ -5,243 +5,6 @@
.text
- thumb_func_start sub_811586C
-sub_811586C: @ 811586C
- push {r4-r6,lr}
- sub sp, 0x8
- adds r4, r1, 0
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r2, 24
- lsrs r5, r2, 24
- adds r0, r6, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- lsls r4, 8
- movs r0, 0x80
- lsls r0, 3
- cmp r4, r0
- beq _081158BC
- cmp r4, r0
- bgt _0811589E
- movs r0, 0x80
- lsls r0, 2
- cmp r4, r0
- beq _081158B0
- b _0811590E
-_0811589E:
- movs r0, 0x94
- lsls r0, 6
- cmp r4, r0
- beq _081158CC
- movs r0, 0xD4
- lsls r0, 6
- cmp r4, r0
- beq _081158F0
- b _0811590E
-_081158B0:
- ldr r1, _081158B8 @ =gUnknown_845742C
- subs r0, r5, 0x1
- lsls r0, 2
- b _081158D4
- .align 2, 0
-_081158B8: .4byte gUnknown_845742C
-_081158BC:
- ldr r1, _081158C8 @ =gUnknown_845742C
- subs r0, r5, 0x1
- lsls r0, 2
- adds r1, 0x14
- b _081158D4
- .align 2, 0
-_081158C8: .4byte gUnknown_845742C
-_081158CC:
- ldr r1, _081158EC @ =gUnknown_845742C
- subs r0, r5, 0x1
- lsls r0, 2
- adds r1, 0x28
-_081158D4:
- adds r0, r1
- ldr r2, [r0]
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- adds r0, r6, 0
- movs r1, 0x2
- movs r3, 0
- bl sub_811A444
- b _0811590E
- .align 2, 0
-_081158EC: .4byte gUnknown_845742C
-_081158F0:
- ldr r1, _08115920 @ =gUnknown_845742C
- subs r0, r5, 0x1
- lsls r0, 2
- adds r1, 0x3C
- adds r0, r1
- ldr r2, [r0]
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- adds r0, r6, 0
- movs r1, 0x2
- movs r3, 0
- bl sub_811A444
-_0811590E:
- adds r0, r6, 0
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08115920: .4byte gUnknown_845742C
- thumb_func_end sub_811586C
-
- thumb_func_start sub_8115924
-sub_8115924: @ 8115924
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x20
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r6, _08115994 @ =gSaveBlock2Ptr
- ldr r2, [r6]
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0
- mov r8, r0
- str r0, [sp, 0x4]
- adds r0, r4, 0
- movs r1, 0x2
- movs r3, 0
- bl sub_811A444
- add r5, sp, 0x14
- ldr r1, _08115998 @ =gUnknown_84571B4
- adds r0, r5, 0
- bl StringCopy
- ldr r0, [r6]
- adds r0, 0xA
- bl sub_8118658
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- add r0, sp, 0x8
- movs r2, 0x2
- movs r3, 0x5
- bl ConvertIntToDecimalStringN
- adds r0, r5, 0
- add r1, sp, 0x8
- bl StringAppend
- movs r0, 0x10
- str r0, [sp]
- mov r0, r8
- str r0, [sp, 0x4]
- adds r0, r4, 0
- movs r1, 0
- adds r2, r5, 0
- movs r3, 0
- bl sub_811A444
- add sp, 0x20
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08115994: .4byte gSaveBlock2Ptr
-_08115998: .4byte gUnknown_84571B4
- thumb_func_end sub_8115924
-
- thumb_func_start sub_811599C
-sub_811599C: @ 811599C
- push {lr}
- lsls r1, 24
- lsrs r1, 24
- subs r0, r1, 0x1
- cmp r0, 0x15
- bhi _08115A18
- lsls r0, 2
- ldr r1, _081159B4 @ =_081159B8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081159B4: .4byte _081159B8
- .align 2, 0
-_081159B8:
- .4byte _08115A10
- .4byte _08115A10
- .4byte _08115A10
- .4byte _08115A10
- .4byte _08115A18
- .4byte _08115A18
- .4byte _08115A18
- .4byte _08115A18
- .4byte _08115A10
- .4byte _08115A10
- .4byte _08115A10
- .4byte _08115A18
- .4byte _08115A18
- .4byte _08115A18
- .4byte _08115A18
- .4byte _08115A18
- .4byte _08115A18
- .4byte _08115A18
- .4byte _08115A18
- .4byte _08115A18
- .4byte _08115A10
- .4byte _08115A10
-_08115A10:
- ldr r0, _08115A1C @ =gStringVar4
- ldr r1, _08115A20 @ =gUnknown_8457234
- bl StringExpandPlaceholders
-_08115A18:
- pop {r0}
- bx r0
- .align 2, 0
-_08115A1C: .4byte gStringVar4
-_08115A20: .4byte gUnknown_8457234
- thumb_func_end sub_811599C
-
- thumb_func_start TryBecomeLinkLeader
-TryBecomeLinkLeader: @ 8115A24
- push {lr}
- ldr r0, _08115A54 @ =sub_8115A68
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08115A58 @ =gUnknown_203B05C
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _08115A5C @ =gTasks+0x8
- adds r1, r0
- str r1, [r2]
- ldr r0, _08115A60 @ =gUnknown_3002024
- str r1, [r0]
- movs r0, 0
- strb r0, [r1, 0xC]
- strb r0, [r1, 0xD]
- ldr r1, _08115A64 @ =gSpecialVar_Result
- strh r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08115A54: .4byte sub_8115A68
-_08115A58: .4byte gUnknown_203B05C
-_08115A5C: .4byte gTasks+0x8
-_08115A60: .4byte gUnknown_3002024
-_08115A64: .4byte gSpecialVar_Result
- thumb_func_end TryBecomeLinkLeader
-
thumb_func_start sub_8115A68
sub_8115A68: @ 8115A68
push {r4-r7,lr}
diff --git a/ld_script.txt b/ld_script.txt
index 016793dc9..9d476e13a 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -241,6 +241,7 @@ SECTIONS {
src/mailbox_pc.o(.text);
src/menu.o(.text);
src/quest_log.o(.text);
+ src/union_room.o(.text);
asm/union_room.o(.text);
asm/union_room_player_avatar.o(.text);
asm/pokemon_special_anim.o(.text);
diff --git a/src/union_room.c b/src/union_room.c
new file mode 100644
index 000000000..070c43a09
--- /dev/null
+++ b/src/union_room.c
@@ -0,0 +1,79 @@
+#include "global.h"
+#include "gflib.h"
+#include "event_data.h"
+#include "link_rfu.h"
+#include "task.h"
+#include "union_room.h"
+
+EWRAM_DATA union UnkUnion_Main gUnknown_203B05C = {};
+
+IWRAM_DATA struct UnkStruct_Leader *gUnknown_3002024;
+
+void sub_8115A68(u8 taskId);
+u16 sub_8118658(const u8 *data);
+void sub_811A444(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 colorIdx);
+
+extern const u8 *const gUnknown_845742C[][5];
+extern const u8 gUnknown_84571B4[];
+extern const u8 gUnknown_8457234[];
+
+void sub_811586C(u8 windowId, u8 arg1, u8 stringId)
+{
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
+ switch (arg1 << 8)
+ {
+ case 0x200:
+ sub_811A444(windowId, 2, gUnknown_845742C[0][stringId - 1], 0, 2, 0);
+ break;
+ case 0x400:
+ sub_811A444(windowId, 2, gUnknown_845742C[1][stringId - 1], 0, 2, 0);
+ break;
+ case 0x2500:
+ sub_811A444(windowId, 2, gUnknown_845742C[2][stringId - 1], 0, 2, 0);
+ break;
+ case 0x3500:
+ sub_811A444(windowId, 2, gUnknown_845742C[3][stringId - 1], 0, 2, 0);
+ break;
+ }
+
+ CopyWindowToVram(windowId, 2);
+}
+
+void sub_8115924(u8 windowId)
+{
+ u8 text[12];
+ u8 text2[12];
+
+ sub_811A444(windowId, 2, gSaveBlock2Ptr->playerName, 0, 2, 0);
+ StringCopy(text2, gUnknown_84571B4);
+ ConvertIntToDecimalStringN(text, sub_8118658(gSaveBlock2Ptr->playerTrainerId), STR_CONV_MODE_LEADING_ZEROS, 5);
+ StringAppend(text2, text);
+ sub_811A444(windowId, 0, text2, 0, 0x10, 0);
+}
+
+void sub_811599C(u8 *dst, u8 caseId)
+{
+ switch (caseId)
+ {
+ case 1 ... 4:
+ case 9 ... 11:
+ case 21 ... 22:
+ // UB: argument *dst isn't used, instead it always prints to gStringVar4
+ StringExpandPlaceholders(gStringVar4, gUnknown_8457234);
+ break;
+ }
+}
+
+void TryBecomeLinkLeader(void)
+{
+ u8 taskId;
+ struct UnkStruct_Leader *dataPtr;
+
+ taskId = CreateTask(sub_8115A68, 0);
+ gUnknown_203B05C.leader = dataPtr = (void*)(gTasks[taskId].data);
+ gUnknown_3002024 = dataPtr;
+
+ dataPtr->state = 0;
+ dataPtr->textState = 0;
+ gSpecialVar_Result = 0;
+}