summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-05-20 11:31:15 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2017-05-20 11:31:15 -0400
commitdc229fe94ad23c057aae619ec429a073a00a8508 (patch)
tree1bd4db0d799ac39061504a3e170d5d715467984f
parent39b15cb589dde612854ba1e0ea1365daccbfc7a2 (diff)
sub_80C00B4
-rw-r--r--asm/tv.s70
-rw-r--r--include/global.h4
-rw-r--r--src/tv.c17
3 files changed, 20 insertions, 71 deletions
diff --git a/asm/tv.s b/asm/tv.s
index da22453ac..43e71286a 100644
--- a/asm/tv.s
+++ b/asm/tv.s
@@ -1613,76 +1613,6 @@ _080BE474: .4byte gSaveBlock2
.section .text_80BE8EC
- thumb_func_start sub_80C00B4
-sub_80C00B4: @ 80C00B4
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- lsls r0, r2, 24
- lsrs r0, 24
- bl GetLinkPlayerTrainerId
- adds r2, r0, 0
- movs r3, 0xFF
- ands r0, r3
- adds r1, r4, 0
- adds r1, 0x20
- ldrb r1, [r1]
- cmp r0, r1
- bne _080C00E0
- lsrs r0, r2, 8
- ands r0, r3
- adds r1, r4, 0
- adds r1, 0x21
- ldrb r1, [r1]
- cmp r0, r1
- beq _080C0100
-_080C00E0:
- movs r3, 0xFF
- adds r0, r2, 0
- ands r0, r3
- adds r1, r4, 0
- adds r1, 0x22
- lsrs r5, r2, 8
- ldrb r1, [r1]
- cmp r0, r1
- bne _080C0104
- adds r0, r5, 0
- ands r0, r3
- adds r1, r4, 0
- adds r1, 0x23
- ldrb r1, [r1]
- cmp r0, r1
- bne _080C0104
-_080C0100:
- movs r0, 0
- b _080C012C
-_080C0104:
- ldrb r1, [r4, 0x1E]
- adds r0, r4, 0
- adds r0, 0x20
- strb r1, [r0]
- ldrb r0, [r4, 0x1F]
- adds r1, r4, 0
- adds r1, 0x21
- strb r0, [r1]
- strb r2, [r4, 0x1E]
- strb r5, [r4, 0x1F]
- adds r1, r6, 0
- adds r0, r4, 0
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- movs r0, 0x1
- strb r0, [r6, 0x1]
-_080C012C:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80C00B4
-
thumb_func_start sub_80C0134
sub_80C0134: @ 80C0134
push {r4-r6,lr}
diff --git a/include/global.h b/include/global.h
index a294b3e01..7544ecdb2 100644
--- a/include/global.h
+++ b/include/global.h
@@ -194,7 +194,9 @@ struct EasyChatPair
struct TVShowCommon {
/*0x00*/ u8 var00;
/*0x01*/ u8 var01;
- /*0x02*/ u8 pad02[30];
+ /*0x02*/ u8 pad02[28];
+ /*0x20*/ u8 srcTrainerId2Lo;
+ /*0x21*/ u8 srcTrainerId2Hi;
/*0x20*/ u8 srcTrainerIdLo;
/*0x21*/ u8 srcTrainerIdHi;
/*0x22*/ u8 trainerIdLo;
diff --git a/src/tv.c b/src/tv.c
index 994db4dfc..053dbfb57 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -1627,6 +1627,23 @@ u8 sub_80C004C(TVShow *tv1, TVShow *tv2, u8 idx) {
return TRUE;
}
+u8 sub_80C00B4(TVShow *tv1, TVShow *tv2, u8 idx) {
+ u32 linkTrainerId = GetLinkPlayerTrainerId(idx);
+ if ((linkTrainerId & 0xFF) == tv2->common.srcTrainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.srcTrainerIdHi) {
+ return FALSE;
+ }
+ if ((linkTrainerId & 0xFF) == tv2->common.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi) {
+ return FALSE;
+ }
+ tv2->common.srcTrainerIdLo = tv2->common.srcTrainerId2Lo;
+ tv2->common.srcTrainerIdHi = tv2->common.srcTrainerId2Hi;
+ tv2->common.srcTrainerId2Lo = linkTrainerId & 0xFF;
+ tv2->common.srcTrainerId2Hi = linkTrainerId >> 8;
+ *tv1 = *tv2;
+ tv1->common.var01 = 1;
+ return TRUE;
+}
+
asm(".section .dotvshow\n");
void DoTVShowPokemonFanClubLetter(void);