Skip to content

Commit 6c0ca86

Browse files
authored
Document TV broadcast commands and some internals (#724)
1 parent 30946a6 commit 6c0ca86

File tree

78 files changed

+1492
-1218
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

78 files changed

+1492
-1218
lines changed

asm/macros/scrcmd.inc

Lines changed: 73 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
#include "constants/map_object.h"
4343
#include "constants/savedata/vars_flags.h"
4444
#include "constants/scrcmd.h"
45+
#include "constants/tv_broadcast.h"
4546
#include "constants/battle.h"
4647

4748
#include "macros/movement.inc"
@@ -2883,10 +2884,10 @@
28832884
.short \arg1
28842885
.endm
28852886

2886-
.macro ScrCmd_1FB arg0, arg1
2887+
.macro ExternalMessage bankID, messageID
28872888
.short 507
2888-
.short \arg0
2889-
.short \arg1
2889+
.short \bankID
2890+
.short \messageID
28902891
.endm
28912892

28922893
.macro ScrCmd_Unused_1FC arg0, arg1, arg2, arg3
@@ -3212,42 +3213,100 @@
32123213
.short \destVarID
32133214
.endm
32143215

3215-
.macro ScrCmd_235 arg0, arg1=0, arg2=0, arg3=0
3216+
.macro CallTVBroadcast callID, arg1=0, arg2=0, arg3=0
32163217
.short 565
3217-
.short \arg0
3218-
.if \arg0 == 0 || \arg0 == 6
3218+
.short \callID
3219+
.if \callID == 0 || \callID == 6
32193220
.short \arg1
32203221
.else
3221-
.if \arg0 == 1 || \arg0 == 3 || \arg0 == 5
3222+
.if \callID == 1 || \callID == 3 || \callID == 5
32223223
.short \arg1
32233224
.short \arg2
32243225
.short \arg3
32253226
.else
3226-
.if \arg0 == 4
3227+
.if \callID == 4
32273228
.short \arg1
32283229
.short \arg2
32293230
.endif
32303231
.endif
32313232
.endif
32323233
.endm
32333234

3235+
.macro CheckBroadcastStatus destVar
3236+
CallTVBroadcast TV_BROADCAST_CALL_CHECK_STATUS, \destVar
3237+
.endm
3238+
3239+
.macro LoadTVCommercial bankDestVar, messageDestVar
3240+
CallTVBroadcast TV_BROADCAST_CALL_LOAD_COMMERCIAL, \bankDestVar, \messageDestVar
3241+
.endm
3242+
3243+
.macro LoadTVFramingMessage framingMessageType, bankDestVar, messageDestVar
3244+
CallTVBroadcast TV_BROADCAST_CALL_LOAD_FRAMING_MESSAGE, \framingMessageType, \bankDestVar, \messageDestVar
3245+
.endm
3246+
3247+
.macro LoadTVSegment segmentID, bankDestVar, messageDestVar
3248+
CallTVBroadcast TV_BROADCAST_CALL_LOAD_SEGMENT \segmentID, \bankDestVar, \messageDestVar
3249+
.endm
3250+
3251+
.macro LoadTVGreeting bankDestVar, messageDestVar
3252+
LoadTVFramingMessage TV_PROGRAM_FRAMING_MESSAGE_GREETING \bankDestVar, \messageDestVar
3253+
.endm
3254+
3255+
.macro LoadTVSegmentIntro bankDestVar, messageDestVar
3256+
LoadTVFramingMessage TV_PROGRAM_FRAMING_MESSAGE_SEGMENT_INTRO \bankDestVar, \messageDestVar
3257+
.endm
3258+
3259+
.macro LoadTVFarewell bankDestVar, messageDestVar
3260+
LoadTVFramingMessage TV_PROGRAM_FRAMING_MESSAGE_FAREWELL \bankDestVar, \messageDestVar
3261+
.endm
3262+
3263+
.macro LoadTVFarewellExtended bankDestVar, messageDestVar
3264+
LoadTVFramingMessage TV_PROGRAM_FRAMING_MESSAGE_FAREWELL_EXTENDED \bankDestVar, \messageDestVar
3265+
.endm
3266+
3267+
.macro GetNextTVSegmentID destVar
3268+
CallTVBroadcast TV_BROADCAST_CALL_GET_NEXT_SEGMENT_ID, \destVar
3269+
.endm
3270+
3271+
.macro FinishTVProgram
3272+
CallTVBroadcast TV_BROADCAST_CALL_FINISH_PROGRAM
3273+
.endm
3274+
3275+
.macro TVBroadcastDummy arg0, arg1, arg2
3276+
Dummy1F9 \arg0
3277+
.ifnb \arg1
3278+
Dummy1F9 \arg1
3279+
.endif
3280+
.ifnb \arg2
3281+
Dummy1F9 \arg2
3282+
.endif
3283+
.endm
3284+
32343285
.macro ScrCmd_236 arg0
32353286
.short 566
32363287
.short \arg0
32373288
.endm
32383289

3239-
.macro ScrCmd_237 arg0, arg1, arg2, arg3
3290+
.macro CallTVInterview callID, interviewSegmentID, arg2, arg3
32403291
.short 567
3241-
.short \arg0
3242-
.short \arg1
3292+
.short \callID
3293+
.short \interviewSegmentID
32433294
.short \arg2
32443295
.short \arg3
32453296
.endm
32463297

3247-
.macro ScrCmd_238 arg0, arg1
3298+
.macro LoadTVInterviewMessage interviewSegmentID, bankDestVar, messageDestVar
3299+
CallTVInterview TV_INTERVIEW_CALL_LOAD_MESSAGE, \interviewSegmentID, \bankDestVar, \messageDestVar
3300+
.endm
3301+
3302+
.macro SaveTVInterviewResponse interviewSegmentID, customWordMessage, unused=VAR_0x8005
3303+
CallTVInterview TV_INTERVIEW_CALL_SAVE_RESPONSE, \interviewSegmentID, \customWordMessage, \unused
3304+
.endm
3305+
3306+
.macro CheckTVInterviewEligible interviewSegmentID, destVar
32483307
.short 568
3249-
.short \arg0
3250-
.short \arg1
3308+
.short \interviewSegmentID
3309+
.short \destVar
32513310
.endm
32523311

32533312
.macro ScrCmd_239 arg0

generated/game_records.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ RECORD_UNK_044
4646
RECORD_UNK_045
4747
RECORD_UNK_046
4848
RECORD_SPHERES_BURIED
49-
RECORD_UNK_048
49+
RECORD_WATCHED_TV
5050
RECORD_POKEMON_NICKNAMED
5151
RECORD_UNK_050
5252
RECORD_UNK_051

generated/text_banks.txt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -413,11 +413,11 @@ TEXT_BANK_UNK_0411
413413
TEXT_BANK_SPECIES_NAME
414414
TEXT_BANK_SPECIES_NAME_WITH_ARTICLES
415415
TEXT_BANK_MONTH_NAMES
416-
TEXT_BANK_UNK_0415
417-
TEXT_BANK_UNK_0416
418-
TEXT_BANK_UNK_0417
419-
TEXT_BANK_UNK_0418
420-
TEXT_BANK_UNK_0419
416+
TEXT_BANK_TV_PROGRAMS_INTERVIEWS
417+
TEXT_BANK_TV_PROGRAMS_TRAINER_SIGHTINGS
418+
TEXT_BANK_TV_PROGRAMS_RECORDS
419+
TEXT_BANK_TV_PROGRAMS_SINNOH_NOW
420+
TEXT_BANK_TV_PROGRAMS_VARIETY_HOUR
421421
TEXT_BANK_UNK_0420
422422
TEXT_BANK_MYSTERY_GIFT_MENU
423423
TEXT_BANK_NAMING_SCREEN
@@ -619,9 +619,9 @@ TEXT_BANK_NPC_TRAINER_MESSAGES
619619
TEXT_BANK_NPC_TRAINER_NAMES
620620
TEXT_BANK_TRAINER_CLASS_NAMES
621621
TEXT_BANK_TRAINER_CLASS_NAMES_WITH_ARTICLES
622-
TEXT_BANK_UNK_0621
623-
TEXT_BANK_UNK_0622
624-
TEXT_BANK_UNK_0623
622+
TEXT_BANK_TV_REPORTER_INTERVIEWS
623+
TEXT_BANK_TV_PROGRAMS
624+
TEXT_BANK_TV_COMMERCIALS
625625
TEXT_BANK_POKEMON_TYPE_NAMES
626626
TEXT_BANK_UNDERGROUND
627627
TEXT_BANK_UNDERGROUND_GOODS

generated/trainer_score_events.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
TRAINER_SCORE_EVENT_BERRY_HARVESTED
22
TRAINER_SCORE_EVENT_HONEY_USED
33
TRAINER_SCORE_EVENT_UNK_02
4-
TRAINER_SCORE_EVENT_UNK_03
4+
TRAINER_SCORE_EVENT_TV_INTERVIEW_GIVEN
55
TRAINER_SCORE_EVENT_UNK_04
66
TRAINER_SCORE_EVENT_UNK_05
77
TRAINER_SCORE_EVENT_UNK_06

include/constants/rtc.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33

44
#include "generated/time_of_day.h"
55

6+
#define HOURS_PER_DAY 24
7+
68
enum MonthOfYear {
79
MONTH_JAN = 1,
810
MONTH_FEB,

include/constants/tv_broadcast.h

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
#ifndef POKEPLATINUM_CONSTANTS_TV_BROADCAST_H
2+
#define POKEPLATINUM_CONSTANTS_TV_BROADCAST_H
3+
4+
#define TV_BROADCAST_CALL_CHECK_STATUS 0
5+
#define TV_BROADCAST_CALL_LOAD_FRAMING_MESSAGE 1
6+
#define TV_BROADCAST_CALL_FINISH_PROGRAM 2
7+
#define TV_BROADCAST_CALL_LOAD_SEGMENT 3
8+
#define TV_BROADCAST_CALL_LOAD_COMMERCIAL 4
9+
#define TV_BROADCAST_CALL_UNUSED 5
10+
#define TV_BROADCAST_CALL_GET_NEXT_SEGMENT_ID 6
11+
12+
#define TV_BROADCAST_STATUS_FINISHED 0
13+
#define TV_BROADCAST_STATUS_FINISH 1
14+
#define TV_BROADCAST_STATUS_BEGIN 2
15+
#define TV_BROADCAST_STATUS_CONTINUE 3
16+
17+
#define TV_INTERVIEW_CALL_LOAD_MESSAGE 0
18+
#define TV_INTERVIEW_CALL_SAVE_RESPONSE 1
19+
20+
#define TV_PROGRAM_TYPE_INTERVIEWS 1
21+
#define TV_PROGRAM_TYPE_TRAINER_SIGHTINGS 2
22+
#define TV_PROGRAM_TYPE_RECORDS 3
23+
#define TV_PROGRAM_TYPE_SINNOH_NOW 4
24+
#define TV_PROGRAM_TYPE_VARIETY_HOUR 5
25+
#define TV_PROGRAM_TYPE_MAX 6
26+
27+
#define TV_PROGRAM_FRAMING_MESSAGE_GREETING 0
28+
#define TV_PROGRAM_FRAMING_MESSAGE_SEGMENT_INTRO 1
29+
#define TV_PROGRAM_FRAMING_MESSAGE_FAREWELL 2
30+
#define TV_PROGRAM_FRAMING_MESSAGE_FAREWELL_EXTENDED 3
31+
32+
#define TV_PROGRAM_TYPE_INTERVIEWS_NUM_SEGMENTS 19
33+
#define TV_PROGRAM_TYPE_TRAINER_SIGHTINGS_NUM_SEGMENTS 26
34+
#define TV_PROGRAM_TYPE_RECORDS_NUM_SEGMENTS 11
35+
#define TV_PROGRAM_TYPE_SINNOH_NOW_NUM_SEGMENTS 17
36+
#define TV_PROGRAM_TYPE_VARIETY_HOUR_NUM_SEGMENTS 8
37+
38+
#define TV_PROGRAM_SEGMENT_BATTLE_TOWER_CORNER 2
39+
#define TV_PROGRAM_SEGMENT_YOUR_POKEMON_CORNER 4
40+
#define TV_PROGRAM_SEGMENT_THE_POKETCH_WATCH 6
41+
#define TV_PROGRAM_SEGMENT_CONTEST_HALL 7
42+
#define TV_PROGRAM_SEGMENT_RIGHT_ON_PHOTO_CORNER 9
43+
#define TV_PROGRAM_SEGMENT_STREET_CORNER_PERSONALITY_CHECKUP 10
44+
#define TV_PROGRAM_SEGMENT_THREE_CHEERS_FOR_POFFIN_CORNER 11
45+
#define TV_PROGRAM_SEGMENT_AMITY_SQUARE_WATCH 13
46+
#define TV_PROGRAM_SEGMENT_BATTLE_FRONTIER_FRONTLINE_NEWS_SINGLE 14
47+
#define TV_PROGRAM_SEGMENT_IN_YOUR_FACE_INTERVIEW_QUESTION_1 15
48+
#define TV_PROGRAM_SEGMENT_IN_YOUR_FACE_INTERVIEW_QUESTION_2 16
49+
#define TV_PROGRAM_SEGMENT_IN_YOUR_FACE_INTERVIEW_QUESTION_3 17
50+
#define TV_PROGRAM_SEGMENT_IN_YOUR_FACE_INTERVIEW_QUESTION_4 18
51+
#define TV_PROGRAM_SEGMENT_BATTLE_FRONTIER_FRONTLINE_NEWS_MULTI 19
52+
53+
#endif // POKEPLATINUM_CONSTANTS_TV_BROADCAST_H

include/overlay006/ov6_022465FC.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55

66
#include "string_template.h"
77

8-
void ov6_022465FC(FieldSystem *fieldSystem);
9-
int ov6_0224660C(FieldSystem *fieldSystem);
8+
void FieldSystem_SetTVProgramFinished(FieldSystem *fieldSystem);
9+
int TVBroadcast_GetPendingBroadcastType(FieldSystem *fieldSystem);
1010
int ov6_022468B0(FieldSystem *fieldSystem, BOOL param1, BOOL param2);
1111
int ov6_02246920(FieldSystem *fieldSystem);
12-
int ov6_02246978(FieldSystem *fieldSystem, int param1);
13-
BOOL ov6_022469E0(FieldSystem *fieldSystem, StringTemplate *param1, int param2, u16 *param3, u16 *param4);
12+
int TVBroadcast_GetProgramFramingMessage(FieldSystem *fieldSystem, int framingMessageType);
13+
BOOL TVBroadcast_LoadSegmentMessage(FieldSystem *fieldSystem, StringTemplate *template, int segmentID, u16 *bankDestVar, u16 *messageDestVar);
1414

1515
#endif // POKEPLATINUM_OV6_022465FC_H
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
1-
#ifndef POKEPLATINUM_UNK_02048DD8_H
2-
#define POKEPLATINUM_UNK_02048DD8_H
1+
#ifndef POKEPLATINUM_SCRCMD_TV_BROADCAST_H
2+
#define POKEPLATINUM_SCRCMD_TV_BROADCAST_H
33

44
#include "field_script_context.h"
55

6-
BOOL ScrCmd_235(ScriptContext *param0);
6+
BOOL ScrCmd_CallTVBroadcast(ScriptContext *param0);
77
BOOL ScrCmd_236(ScriptContext *param0);
88
BOOL ScrCmd_2B8(ScriptContext *param0);
99
BOOL ScrCmd_30B(ScriptContext *param0);
1010
BOOL ScrCmd_30C(ScriptContext *param0);
1111
BOOL ScrCmd_30D(ScriptContext *param0);
12-
BOOL ScrCmd_237(ScriptContext *param0);
13-
BOOL ScrCmd_238(ScriptContext *param0);
12+
BOOL ScrCmd_CallTVInterview(ScriptContext *ctx);
13+
BOOL ScrCmd_CheckTVInterviewEligible(ScriptContext *ctx);
1414
BOOL ScrCmd_27C(ScriptContext *param0);
1515
BOOL ScrCmd_31B(ScriptContext *param0);
1616
BOOL ScrCmd_329(ScriptContext *param0);
1717

18-
#endif // POKEPLATINUM_UNK_02048DD8_H
18+
#endif // POKEPLATINUM_SCRCMD_TV_BROADCAST_H

include/script_manager.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,8 @@ enum ScriptContextType {
9494
#define SCRIPT_ID_OFFSET_INIT_NEW_GAME 9600
9595
#define SCRIPT_ID_OFFSET_FOLLOWER_PARTNERS 9700
9696
#define SCRIPT_ID_OFFSET_FIELD_MOVES 10000
97+
#define SCRIPT_ID_OFFSET_TV_BROADCAST 10100
98+
#define SCRIPT_ID_OFFSET_TV_REPORTER_INTERVIEWS 10150
9799
#define SCRIPT_ID_POKEMON_CENTER_DAILY_TRAINERS 10400
98100

99101
#define FLAG_OFFSET_HIDDEN_ITEMS 730

include/struct_defs/struct_0202440C.h

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
#ifndef POKEPLATINUM_STRUCT_0202440C_H
22
#define POKEPLATINUM_STRUCT_0202440C_H
33

4+
#include "constants/tv_broadcast.h"
5+
46
#include "struct_defs/struct_0202E768.h"
57
#include "struct_defs/struct_0202E794.h"
68
#include "struct_defs/struct_0202E7D8.h"
@@ -13,10 +15,12 @@
1315
#include "struct_defs/struct_0202E828.h"
1416
#include "struct_defs/struct_0202E834.h"
1517

18+
#define TV_BROADCAST_MAX_PLAYED_SEGMENTS 4
19+
1620
typedef struct TVBroadcast {
17-
u8 unk_00[4];
18-
int unk_04;
19-
u8 unk_08;
21+
u8 playedSegments[TV_BROADCAST_MAX_PLAYED_SEGMENTS];
22+
int timeSlotMinutesRemaining;
23+
u8 programFinished;
2024
UnkStruct_0202E768 unk_0C[4];
2125
UnkStruct_0202E768 unk_C4[4];
2226
UnkStruct_0202E768 unk_17C[4];

0 commit comments

Comments
 (0)