30 "Wing Commander II (c) 1991 Origin";
121 (
unsigned char *)0xa000) {
149 (
unsigned short)frame);
158 if (workspace != 0) {
184 (
void)cockpitVariant;
202 (
unsigned short)frame);
234 (
unsigned short)((320 -
242#pragma function(strcpy)
247 short loadedCampaign;
255 SeekDataFile((
unsigned short)file, (campaignBytes + 0x86) << 3, 0);
272 return loadedCampaign;
278 struct _finddata_t findData;
288 if (findHandle == -1 ||
289 (stateBytes + 0x86) * 9 != findData.size)
291 _findclose((
long)findHandle);
297 if (~~((stateBytes + 0x86) << 3) !=
298 lseek((
int)file, (stateBytes + 0x86) << 3, 0)) {
302 if (_read((
int)file, &occupied, 2) != 2) {
315 struct _finddata_t findData;
316 unsigned int stateBytes;
325 if (logicalFile != 0) {
331 if (searchHandle == -1 ||
332 (stateBytes + 0x86) * 9 != findData.size) {
337 for (index = 0; index < 9; index++) {
349 _findclose((
long)searchHandle);
369 if (logicalFile != 0) {
379 savedViewport = *viewport;
495#pragma function(strlen)
502 "%d ----------------------------------------------------------",
513 "%d--%s %c. \"%s\" %s",
522 "%d--%s %s \"%s\" %s",
556 slot = (short)(choice - 1);
591 for (index = 0; index < 8; index++) {
703 row = (short)(choice - 1);
747 for (index = 0; index < count; index++) {
768 (count - 2) * 10 + 0x31) {
829 struct _finddata_t fileSearchData;
861 if (finishedMenu == -1 ||
862 (campaignBytes + 0x86) * 9 != fileSearchData.size) {
870 for (i = 0; i < 9; i++) {
871 _write(file, &redrawFlag, 2);
880 _findclose((
long)finishedMenu);
883 for (i = 0; i < 8; i++) {
905 while (finishedMenu == 0) {
1077 while (reply != 0x0d) {
1079 if (toupper(reply) ==
'Y') {
1135 while (reply != 0x0d) {
1137 if (toupper(reply) ==
'Y') {
1197 if (redrawFlag != 0) {
1210 for (i = 0; i < 8; i++) {
1309#pragma function(strcat)
1313 unsigned int isAlnum;
1315 struct _finddata_t findData;
1317 const char *nameList[3] = {
1319 "Secret Missions 1",
1320 "Crusade:Secret Missions 2"
1322 char *installedPath;
1331 if (installedPath != 0) {
1348 0x32, 0x50, 2,
"Path name: ",
1352 if (pathEntered == 0) {
1357 index >= 0; index--) {
1376 driveIndex = (short)(toupper(
1402 short finishedDatabase = 0;
1403 short actionHandledFlag = 0;
1404 char firstNameText[13] =
"Christopher";
1405 char surname[13] =
"Blair";
1406 char callsign[13] =
"Maverick";
1408 char captionBuffer[80];
1413 short transferCount;
1416 short selectedPilotIndex;
1418 short driveToRestore;
1448 for (saveSlot = 0; saveSlot < 8; saveSlot++) {
1456 while (finishedDatabase == 0) {
1471 hoverCommand = 0x26;
1484 hoverCommand = 0x14;
1490 hoverCommand = 0x2e;
1511 actionHandledFlag = 0;
1514 hoverCommand != -1) {
1519 hoverCommand == -1) {
1521 actionHandledFlag++;
1525 driveToRestore = 99;
1526 actionHandledFlag = 1;
1539 if (finishedDatabase == 0) {
1547 for (saveSlot = 0; saveSlot < 8; saveSlot++) {
1548 _read(handle, record, 0x33c);
1552 pilotRecord = &record->
pilots[8];
1557 pilotRecord->
rank]);
1574 itoa(pilotRecord->
missions, captionBuffer, 10);
1577 transferCount] + 0x28,
1579 itoa(pilotRecord->
kills, captionBuffer, 10);
1582 transferCount] + 0x2c,
1584 itoa(saveSlot, captionBuffer, 10);
1587 transferCount] + 0x3c,
1593 if (transferCount == 0) {
1597 finishedDatabase = 0;
1601 if (selectedPilotIndex == -1) {
1602 finishedDatabase = 0;
1608 transferCount = (short)atoi(
1610 selectedPilotIndex] + 0x3c);
1611 handle = (short)_open(
1613 lseek(handle, (
long)transferCount * 0x33c, 0);
1614 _read(handle, record, 0x33c);
1615 selectedPilot = &record->
pilots[8];
1627 strcpy(captionBuffer,
1629 selectedPilot->
rank]);
1630 strcat(captionBuffer,
" ");
1631 strcat(captionBuffer, selectedPilot->
name);
1632 strcat(captionBuffer,
"'s first name?");
1637 0x32, 0x3c, 1,
"", firstNameText,
1644 selectedPilot->
name);
1653 selectedPilot->
name);
1661 selectedPilot->
kills;
1665 finishedDatabase = 1;
1675 actionHandledFlag = 1;
1684 0x32, 0x1e, 2,
"Enter first name: ", firstNameText,
1686 if (inputResult != 0) {
1692 0x32, 0x32, 2,
"Enter last name: ", surname,
1694 if (inputResult != 0) {
1700 0x32, 0x46, 2,
"Enter callsign: ", callsign,
1702 if (inputResult != 0) {
1717 if (inputResult == 0) {
1724 if (actionHandledFlag == 0) {
1738 for (saveSlot = 0; saveSlot < 8; saveSlot++) {
void(__cdecl *g_pIxFree)(void *)
short ReadPersonnelTextField(unsigned int x, unsigned int y, int font, const char *prompt, char *destination, int maximumLength, int mode, int required)
void RefreshCampaignChalkboardScreen(short cockpitVariant)
void SaveAndFreeTemporaryCampaignGlobals(void)
short SelectLegacyGameSource(void)
int SeekDataFile(unsigned short fd, int offset, unsigned int origin)
void SetInputViewport(Viewport *viewport)
void DrawPersonnelFileSlot(short slot)
short WriteDataFileAtOffset(unsigned short fd, int offset, unsigned int length, const void *data)
void LoadStartingCampaignGlobals(short campaign)
signed char InitializeViewportWipe(Viewport *source, Viewport *destination, int wipeType, short duration, short passFlags, void *workspace)
void OpenDiskDataFile(short logicalFile)
short ServiceInputDevices(short deviceMask)
void InitializeTextContextFromFont(TextContext *context, short fontIndex, unsigned char colour, signed char background)
short AllocateViewport(Viewport *viewport, short clearColour, short flags)
void PersonnelDriveHook(short drive)
void free_viewport(Viewport *viewport)
void RefreshMemoryStatusOverlay(void)
void HighlightPersonnelFileSlot(short choice)
void SetTextContext(TextContext *context)
short MeasureTextPixelWidthClamped(const char *text)
int ReadDataFileAtOffset(unsigned short fd, int offset, unsigned int length, void *data)
void ReportFatalErrorCode(const char *errorCode)
void InitializeGameTextContexts(void)
void DrawSpriteDefault(Viewport *viewport, short x, short y, unsigned char *shape, short frame)
void FlushInputEvents(void)
void PollPersonnelMenuInput(void)
void DrawCampaignChalkboardFrame(unsigned short frame)
void InitializeCampaignChalkboardScreen(short cockpitVariant)
signed char AdvanceViewportWipe(void *workspace)
void RestorePersonnelMenuBackground(Viewport *viewport)
void DrawPersonnelMenuBackdrop(void *scenePacket)
short SelectPersonnelFileSlot(void)
short RunPilotDatabaseMenu(void)
short WaitForQueuedInputPress(void)
void DrawPersonnelMenuChoices(short choice)
void * AllocateTaggedMemory(unsigned int size, short flags)
void * FetchDiskPacketRetrying(char *fileName, short section, short flags)
void ServiceSoundSystem(void)
void ReleasePacketSlot(void **slot)
void CopyHugeMemoryOverlapSafe(void *destination, void *source, int count)
short PollSceneHotspotInput(void *scenePacket, short offsetX, short offsetY, short dismissOnBackground, short maximumSelection)
short LoadSelectedPilotCampaign(void)
short LocateLegacySaveGame(short source)
void LoadTemporaryCampaignGlobals(void)
void RunPilotSaveLoadMenu(void)
void DisableMouseCursorDrawing(void)
short OpenDataFileOrDie(const char *path)
short CreateDataFile(const char *path)
char * GetLegacyGameDataPath(void)
void HighlightTransferredPilot(short choice)
short SelectTransferredPilot(short count)
void DrawTransferredPilotRow(short row)
void ClearViewport(Viewport *viewport, short colour)
void EnableMouseCursorDrawing(void)
void CloseDataFile(unsigned short fd)
void SetPersonnelMousePosition(short x, short y)
void DrawPersonnelSourceChoices(short choice)
void SetMenuInputPump(void)
short IsInputEventQueued(int type)
void ReleasePacketHandle(void *handle)
void InitializeCampaignConstellationState(CampaignGlobals *globals, short copyPosition)
void SetTextCursor(unsigned short a, unsigned short b)
unsigned short WaitForAnyInputPress(void)
void FreePacketAndClear(void *slot, unsigned short releaseFlags)
void DrawPilotSaveMenuChoices(short choice)
void DrawFormattedText(const char *format,...)
unsigned short HasSavedPilotCampaign(void)
void ShowNoTransferablePilots(void)
int GetNextInputEvent(InputEventState *event)
void LoadSceneHotspotBoundsForSelection(void *scenePacket, short selection)
void SetMouseCursorShape(unsigned char *shape, short frame)
Shared Win32 declarations, types and library interfaces.
unsigned char * g_apCockpitVduOverlayShapes[2]
short g_8_nSceneRegionRightWord
char * g_3_apszPersonnelImportCaptionsTable[8]
short g_27_nSceneHotspotTopValue
unsigned char * g_pCockpitBackgroundPacket
InputManagerState * g_18_pEventManager
CampaignGlobals * g_pCampaignGlobals
const char * g_apszSaveGameFileNames[3]
unsigned char * g_pCampaignChalkboardShape
MouseCursorState g_37_stPersonnelMousePointerState
short g_bNewPilotCampaignInitialized
signed char g_bPersonnelPrimaryInputDown
short g_nPersonnelMenuHighlight
void * g_pPersonnelCampaignSnapshot
char g_6_szDefaultTextBufferText[0xc8]
char g_1_szLegacySaveFolder[0x30]
char * g_pszPersonnelFooter
short g_1_nCockpitArchiveVariantNumber
signed char g_cPreviousKey
unsigned char g_cSecondaryViewBufferColour
const char * g_apszShortPilotRankNames[5]
PilotProfile g_stDefaultPilotProfile
void * g_pActiveScenePacket
short g_bPersonnelMenuDrawing
unsigned char g_bPrimaryViewBufferColour
short g_128_nShotHotspotLeft
Viewport g_2_stModalSourceWindow
short g_15_nSceneAreaLowestWord
Viewport g_101_stScrViewInfo
signed char g_bRoomTransitionAnimationEnabled
PilotNameVariables g_stPilotNameVariables
short g_sPersonnelPreviousInput
signed char g_cCurrentKey
Viewport g_stSecondaryViewBufferBlock
const char * g_apszPilotRankNames[5]
short g_3_nOptionMessageColour
PilotProfile g_stCurrentPilotProfile
TextContext g_3_stDefaultStringContext
SceneResourceTable g_stSceneTextList
SceneResourceTable g_stSceneZoneTable
unsigned char * g_pPersonnelMenuBackdrop
short g_10_nMenuDarkColour
static char g_szPersonnelFileName[]
PersonnelFileSlot * g_apPersonnelFileSlots[8]
PilotProfile * g_apPersonnelPilotProfiles[8]
static char g_szSaveSlotSignature[0x24]
SaveGameDiskCampaignState campaign