Wing Commander
Reconstructed Win32 source (1996)
Loading...
Searching...
No Matches
init.c
Go to the documentation of this file.
1/**
2 * @file
3 * @ingroup shell
4 * @brief Game startup, graphics defaults and Origin FX initialization.
5 *
6 * Address range 4219c0-42200f. The initialized colour and memory tables
7 * precede this unit's startup string pool.
8 */
9#include "wc1.h"
10
11short bSlowSceneAnimation = 0; /* 0x00469998 */
12unsigned char cBlackColour = 0; /* 0x0046999c */
13unsigned char cViewportClearColour = 15; /* 0x004699a0 */
14unsigned char cBlueColour = 0x25; /* 0x004699a4 */
15unsigned char cYellowColour = 0x47; /* 0x004699a8 */
16unsigned char cRedColour = 0x50; /* 0x004699ac */
17unsigned char cDarkGreenColour = 0xaa; /* 0x004699b0 */
18unsigned char cPrimaryTextColour = 0xa6; /* 0x004699b4 */
19unsigned char cOrangeColour = 0x85; /* 0x004699b8 */
20unsigned char cDarkBlueColour = 0x27; /* 0x004699bc */
21unsigned char cDarkGreyColour = 7; /* 0x004699c0 */
22unsigned char cLightGreyColour = 0x0b; /* 0x004699c4 */
23unsigned char cMagentaColour = 0xb6; /* 0x004699c8 */
24unsigned char cDefaultTextColour = 0xa8; /* 0x004699cc */
25unsigned char cBrownColour = 0xfd; /* 0x004699d0 */
26unsigned char cAsteroidColour = 0xf5; /* 0x004699d4 */
27unsigned char cPrimaryViewBufferColour = 0xbf; /* 0x004699d8 */
28unsigned char abLegacyVideoModeColours[14] = {
29 9, 14, 4, 2, 10, 12, 15, 8, 7, 5, 2, 6, 7, 0
30}; /* 0x004699e0 */
32 0x25, 0xb6, 0x9a, 0x50, 0x94, 0x85, 0x27, 0xa6,
33 0xfd, 0x47, 0xaa, 0x0b
34}; /* 0x004699f0 */
36 0x09, 0x0d, 0x03, 0x04, 0x0b, 0x0c, 0x01, 0x0a,
37 0x06, 0x0e, 0x02, 0x07
38}; /* 0x00469a08 */
39int bGraphicsActive = 0; /* 0x00469a20 */
41 "You do not have enough memory to play Wing Commander.\n"
42 "Refer to your reference guide for assistance."; /* 0x00469a28 */
44 280000, 260000, 280000, 0
45}; /* 0x00469a90 */
47 306000, 286000, 306000, 0
48}; /* 0x00469aa0 */
50 258000, 238000, 258000
51}; /* 0x00469ab0 */
52
53
54/* Linker commons defined here; LINK orders them by identifier hash. */
55short asCollisionTimes[10]; /* 0x005a7ca0 */
57short nWingmanKillCount; /* 0x005a7cb8 */
58short nLogicLastFoundShipValue; /* 0x005a7cba */
59short asCollisionPartnerTable[10]; /* 0x005a7cc0 */
60
61/* Function start: 0x4219C0 */
62unsigned int LoadGamePaletteFile(void)
63{
64 short index;
65
67 switch (nVideoMode) {
68 case 9:
69 case 13:
70 for (index = 0; index < sizeof(abLegacyVideoModeColours); index++)
71 (&cBlueColour)[index] = abLegacyVideoModeColours[index];
72 for (index = 0;
73 index < sizeof(asLegacyConversationTextColours) /
75 index++)
78 return 0;
79 case 0x13:
80 LoadPaletteTripletsFile("game.pal");
83 return 0;
84 }
85 return 0;
86}
87
88/* Function start: 0x421A40 */
89unsigned int EMShutDown(void)
90{
91 if (nEventManagerActive != 0)
93 return 0;
94}
95
96/* Function start: 0x421A60 */
98{
100
101 DAT_0059a9f0 = 20;
102 nInputTickScale = 20;
104 cursor->shape = pMouseCursorResource =
105 FetchDiskPacketRetrying(14, 0, 0x10);
106 cursor->frame = 0;
107 cursor->viewport = &stScreenView;
108 return 0;
109}
110
111/* Function start: 0x421AB0 */
123
124/* Function start: 0x421B10 */
125unsigned int LoadOriginFxDrivers(void)
126{
127 int memoryThreshold;
128 int videoModeMemory;
129
130 memoryThreshold = 100000;
131 chdir("gamedat");
135 SystemDebugPrintf("No ");
136 SystemDebugPrintf("Expanded Memory Detected.\n");
137 bGraphicsActive = 0;
140 exit_squadron("Failed to load Origin-FX drivers");
142 LoadJoystickCalibrationFile(9, 9, 1, 1);
144 EMStartUp();
147 if (nMusicPlaybackMode != 0 && nMusicPlaybackMode != 3)
148 memoryThreshold = 210000;
150 if ((int)GetFixedOneMillionThunk(4) > memoryThreshold) {
152 (int)dwOriginalFreeMem -
155 if (nAvailableGameMemory < 0)
157 nMemoryConfig = 2;
158 SystemDebugPrintf("Expanded Memory fully used.\n");
159 } else {
161 (int)dwOriginalFreeMem -
164 if (nAvailableGameMemory < 0)
166 nMemoryConfig = 0;
167 if (nMusicPlaybackMode == 1 || nMusicPlaybackMode == 2) {
168 videoModeMemory =
171 if ((int)dwOriginalFreeMem > videoModeMemory) {
172 nMemoryConfig = 1;
174 (int)dwOriginalFreeMem - videoModeMemory;
175 SystemDebugPrintf("Full");
176 } else {
177 SystemDebugPrintf("Limited");
178 }
179 SystemDebugPrintf(" music will play.");
180 }
181 }
182
192 exit_squadron("Requested graphics display mode not available.");
197 nFrameSkip = 1;
198 if (nMusicPlaybackMode != 0 && nMusicPlaybackMode != 3)
202 LoadPacketAllocated(0x3a, 0);
204 SystemDebugPrintf("\n[SYSTEM] : Exiting initialize()\n");
205 return 0;
206}
207
208/* Function start: 0x421D80 */
230
231/* Function start: 0x421E20 */
232unsigned int initialize_direction_view_frame(short yaw, short pitch,
233 signed char frame)
234{
235 FixedVector right = { 0x100, 0, 0 };
236 FixedVector up = { 0, 0x100, 0 };
237 FixedVector forward = { 0, 0, 0x100 };
238 short index;
239
240 rotate_about_j(yaw, &right, &forward);
241 rotate_about_i(pitch, &up, &forward);
242 index = (short)frame;
243 aDirectionViewRightVector[index] = right;
244 aDirectionViewUpVectorArray[index] = up;
245 aDirectionViewForwardVector[index] = forward;
246 return 0;
247}
248
249/* Function start: 0x421EF0 */
251{
252 signed char frame;
253 signed char pitchBand;
254 signed char yawSector;
255 short yaw;
256 short pitch;
257
258 frame = 1;
259 pitch = 90;
261 for (pitchBand = 0; pitchBand < 5; pitchBand++) {
262 pitch -= 30;
263 yaw = 0;
264 for (yawSector = 0; yawSector < 12; yawSector++) {
265 initialize_direction_view_frame(yaw, pitch, frame++);
266 yaw += 30;
267 }
268 }
269 initialize_direction_view_frame(0, -90, frame);
270 return 0;
271}
272
273/* Function start: 0x421F50 */
303
304/* Function start: 0x421FE0 */
305unsigned int GetFxDriverInitResult(void)
306{
307 return 0;
308}
309
310/* Function start: 0x421FF0 */
311unsigned int GetMessagePumpResult(void)
312{
313 return 0;
314}
315
316/* Function start: 0x422000 */
317unsigned int GetFxDriverStatus(void)
318{
319 return 0;
320}
short asCollisionTimes[10]
Definition init.c:55
unsigned char cYellowColour
Definition init.c:15
short nLogicLastFoundShipValue
Definition init.c:58
short bSlowSceneAnimation
Definition init.c:11
unsigned char cLightGreyColour
Definition init.c:22
PacketResourceDescriptor aCockpitResourceDescriptors[19]
Definition logic.c:49
unsigned char cRedColour
Definition init.c:16
short nInputDoubleClickInterval
Definition input.c:10
int nMemoryConfig
Definition ship.c:58
ObjectTypeData aObjectTypeData[OBJECT_TYPE_COUNT]
Definition objdata.c:86
TextContext stDefaultTxtContext
Definition targ.c:14
unsigned char cBlackColour
Definition init.c:12
int nInputTickScale
Definition data.c:245
short nVideoMode
Definition video.c:12
short nUnusedInputTimerFlag
Definition data.c:241
short asCollisionPartnerTable[10]
Definition init.c:59
FixedVector aDirectionViewUpVectorArray[DIRECTION_VIEW_COUNT]
Definition pload.c:16
unsigned char cBlueColour
Definition init.c:14
unsigned char cViewportClearColour
Definition init.c:13
ConstellationObjectDefinition * pConstellationDefinitionsPtr
Definition gr.c:1532
FixedVector aDirectionViewForwardVector[DIRECTION_VIEW_COUNT]
Definition pload.c:17
unsigned char cDarkGreenColour
Definition init.c:17
PacketResourceDescriptor aMissionResourceDescriptors[5]
Definition logic.c:40
short DAT_0059a9f0
Definition eventmgr.c:33
int nAvailableGameMemory
Definition ship.c:61
short nFrameSkip
Definition main.c:24
short bCurrentExpandedMemoryAvail
Definition eventmgr.c:27
MouseCursorState stMouseCursorState
Definition strdos.c:19
unsigned char cMagentaColour
Definition init.c:23
int bGraphicsActive
Definition init.c:39
unsigned char cPrimaryViewBufferColour
Definition init.c:27
unsigned char cAsteroidColour
Definition init.c:26
char szDefaultTxtBuf[0xc8]
Definition timer.c:18
short nEventManagerActive
Definition eventmgr.c:24
unsigned char cDefaultTextColour
Definition init.c:24
struct Shape * pMouseCursorResource
Definition ship.c:60
short nWingmanKillCount
Definition init.c:57
unsigned char cOrangeColour
Definition init.c:19
Viewport stScreenView
Definition launch.c:50
Viewport stSpaceBufferViewport
Definition timer.c:13
unsigned char cPrimaryTextColour
Definition init.c:18
signed char acGraphicsModeByAnimationSpeed[8]
Definition joycal.c:14
short nMusicPlaybackMode
Definition music.c:14
TextContext stHudMessageTextContext
Definition launch.c:51
PacketResourceDescriptor aCommon3SpaceResources[12]
Definition logic.c:24
Viewport stModalSrcViewport
Definition select.c:14
short nMenuInputRepeatDelay
Definition objdata.c:597
char szInsufficientMemory[100]
Definition init.c:40
short asConversationTextColours[12]
Definition init.c:31
int dwOriginalFreeMem
Definition ship.c:59
unsigned char * pMissionCampaignInfo
Definition gr.c:1529
struct Shape * apCommunicationPortraitShapesTable[16]
Definition music.c:96
short nNearHeapMaxDescriptors
Definition nearheap.c:65
int nCurrentWingmanKilledThisMission
Definition init.c:56
unsigned char cDarkGreyColour
Definition init.c:21
FixedVector aDirectionViewRightVector[DIRECTION_VIEW_COUNT]
Definition pload.c:15
int anFullMusicMemoryReservationByVideoMode[4]
Definition init.c:46
unsigned char abLegacyVideoModeColours[14]
Definition init.c:28
int anExpandedMemoryReservationByVideoMode[3]
Definition init.c:49
unsigned char cBrownColour
Definition init.c:25
unsigned char cDarkBlueColour
Definition init.c:20
short asLegacyConversationTextColours[12]
Definition init.c:35
int anBaseMemoryReservationByVideoMode[4]
Definition init.c:43
Viewport * viewport
Definition wc1base.h:110
struct Shape * shape
Definition wc1base.h:107
unsigned short frame
Definition wc1base.h:108
struct Shape * shapeSet
Definition wcdata.h:393
char * text
Definition wc1base.h:242
Viewport * viewport
Definition wc1base.h:236
unsigned char alignment
Definition wc1base.h:244
Umbrella header for the game core.
void SystemDebugPrintf(const char *fmt,...)
Definition pilot.cpp:182
unsigned short __stdcall InitializeDIBScreenViewport(Viewport *viewport, unsigned short colour)
Definition screen.c:327
unsigned int LoadGamePaletteFile(void)
Definition init.c:62
unsigned int EMStartUp(void)
Definition init.c:112
void PollJoystickButtonEvents(void)
Definition input.c:76
unsigned short InitializeDiskPromptTextContext(void)
Definition install.c:28
void * LoadPacketAllocated(short logicalFile, short section)
Definition disk.c:94
unsigned int InitializeTextContextFromFont(TextContext *context, short fontIndex, unsigned char colour, signed char background)
Definition disk.c:192
short LogMemoryUsage(void)
Definition main.c:102
unsigned int InitializeGameTextContexts(void)
Definition init.c:209
void rotate_about_i(short angle, FixedVector *j, FixedVector *k)
Definition geom.c:508
unsigned int LoadOriginFxDrivers(void)
Definition init.c:125
void * FetchDiskPacketRetrying(short logicalFile, short section, short flags)
Definition disk.c:126
unsigned int initialize_direction_view_frames(void)
Definition init.c:250
void __stdcall PromptInsertNumberedDisk(short logicalFile)
Definition disk.c:322
unsigned short __stdcall LoadPaletteTripletsFile(const char *path)
Definition auto.c:299
void get_player_input(void)
Definition main.c:575
unsigned int GetMessagePumpResult(void)
Definition init.c:311
unsigned int GetFixedOneMillionThunkAlt(short memoryType)
Definition ending.c:78
unsigned short GetEventManagerStatus(void)
Definition strdos.c:79
unsigned short InitializeEventManagerResources(void)
Definition init.c:97
void FxDriverShutdownHook(void)
Definition install.c:23
short __stdcall InitializeEventManager(short period, unsigned short(*initialize)(void), void *configuration)
Definition strdos.c:90
unsigned short GetMusicDriverPresent(short mode)
Definition geom.c:65
void __stdcall SetEventManagerPump(void(*pump)(void))
Definition strdos.c:126
void __stdcall SetTextContext(TextContext *context)
Definition mathfp.c:152
unsigned int EMShutDown(void)
Definition init.c:89
void __stdcall ShutdownVideoHook(short mode)
Definition video.c:29
void __stdcall SetFrameTimerPeriodDirect(short p)
Definition eventmgr.c:617
void LoadJoystickCalibrationFile(short horizontalRange, short verticalRange, short horizontalDeadZone, short verticalDeadZone)
Definition joycal.c:39
unsigned int ResetCockpitPaletteEntries(void)
Definition logic.c:1457
unsigned short IsSoundHardwarePresent(short device)
Definition screen.c:450
unsigned int initialize_direction_view_frame(short yaw, short pitch, signed char frame)
Definition init.c:232
unsigned short RewriteDiskFileGraphicsExtensions(short videoMode)
Definition install.c:65
void exit_squadron(const char *msg)
Definition main.c:122
unsigned int GetFxDriverInitResult(void)
Definition init.c:305
unsigned int GetFxDriverStatus(void)
Definition init.c:317
short GetTargetColourIndex(void)
Definition view.c:560
unsigned int GetFixedOneMillionThunk(short memoryType)
Definition ending.c:71
void __stdcall RegisterEventManagerShutdown(void(*fn)(void))
Definition strdos.c:85
unsigned int LoadSpaceflightResources(void)
Definition init.c:274
void SaveGamePalette(void)
Definition winmain.c:61
int LoadShapeSet(PacketResourceDescriptor *resources, unsigned short flags, short defaultLogicalFile)
Definition logic.c:1395
unsigned short __stdcall ConfigureEventManagerPointer(struct Shape *shape, short frame)
Definition strdos.c:107
void rotate_about_j(short angle, FixedVector *i, FixedVector *k)
Definition geom.c:528
void ShutdownEventManager(void)
Definition strdos.c:101
@ OBJECT_TYPE_DEBRIS_METAL_SHEET
Definition wcdata.h:98
@ OBJECT_TYPE_DEBRIS_WING
Definition wcdata.h:99
@ OBJECT_TYPE_DEBRIS_GLASS
Definition wcdata.h:100
@ OBJECT_TYPE_DEBRIS_O_RING
Definition wcdata.h:101
@ OBJECT_TYPE_DEBRIS_PIPE
Definition wcdata.h:102
@ OBJECT_TYPE_DEBRIS_SHIP_GIRDER_CHUNK
Definition wcdata.h:96
@ OBJECT_TYPE_DEBRIS_SHIP_TUBING
Definition wcdata.h:97