summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiegoisawesome <diego@domoreaweso.me>2018-10-11 16:02:58 -0500
committerDiegoisawesome <diego@domoreaweso.me>2018-10-11 16:02:58 -0500
commit04836db16721fc3ff33bda41242ab04deb9ca02f (patch)
treecadafe0352a3eb3e02402ec1079d69fda6c46959
parent3d50d01a93314569a3b647bf52c87b52c1dcf41c (diff)
Start porting cable_club.c
-rw-r--r--asm/cable_club.s355
-rw-r--r--include/link.h3
-rw-r--r--include/strings.h2
-rw-r--r--ld_script.txt1
-rw-r--r--src/cable_club.c137
5 files changed, 142 insertions, 356 deletions
diff --git a/asm/cable_club.s b/asm/cable_club.s
index 6f4917a19..692ee3b81 100644
--- a/asm/cable_club.s
+++ b/asm/cable_club.s
@@ -5,361 +5,6 @@
.text
- thumb_func_start sub_80B236C
-sub_80B236C: @ 80B236C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- ldr r4, =sub_80B2634
- adds r0, r4, 0
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- bne _080B23A0
- adds r0, r4, 0
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r6, [r1, 0xA]
- strh r5, [r1, 0xC]
-_080B23A0:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B236C
-
- thumb_func_start sub_80B23B0
-sub_80B23B0: @ 80B23B0
- push {r4,r5,lr}
- sub sp, 0xC
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldr r0, =gStringVar1
- movs r2, 0
- movs r3, 0x1
- bl ConvertIntToDecimalStringN
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- movs r1, 0
- bl SetStandardWindowBorderStyle
- ldr r5, =gStringVar4
- ldr r1, =gText_XPLink
- adds r0, r5, 0
- bl StringExpandPlaceholders
- movs r0, 0x1
- adds r1, r5, 0
- movs r2, 0x58
- bl GetStringCenterAlignXOffset
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- adds r0, r4, 0
- movs r1, 0x1
- adds r2, r5, 0
- bl AddTextPrinterParameterized
- adds r0, r4, 0
- movs r1, 0x3
- bl CopyWindowToVram
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B23B0
-
- thumb_func_start sub_80B241C
-sub_80B241C: @ 80B241C
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- movs r1, 0
- bl sub_819746C
- adds r0, r4, 0
- movs r1, 0x3
- bl CopyWindowToVram
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B241C
-
- thumb_func_start sub_80B243C
-sub_80B243C: @ 80B243C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, =gTasks + 0x8
- adds r4, r1, r0
- movs r1, 0x6
- ldrsh r0, [r4, r1]
- cmp r5, r0
- beq _080B2472
- cmp r5, 0x1
- bhi _080B2468
- ldrh r0, [r4, 0xA]
- bl sub_80B241C
- b _080B2470
- .pool
-_080B2468:
- ldrh r0, [r4, 0xA]
- adds r1, r5, 0
- bl sub_80B23B0
-_080B2470:
- strh r5, [r4, 0x6]
-_080B2472:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80B243C
-
- thumb_func_start sub_80B2478
-sub_80B2478: @ 80B2478
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- bl GetLinkPlayerDataExchangeStatusTimed
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x1
- cmp r0, 0x6
- bhi _080B24F0
- lsls r0, 2
- ldr r1, =_080B24A0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080B24A0:
- .4byte _080B24BC
- .4byte _080B24F0
- .4byte _080B24C0
- .4byte _080B24C4
- .4byte _080B24C8
- .4byte _080B24CC
- .4byte _080B24EC
-_080B24BC:
- movs r0, 0x1
- b _080B24F2
-_080B24C0:
- movs r0, 0x3
- b _080B24F2
-_080B24C4:
- movs r0, 0x7
- b _080B24F2
-_080B24C8:
- movs r0, 0x9
- b _080B24F2
-_080B24CC:
- ldr r4, =gStringVar1
- bl GetLinkPlayerCount_2
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- movs r2, 0
- movs r3, 0x1
- bl ConvertIntToDecimalStringN
- movs r0, 0x4
- b _080B24F2
- .pool
-_080B24EC:
- movs r0, 0xA
- b _080B24F2
-_080B24F0:
- movs r0, 0
-_080B24F2:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80B2478
-
- thumb_func_start sub_80B24F8
-sub_80B24F8: @ 80B24F8
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl HasLinkErrorOccurred
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080B250E
- movs r0, 0
- b _080B251E
-_080B250E:
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_80B2D2C
- str r0, [r1]
- movs r0, 0x1
-_080B251E:
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80B24F8
-
- thumb_func_start sub_80B252C
-sub_80B252C: @ 80B252C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080B2570
- bl IsLinkConnectionEstablished
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _080B2570
- ldr r0, =gLinkType
- strh r1, [r0]
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_80B2CEC
- str r1, [r0]
- movs r0, 0x1
- b _080B2572
- .pool
-_080B2570:
- movs r0, 0
-_080B2572:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80B252C
-
- thumb_func_start sub_80B2578
-sub_80B2578: @ 80B2578
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl IsLinkConnectionEstablished
- lsls r0, 24
- cmp r0, 0
- beq _080B258E
- movs r0, 0x1
- bl SetSuppressLinkErrorMessage
-_080B258E:
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _080B25A4
- movs r0, 0
- b _080B25BA
- .pool
-_080B25A4:
- ldr r1, =gLinkType
- movs r0, 0
- strh r0, [r1]
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_80B2CEC
- str r1, [r0]
- movs r0, 0x1
-_080B25BA:
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80B2578
-
- thumb_func_start sub_80B25CC
-sub_80B25CC: @ 80B25CC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl GetSioMultiSI
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080B25E2
- movs r0, 0
- b _080B25F2
-_080B25E2:
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_80B2D2C
- str r0, [r1]
- movs r0, 0x1
-_080B25F2:
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80B25CC
-
- thumb_func_start sub_80B2600
-sub_80B2600: @ 80B2600
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA
- bne _080B262A
- movs r0, 0x2
- bl sub_800A4D8
- adds r0, r4, 0
- bl DestroyTask
-_080B262A:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B2600
-
thumb_func_start sub_80B2634
sub_80B2634: @ 80B2634
push {r4,lr}
diff --git a/include/link.h b/include/link.h
index 9561728bd..eb44ed04e 100644
--- a/include/link.h
+++ b/include/link.h
@@ -97,7 +97,8 @@ enum
EXCHANGE_IN_PROGRESS,
EXCHANGE_STAT_4,
EXCHANGE_STAT_5,
- EXCHANGE_STAT_6
+ EXCHANGE_STAT_6,
+ EXCHANGE_STAT_7
};
enum
diff --git a/include/strings.h b/include/strings.h
index e72360563..54644a7cb 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -843,4 +843,6 @@ extern const u8 gText_TwoDashes[];
extern const u8 *const gReturnToXStringsTable2[];
+extern const u8 gText_XPLink[];
+
#endif //GUARD_STRINGS_H
diff --git a/ld_script.txt b/ld_script.txt
index fc12789ce..371077e53 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -118,6 +118,7 @@ SECTIONS {
src/title_screen.o(.text);
asm/field_screen.o(.text);
src/battle_setup.o(.text);
+ src/cable_club.o(.text);
asm/cable_club.o(.text);
src/trainer_see.o(.text);
src/wild_encounter.o(.text);
diff --git a/src/cable_club.c b/src/cable_club.c
new file mode 100644
index 000000000..489d1b9f7
--- /dev/null
+++ b/src/cable_club.c
@@ -0,0 +1,137 @@
+#include "global.h"
+#include "main.h"
+#include "international_string_util.h"
+#include "link.h"
+#include "menu.h"
+#include "task.h"
+#include "string_util.h"
+#include "strings.h"
+
+extern void sub_80B2634(u8 taskId);
+extern void sub_80B2CEC(u8 taskId);
+extern void sub_80B2D2C(u8 taskId);
+
+void sub_80B236C(u8 arg0, u8 arg1)
+{
+ if (FindTaskIdByFunc(sub_80B2634) == 0xFF)
+ {
+ u8 taskId1;
+
+ taskId1 = CreateTask(sub_80B2634, 80);
+ gTasks[taskId1].data[1] = arg0;
+ gTasks[taskId1].data[2] = arg1;
+ }
+}
+
+void sub_80B23B0(u16 windowId, u32 value)
+{
+ u8 xPos;
+
+ ConvertIntToDecimalStringN(gStringVar1, value, STR_CONV_MODE_LEFT_ALIGN, 1);
+ SetStandardWindowBorderStyle(windowId, 0);
+ StringExpandPlaceholders(gStringVar4, gText_XPLink);
+ xPos = GetStringCenterAlignXOffset(1, gStringVar4, 88);
+ AddTextPrinterParameterized(windowId, 1, gStringVar4, xPos, 1, 0xFF, NULL);
+ CopyWindowToVram(windowId, 3);
+}
+
+void sub_80B241C(u16 windowId)
+{
+ sub_819746C(windowId, FALSE);
+ CopyWindowToVram(windowId, 3);
+}
+
+void sub_80B243C(u8 taskId, u8 arg1)
+{
+ s16 *data = gTasks[taskId].data;
+
+ if (arg1 != data[3])
+ {
+ if (arg1 <= 1)
+ sub_80B241C(data[5]);
+ else
+ sub_80B23B0(data[5], arg1);
+ data[3] = arg1;
+ }
+}
+
+u32 sub_80B2478(u8 lower, u8 upper)
+{
+ int playerCount;
+
+ switch (GetLinkPlayerDataExchangeStatusTimed(lower, upper))
+ {
+ case EXCHANGE_COMPLETE:
+ return 1;
+ case EXCHANGE_IN_PROGRESS:
+ return 3;
+ case EXCHANGE_STAT_4:
+ return 7;
+ case EXCHANGE_STAT_5:
+ return 9;
+ case EXCHANGE_STAT_6:
+ ConvertIntToDecimalStringN(gStringVar1, GetLinkPlayerCount_2(), STR_CONV_MODE_LEFT_ALIGN, 1);
+ return 4;
+ case EXCHANGE_STAT_7:
+ return 10;
+ case EXCHANGE_TIMED_OUT:
+ default:
+ return 0;
+ }
+}
+
+bool32 sub_80B24F8(u8 taskId)
+{
+ if (HasLinkErrorOccurred() == TRUE)
+ {
+ gTasks[taskId].func = sub_80B2D2C;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool32 sub_80B252C(u8 taskId)
+{
+ if ((gMain.newKeys & B_BUTTON)
+ && IsLinkConnectionEstablished() == FALSE)
+ {
+ gLinkType = 0;
+ gTasks[taskId].func = sub_80B2CEC;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool32 sub_80B2578(u8 taskId)
+{
+ if (IsLinkConnectionEstablished())
+ SetSuppressLinkErrorMessage(TRUE);
+
+ if (gMain.newKeys & B_BUTTON)
+ {
+ gLinkType = 0;
+ gTasks[taskId].func = sub_80B2CEC;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool32 sub_80B25CC(u8 taskId)
+{
+ if (GetSioMultiSI() == 1)
+ {
+ gTasks[taskId].func = sub_80B2D2C;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void sub_80B2600(u8 taskId)
+{
+ gTasks[taskId].data[0]++;
+ if (gTasks[taskId].data[0] == 10)
+ {
+ sub_800A4D8(2);
+ DestroyTask(taskId);
+ }
+}