Wing Commander II
Reconstructed Win32 source (1996)
Loading...
Searching...
No Matches
replay.c
Go to the documentation of this file.
1/*
2 * Canned-scene playback.
3 *
4 * Retail object 0x446950-0x44716F (link order; see docs/ORDER.md).
5 */
6#include "game.h"
7
8extern unsigned int g_dwCannedSceneSnapshotEnd; /* 0x004961a4 */
9
10/* Function start: 0x446950 */
12{
13 return;
14}
15
16/* Function start: 0x446960 */
23
24/* Function start: 0x44698F */
26{
28 return;
34 if (g_nArcadeState != 4) {
35 force_view(0, 0);
36 SetHudMessageText("END INFLIGHT REPLAY",
37 (unsigned short)g_cRedColour,
38 20);
39 }
41}
42
43/* Function start: 0x446A1D */
46{
47 short obj;
48
49 obj = record->object;
50 g_aShipVelocity[obj] = record->velocity;
51 g_aShipUpVector[obj] = record->up;
52 g_aShipForwardVector[obj] = record->forward;
53 switch (record->mode) {
54 case 0:
55 g_aeSpecialManeuver[obj] = 0;
56 break;
57 case 2:
58 g_asShipManeuver[obj] = 1;
59 break;
60 case 3:
61 g_asShipManeuver[obj] = 0;
62 break;
63 case 1:
64 g_aeSpecialManeuver[obj] = 1;
65 break;
66 case 7:
67 BeginShipCloak(obj);
68 break;
69 case 8:
71 break;
72 case 4:
73 case 5:
74 case 6:
75 break;
76 }
77 return 0x2f;
78}
79
80/* Function start: 0x446B6A */
83{
84 short obj;
85 short kind;
86 signed char owner;
87
88 obj = record->object;
89 kind = record->objectType;
90 owner = record->owner;
91 switch (record->event) {
92 case 0:
93 if (kind == OBJECT_DATA_STAR) {
97 }
98 set_objects_data(obj, kind, owner, 0);
99 g_aShipVelocity[obj] = record->velocity;
100 g_aShipPosition[obj] = record->position;
101 g_asObjectCounter[obj] = record->counter;
102 g_asObjectScale[obj] = record->scale;
103 break;
104 case 1:
105 remove_object(obj);
106 break;
107 case 4:
109 break;
110 case 3:
111 approach(obj);
112 break;
113 case 2:
114 break;
115 }
116 return 0x2a;
117}
118
119/* Function start: 0x446CC2 */
122{
123 signed char sound;
124 short emitterObject;
125 short animationFrame;
126
127 sound = record->character;
128 emitterObject = record->pose;
129 animationFrame = record->animationFrame;
130 PlaySfxWaveFileByNumber(sound, emitterObject, 0);
131 return 0xa;
132}
133
134/* Function start: 0x446D0D */
137{
138 int trackIndex;
139 int command;
140 short enabled;
141
142 trackIndex = record->track;
143 command = record->command;
144 enabled = record->enabled;
145 ProcessMusicScriptCommand(trackIndex, command, enabled);
146 return 0x10;
147}
148
149/* Function start: 0x446D55 */
151{
152 signed char finished;
154
155 finished = 0;
157 return;
160 while (finished == 0) {
161 record = (CannedSceneRecordHeader *)(
162 (unsigned int)(unsigned short)
165 if (record->frame == g_nSpaceFrame) {
166 switch (record->opcode) {
167 case 0:
169 (unsigned short)g_3_nCannedSceneWriteIndex +
172 break;
173 case 1:
175 (unsigned short)g_3_nCannedSceneWriteIndex +
178 break;
179 case 2:
181 (unsigned short)g_3_nCannedSceneWriteIndex +
184 break;
185 case 3:
187 (unsigned short)g_3_nCannedSceneWriteIndex +
190 break;
191 default:
192 break;
193 }
194 } else {
195 finished++;
196 }
197 }
198}
199
200/* Function start: 0x446E9D */
201/* Nothing in the shipped executable calls this. Reads back the state block
202 * that WriteTapeInitialState saves at the start of a recording. */
204{
205 short file;
206
208 if (file == -1)
210 ReadDataFileAtOffset((unsigned short)file,
215 CloseDataFile((unsigned short)file);
216}
217
218/* Function start: 0x446F14 */
220{
221 short file;
222
224 if (file == -1)
226 ReadDataFileAtOffset((unsigned short)file,
230 ReadDataFileAtOffset((unsigned short)file,
235 (unsigned short)file, g_4_nCannedSceneFileOffset,
236 (unsigned int)(unsigned short)g_3_nCannedSceneWriteIndex,
239 (unsigned short)g_3_nCannedSceneWriteIndex;
240 CloseDataFile((unsigned short)file);
241}
242
243/* Function start: 0x446FC8 */
245{
246 InputEventState nextEvent;
247 short keyChanged;
248 short eventType;
249
252 eventType = GetNextInputEvent(&nextEvent);
253 if (eventType == 4) {
254 g_cCurrentKey = (signed char)nextEvent.status;
255 if (g_cPreviousKey !=
257 keyChanged = 1;
258 else
259 keyChanged = 0;
260 switch (g_cCurrentKey) {
261 case 0x34:
262 break;
263 case 0x33:
264 break;
265 case 0x3b:
266 new_view(0, 0);
267 break;
268 case 0x3c:
269 new_view(2, 0);
270 break;
271 case 0x3d:
272 new_view(1, 0);
273 break;
274 case 0x3e:
275 new_view(3, 0);
276 break;
277 case 0x3f:
278 new_view(5, 0);
279 break;
280 case 0x40:
281 new_view(15, 0);
282 break;
283 case 0x41:
284 if (g_acShipTarget[0] != -1)
285 new_view(8, 0);
286 break;
287 case 0x43:
288 if (keyChanged != 0) {
290 force_view(5, (short)g_cViewObject);
291 }
292 break;
293 }
294 }
295}
unsigned short RestoreCannedSceneObjectState(CannedSceneObjectStateRecord *record)
Definition replay.c:44
short ServiceInputDevices(short deviceMask)
Definition eventmgr.c:2071
void remove_object(short obj)
Definition geom.c:858
unsigned short ApplyCannedSceneObjectEventRecord(CannedSceneObjectEventRecord *record)
Definition replay.c:81
void FinishCannedScenePlayback(void)
Definition replay.c:25
int ReadDataFileAtOffset(unsigned short fd, int offset, unsigned int length, void *data)
Definition datafile.c:60
void ReportFatalErrorCode(const char *errorCode)
Definition message.c:29
void auto_pilot_sequence(void)
Definition auto.c:100
void BeginShipCloak(short ship)
Definition fl.c:92
void SelectNextExternalViewObject(void)
Definition main.c:261
void ResetShipCloakState(short ship)
Definition fl.c:105
void ReadTapeInitialState(void)
Definition replay.c:203
void force_view(int view, short obj)
Definition spc.c:423
void ProcessCannedSceneInput(void)
Definition replay.c:244
short OpenDataFileOrDie(const char *path)
Definition datafile.c:13
void approach(short obj)
Definition fields.c:324
void LoadCannedScenePlaybackBuffer(void)
Definition replay.c:219
void BeginInflightReplayHook(void)
Definition replay.c:11
void ClearViewport(Viewport *viewport, short colour)
Definition gr.c:1027
unsigned short ProcessMusicScriptCommand(int track, int command, short enabled)
Definition music.c:89
void SetHudMessageText(char *text, unsigned short colour, unsigned short duration)
Definition cockpt.c:2742
void CloseDataFile(unsigned short fd)
Definition datafile.c:22
void PlaySfxWaveFileByNumber(int soundNumber, int sourceObject, int looping)
Definition music.c:490
unsigned int new_view(int view, short obj)
Definition spc.c:451
unsigned short ApplyCannedSceneMusicRecord(CannedSceneMusicCommandRecord *record)
Definition replay.c:135
void set_objects_data(short obj, short type, short owner, short matchObjectClass)
Definition ship.c:347
void ApplyCannedSceneFrameEvents(void)
Definition replay.c:150
DwordPtr IdentityDword(DwordPtr value)
Definition eventmgr.c:1491
int GetNextInputEvent(InputEventState *event)
Definition eventmgr.c:800
void ResetCannedScenePlaybackBuffer(void)
Definition replay.c:17
unsigned short ApplyCannedSceneSoundRecord(CannedSceneBriefingCharacterRecord *record)
Definition replay.c:120
Shared Win32 declarations, types and library interfaces.
unsigned int DwordPtr
Definition game.h:45
#define CANNED_SCENE_SNAPSHOT_BYTES
Definition game.h:61
@ OBJECT_DATA_STAR
Definition game_data.h:458
short g_78_bHighMemoryBuffersSetState
Definition cockpt.c:3839
signed char g_acShipTarget[16]
Definition viewrect.c:167
short g_nCannedSceneRecordedFrameCountNumber
Definition taperec.c:324
DwordPtr g_dwHighMemoryParagraphValue
Definition taperec.c:327
signed char g_cViewObject
Definition viewrect.c:34
FixedVector g_aShipForwardVector[SPACE_OBJECT_COUNT]
Definition viewrect.c:107
short g_aeSpecialManeuver[12]
Definition viewrect.c:141
unsigned short g_asObjectScale[SPACE_OBJECT_COUNT]
Definition viewrect.c:115
short g_bViewportDirty
Definition main.c:1942
short g_nSpaceFrame
Definition viewrect.c:32
signed char g_cPreviousKey
Definition viewrect.c:30
short g_3_nCannedSceneWriteIndex
Definition taperec.c:323
int g_nArcadeState
Definition main.c:1938
unsigned char g_cRedColour
Definition startup.c:548
Viewport g_27_stViewScratchInfo
Definition cockpt.c:3841
unsigned char g_bPrimaryViewBufferColour
Definition startup.c:545
FixedVector g_aShipPosition[SPACE_OBJECT_COUNT]
Definition viewrect.c:108
FixedVector g_aShipUpVector[SPACE_OBJECT_COUNT]
Definition viewrect.c:106
short g_asShipManeuver[12]
Definition viewrect.c:169
FixedVector g_aShipVelocity[SPACE_OBJECT_COUNT]
Definition viewrect.c:109
int g_4_nCannedSceneFileOffset
Definition taperec.c:325
unsigned int g_dwCannedSceneSnapshotStart
Definition viewrect.c:31
void * g_1_pCannedSceneStateBlockRef
Definition taperec.c:326
signed char g_cCurrentKey
Definition viewrect.c:29
void * g_pHighMemoryBlockA
Definition taperec.c:8
char g_szCannedSceneTapeFile[9]
Definition taperec.c:11
short g_nCannedSceneSegmentEndFrame
Definition taperec.c:13
void * g_pHighMemoryBlockB
Definition taperec.c:10
short g_asObjectCounter[SPACE_OBJECT_COUNT]
Definition viewrect.c:110
unsigned int g_dwCannedSceneSnapshotEnd
Definition viewrect.c:200
short status
Definition game.h:213