Wing Commander II
Reconstructed Win32 source (1996)
Loading...
Searching...
No Matches
midscene.c
Go to the documentation of this file.
1/*
2 * Mid-mission ejection scene.
3 *
4 * Retail object 0x44EA50-0x44F00F (link order; see docs/ORDER.md).
5 */
6#include "game.h"
7
8/* Function start: 0x44EA50 */
9/* Clear what an ejection leaves in space: pods take the pilot animation, the
10 * 0x3D marker survives, every other transient object is removed. */
12{
13 short obj;
14
15 for (obj = 0; obj < SPACE_OBJECT_COUNT; obj++) {
16 switch (g_aeObjectClass[obj]) {
22 if (g_asObjectType[obj] ==
25 OBJECT_DATA_EJECTION_POD].shapeSet == 0) {
28 FetchDiskPacketRetrying("pilotanm.vga", 2, 0);
29 g_apObjectShape[obj] =
32 }
33 } else if (g_asObjectType[obj] != 0x3d) {
34 remove_object(obj);
35 }
36 break;
37 default:
38 break;
39 }
40 }
41}
42
43/* Function start: 0x44EB4E */
44/* Flag every nav-point objective at the current nav point as reached. */
46{
47 short objective;
48
49 for (objective = 0;
50 objective < g_cMissionObjectiveCount;
51 objective++) {
52 if (g_aMissionObjectives[objective].type == 0 &&
53 g_aMissionObjectives[objective].index ==
55 flag_reached(objective, 0);
56 }
57}
58
59/* Function start: 0x44EBCA */
60/* End of mission: fold the results into the campaign globals, run the
61 * campaign script and, unless the arcade took over, bring the cockpit and the
62 * 3-Space objects back for the next leg. */
63void ejection_sequence(short outcome, signed char restoreCockpit)
64{
65 long mainMiddle;
66 long lowBefore;
67 long mainBlockEnd;
68 long farEnd;
69 long farLargestBefore;
70 FILE *stream;
71 long extMid;
72 long mainLargestBefore;
73 long baseAfter;
74 long farLargestDuring;
75 long mainBlockMiddle;
76 long farBegin;
77 long farLargestPost;
78 long baseFinal;
79 long farBlockEnd;
80 long nearBlockPost;
81 long farLater;
82 short series;
83 short ship;
84
85 if (g_bMissionEndPending == 0)
86 return;
87
88 lowBefore = GetAvailableMainMemory();
89 farBegin = GetAvailableFarMemory();
90 mainLargestBefore = GetLargestMainMemoryBlock();
91 farLargestBefore = GetLargestFreeMemoryBlock();
92 if ((unsigned short)outcome == 0x75) {
94 return;
95 }
96
99 stream = fopen("mid.$$$", "w+");
101 LogMemoryStateToFile(stream);
104 LogMemoryStateToFile(stream);
105 if (g_pCampaignGlobals == 0)
107 if (g_pCampaignGlobals == 0)
109
110 series = g_pCampaignGlobals->series;
112 g_pCampaignGlobals->mission = outcome;
118 (short)calculate_damage_level();
119
120 mainMiddle = GetAvailableMainMemory();
121 extMid = GetAvailableFarMemory();
122 mainBlockMiddle = GetLargestMainMemoryBlock();
123 farLargestDuring = GetLargestFreeMemoryBlock();
125 LogMemoryStateToFile(stream);
130 LogMemoryStateToFile(stream);
133
134 baseAfter = GetAvailableMainMemory();
135 farLater = GetAvailableFarMemory();
136 nearBlockPost = GetLargestMainMemoryBlock();
137 farLargestPost = GetLargestFreeMemoryBlock();
143 for (ship = 0; ship < 10; ship++)
144 g_asShipIntelState[ship] = 0;
145
146 if (restoreCockpit != 0 && g_nArcadeState == 0) {
148 LogMemoryStateToFile(stream);
151 init_constellation(series);
157 if (g_pPilotStatus[
161 force_view(0, 0);
162 }
164 LogMemoryStateToFile(stream);
165
169
170 if (g_nShowMemoryStatus != 0) {
171 baseFinal = GetAvailableMainMemory();
172 farEnd = GetAvailableFarMemory();
173 mainBlockEnd = GetLargestMainMemoryBlock();
174 farBlockEnd = GetLargestFreeMemoryBlock();
175 printf(" before large after large\n");
176 printf("Main: %6ld %6ld %6ld %6ld\n", lowBefore,
177 mainLargestBefore, baseFinal, mainBlockEnd);
178 printf("EMS: %7ld %6ld %7ld %6ld\n", farBegin,
179 farLargestBefore, farEnd, farBlockEnd);
180 printf("CMem: %6ld %6ld %6ld %6ld\n", mainMiddle,
181 mainBlockMiddle, baseAfter, nearBlockPost);
182 printf("EEMS: %7ld %6ld %7ld %6ld\n", farLater,
183 farLargestPost, farLater, farLargestPost);
185 }
189 if (stream != 0 && g_bAutopilotDebugEnabled != 0)
190 fclose(stream);
191}
unsigned int GetLargestFreeMemoryBlock(void)
Definition eventmgr.c:1515
void FadeViewportPaletteToColour(Viewport *viewport, unsigned short colour, short enabled)
Definition palfade.c:10
void initialize_view_buffer(void)
Definition main.c:217
unsigned int GetAvailableMainMemory(void)
Definition memfree.c:13
void InitializeCockpitResources(short shipType)
Definition fltsetup.c:507
void remove_object(short obj)
Definition geom.c:858
void LogMemoryStateToFile(FILE *file)
Definition gameflow.c:132
void ejection_sequence(short outcome, signed char restoreCockpit)
Definition midscene.c:63
unsigned int GetLargestMainMemoryBlock(void)
Definition memfree.c:35
void InitializeSpaceFlightInput(void)
Definition message.c:16
void load_common_3Space_objects(void)
Definition fltsetup.c:834
void flag_reached(short objective, short reached)
Definition cockpt.c:1379
void ReportFatalErrorCode(const char *errorCode)
Definition message.c:29
void RestoreGamePalette(void)
Definition palette.c:21
void load_all_slots(void)
Definition mission.c:715
void * FetchDiskPacketRetrying(char *fileName, short section, short flags)
Definition disk.c:187
void ReleasePacketSlot(void **slot)
Definition iffload.c:23
void force_view(int view, short obj)
Definition spc.c:423
void ResetGameTextContexts(void)
Definition startup.c:291
void LoadTemporaryCampaignGlobals(void)
Definition campglob.c:180
void RunCampaignScript(short campaignSlot)
Definition campglob.c:126
void ClearTransientObjectsForEjection(void)
Definition midscene.c:11
void ClearViewport(Viewport *viewport, short colour)
Definition gr.c:1027
short calculate_damage_level(void)
Definition main.c:1890
void ReleaseSceneMusicPacket(void)
Definition gameflow.c:894
void init_constellation(short scene)
Definition fltsetup.c:425
void InitializeCampaignConstellationState(CampaignGlobals *globals, short copyPosition)
Definition campglob.c:98
void ReleaseSpaceflightResources(void)
Definition campaign.c:114
unsigned short WaitForAnyInputPress(void)
Definition disk.c:347
void FlagCurrentNavObjectivesReached(void)
Definition midscene.c:45
unsigned int GetAvailableFarMemory(void)
Definition eventmgr.c:1509
void ResetCannedSceneRecording(void)
Definition taperec.c:20
void StoreMissionResultsInCampaignGlobals(CampaignGlobals *globals)
Definition campglob.c:46
Shared Win32 declarations, types and library interfaces.
@ OBJECT_DATA_EJECTION_POD
Definition game_data.h:457
#define SPACE_OBJECT_COUNT
Definition game_data.h:1578
@ OBJECT_CLASS_MISSILE
Definition game_data.h:48
@ OBJECT_CLASS_DEBRIS
Definition game_data.h:43
@ OBJECT_CLASS_FUTURION
Definition game_data.h:38
@ OBJECT_CLASS_PROJECTILE
Definition game_data.h:45
@ OBJECT_CLASS_EXPLOSION
Definition game_data.h:42
short g_nShowMemoryStatus
Definition main.c:1948
unsigned char * g_apObjectShape[SPACE_OBJECT_COUNT]
Definition viewrect.c:100
short g_nYourWingman
Definition viewrect.c:75
short g_78_bHighMemoryBuffersSetState
Definition cockpt.c:3839
short g_aeObjectClass[SPACE_OBJECT_COUNT]
Definition viewrect.c:125
short g_asObjectType[SPACE_OBJECT_COUNT]
Definition viewrect.c:124
signed char g_bAutopilotDebugEnabled
Definition gameflow.c:13
CampaignGlobals * g_pCampaignGlobals
Definition gameflow.c:3707
ObjectTypeData g_aObjectTypeData[OBJECT_DATA_COUNT]
Definition campglob.c:310
signed char g_cMissionObjectiveCount
Definition viewrect.c:66
short g_nSelectedCampaignSlot
Definition campaign.c:354
signed char g_acShipPortrait[12]
Definition viewrect.c:159
short g_bMissionEndPending
Definition death.c:8
short g_b3SpaceObjectsActive
Definition fltsetup.c:1060
signed char g_3_cOverlayMessageView
Definition cockpt.c:3792
int g_nArcadeState
Definition main.c:1938
short g_asShipIntelState[10]
Definition brains.c:11
Viewport g_2_stModalSourceWindow
Definition message.c:231
signed char g_1_cStoredViewDisplayModeValue
Definition eventmgr.c:2515
MissionObjective g_aMissionObjectives[MISSION_OBJECTIVE_COUNT]
Definition viewrect.c:69
short g_bSpaceViewBufferEnabled
Definition main.c:1956
PilotProfile g_stCurrentPilotProfile
Definition viewrect.c:73
short g_nCurrentNavPoint
Definition viewrect.c:53
short * g_pPilotStatus
Definition campglob.c:499
short g_1_nResourcePaletteState
Definition main.c:2000
short previousMission
Definition game_data.h:1149
unsigned char * shapeSet
Definition game_data.h:392
short playerShipType
Definition game_data.h:1123