summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortheo3 <arisstephenson2@gmail.com>2020-08-08 13:59:05 -0700
committertheo3 <arisstephenson2@gmail.com>2020-08-08 13:59:05 -0700
commit001bf63c6159ef4e281d44fd54c751fecf362705 (patch)
tree38c9595f7830350dd4daa5e0f20ccd0eb6dbe1c0 /src
parent65b4f30266c2c3f32e124800e1ea389ea87880ae (diff)
initializeLink.c OK
Diffstat (limited to 'src')
-rw-r--r--src/area.c11
-rw-r--r--src/initializeLink.c68
-rw-r--r--src/sub_08052620.c7
-rw-r--r--src/sub_08052638.c10
4 files changed, 79 insertions, 17 deletions
diff --git a/src/area.c b/src/area.c
index 4616248c..92a7ed24 100644
--- a/src/area.c
+++ b/src/area.c
@@ -1,6 +1,17 @@
#include "global.h"
+#include "entity.h"
extern u8 gArea;
+extern u8 gUnk_08127D30[];
+
+bool32 sub_08052620(u32 r0) {
+ return gArea == 0x81;
+}
+
+bool32 sub_08052638(u32 r0) {
+
+ return gUnk_08127D30[r0 * 4] == 0x81;
+}
u32 sub_08052654() {
return (gArea >> 7) & 1;
diff --git a/src/initializeLink.c b/src/initializeLink.c
new file mode 100644
index 00000000..16be6528
--- /dev/null
+++ b/src/initializeLink.c
@@ -0,0 +1,68 @@
+#include "global.h"
+#include "entity.h"
+#include "link.h"
+#include "structures.h"
+#include "functions.h"
+#include "room.h"
+#include "flags.h"
+
+extern u32 gUnk_03000B80;
+extern u32 gUnk_03003FC0;
+
+extern Entity gLinkEntity;
+
+extern u8 gUnk_080FCAC8[];
+
+void InitializeLink(void)
+{
+ Entity* pl;
+
+ sub_080784C8();
+ _DmaZero((void *)&gUnk_03000B80, 0x70);
+ _DmaZero((void *)&gLinkState, 0xb0);
+
+ _DmaFill32(0xffffffff, &gLinkState.field_0x40, 0x40);
+ pl = &gLinkEntity;
+ _DmaZero((void *)pl, 0x88);
+ gRoomControls.cameraTarget = pl;
+ gLinkState.linkAction = gUnk_080FCAC8[gScreenTransition.field_0xf];
+ if (!CheckGlobalFlag(0x14)) {
+ gLinkState.flags.all |= 8;
+ }
+ switch (gScreenTransition.field_0xf) {
+ case 0x2:
+ case 0x6:
+ pl->height.HALF.HI = -0xc0;
+ break;
+ case 0x4:
+ gLinkState.field_0x34[4] = 0x10;
+ pl->direction = gScreenTransition.playerState << 2;
+ case 0x3:
+ pl->nonPlanarMovement = 0xe0;
+ break;
+ case 0x7:
+ case 0x8:
+ gLinkState.field_0x34[4] = 1;
+ gLinkState.field_0x34[5] = gScreenTransition.field_0xf;
+ break;
+ case 0xa:
+ gLinkState.field_0x34[4] = 1;
+ break;
+ case 0xb:
+ gLinkState.field_0x34[4] = 3;
+ break;
+ case 0xc:
+ gLinkState.field_0x34[4] = 4;
+ }
+ pl->entityType.type = 1;
+ pl->flags |= 0xa0;
+ pl->spritePriority.b0 = 4;
+ pl->currentHealth = gUnk_02002A40.stats.health;
+ pl->x.HALF.HI = gScreenTransition.playerStartPos.HALF.x;
+ pl->y.HALF.HI = gScreenTransition.playerStartPos.HALF.y;
+ pl->animationState = gScreenTransition.playerState;
+ pl->collisionLayer = gScreenTransition.playerLayer;
+ UpdateSpriteForCollisionLayer(pl);
+ sub_0805EA2C(pl, 1);
+ sub_08017640();
+} \ No newline at end of file
diff --git a/src/sub_08052620.c b/src/sub_08052620.c
deleted file mode 100644
index c4ec163a..00000000
--- a/src/sub_08052620.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#include "global.h"
-
-extern u8 gArea;
-
-bool32 sub_08052620(u32 r0) {
- return gArea == 0x81;
-}
diff --git a/src/sub_08052638.c b/src/sub_08052638.c
deleted file mode 100644
index 987572d8..00000000
--- a/src/sub_08052638.c
+++ /dev/null
@@ -1,10 +0,0 @@
-#include "global.h"
-
-extern u8 gUnk_08127D30[69];
-
-u32 sub_08052638(u32 r0) {
- // u32 r1 = gUnk_08127D30;
- // u32 r1 = gUnk_08127D30;
-
- return gUnk_08127D30[r0 * 4] == 129;
-}