summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/tv.s213
-rw-r--r--include/global.h8
-rw-r--r--src/tv.c113
3 files changed, 108 insertions, 226 deletions
diff --git a/asm/tv.s b/asm/tv.s
index e29ba5790..89e286342 100644
--- a/asm/tv.s
+++ b/asm/tv.s
@@ -4455,217 +4455,4 @@ _080C173C:
_080C1750: .4byte gTVPokemonTodayFailedCaptureTextGroup
thumb_func_end DoTVShowPokemonTodayFailedCapture
- thumb_func_start DoTVShowPokemonFanClubLetter
-DoTVShowPokemonFanClubLetter: @ 80C1754
- push {r4-r7,lr}
- ldr r0, _080C1780 @ =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080C1784 @ =gSaveBlock1 + 0x2738
- adds r5, r0, r1
- ldr r1, _080C1788 @ =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, _080C178C @ =gUnknown_020387E8
- ldrb r7, [r0]
- adds r6, r0, 0
- cmp r7, 0x33
- bls _080C1776
- b _080C1960
-_080C1776:
- lsls r0, r7, 2
- ldr r1, _080C1790 @ =_080C1794
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080C1780: .4byte gSpecialVar_0x8004
-_080C1784: .4byte gSaveBlock1 + 0x2738
-_080C1788: .4byte gScriptResult
-_080C178C: .4byte gUnknown_020387E8
-_080C1790: .4byte _080C1794
- .align 2, 0
-_080C1794:
- .4byte _080C1864
- .4byte _080C1898
- .4byte _080C18C4
- .4byte _080C18CA
- .4byte _080C18E2
- .4byte _080C18E2
- .4byte _080C18E2
- .4byte _080C18F4
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1916
- .4byte _080C193C
-_080C1864:
- ldr r0, _080C1888 @ =gStringVar1
- adds r1, r5, 0
- adds r1, 0x10
- ldrb r2, [r5, 0x18]
- bl TVShowConvertInternationalString
- ldr r0, _080C188C @ =gStringVar2
- ldrh r2, [r5, 0x2]
- movs r1, 0xB
- muls r1, r2
- ldr r2, _080C1890 @ =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r1, _080C1894 @ =gUnknown_020387E8
- movs r0, 0x32
- strb r0, [r1]
- b _080C1960
- .align 2, 0
-_080C1888: .4byte gStringVar1
-_080C188C: .4byte gStringVar2
-_080C1890: .4byte gSpeciesNames
-_080C1894: .4byte gUnknown_020387E8
-_080C1898:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- ands r0, r1
- adds r2, r0, 0x1
- cmp r2, 0x1
- bne _080C18B8
- ldr r1, _080C18B4 @ =gUnknown_020387E8
- movs r0, 0x2
- strb r0, [r1]
- b _080C1960
- .align 2, 0
-_080C18B4: .4byte gUnknown_020387E8
-_080C18B8:
- ldr r1, _080C18C0 @ =gUnknown_020387E8
- adds r0, r2, 0x2
- strb r0, [r1]
- b _080C1960
- .align 2, 0
-_080C18C0: .4byte gUnknown_020387E8
-_080C18C4:
- movs r0, 0x33
- strb r0, [r6]
- b _080C1960
-_080C18CA:
- bl Random
- ldrb r4, [r6]
- adds r4, 0x1
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl __umodsi3
- adds r0, r4
- strb r0, [r6]
- b _080C1960
-_080C18E2:
- adds r0, r5, 0
- bl sub_80BF79C
- ldr r1, _080C18F0 @ =gUnknown_020387E8
- movs r0, 0x7
- strb r0, [r1]
- b _080C1960
- .align 2, 0
-_080C18F0: .4byte gUnknown_020387E8
-_080C18F4:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1F
- bl __umodsi3
- adds r0, 0x46
- lsls r0, 16
- lsrs r2, r0, 16
- movs r0, 0x2
- adds r1, r2, 0
- bl sub_80BF088
- bl TVShowDone
- b _080C1960
-_080C1916:
- ldr r4, _080C1934 @ =gStringVar4
- adds r1, r5, 0x4
- adds r0, r4, 0
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertEasyChatWordsToString
- adds r0, r4, 0
- bl ShowFieldMessage
- ldr r1, _080C1938 @ =gUnknown_020387E8
- movs r0, 0x1
- strb r0, [r1]
- b _080C196C
- .align 2, 0
-_080C1934: .4byte gStringVar4
-_080C1938: .4byte gUnknown_020387E8
-_080C193C:
- ldr r4, _080C1958 @ =gStringVar4
- adds r1, r5, 0x4
- adds r0, r4, 0
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertEasyChatWordsToString
- adds r0, r4, 0
- bl ShowFieldMessage
- ldr r1, _080C195C @ =gUnknown_020387E8
- movs r0, 0x3
- strb r0, [r1]
- b _080C196C
- .align 2, 0
-_080C1958: .4byte gStringVar4
-_080C195C: .4byte gUnknown_020387E8
-_080C1960:
- ldr r0, _080C1974 @ =gTVFanClubTextGroup
- lsls r1, r7, 2
- adds r1, r0
- ldr r0, [r1]
- bl ShowFieldMessage
-_080C196C:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C1974: .4byte gTVFanClubTextGroup
- thumb_func_end DoTVShowPokemonFanClubLetter
-
.align 2, 0 @ Don't pad with nop.
diff --git a/include/global.h b/include/global.h
index 836ba3880..e372afe15 100644
--- a/include/global.h
+++ b/include/global.h
@@ -205,7 +205,7 @@ struct TVShowFanClubLetter {
/*0x02*/ u16 species;
/*0x04*/ u16 pad04[6];
/*0x10*/ u8 playerName[8];
- /*0x18*/ u8 var18;
+ /*0x18*/ u8 language;
};
struct TVShowRecentHappenings {
@@ -213,8 +213,8 @@ struct TVShowRecentHappenings {
/*0x01*/ u8 var01;
/*0x02*/ u16 var02;
/*0x04*/ u16 var04[6];
- /*0x10*/ u8 var10[8];
- /*0x18*/ u8 var18;
+ /*0x10*/ u8 playerName[8];
+ /*0x18*/ u8 language;
u8 pad19[10];
};
@@ -261,7 +261,7 @@ struct TVShowMassOutbreak {
/*0x14*/ u8 level;
/*0x15*/ u8 var15;
/*0x16*/ u16 var16;
- /*0x18*/ u8 var18;
+ /*0x18*/ u8 language;
u8 pad19[11];
};
diff --git a/src/tv.c b/src/tv.c
index bafe9db4d..d303c3fe9 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -184,7 +184,7 @@ void sub_80BE5FC(void)
species = GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, NULL);
tvShow->fanclubLetter.species = species;
sub_80BE160(tvShow);
- tvShow->fanclubLetter.var18 = GAME_LANGUAGE;
+ tvShow->fanclubLetter.language = GAME_LANGUAGE;
}
void sub_80BE65C(void)
@@ -195,11 +195,11 @@ void sub_80BE65C(void)
tvShow->recentHappenings.var00 = TVSHOW_RECENT_HAPPENINGS;
tvShow->recentHappenings.var01 = 1;
- StringCopy(&tvShow->recentHappenings.var10[0], &gSaveBlock2.playerName[0]);
+ StringCopy(tvShow->recentHappenings.playerName, gSaveBlock2.playerName);
tvShow->recentHappenings.var02 = 0;
sub_80BE160(tvShow);
- tvShow->recentHappenings.var18 = GAME_LANGUAGE;
+ tvShow->recentHappenings.language = GAME_LANGUAGE;
}
void sub_80BE6A0(void)
@@ -294,7 +294,7 @@ void sub_80BE778(void)
tvShow->massOutbreak.var16 = 0x01;
sub_80BE160(tvShow);
- tvShow->massOutbreak.var18 = GAME_LANGUAGE;
+ tvShow->massOutbreak.language = GAME_LANGUAGE;
}
}
@@ -1044,17 +1044,17 @@ bool8 sub_80BF77C(u16 value)
return TRUE;
}
-void sub_80BF79C(struct TVShowRecentHappenings *arg0)
+void sub_80BF79C(TVShow *arg0)
{
u8 i = Random() % 6;
while (1) {
if (i == 6)
i = 0;
- if (arg0->var04[i] != 0xFFFF)
+ if (arg0->recentHappenings.var04[i] != 0xFFFF)
break;
i ++;
}
- sub_80EB3FC(gStringVar3, arg0->var04[i]);
+ sub_80EB3FC(gStringVar3, arg0->recentHappenings.var04[i]);
}
u8 sub_80BF7E8(struct TVShowNameRaterShow *arg0)
@@ -1626,6 +1626,101 @@ void TVShowConvertInternationalString(u8 *, u8 *, u8);
void TakeTVShowInSearchOfTrainersOffTheAir(void);
+void DoTVShowPokemonFanClubLetter(void) {
+ TVShow *tvShow;
+ u8 switchval;
+ u16 rval;
+ tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004];
+ gScriptResult = 0;
+ switchval = gUnknown_020387E8;
+ switch (switchval) {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, tvShow->fanclubLetter.playerName, tvShow->fanclubLetter.language);
+ StringCopy(gStringVar2, gSpeciesNames[tvShow->fanclubLetter.species]);
+ gUnknown_020387E8 = 50;
+ break;
+ case 1:
+ rval = (Random() % 4) + 1;
+ if (rval == 1) {
+ gUnknown_020387E8 = 2;
+ } else {
+ gUnknown_020387E8 = rval + 2;
+ }
+ break;
+ case 2:
+ gUnknown_020387E8 = 51;
+ break;
+ case 3:
+ gUnknown_020387E8 += (Random() % 3) + 1;
+ break;
+ case 4:
+ case 5:
+ case 6:
+ sub_80BF79C(tvShow);
+ gUnknown_020387E8 = 7;
+ break;
+ case 7:
+ rval = (Random() % 0x1f) + 0x46;
+ sub_80BF088(2, rval);
+ TVShowDone();
+ break;
+ case 8:
+ case 9:
+ case 10:
+ case 11:
+ case 12:
+ case 13:
+ case 14:
+ case 15:
+ case 16:
+ case 17:
+ case 18:
+ case 19:
+ case 20:
+ case 21:
+ case 22:
+ case 23:
+ case 24:
+ case 25:
+ case 26:
+ case 27:
+ case 28:
+ case 29:
+ case 30:
+ case 31:
+ case 32:
+ case 33:
+ case 34:
+ case 35:
+ case 36:
+ case 37:
+ case 38:
+ case 39:
+ case 40:
+ case 41:
+ case 42:
+ case 43:
+ case 44:
+ case 45:
+ case 46:
+ case 47:
+ case 48:
+ case 49:
+ break;
+ case 50:
+ ConvertEasyChatWordsToString(gStringVar4, tvShow->fanclubLetter.pad04, 2, 2);
+ ShowFieldMessage(gStringVar4);
+ gUnknown_020387E8 = 1;
+ return;
+ case 51:
+ ConvertEasyChatWordsToString(gStringVar4, tvShow->fanclubLetter.pad04, 2, 2);
+ ShowFieldMessage(gStringVar4);
+ gUnknown_020387E8 = 3;
+ return;
+ }
+ ShowFieldMessage(gTVFanClubTextGroup[switchval]);
+}
+
void DoTVShowRecentHappenings(void) {
TVShow *tvShow;
u8 switchval;
@@ -1634,8 +1729,8 @@ void DoTVShowRecentHappenings(void) {
switchval = gUnknown_020387E8;
switch (switchval) {
case 0:
- TVShowConvertInternationalString(gStringVar1, tvShow->recentHappenings.var10, tvShow->recentHappenings.var18);
- sub_80BF79C(&tvShow->recentHappenings);
+ TVShowConvertInternationalString(gStringVar1, tvShow->recentHappenings.playerName, tvShow->recentHappenings.language);
+ sub_80BF79C(tvShow);
gUnknown_020387E8 = 50;
break;
case 1: