1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
|
#ifndef M_DEMO_H
#define M_DEMO_H
#include "ultra64.h"
#include "color.h"
#include "m_scene.h"
struct Actor;
struct Game_Play;
#define DEMO_ORDER_VALUE_MAX 10
#define DEMO_REQUEST_MAX 32
#define DEMO_MSG_PRIORITY 5
#define DEMO_CAMERA_PRIORITY 6
#define DEMO_WINDOW_COLOR_R 235
#define DEMO_WINDOW_COLOR_G 255
#define DEMO_WINDOW_COLOR_B 235
#define DEMO_WINDOW_COLOR_A 255
typedef enum DemoState {
DEMO_STATE_WAIT,
DEMO_STATE_READY,
DEMO_STATE_RUN,
DEMO_STATE_STOP = 9,
DEMO_STATE_MAX
} DemoState;
typedef enum DemoDirection {
DEMO_DIRECT_N,
DEMO_DIRECT_NE,
DEMO_DIRECT_E,
DEMO_DIRECT_SE,
DEMO_DIRECT_S,
DEMO_DIRECT_SW,
DEMO_DIRECT_W,
DEMO_DIRECT_NW,
DEMO_DIRECT_MAX
} DemoDirection;
typedef enum DemoType {
DEMO_TYPE_NONE,
DEMO_TYPE_SCROLL,
DEMO_TYPE_EXITSCENE,
DEMO_TYPE_DOOR,
DEMO_TYPE_4,
DEMO_TYPE_SCROLL2,
DEMO_TYPE_DOOR2,
DEMO_TYPE_TALK,
DEMO_TYPE_SPEAK,
DEMO_TYPE_REPORT,
DEMO_TYPE_OUTDOOR,
DEMO_TYPE_B,
DEMO_TYPE_EVENTMSG,
DEMO_TYPE_D,
DEMO_TYPE_MAX
} DemoType;
typedef enum DemoOrderType {
DEMO_ORDER_PLAYER,
DEMO_ORDER_1,
DEMO_ORDER_2,
DEMO_ORDER_3,
DEMO_ORDER_NPC0,
DEMO_ORDER_NPC1,
DEMO_ORDER_NPC2,
DEMO_ORDER_7,
DEMO_ORDER_8,
DEMO_ORDER_QUEST,
DEMO_ORDER_MAX
} DemoOrderType;
typedef void (*DemoRequestFunc)(struct Actor*);
typedef struct DemoClip {
void* demoActor;
s32 type;
} DemoClip;
typedef enum DemoClipType {
DEMO_CLIP_TYPE_NONE,
DEMO_CLIP_TYPE_INTRO_DEMO,
DEMO_CLIP_TYPE_RIDE_OFF_DEMO,
DEMO_CLIP_TYPE_PRESENT_DEMO,
DEMO_CLIP_TYPE_BOAT_DEMO,
DEMO_CLIP_TYPE_RESET_DEMO,
DEMO_CLIP_TYPE_MAX
} DemoClipType;
typedef struct DemoRequest {
struct Actor* actor;
s32 type;
DemoRequestFunc proc;
f32 talkWeight;
} DemoRequest;
typedef struct DemoDoorData {
s32 type;
struct houseInfo{
f32 size;
s32 direct;
} houseInfo;
} DemoDoorData;
typedef struct DemoEMsgData {
s32 msgNo;
Color_RGBA8 windowColor;
s32 msgDelayTimer;
s32 sceneDelayTimer;
DoorData doorData;
UNK_TYPE1 unk_24[0x4];
} DemoEMsgData;
typedef struct DemoTalkData {
s32 msgNo;
s32 turn;
s32 useZoomSound;
s32 displayName;
s32 changePlayer;
s32 returnDemoWait;
Color_RGBA8 windowColor;
u8 actorSavedMass;
} DemoTalkData;
typedef struct DemoData {
struct Actor* speaker;
struct Actor* listener;
s32 isAbleSpeaker;
s32 isAbleListener;
u16 orderData[DEMO_ORDER_MAX][DEMO_ORDER_VALUE_MAX];
s8 changePlayerDestiny;
s32 state;
DemoRequest current;
DemoRequest request[DEMO_REQUEST_MAX];
s32 requestId;
s32 priorityType;
s32 cameraType;
s32 keepCameraType;
union {
DemoDoorData door;
DemoEMsgData emsg;
DemoTalkData talk;
} data;
} DemoData;
extern DemoData* demo;
struct Actor* mDemo_Get_talk_actor(void);
void mDemo_Set_OrderValue(s32 type, s32 idx, u16 value);
u16 mDemo_Get_OrderValue(s32 type, s32 idx);
void mDemo_Init_OrderValue(void);
void mDemo_Set_msg_num(s32 msgNo);
s32 mDemo_Get_Talk_Actors(struct Actor** speaker, struct Actor** listener);
void mDemo_Set_change_player_destiny(s8 destiny);
s32 mDemo_Get_change_player_destiny(void);
void mDemo_Clear_change_player_destiny(void);
void mDemo_Copy_change_player_destiny(void);
void mDemo_Set_use_zoom_sound(u8 useZoomSound);
s32 mDemo_Get_use_zoom_sound(void);
void mDemo_Set_talk_display_name(s8 displayName);
s32 mDemo_Get_talk_display_name(void);
void mDemo_Set_talk_change_player(u8 changePlayer);
s32 mDemo_Get_talk_change_player(void);
void mDemo_Set_talk_return_demo_wait(u8 returnDemoWait);
s32 mDemo_Get_talk_return_demo_wait(void);
void mDemo_Set_talk_turn(u8 turn);
s32 mDemo_Get_talk_turn(void);
void mDemo_Set_talk_window_color(Color_RGBA8* windowColor);
Color_RGBA8* mDemo_Get_talk_window_color_p(void);
void mDemo_Set_camera(u8 cameraType);
s32 mDemo_Get_camera(void);
s32 mDemo_CheckDemoType(void);
s32 change_camera(s32 cameraType);
s32 set_speak_default(void);
s32 set_report_default(void);
s32 set_talk_default(void);
s32 wait_talk_start(void);
s32 wait_talk_end(void);
s32 wait_scroll_start(void);
s32 set_door_default(void);
s32 wait_door_start(void);
s32 mDemo_Set_house_info(f32 size, s32 direct);
s32 wait_door2_start(void);
s16 get_title_no_for_event(s16 event);
s32 set_emsg_default(void);
s32 wait_emsg_start(void);
s32 wait_emsg_end(void);
f32 weight_of_talk_position(struct Actor* actor);
s32 allways_true(void);
s32 allways_false(void);
s32 scroll_check(void);
s32 scroll2_check(void);
s32 scroll3_check(void);
s32 door_check(void);
s32 outdoor_check(void);
s32 talk_check(void);
s32 speak_check(void);
s32 choice_demo(void);
void emsg_set(struct Actor* actor);
void init_demo(void);
void run_demo(void);
void main_proc(void);
void mDemo_stock_clear(void);
s32 mDemo_Request(s32 type, struct Actor* actor, DemoRequestFunc request);
s32 mDemo_Check(s32 type, struct Actor* actor);
s32 mDemo_Start(struct Actor* actor);
s32 mDemo_Check_and_Go(s32 type, struct Actor* actor);
s32 mDemo_End(struct Actor* actor);
void mDemo_Main(struct Game_Play* play);
void mDemo_Init(struct Game_Play* play);
s32 mDemo_CheckDemo(void);
s32 mDemo_CheckDemo4Event(void);
void mDemo_Set_SpeakerAble(void);
void mDemo_Set_ListenAble(void);
void mDemo_Unset_SpeakerAble(void);
void mDemo_Unset_ListenAble(void);
s32 mDemo_Check_SpeakerAble(void);
s32 mDemo_Check_ListenAble(void);
int mDemo_Check_DiffAngle_forTalk(s16 diffAngle);
void mDemo_KeepCamera(s32 cameraType);
#endif
|