summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-12-03 22:23:46 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2017-12-03 22:23:46 -0500
commit3dd7ec7526af6f49b77367d91cd1a9565847dc64 (patch)
tree4b6f3b1c6f2f0ef4373e579b85e117ff27fc8557
parent8b5d6fe5d915053d6e052ba3279c8d1a98fd1509 (diff)
through sub_800E15C
-rw-r--r--asm/link_rfu.s116
-rw-r--r--src/link_rfu.c49
2 files changed, 48 insertions, 117 deletions
diff --git a/asm/link_rfu.s b/asm/link_rfu.s
index 35628de34..7e67be316 100644
--- a/asm/link_rfu.s
+++ b/asm/link_rfu.s
@@ -7,122 +7,6 @@
@ file boundary?
- thumb_func_start sub_800E084
-sub_800E084: @ 800E084
- push {r4,lr}
- ldr r4, =gSprites
- ldr r3, =gWirelessStatusIndicatorSpriteId
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, r0, r4
- movs r0, 0x3C
- ldrsh r1, [r2, r0]
- ldr r0, =0x00001234
- cmp r1, r0
- bne _0800E0CA
- movs r0, 0
- strh r0, [r2, 0x3C]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
- ldr r3, =gMain
- movs r0, 0x84
- lsls r0, 3
- adds r3, r0
- ldr r0, =gDummyOamData
- ldr r1, [r0]
- ldr r2, [r0, 0x4]
- str r1, [r3]
- str r2, [r3, 0x4]
- ldr r1, =0x070003e8
- movs r2, 0x4
- bl CpuSet
-_0800E0CA:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_800E084
-
- thumb_func_start sub_800E0E8
-sub_800E0E8: @ 800E0E8
- push {r4,lr}
- ldr r4, =sWirelessStatusIndicatorSpriteSheet
- ldrh r0, [r4, 0x6]
- bl GetSpriteTileStartByTag
- lsls r0, 16
- ldr r1, =0xffff0000
- cmp r0, r1
- bne _0800E100
- adds r0, r4, 0
- bl LoadCompressedObjectPic
-_0800E100:
- ldr r0, =sWirelessStatusIndicatorSpritePalette
- bl LoadSpritePalette
- ldr r1, =gWirelessStatusIndicatorSpriteId
- movs r0, 0xFF
- strb r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_800E0E8
-
- thumb_func_start sub_800E124
-sub_800E124: @ 800E124
- push {r4,lr}
- ldr r1, =gUnknown_03007890
- ldr r0, [r1]
- ldrb r2, [r0, 0x2]
- movs r3, 0
- movs r4, 0x1
-_0800E130:
- adds r0, r2, 0
- ands r0, r4
- cmp r0, 0
- beq _0800E148
- ldr r0, [r1]
- adds r0, 0xA
- adds r0, r3
- ldrb r0, [r0]
- b _0800E156
- .pool
-_0800E148:
- lsrs r2, 1
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x3
- bls _0800E130
- movs r0, 0
-_0800E156:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_800E124
-
- thumb_func_start sub_800E15C
-sub_800E15C: @ 800E15C
- push {lr}
- adds r2, r0, 0
- movs r3, 0x32
- ldrsh r0, [r2, r3]
- cmp r0, r1
- beq _0800E170
- movs r0, 0
- strh r1, [r2, 0x32]
- strh r0, [r2, 0x34]
- strh r0, [r2, 0x36]
-_0800E170:
- pop {r0}
- bx r0
- thumb_func_end sub_800E15C
-
thumb_func_start sub_800E174
sub_800E174: @ 800E174
push {r4-r7,lr}
diff --git a/src/link_rfu.c b/src/link_rfu.c
index 68d42ec4a..eaf919bae 100644
--- a/src/link_rfu.c
+++ b/src/link_rfu.c
@@ -2,6 +2,7 @@
// Includes
#include "global.h"
#include "rng.h"
+#include "decompress.h"
#include "text.h"
#include "event_data.h"
#include "link.h"
@@ -163,7 +164,7 @@ static const union AnimCmd *const sWirelessStatusIndicatorAnims[] = {
sWirelessStatusIndicatorAnim3,
sWirelessStatusIndicatorAnim4
};
-const struct SpriteSheet sWirelessStatusIndicatorSpriteSheet = {
+const struct CompressedSpriteSheet sWirelessStatusIndicatorSpriteSheet = {
gWirelessLinkIconPic, 0x0380, 0xD431
};
const struct SpritePalette sWirelessStatusIndicatorSpritePalette = {
@@ -2100,3 +2101,49 @@ void CreateWirelessStatusIndicatorSprite(u8 x, u8 y)
gSprites[gWirelessStatusIndicatorSpriteId].invisible = TRUE;
}
}
+
+void sub_800E084(void)
+{
+ if (gSprites[gWirelessStatusIndicatorSpriteId].data7 == 0x1234)
+ {
+ gSprites[gWirelessStatusIndicatorSpriteId].data7 = 0;
+ DestroySprite(&gSprites[gWirelessStatusIndicatorSpriteId]);
+ gMain.oamBuffer[125] = gDummyOamData;
+ CpuCopy16(&gDummyOamData, (struct OamData *)OAM + 125, sizeof(struct OamData));
+ }
+}
+
+void sub_800E0E8(void)
+{
+ if (GetSpriteTileStartByTag(sWirelessStatusIndicatorSpriteSheet.tag) == 0xFFFF)
+ {
+ LoadCompressedObjectPic(&sWirelessStatusIndicatorSpriteSheet);
+ }
+ LoadSpritePalette(&sWirelessStatusIndicatorSpritePalette);
+ gWirelessStatusIndicatorSpriteId = 0xFF;
+}
+
+u8 sub_800E124(void)
+{
+ u8 i;
+ u8 flags = gUnknown_03007890->unk_02;
+ for (i = 0; i < 4; i++)
+ {
+ if (flags & 1)
+ {
+ return gUnknown_03007890->unk_0a[i];
+ }
+ flags >>= 1;
+ }
+ return 0;
+}
+
+void sub_800E15C(struct Sprite *sprite, int val)
+{
+ if (sprite->data2 != val)
+ {
+ sprite->data2 = val;
+ sprite->data3 = 0;
+ sprite->data4 = 0;
+ }
+}