Wing Commander II
Reconstructed Win32 source (1996)
Loading...
Searching...
No Matches
game_data.h
Go to the documentation of this file.
1/*
2 * Game data enumerations and on-disk record layouts.
3 *
4 * Sources, in descending order of trust:
5 *
6 * 1. THIS BINARY. Anything marked "verified" was read from the retail
7 * executable itself,
8 * usually from an ordered string table. Where the community documentation
9 * and the binary disagree, the binary wins and the difference is noted.
10 * 2. WCMissionTools (../WCMissionTools), a MODULE/CAMP/BRIEFING parser built
11 * from the data files. It names the fields the game loads; it does not
12 * know what the code calls them.
13 * 3. WingCommanderArduinoBridge (../WingCommanderArduinoBridge), which reads
14 * the DOS build's memory live. Its offsets are DOS-segment relative and do
15 * NOT apply here, but the field ORDER within the pilot record does, because
16 * both builds compile the same struct.
17 *
18 * The MODULE record layouts below are the ON-DISK format. The in-memory
19 * tables are different sizes -- the per-object table at 0x0046C97A has a
20 * 0x36-byte stride against the 42-byte disk ship record, and the nav table has
21 * a 0x1F-byte stride against the 77-byte disk nav record -- so a disk field
22 * offset is a hint about what exists, never about where it lives at runtime.
23 */
24#ifndef GAME_DATA_H
25#define GAME_DATA_H
26
27#include <stddef.h>
28
29/* --------------------------------------------------------------------------
30 * Original object model. BRAINS.C uses the fields class[] and type[]; the FM
31 * Towns debug table supplies the ObjectClass order, while the Sega CD inspector
32 * preserves the original ObjectType identifiers. The Win32 type-name strings
33 * at 0x004684D4 corroborate ordinals 0-32 ("Star post" is the display name for
34 * the internal KILRATHI_BASE identifier).
35 * -------------------------------------------------------------------------- */
53
60 OBJECT_TYPE_DILLIGENT = 5, /* original misspelling */
113 OBJECT_TYPE_TYPES = 58, /* original enum terminator */
117};
118
119/* BRAINS.C switch bodies line up exactly with these three Amiga debug tables. */
136
150
172
173/* Side is a 32-bit enum in the Win32 image; do not collapse side[] to bytes. */
179
180/* Sega CD's inspector identifies this as the original Rating enum, not a pilot
181 * id. The four humorous tail identifiers are source placeholders; Win32 maps
182 * its separate Bhurak/Dakhath/Khajja/Bakhtosh display-name table onto them. */
203
204/* Amiga's live AI inspector preserves this dispatch-table order. Win32 has
205 * three additional slots (44-46); their identifiers are not present in any
206 * recovered release, so they remain explicitly unknown. */
257
271
272/* --------------------------------------------------------------------------
273 * Comm menu. VERIFIED: the pointer table at 0x0046AF90 indexes these six
274 * strings, laid out consecutively from 0x0046AFF8.
275 * -------------------------------------------------------------------------- */
277 COMM_NEVER_MIND = 0, /* "Never mind..." */
278 COMM_ATTACK_TARGET = 1, /* "Attack my target!" */
279 COMM_HELP_ME_OUT = 2, /* "Help me out here" */
280 COMM_RETURN_TO_BASE = 3, /* "Return to base." */
281 COMM_DIE_FURBALL = 4, /* "Die furball!" */
282 COMM_SLAG_OFF = 5 /* "Slag off!" */
283};
284
285/* --------------------------------------------------------------------------
286 * MODULE on-disk records (WCMissionTools). Reproduced as sizes and field
287 * offsets rather than structs: the loader reads these into differently shaped
288 * runtime tables, so declaring a C struct over them would assert a layout the
289 * code does not use.
290 *
291 * Nav record, 77 bytes
292 * 0 30 name
293 * 30 1 nav type (0 hidden, 1 visible, 2-5 follow-up waves)
294 * 31 1 sphere radius, x1000
295 * 32 12 X, Y, Z as 3-byte signed integers
296 * 45 8 four (trigger type, target nav) pairs; 0 off, 1 on, 255 none
297 * 53 2 preload ship class indices (at 53 and 55)
298 * 57 20 ten ship indices, 2 bytes each, 255 empty
299 *
300 * Ship record, 42 bytes
301 * 0 1 ship class 22 6 rotation X, Y, Z (int16)
302 * 2 1 allegiance 28 2 speed x10, or hazard-field radius
303 * 4 1 leader index 30 1 AI level 0-4
304 * 6 1 order 32 1 pilot id
305 * 8 1 formation slot 39 1 secondary target index
306 * 10 12 X, Y, Z position 40 1 formation group
307 * 41 1 primary target index
308 *
309 * Map / flight-plan record, 64 bytes
310 * 0 1 objective icon (0 square, 1 home triangle, 2 cross,
311 * 3 green circle, 4 red circle)
312 * 1 1 target nav index
313 * 2 61 description text
314 *
315 * Coordinates are 3-byte little-endian signed: uint16 low word plus uint8 high
316 * byte, minus 16777216 when the high byte is >= 128.
317 * -------------------------------------------------------------------------- */
318typedef struct FixedVector {
319 int x;
320 int y;
321 int z;
322}
324
325/* Descriptor used by the legacy near-memory allocator. Descriptors grow
326 * downward from the end of the managed region. */
327typedef struct NearHeapBlock {
329 unsigned int sizeAndFlags;
331
332/* One of the 30 fireworks animated by TheEndFireWorks. The 0x0C-byte stride
333 * is explicit in the Win32 accesses at 0x0042D270-0x0042D384. */
334typedef struct FireworkState {
335 short frame; /* +0x00: -1 while the slot is free */
336 short x; /* +0x02 */
337 short y; /* +0x04 */
338 short variant; /* +0x06: one of three 8-frame runs */
339 int soundHandle; /* +0x08 */
341
343 sizeof(FireworkState) == 0x0c ? 1 : -1];
344
345/* One of the paired projectiles crossing the campaign-victory scene. */
346#pragma pack(push, 2)
348 int x; /* +0x00 */
349 int y; /* +0x04 */
350 int depth; /* +0x08 */
351 short screenX; /* +0x0C */
352 short screenY; /* +0x0E */
353 short flip; /* +0x10 */
354 int scale; /* +0x12: -1 while inactive */
356#pragma pack(pop)
357
359 sizeof(CampaignVictoryProjectile) == 0x16 ? 1 : -1];
360
361/* WC2 runtime object-type records. The 0xF3-byte stride and the named fields
362 * are fixed by accesses throughout the ship/object code; unknown slots retain
363 * offset names until their purpose is established. */
364#pragma pack(push, 1)
365typedef struct ObjectTypeData {
366 char displayName[20]; /* +0x00 */
367 short objectClass; /* +0x14 */
368 short resourceType; /* +0x16 */
369 short field_18; /* +0x18 */
370 short collisionRadius; /* +0x1A */
371 short radarRadius; /* +0x1C */
372 short scale; /* +0x1E */
373 short animationDelay; /* +0x20 */
374 int lifetime; /* +0x22 */
375 short damageCapacity; /* +0x26 */
376 short explosionDamage; /* +0x28 */
377 short maximumVelocity; /* +0x2A */
378 short cruiseVelocity; /* +0x2C */
379 unsigned char *animation; /* +0x2E */
380 int acceleration; /* +0x32 */
381 short pitchRate; /* +0x36 */
382 short yawRate; /* +0x38 */
383 short rollRate; /* +0x3A */
384 short afterburnerVelocity; /* +0x3C */
385 unsigned char weaponLoadout[0xA1]; /* +0x3E */
386 short shieldFore; /* +0xDF */
387 short shieldAft; /* +0xE1 */
388 short armorFront; /* +0xE3 */
389 short armorRear; /* +0xE5 */
390 short armorLeft; /* +0xE7 */
391 short armorRight; /* +0xE9 */
392 unsigned char *shapeSet; /* +0xEB */
393 unsigned char *shape; /* +0xEF */
395#pragma pack(pop)
396
398 sizeof(ObjectTypeData) == 0xf3 ? 1 : -1];
400 offsetof(ObjectTypeData, objectClass) == 0x14 ? 1 : -1];
402 offsetof(ObjectTypeData, weaponLoadout) == 0x3e ? 1 : -1];
403
404/* Compact three-axis offset used by the formation tables. Unlike a
405 * FixedVector, each component is a 16-bit distance. */
406typedef struct ShortVector {
407 short x;
408 short y;
409 short z;
411
412/* WC2 stores sixteen ten-byte weapon entries after a signed count byte. */
413#pragma pack(push, 1)
414typedef struct ShipWeaponSlot {
415 short type; /* +0x00: spawned object type */
416 ShortVector mount; /* +0x02: hardpoint offset */
417 signed char disabled; /* +0x08 */
418 signed char weaponType; /* +0x09: object-data index */
420#pragma pack(pop)
421
422#ifdef __cplusplus
424 sizeof(ShipWeaponSlot) == 0x0a ? 1 : -1];
425#else
426/* One row of g_aShipWeapons and of ObjectTypeData.weaponLoadout:
427 * the slot count, then the slots. Indexing the row as this record lets the
428 * count and member offsets fold into one constant. The array bound also
429 * checks the ten-byte slot size. (No C++ unit uses it; there it would add
430 * implicit members and their keys.) */
431#pragma pack(push, 1)
432struct ShipLoadout {
433 signed char count;
434 ShipWeaponSlot slots[sizeof(ShipWeaponSlot) == 0x0a ? 16 : -1];
435};
436#pragma pack(pop)
437#endif
438
447
453
460
461typedef struct ShortPoint {
462 short x;
463 short y;
465
476
477/* Inclusive screen-space bounds used by the cockpit target-box renderer. */
478typedef struct ShortRect {
479 short left;
480 short top;
481 short right;
482 short bottom;
484
485/* One cockpit scanner's centre and inclusive cursor limits. */
494
495/* Packet 13 in PCSHIP.Vnn supplies the per-ship cockpit geometry and frame
496 * tables. The word at +0xF7 and the point array at +0xF9 are intentionally
497 * unaligned in the original packet. */
498#pragma pack(push, 1)
499typedef struct CockpitResourceLayout {
502 short lightX[7]; /* +0x014 */
503 short lightY[7]; /* +0x022 */
504 signed char lightOffFrame[7]; /* +0x030 */
505 signed char lightOnFrame[7]; /* +0x037 */
506 CockpitBarDefinition bars[8]; /* +0x03E */
507 ShortPoint readoutOrigins[4]; /* +0x0BE */
513 signed char field_f6; /* +0x0F6 */
514 short field_f7; /* +0x0F7 */
516 signed char targetLockDisplayEnabled; /* +0x139 */
518#pragma pack(pop)
519
520/* Each target-camera overlay entry occupies 0x20 bytes in cockpit packet 14.
521 * The two coordinate/frame triplets are selected when the overlay is enabled
522 * and disabled respectively. */
523#pragma pack(push, 1)
525 unsigned char field_0[2]; /* +0x00 */
526 short enabledX; /* +0x02 */
527 short enabledY; /* +0x04 */
528 unsigned char field_6[6]; /* +0x06 */
529 short enabledFrame; /* +0x0C */
530 unsigned char field_e[4]; /* +0x0E */
531 short disabledX; /* +0x12 */
532 short disabledY; /* +0x14 */
533 unsigned char field_16[6]; /* +0x16 */
534 short disabledFrame; /* +0x1C */
535 unsigned char field_1e[2]; /* +0x1E */
537#pragma pack(pop)
538
539/* The 140-word cockpit table at 0x0046E008. Five ship cockpits use the
540 * viewport/scanner/hand rectangles; the four readout origins also contain a
541 * sixth sentinel entry used by the original table indexing. */
550
551/* Header shared by the static and packet-backed view geometries. fadeData is
552 * a variable-length sequence in loaded packets, but four words are sufficient
553 * for each built-in geometry at 0x0049D4E8. */
561
562#pragma pack(push, 1)
563/* Packet 6 in each PCSHIP file starts with a count followed by offsets to the
564 * four cockpit view geometries. */
569
570/* INSTALL.DAT uses fixed 16-byte records. The last byte is the logical-file
571 * id used to build the runtime lookup table. */
572typedef struct DiskFileRecord {
573 char name[13];
574 signed char diskNumber;
575 unsigned char fileClass;
576 unsigned char logicalFile;
578#pragma pack(pop)
579
580/* The leading offsets in every BRIEFING.xxx mission packet. */
581typedef struct BriefingPacketHeader {
582 unsigned int briefingScene;
583 unsigned int briefingText;
584 unsigned int debriefingScene;
585 unsigned int debriefingText;
586 unsigned int recRoomScene0;
587 unsigned int recRoomText0;
588 unsigned int recRoomScene2;
589 unsigned int recRoomText2;
590 unsigned int recRoomScene1;
591 unsigned int recRoomText1;
593
594/* Caller-owned storage accepted by DecompressPacketSection. */
596 unsigned char decoder[0x3020];
597 unsigned char input[0x400];
599
600#pragma pack(push, 1)
601typedef struct InputManagerState {
602 unsigned char field_0[0x0d];
604 unsigned char field_11[0x10];
606#pragma pack(pop)
607
612
613#pragma pack(push, 1)
618
623
638
650
660
670#pragma pack(pop)
671
673 sizeof(CannedSceneObjectEventRecord) == 0x30 ? 1 : -1];
674
676 sizeof(CannedSceneObjectStateRecord) == 0x35 ? 1 : -1];
677
679 sizeof(CannedSceneRecordHeader) == 6 ? 1 : -1];
680
682 sizeof(CannedSceneBriefingCharacterRecord) == 0x10 ? 1 : -1];
683
685 sizeof(CannedSceneMusicCommandRecord) == 0x16 ? 1 : -1];
686
688 sizeof(InputManagerState) == 0x21 ? 1 : -1];
689
690#pragma pack(push, 1)
691typedef struct MusicResource {
692 void *packet;
693 short loaded;
695#pragma pack(pop)
696
698 sizeof(MusicResource) == 6 ? 1 : -1];
699
701 sizeof(CockpitLayout) == 0x118 ? 1 : -1];
703 sizeof(CockpitResourceLayout) == 0x13a ? 1 : -1];
705 sizeof(CockpitTargetCameraOverlay) == 0x20 ? 1 : -1];
707 sizeof(ScreenViewportGeometry) == 0x10 ? 1 : -1];
709 sizeof(DiskFileRecord) == 0x10 ? 1 : -1];
711 sizeof(BriefingPacketHeader) == 0x28 ? 1 : -1];
712#pragma pack(push, 1)
713typedef struct NavMapLabel {
714 short x;
715 short y;
716 short colour;
717 const char *text;
719#pragma pack(pop)
720
722 sizeof(NavMapLabel) == 0x0a ? 1 : -1];
723
724/* Marker geometry and palette slots for one mission-objective type. */
725typedef struct NavMapObjectiveStyle {
728 unsigned char *unvisitedColour;
729 unsigned char *markerColour;
730 unsigned char *labelColour;
732
734 sizeof(NavMapObjectiveStyle) == 0x10 ? 1 : -1];
735
736/* One selectable title-screen image and its inclusive mouse hit bounds. */
737typedef struct TitleMenuRegion {
738 short frame;
739 short left;
740 short top;
741 short right;
742 short bottom;
744
745/* One packet-backed pointer slot in a scene resource list. */
746#pragma pack(push, 1)
752
753/* A decoded WC2 scene chunk. The retail code addresses the allocation at
754 * +2 and the number of entries at +6, so this record is byte packed. */
760
764
765typedef struct SceneHotspot {
766 short left;
767 short top;
768 short right;
769 short bottom;
770 unsigned char selection;
772#pragma pack(pop)
773
775 sizeof(PacketResourceDescriptor) == 0x0a ? 1 : -1];
777 sizeof(SceneResourceTable) == 0x08 ? 1 : -1];
779 sizeof(SceneHotspot) == 0x09 ? 1 : -1];
780
781/* Six packed TrainSim ranking records begin at 0x005A7C30. The five-byte
782 * stride is explicit in every getter, setter, and ranking-table scan. */
783#pragma pack(push, 1)
784typedef struct HighScoreEntry {
785 signed char pilotIndex;
786 unsigned int score;
788#pragma pack(pop)
789
790/* Campaign pilot records are copied from the nine-entry template at
791 * 0x00470108 into 0x005988D0. The high-score code addresses the callsign at
792 * +0x0E, while PostMission updates the mission and kill totals at +0x20 and
793 * +0x22. */
794#pragma pack(push, 1)
795typedef struct PilotRecord {
796 char name[14]; /* +0x00 */
797 char callsign[14]; /* +0x0E */
798 short portrait; /* +0x1C */
799 short rank; /* +0x1E */
800 short missions; /* +0x20 */
801 short kills; /* +0x22 */
802 short personality; /* +0x24 */
804
805typedef struct CampaignDate {
806 short day;
807 short year;
809
810/* One packed command in BRIEFING.000's scene stream. The Win32 director
811 * advances these records with a 13-byte stride retained from the DOS data. */
813 signed char shot; /* +0x00 */
814 signed char textColour; /* +0x01 */
815 signed char talker; /* +0x02 */
816 short duration; /* +0x03 */
817 short testsOffset; /* +0x05 */
818 short textOffset; /* +0x07 */
819 short mouthAnimationOffset; /* +0x09 */
820 short faceAnimationOffset; /* +0x0B */
822
823/* One actor in the briefing-room long shot. The packed 18-byte records at
824 * 0x0046E218 carry both the seated-body origin and the independently scaled
825 * portrait animation used by the original WC1 briefing renderer. */
827 short bodyX; /* +0x00 */
828 short bodyY; /* +0x02 */
829 short portraitX; /* +0x04 */
830 short portraitY; /* +0x06 */
831 short scale; /* +0x08 */
832 signed char visible; /* +0x0A */
833 signed char firstPortraitFrame; /* +0x0B */
834 signed char portraitFrameCount; /* +0x0C */
835 const signed char *animation; /* +0x0D */
836 signed char animationPhase; /* +0x11, mutable scene state */
838
839/* One runtime object in the packet-driven scene-animation interpreter. The
840 * packet stores a 0x36-byte array for each scene, followed by bytecode streams
841 * that animate position, rotation, scale and frame. */
842typedef struct SceneAnimationObject {
843 short layer; /* +0x00: 0 tiles frames horizontally */
844 short scriptOffset; /* +0x02: offset into definition packet */
845 signed char *scriptStart; /* +0x04 */
846 signed char *scriptCursor; /* +0x08 */
847 signed char *repeatCursor; /* +0x0C */
848 unsigned short goalFlags; /* +0x10 */
849 short delay; /* +0x12 */
850 unsigned char *shape; /* +0x14 */
851 short x; /* +0x18 */
852 short y; /* +0x1A */
853 short rotation; /* +0x1C */
854 short scale; /* +0x1E */
855 short frame; /* +0x20 */
856 short deltaX; /* +0x22 */
857 short deltaY; /* +0x24 */
858 short deltaRotation; /* +0x26 */
859 short deltaScale; /* +0x28 */
860 short deltaFrame; /* +0x2A */
861 short goalX; /* +0x2C */
862 short goalY; /* +0x2E */
863 short goalRotation; /* +0x30 */
864 short goalScale; /* +0x32 */
865 short goalFrame; /* +0x34 */
867
868/* WC2's cinematic interpreter keeps packet-backed resource lists in a packed
869 * linked record. The byte-index arrays select a name from packedFilenames and
870 * the first packet section to load; loadedPackets caches the resulting packet. */
871typedef struct CutsceneResourceTable {
872 short owner; /* +0x00 */
873 short count; /* +0x02 */
874 const unsigned char *filenameIndices; /* +0x04 */
875 const unsigned char *sectionIndices; /* +0x08 */
876 char *packedFilenames; /* +0x0C */
877 void **loadedPackets; /* +0x10 */
878 struct CutsceneResourceTable *next; /* +0x14 */
880
881/* A SPRT/PLNE/SEQU/SCNE resource group has parallel DATA and SCRP halves.
882 * Each half carries resource pointers, symbol names, and the runtime indices
883 * assigned while the container is linked to its parent resource level. The
884 * symbol lookup walks whichever half it was asked for through this view. */
886 unsigned char inheritedCount; /* +0x00 */
887 unsigned char count; /* +0x01 */
888 void **entries; /* +0x02 */
889 short *runtimeIndices; /* +0x06 */
890 short localCount; /* +0x0A */
891 char **symbols; /* +0x0C */
892 short *symbolIndices; /* +0x10 */
893 short symbolCount; /* +0x14 */
895
897 unsigned char inheritedDataCount; /* +0x00 */
898 unsigned char dataCount; /* +0x01 */
899 void **dataEntries; /* +0x02 */
900 short *dataRuntimeIndices; /* +0x06 */
901 short localDataCount; /* +0x0A */
902 char **dataSymbols; /* +0x0C */
903 short *dataSymbolIndices; /* +0x10 */
904 short dataSymbolCount; /* +0x14 */
905 unsigned char inheritedScriptCount; /* +0x16 */
906 unsigned char scriptCount; /* +0x17 */
907 unsigned char **scripts; /* +0x18 */
908 short *scriptRuntimeIndices; /* +0x1C */
909 short localScriptCount; /* +0x20 */
910 char **scriptSymbols; /* +0x22 */
911 short *scriptSymbolIndices; /* +0x26 */
912 short scriptSymbolCount; /* +0x2A */
913 short owner; /* +0x2C */
916
917typedef struct CutsceneTextResource {
918 short owner; /* +0x00 */
919 char **entries; /* +0x02 */
920 struct CutsceneTextResource *next; /* +0x06 */
922
923typedef struct CutsceneSoundEffect {
924 struct CutsceneSoundEffect *next; /* +0x00 */
925 short resourceIndex; /* +0x04 */
926 void *sound; /* +0x06 */
928
929typedef struct CutsceneMusicNode {
930 unsigned char resourceIndex; /* +0x00 */
931 void *packet; /* +0x01 */
932 struct CutsceneMusicNode *next; /* +0x05 */
933 struct CutsceneMusicNode *previous; /* +0x09 */
935
936typedef struct CutscenePlane {
937 signed char active; /* +0x00 */
938 signed char visible; /* +0x01 */
939 unsigned char *scriptStart; /* +0x02 */
940 unsigned char *scriptCursor; /* +0x06 */
941 short *locals; /* +0x0A */
942 short spriteCount; /* +0x0E */
943 unsigned char *spriteIndices; /* +0x10 */
944 signed char deltaX; /* +0x14 */
945 signed char deltaY; /* +0x15 */
946 signed char deltaDepth; /* +0x16 */
947 short x; /* +0x17 */
948 short y; /* +0x19 */
949 short depth; /* +0x1B */
950 short rotation; /* +0x1D */
951 short scale; /* +0x1F */
952 unsigned short drawFlags; /* +0x21 */
953 short owner; /* +0x23 */
954 short waitTicks; /* +0x25 */
955 int waitStart; /* +0x27 */
957
958typedef struct CutsceneSequence {
959 signed char active; /* +0x00 */
960 short planeCount; /* +0x01 */
961 unsigned char *planeIndices; /* +0x03 */
962 unsigned char field_7[4]; /* +0x07 */
963 unsigned char *scriptStart; /* +0x0B */
964 unsigned char *scriptCursor; /* +0x0F */
965 short *locals; /* +0x13 */
966 short waitTicks; /* +0x17 */
967 int waitStart; /* +0x19 */
968 short owner; /* +0x1D */
970
971typedef struct CutsceneScene {
972 signed char active; /* +0x00 */
973 short sequenceCount; /* +0x01 */
974 unsigned char *sequenceIndices; /* +0x03 */
975 unsigned char field_7[4]; /* +0x07 */
976 unsigned char *scriptStart; /* +0x0B */
977 unsigned char *scriptCursor; /* +0x0F */
978 short *locals; /* +0x13 */
979 short owner; /* +0x17 */
981
982/* Type 4 objects in the WC2 cinematic renderer stream a long FLIC as batches
983 * of packet sections. The unaligned pointer fields prove that this remains a
984 * packed DOS-era record. */
985typedef struct SceneFlicObject {
986 signed char active; /* +0x00 */
987 signed char visible; /* +0x01 */
988 signed char tick; /* +0x02 */
989 signed char field_3; /* +0x03 */
990 short drawType; /* +0x04 */
991 unsigned char *shape; /* +0x06 */
992 short baseFrame; /* +0x0A */
993 short finalFrame; /* +0x0C */
994 short currentFrame; /* +0x0E */
995 unsigned char *linkedScript; /* +0x10 */
996 unsigned char *scriptStart; /* +0x14 */
997 unsigned char *scriptCursor; /* +0x18 */
998 short waitTicks; /* +0x1C */
999 int waitStart; /* +0x1E */
1000 short delayFrames; /* +0x22 */
1001 short *locals; /* +0x24 */
1002 signed char deltaX; /* +0x28 */
1003 signed char deltaY; /* +0x29 */
1004 signed char deltaDepth; /* +0x2A */
1005 short x; /* +0x2B */
1006 short y; /* +0x2D */
1007 short field_2f; /* +0x2F */
1008 short rotation; /* +0x31 */
1009 short scale; /* +0x33 */
1010 unsigned short drawFlags; /* +0x35 */
1011 short segmentStartFrame; /* +0x37 */
1012 short segmentEndFrame; /* +0x39 */
1013 const char *filename; /* +0x3B */
1014 short nextSection; /* +0x3F */
1015 short context; /* +0x41 */
1016 unsigned int decoderState; /* +0x43 */
1017 short owner; /* +0x47 */
1018 short linkedOwner; /* +0x49 */
1020
1025
1026/* SCRAMBLE.VGA uses five compact actors while the pilot approaches and
1027 * boards the selected fighter. The two pointers are deliberately unaligned:
1028 * the retail Win32 table at 0x004657B0 has a packed 0x18-byte stride. */
1030 short x; /* +0x00 */
1031 short y; /* +0x02 */
1032 short deltaX; /* +0x04 */
1033 short deltaY; /* +0x06 */
1034 signed char baseFrame; /* +0x08 */
1035 signed char animationFrame; /* +0x09; -1 disables the script */
1036 signed char animationState; /* +0x0A */
1037 const unsigned short *animation; /* +0x0B */
1038 unsigned char *shape; /* +0x0F */
1039 short angle; /* +0x13 */
1040 short scale; /* +0x15 */
1041 signed char flip; /* +0x17 */
1043
1044/* Per-fighter decorative sprite positions used by the scramble/landing
1045 * renderer. Each of the four player fighters owns 32 packed entries. */
1046typedef struct ScrambleShipDetail {
1047 signed char frame; /* +0x00 */
1048 short x; /* +0x01 */
1049 short y; /* +0x03 */
1051
1061
1062/* The complete persistent campaign record copied by ResetCampaignData. The
1063 * four bytes at +0x44 are the ace-state flags; the following eight bytes are
1064 * two dates, rather than a single twelve-byte flag array as the old placeholder
1065 * declaration implied. */
1066typedef struct CampaignState {
1068 enum ObjectType playerShipType; /* +0x04 */
1069 unsigned char medals[5]; /* +0x08 */
1070 unsigned char badges[12]; /* +0x0D */
1071 signed char currentMission; /* +0x19 */
1072 signed char currentSeries; /* +0x1A */
1073 signed char seriesHistoryCount; /* +0x1B */
1074 signed char seriesHistory[8]; /* +0x1C */
1075 int personalityDeathMission[8]; /* +0x24 */
1076 unsigned char aceFlags[4]; /* +0x44 */
1079 short promotionScore; /* +0x50 */
1080 short missionScore; /* +0x52 */
1081 short seriesScore; /* +0x54 */
1082 short campaignIndex; /* +0x56 */
1084
1085/* SAVEGAME.WLD stores the two leading 32-bit campaign values and the eight
1086 * personality-death mission values as signed 16-bit quantities. The remaining
1087 * fields retain their packed runtime order. */
1089 short currentPilot; /* +0x00 */
1090 short playerShipType; /* +0x02 */
1091 unsigned char medals[5]; /* +0x04 */
1092 unsigned char badges[12]; /* +0x09 */
1093 signed char currentMission; /* +0x15 */
1094 signed char currentSeries; /* +0x16 */
1095 signed char seriesHistoryCount; /* +0x17 */
1096 signed char seriesHistory[8]; /* +0x18 */
1097 short personalityDeathMission[8]; /* +0x20 */
1098 unsigned char aceFlags[4]; /* +0x30 */
1101 short promotionScore; /* +0x3C */
1102 short missionScore; /* +0x3E */
1103 short seriesScore; /* +0x40 */
1104 short campaignIndex; /* +0x42 */
1106
1107/* WC2 keeps the current/default pilot identity and campaign cursor in one
1108 * packed 0x60-byte record. The string widths and the late series/mission
1109 * fields are fixed by the accesses in the startup controller and personnel
1110 * database. Fields whose purpose is not yet established retain offset names. */
1111#pragma pack(push, 1)
1112typedef struct PilotProfile {
1113 char firstName[25]; /* +0x00 */
1114 char lastName[25]; /* +0x19 */
1115 char callsign[13]; /* +0x32 */
1116 short rank; /* +0x3F */
1117 short field_41; /* +0x41 */
1118 short field_43; /* +0x43 */
1119 unsigned char field_45[0x11]; /* +0x45 */
1120 short series; /* +0x56 */
1121 short mission; /* +0x58 */
1122 short missionScore; /* +0x5A */
1123 short playerShipType; /* +0x5C */
1124 short field_5e; /* +0x5E */
1126
1127typedef struct PersonnelFileSlot {
1128 short occupied; /* +0x00 */
1129 char description[36]; /* +0x02 */
1131
1132/* Variable-length WC2 campaign globals. The on-disk word count determines
1133 * the saved byte size; all 32 pilot-status words nevertheless have fixed
1134 * offsets in the retail image. */
1135typedef struct CampaignGlobals {
1136 unsigned short wordCount; /* +0x00 */
1137 short campaignSlot; /* +0x02 */
1138 short series; /* +0x04 */
1139 short mission; /* +0x06 */
1140 short field_08; /* +0x08 */
1141 short field_0a; /* +0x0A */
1142 short field_0c; /* +0x0C */
1143 short field_0e; /* +0x0E */
1144 short damageLevel; /* +0x10 */
1145 short arcadeState; /* +0x12 */
1146 short field_14; /* +0x14 */
1147 short field_16; /* +0x16 */
1148 short previousSeries; /* +0x18 */
1149 short previousMission; /* +0x1A */
1150 short objectiveFlags[8]; /* +0x1C */
1151 short objectiveSighted[8]; /* +0x2C */
1152 unsigned char field_3c[0x10]; /* +0x3C */
1153 short shipVelocityState[16]; /* +0x4C */
1154 short shipKillCounts[8]; /* +0x6C */
1155 short shipMissionFlags[8]; /* +0x7C */
1156 short shipPilotIndices[8]; /* +0x8C */
1157 short missionScore; /* +0x9C */
1158 short pilotCount; /* +0x9E */
1159 short pilotStatus[32]; /* +0xA0 */
1161#pragma pack(pop)
1162
1164 sizeof(PilotProfile) == 0x60 ? 1 : -1];
1166 sizeof(PersonnelFileSlot) == 0x26 ? 1 : -1];
1168 offsetof(CampaignGlobals, pilotStatus) == 0xa0 ? 1 : -1];
1169
1170/* One open packet section. OpenPacketSection fills this record and the packet
1171 * reader advances position while leaving the containing data file open. */
1181#pragma pack(pop)
1182
1184 sizeof(PilotRecord) == 0x26 ? 1 : -1];
1186 sizeof(CampaignState) == 0x58 ? 1 : -1];
1188 sizeof(SaveGameDiskCampaignState) == 0x44 ? 1 : -1];
1190 sizeof(ConversationSceneRecord) == 0x0d ? 1 : -1];
1192 sizeof(BriefingCharacterLayout) == 0x12 ? 1 : -1];
1194 sizeof(SceneAnimationObject) == 0x36 ? 1 : -1];
1196 sizeof(CutsceneResourceTable) == 0x18 ? 1 : -1];
1198 sizeof(CutsceneObjectResourceList) == 0x32 ? 1 : -1];
1200 sizeof(CutsceneTextResource) == 0x0a ? 1 : -1];
1202 sizeof(CutsceneSoundEffect) == 0x0a ? 1 : -1];
1204 sizeof(CutsceneMusicNode) == 0x0d ? 1 : -1];
1206 sizeof(CutscenePlane) == 0x2b ? 1 : -1];
1208 sizeof(CutsceneSequence) == 0x1f ? 1 : -1];
1210 sizeof(CutsceneScene) == 0x19 ? 1 : -1];
1212 sizeof(SceneFlicObject) == 0x4b ? 1 : -1];
1214 sizeof(SceneFlicCacheEntry) == 0x08 ? 1 : -1];
1216 sizeof(ScrambleAnimationActor) == 0x18 ? 1 : -1];
1218 sizeof(ScrambleShipDetail) == 0x05 ? 1 : -1];
1220 sizeof(PacketSectionHandle) == 0x14 ? 1 : -1];
1221
1222/* Polar form used by the original 3D orientation routines. */
1228
1229/* Runtime asteroid/mine-field descriptor. WC2 retained the original
1230 * 16-bit object type, producing the 0x14-byte stride visible in its scans. */
1231#pragma pack(push, 1)
1232typedef struct HazardField {
1233 short type; /* +0x00 */
1234 FixedVector center; /* +0x02 */
1235 short innerRadius; /* +0x0e */
1236 short outerRadius; /* +0x10 */
1237 short density; /* +0x12 */
1239#pragma pack(pop)
1240
1242 sizeof(HazardField) == 0x14 ? 1 : -1];
1243
1244/* Weighted pair in the retail maneuver-selection tables. */
1245typedef struct ManeuverChoice {
1246 signed char threshold;
1247 signed char primary;
1248 signed char secondary;
1250
1251/* Coordinates for the independently animated face and mouth layers in a
1252 * talking-head shape packet. */
1259
1260/* The transferred WC1 renderer kept a separate static-star population. */
1261typedef struct ConstellationStar {
1262 short x;
1263 short y;
1264 short frame;
1266
1273
1274/* WC2 uses one particle population. Each record carries an independent
1275 * velocity on both axes so direction zero can radiate from the viewport. */
1283
1284/* One of four optional planet sprites placed around a campaign
1285 * constellation. The angles orient a temporary reference frame before the
1286 * object is positioned at the fixed constellation radius. */
1293
1295 sizeof(TalkingHeadOrigin) == 0x08 ? 1 : -1];
1297 sizeof(ConstellationStar) == 0x06 ? 1 : -1];
1299 sizeof(LegacyConstellationParticle) == 0x08 ? 1 : -1];
1301 sizeof(ConstellationParticle) == 0x0a ? 1 : -1];
1303 sizeof(ConstellationObjectDefinition) == 0x08 ? 1 : -1];
1304
1305/* Runtime WC2 mission-nav record. The loader expands each 3-byte disk
1306 * coordinate to a 32-bit fixed-point value. The three resource columns and
1307 * the ten mission-ship indices produce the 0x65-byte stride at 0x00491E98. */
1308#pragma pack(push, 1)
1309/* The briefing beacons the nav map draws, 37 bytes each, terminated by a
1310 * record whose active byte is zero. */
1311#pragma pack(push, 1)
1312typedef struct NavMapBeacon {
1313 signed char field_00; /* +0x00 */
1315 signed char field_0d[3]; /* +0x0D */
1316 char name[20]; /* +0x10 */
1317 signed char active; /* +0x24 */
1319#pragma pack(pop)
1320
1322 sizeof(NavMapBeacon) == 0x25 ? 1 : -1];
1323
1324typedef struct MissionNavPoint {
1325 char name[0x1e]; /* +0x00 */
1326 signed char type; /* +0x1E: 1 is an active nav point */
1328 short proximityRadius; /* +0x2B */
1329 signed char systemIndex; /* +0x2D */
1330 signed char field_2e; /* +0x2E */
1331 signed char triggers[4][2]; /* +0x2F: type, target nav point */
1332 signed char waveCommands[8]; /* +0x37: three-byte command records */
1333 short preloadObjectTypes[3]; /* +0x3F */
1334 short preloadObjectClasses[3]; /* +0x45 */
1335 short preloadLogicalFiles[3]; /* +0x4B */
1336 short missionShips[10]; /* +0x51 */
1338#pragma pack(pop)
1339
1340/* Direct 0x18-byte header copied from WC2 campaign packet 0. */
1341#pragma pack(push, 1)
1342typedef struct MissionHeader {
1343 short entryNavPoint; /* +0x00 */
1344 short wingmanMissionShip; /* +0x02 */
1345 short homeMissionShip; /* +0x04 */
1346 short playerMissionShip; /* +0x06 */
1347 short initialMissionShips[8]; /* +0x08 */
1349#pragma pack(pop)
1350
1351/* WC2 copies sixteen packed 0x3c-byte mission records directly from packet 3
1352 * into the table at 0x00492290. */
1353#pragma pack(push, 1)
1354/* A single palette entry as three 16-bit components. WC2 copies one around
1355 * by structure assignment, not by memcpy. */
1356typedef struct PaletteRgb {
1357 unsigned short red;
1358 unsigned short green;
1359 unsigned short blue;
1361
1362typedef struct MissionShipRecord {
1363 char name[19]; /* +0x00 */
1364 signed char field_13; /* +0x13 */
1365 signed char type; /* +0x14: loaded ship-resource type */
1366 short objectType; /* +0x15: world-object/hazard type */
1367 short side; /* +0x17 */
1368 signed char field_19; /* +0x19 */
1369 signed char field_1a; /* +0x1A */
1370 short missionType; /* +0x1B */
1371 signed char navPoint; /* +0x1D */
1373 short pitch; /* +0x2A */
1374 short yaw; /* +0x2C */
1375 short roll; /* +0x2E */
1376 signed char formationSpot; /* +0x30 */
1377 short speed; /* +0x31 */
1378 short rating; /* +0x33 */
1379 short pilot; /* +0x35 */
1380 signed char state; /* +0x37 */
1381 signed char leaderMissionIndex; /* +0x38 */
1382 signed char formationIndex; /* +0x39 */
1383 signed char missionParameter; /* +0x3A: mission target/nav index */
1384 signed char portrait; /* +0x3B */
1386
1387/* WC1 expanded the first short to an int after loading; WC2 retains the
1388 * packet's packed 64-byte representation in memory. */
1390 short type; /* +0x00 */
1391 short index; /* +0x02 */
1392 char description[60]; /* +0x04 */
1394
1395/* Five packed WC2 ship-resource cache entries at 0x00493398. */
1396typedef struct ObjectResourceSlot {
1397 short resourceType; /* +0x00 */
1398 short objectType; /* +0x02 */
1399 short objectClass; /* +0x04 */
1400 unsigned char *shapeSet; /* +0x06: archive section 0 */
1401 unsigned char *animation; /* +0x0A: archive section 2 */
1402 unsigned char *shape; /* +0x0E: archive section 1 */
1403 unsigned char *field_12; /* +0x12 */
1406 sizeof(ObjectResourceSlot) == 0x16 ? 1 : -1];
1407#pragma pack(pop)
1408
1409/* WC2 runtime mission-objective records use the 0x1E-byte stride visible in
1410 * every objective scan. The coordinate pair leads each record at 0x4932A8. */
1411#pragma pack(push, 1)
1412typedef struct MissionObjective {
1413 short mapX; /* +0x00 */
1414 short mapY; /* +0x02 */
1415 unsigned char field_4; /* +0x04 */
1416 short type; /* +0x05 */
1417 signed char index; /* +0x07 */
1418 unsigned char field_8; /* +0x08 */
1419 signed char flags; /* +0x09 */
1420 const char *displayName; /* +0x0A */
1421 char *name; /* +0x0E: mission description */
1424
1425/* One objective in SAVEGAME.WLD. The runtime integer and two pointer-sized
1426 * fields are retained as signed words by the inherited DOS file format. */
1428 short mapX; /* +0x00 */
1429 short mapY; /* +0x02 */
1430 unsigned char field_4; /* +0x04 */
1431 short type; /* +0x05 */
1432 signed char index; /* +0x07 */
1433 unsigned char flags; /* +0x08 */
1434 short displayName; /* +0x09 */
1435 short name; /* +0x0B */
1438
1439typedef struct SaveGameRecord {
1440 char description[17]; /* +0x000 */
1441 unsigned char occupied; /* +0x011 */
1442 PilotRecord pilots[9]; /* +0x012 */
1446
1447typedef struct SaveGameDiskRecord {
1448 char description[17]; /* +0x000 */
1449 signed char occupied; /* +0x011 */
1450 PilotRecord pilots[9]; /* +0x012 */
1454
1455typedef struct BarracksBunkState {
1456 short occupied; /* +0x00 */
1457 short animationFrame; /* +0x02 */
1458 short animationPeriod; /* +0x04 */
1459 int animationTick; /* +0x06 */
1461
1463 BarracksBunkState bunks[8]; /* +0x00 */
1464 short fallingDelay; /* +0x50 */
1465 int fallingY; /* +0x52 */
1466 int fallingVelocity; /* +0x56 */
1467 short impactFrame; /* +0x5A */
1468 short blinkDelay; /* +0x5C */
1469 short eyesOpen; /* +0x5E */
1470 short animationTick; /* +0x60 */
1471 const char *menuLabel; /* +0x62 */
1472 short field_66; /* +0x66 */
1474#pragma pack(pop)
1475
1477 sizeof(MissionNavPoint) == 0x65 ? 1 : -1];
1478
1479/* Packet 1 from an ace-specific intel file. The first eight bytes are not
1480 * consumed here; the final words override flight music and enemy comms. */
1481#pragma pack(push, 1)
1490#pragma pack(pop)
1491
1493 sizeof(ShipIntelligenceMetadata) == 0x0c ? 1 : -1];
1494
1496 sizeof(MissionShipRecord) == 0x3c ? 1 : -1];
1498 sizeof(MissionHeader) == 0x18 ? 1 : -1];
1500 sizeof(MissionObjectiveSource) == 0x40 ? 1 : -1];
1502 sizeof(MissionObjective) == 0x1e ? 1 : -1];
1503/* Mission packet records as stored on disk. */
1504#pragma pack(push, 1)
1505
1513
1514typedef struct MissionNavPointDisk {
1515 char name[30];
1516 signed char type;
1518 unsigned short proximityRadius;
1519 signed char triggers[4][2];
1521 short missionShips[10];
1523
1529
1530typedef struct MissionShipDisk {
1531 short type;
1532 short side;
1533 signed char leader;
1534 signed char field_5;
1536 signed char navPoint;
1538 short pitch;
1539 short yaw;
1540 short roll;
1541 signed char formationSpot;
1542 short speed;
1543 short rating;
1544 short pilot;
1547 signed char state;
1549 signed char formationIndex;
1552
1553#pragma pack(pop)
1554
1556 sizeof(MissionHeaderDisk) == 0x18 ? 1 : -1];
1557
1559 sizeof(MissionNavPointDisk) == 0x4d ? 1 : -1];
1560
1562 sizeof(MissionObjectiveDisk) == 0x40 ? 1 : -1];
1563
1565 sizeof(MissionShipDisk) == 0x2a ? 1 : -1];
1566
1568 sizeof(SaveGameDiskObjective) == 0x19 ? 1 : -1];
1570 sizeof(SaveGameRecord) == 0x3a0 ? 1 : -1];
1572 sizeof(SaveGameDiskRecord) == 0x33c ? 1 : -1];
1574 sizeof(BarracksBunkState) == 0x0a ? 1 : -1];
1576 sizeof(BarracksAnimationState) == 0x68 ? 1 : -1];
1577
1578#define SPACE_OBJECT_COUNT 70
1579#define SPACE_LAST_MOVING_OBJECT 66
1580#define EYE_OBJECT 67
1581#define SCRATCH_VIEW_OBJECT 69
1582#define DIRECTION_VIEW_COUNT 62
1583#define DIRECTION_SHAPE_TABLE_COUNT 3
1584/* WC2's object-type table drops the twelve extra ship records WC1 carried --
1585 * WC1 numbers 22 ships and bases, WC2 ten -- so the table is 46 records at the
1586 * 243-byte stride the code uses, and every type from the shared block on is
1587 * WC1's number minus twelve. The retail tables confirm it: the ship-hit
1588 * debris list at 0x492E10 holds 29, 30, 34 where WC1 names 41, 42, 46, the
1589 * explosion-debris rows at 0x492DD8 shift by the same twelve, set_objects_data
1590 * (0x410999) tests 0x1C for WC1's rock chunk 40, and manage_hazard (0x41836E)
1591 * tests 0x15 for WC1's space mine 33. */
1592/* perform_maneuver (0x4426A0) admits maneuvers 0 through 0x31. */
1593#define MANEUVER_HANDLER_COUNT 50
1594
1595#define OBJECT_DATA_COUNT 49
1596#define OBJECT_DATA_INDEX(sourceType) ((sourceType) - 12)
1597/* The records the reconstructed table names or its classes and frame lists
1598 * identify. The gun and missile block is where WC2 diverges most: it carries
1599 * four named guns and four more projectile slots where WC1 had three guns and
1600 * a turret bolt, so only the mine and everything above it line up with
1601 * OBJECT_DATA_INDEX(). */
1602#define OBJECT_DATA_LASER_CANNON 7
1603#define OBJECT_DATA_NEUTRON_GUN 8
1604#define OBJECT_DATA_MASS_DRIVER 9
1605#define OBJECT_DATA_PARTICLE_CANNON 10
1606/* Nameless projectile carrying the laser cannon's stats: the bolt a
1607 * turret fires. It never appears in the pilot's gun cycle. */
1608#define OBJECT_DATA_TURRET_GUN 11
1609#define OBJECT_DATA_DART_DF 15
1610#define OBJECT_DATA_JAVELIN_HS 16
1611#define OBJECT_DATA_PILUM_FF 17
1612#define OBJECT_DATA_SPICULUM_IR 18
1613#define OBJECT_DATA_TORPEDO 19
1614#define OBJECT_DATA_CHAFF_POD 20
1615#define OBJECT_DATA_PORCUPINE_MINE 21
1616#define OBJECT_DATA_ASTEROID1 22
1617#define OBJECT_DATA_ASTEROID2 23
1618#define OBJECT_DATA_ASTEROID3 24
1619#define OBJECT_DATA_ASTEROID4 25
1620#define OBJECT_DATA_ASTEROID5 26
1621#define OBJECT_DATA_ASTEROID6 27
1622#define OBJECT_DATA_ROCK_CHUNK 28
1623#define OBJECT_DATA_GIRDER_CHUNK 29
1624#define OBJECT_DATA_SHIP_TUBING 30
1625#define OBJECT_DATA_METAL_SHEET 31
1626#define OBJECT_DATA_SHIP_WING 32
1627#define OBJECT_DATA_BURNING_DEBRIS 33
1628#define OBJECT_DATA_O_RING 34
1629#define OBJECT_DATA_PIPE 35
1630#define OBJECT_DATA_EXPLOSION_SMALL 36
1631#define OBJECT_DATA_EXPLOSION_MEDIUM 37
1632#define OBJECT_DATA_EXPLOSION_LARGE 38
1633#define OBJECT_DATA_THRUSTERS 43
1634#define OBJECT_DATA_EJECTED_PILOT 44
1635#define OBJECT_DATA_DEBRIS_GLASS 45
1636#define OBJECT_DATA_DATA_CAPSULE 46
1637#define OBJECT_DATA_SPACE_DUST 46
1638#define OBJECT_DATA_DEBRIS_DUST 47
1639#define MISSION_SHIP_COUNT 16
1640/* update_nav_points (0x42B1AE) walks ten records with the 0x65 stride. */
1641#define MISSION_NAV_POINT_COUNT 10
1642#define MISSION_OBJECTIVE_COUNT 8
1643/* Ship objective code 5 has no WC1 counterpart; are_alive (0x429BA8) is the
1644 * only site that names it, so it stays a plain constant rather than a new
1645 * enum ShipObjective member. */
1646#define SHIP_OBJECTIVE_NOT_ALIVE 5
1647
1648/* --------------------------------------------------------------------------
1649 * Pilot record field order, from the DOS build's live memory layout
1650 * (WingCommanderArduinoBridge). The DOS offsets themselves do not apply to
1651 * this build, but both builds compile the same struct, so the ORDER holds:
1652 *
1653 * +0x00 first name +0x1E rank
1654 * +0x0E callsign +0x20 sorties flown
1655 * +0x22 total kills
1656 *
1657 * In-mission kills are a separate global, not part of this record. The
1658 * defaults are in the executable at 0x00469EC0: first name "Blair", callsign
1659 * "Maverick", and "CHEATER" -- the callsign the game substitutes once the
1660 * cheat flag is set (see ReadCheaterFlagFromRegistry, 0x00442600).
1661 * -------------------------------------------------------------------------- */
1662
1663#endif /* GAME_DATA_H */
void(__cdecl *g_pIxFree)(void *)
#define OBJECT_DATA_CHAFF_POD
Definition game_data.h:1614
char CutsceneSequence_size_must_be_0x1f[sizeof(CutsceneSequence)==0x1f ? 1 :-1]
Definition game_data.h:1208
HazardObjectType
Definition game_data.h:448
@ OBJECT_DATA_ASTEROID_FIELD
Definition game_data.h:449
@ OBJECT_DATA_SPACE_MINE
Definition game_data.h:450
char SceneFlicCacheEntry_size_must_be_0x08[sizeof(SceneFlicCacheEntry)==0x08 ? 1 :-1]
Definition game_data.h:1214
char CutsceneMusicNode_size_must_be_0x0d[sizeof(CutsceneMusicNode)==0x0d ? 1 :-1]
Definition game_data.h:1204
char ConstellationStar_size_must_be_0x06[sizeof(ConstellationStar)==0x06 ? 1 :-1]
Definition game_data.h:1297
char CannedSceneMusicCommandRecord_size_must_be_0x16[sizeof(CannedSceneMusicCommandRecord)==0x16 ? 1 :-1]
Definition game_data.h:685
char CutsceneObjectResourceList_size_must_be_0x32[sizeof(CutsceneObjectResourceList)==0x32 ? 1 :-1]
Definition game_data.h:1198
char BriefingPacketHeader_size_must_be_0x28[sizeof(BriefingPacketHeader)==0x28 ? 1 :-1]
Definition game_data.h:711
Rating
Definition game_data.h:183
@ RATING_ACE_DEWEY
Definition game_data.h:200
@ RATING_ACE_SPIRIT
Definition game_data.h:189
@ RATING_ACE_HEWEY
Definition game_data.h:198
@ RATING_ACE_PALADIN
Definition game_data.h:194
@ RATING_ACE_MANIAC
Definition game_data.h:195
@ RATING_CRACK
Definition game_data.h:186
@ RATING_FANATICAL
Definition game_data.h:188
@ RATING_ACE_BOSSMAN
Definition game_data.h:191
@ RATING_ACE_ICEMAN
Definition game_data.h:192
@ RATING_ACE_HUNTER
Definition game_data.h:190
@ RATING_ACE_LEWEY
Definition game_data.h:199
@ RATING_PROVINCIAL
Definition game_data.h:184
@ RATING_ELITE
Definition game_data.h:187
@ RATING_ACE_KNIGHT
Definition game_data.h:196
@ RATING_ACE_DAFFY
Definition game_data.h:201
@ RATING_LINE
Definition game_data.h:185
@ RATING_ACE_ANGEL
Definition game_data.h:193
@ RATING_ACE_PLAYER
Definition game_data.h:197
char BarracksBunkState_size_must_be_0x0a[sizeof(BarracksBunkState)==0x0a ? 1 :-1]
Definition game_data.h:1574
char PilotRecord_size_must_be_0x26[sizeof(PilotRecord)==0x26 ? 1 :-1]
Definition game_data.h:1184
ShipMissionType
Definition game_data.h:120
@ MISSION_TYPE_PATROL
Definition game_data.h:122
@ MISSION_TYPE_ESCORT
Definition game_data.h:123
@ MISSION_TYPE_WARP_ARRIVE
Definition game_data.h:129
@ MISSION_TYPE_CANNED_SEQUENCE
Definition game_data.h:132
@ MISSION_TYPE_GOTO_WARP
Definition game_data.h:128
@ MISSION_TYPE_RENDEZVOUS
Definition game_data.h:130
@ MISSION_TYPE_WINGMAN
Definition game_data.h:126
@ MISSION_TYPE_ROUT
Definition game_data.h:127
@ MISSION_TYPE_DEFEND
Definition game_data.h:125
@ MISSION_TYPE_COME_HOME
Definition game_data.h:131
@ MISSION_TYPE_NONE
Definition game_data.h:121
@ MISSION_TYPE_STRIKE
Definition game_data.h:124
@ MISSION_TYPE_SPLIT_PATROL
Definition game_data.h:134
@ MISSION_TYPE_BOGUS_AVOID_CRASH
Definition game_data.h:133
char CutsceneTextResource_size_must_be_0x0a[sizeof(CutsceneTextResource)==0x0a ? 1 :-1]
Definition game_data.h:1200
char CampaignGlobals_pilot_status_must_start_at_0xa0[offsetof(CampaignGlobals, pilotStatus)==0xa0 ? 1 :-1]
Definition game_data.h:1168
char CannedSceneObjectEventRecord_size_must_be_0x30[sizeof(CannedSceneObjectEventRecord)==0x30 ? 1 :-1]
Definition game_data.h:673
char LegacyConstellationParticle_size_must_be_0x08[sizeof(LegacyConstellationParticle)==0x08 ? 1 :-1]
Definition game_data.h:1299
CampaignBadgeIndex
Definition game_data.h:1052
@ CAMPAIGN_BADGE_FIFTEEN_MISSIONS
Definition game_data.h:1059
@ CAMPAIGN_BADGE_FIVE_KILLS
Definition game_data.h:1055
@ CAMPAIGN_BADGE_TEN_MISSIONS
Definition game_data.h:1058
@ CAMPAIGN_BADGE_TWENTY_FIVE_KILLS
Definition game_data.h:1056
@ CAMPAIGN_BADGE_FIVE_MISSIONS
Definition game_data.h:1057
@ CAMPAIGN_BADGE_SHIP_TYPE_BASE
Definition game_data.h:1054
@ CAMPAIGN_BADGE_FIRST_MISSION
Definition game_data.h:1053
char InputManagerState_size_must_be_0x21[sizeof(InputManagerState)==0x21 ? 1 :-1]
Definition game_data.h:688
char ConstellationObjectDefinition_size_must_be_0x08[sizeof(ConstellationObjectDefinition)==0x08 ? 1 :-1]
Definition game_data.h:1303
char PilotProfile_size_must_be_0x60[sizeof(PilotProfile)==0x60 ? 1 :-1]
Definition game_data.h:1164
char ScreenViewportGeometry_size_must_be_0x10[sizeof(ScreenViewportGeometry)==0x10 ? 1 :-1]
Definition game_data.h:707
char MissionObjective_size_must_be_0x1e[sizeof(MissionObjective)==0x1e ? 1 :-1]
Definition game_data.h:1502
EffectObjectType
Definition game_data.h:454
@ OBJECT_DATA_EJECTION_POD
Definition game_data.h:457
@ OBJECT_DATA_STAR
Definition game_data.h:458
@ OBJECT_DATA_PROJECTILE_IMPACT_EFFECT
Definition game_data.h:455
@ OBJECT_DATA_SHIP_DAMAGE_EFFECT_FIRST
Definition game_data.h:456
char TalkingHeadOrigin_size_must_be_0x08[sizeof(TalkingHeadOrigin)==0x08 ? 1 :-1]
Definition game_data.h:1295
char SceneHotspot_size_must_be_0x09[sizeof(SceneHotspot)==0x09 ? 1 :-1]
Definition game_data.h:779
char ConversationSceneRecord_size_must_be_0x0d[sizeof(ConversationSceneRecord)==0x0d ? 1 :-1]
Definition game_data.h:1190
char MissionHeader_size_must_be_0x18[sizeof(MissionHeader)==0x18 ? 1 :-1]
Definition game_data.h:1498
char MissionObjectiveDisk_size_must_be_0x40[sizeof(MissionObjectiveDisk)==0x40 ? 1 :-1]
Definition game_data.h:1562
char NavMapBeacon_size_must_be_0x25[sizeof(NavMapBeacon)==0x25 ? 1 :-1]
Definition game_data.h:1322
char DiskFileRecord_size_must_be_0x10[sizeof(DiskFileRecord)==0x10 ? 1 :-1]
Definition game_data.h:709
char BarracksAnimationState_size_must_be_0x68[sizeof(BarracksAnimationState)==0x68 ? 1 :-1]
Definition game_data.h:1576
char SceneAnimationObject_size_must_be_0x36[sizeof(SceneAnimationObject)==0x36 ? 1 :-1]
Definition game_data.h:1194
char HazardField_size_must_be_0x14[sizeof(HazardField)==0x14 ? 1 :-1]
Definition game_data.h:1242
char ConstellationParticle_size_must_be_0x0a[sizeof(ConstellationParticle)==0x0a ? 1 :-1]
Definition game_data.h:1301
ObjectType
Definition game_data.h:54
@ OBJECT_TYPE_VENTURE
Definition game_data.h:59
@ OBJECT_TYPE_DILLIGENT
Definition game_data.h:60
@ OBJECT_TYPE_EXPLOSION0
Definition game_data.h:103
@ OBJECT_TYPE_HYPERSPACE_JUMP_FLASH
Definition game_data.h:100
@ OBJECT_TYPE_KILRATHI_BASE
Definition game_data.h:76
@ OBJECT_TYPE_TIGERS_CLAW
Definition game_data.h:63
@ OBJECT_TYPE_FRALTHI
Definition game_data.h:73
@ OBJECT_TYPE_NEUTRON_PARTICLE_GUN
Definition game_data.h:80
@ OBJECT_TYPE_HEAT_SEEKING_MISSILE
Definition game_data.h:84
@ OBJECT_TYPE_SCIMITAR
Definition game_data.h:57
@ OBJECT_TYPE_DEBRIS_METAL_SHEET
Definition game_data.h:98
@ OBJECT_TYPE_EJECTED_PILOT
Definition game_data.h:111
@ OBJECT_TYPE_FF_MISSILE
Definition game_data.h:85
@ OBJECT_TYPE_TYPES
Definition game_data.h:113
@ OBJECT_TYPE_EXETER
Definition game_data.h:62
@ OBJECT_TYPE_MASS_DRIVER_CANNON
Definition game_data.h:81
@ OBJECT_TYPE_LUMBARI
Definition game_data.h:71
@ OBJECT_TYPE_DEBRIS_WING
Definition game_data.h:99
@ OBJECT_TYPE_DRAYMAN
Definition game_data.h:61
@ OBJECT_TYPE_SNAKEIR
Definition game_data.h:74
@ OBJECT_TYPE_RALARI
Definition game_data.h:72
@ OBJECT_TYPE_DEBRIS_GLASS
Definition game_data.h:112
@ OBJECT_TYPE_KRANT
Definition game_data.h:66
@ OBJECT_TYPE_ROCK_CHUNK
Definition game_data.h:95
@ OBJECT_TYPE_SALTHI
Definition game_data.h:64
@ OBJECT_TYPE_DEBRIS_DUST
Definition game_data.h:116
@ OBJECT_TYPE_EXPLOSION2
Definition game_data.h:105
@ OBJECT_TYPE_GRATHA
Definition game_data.h:67
@ OBJECT_TYPE_IMAGE_RECOGNITION_MISSILE
Definition game_data.h:86
@ OBJECT_TYPE_MINE_FIELD
Definition game_data.h:78
@ OBJECT_TYPE_DEBRIS_O_RING
Definition game_data.h:101
@ OBJECT_TYPE_BLUE_SPARK
Definition game_data.h:108
@ OBJECT_TYPE_EXPLOSION1
Definition game_data.h:104
@ OBJECT_TYPE_TORPEDO
Definition game_data.h:87
@ OBJECT_TYPE_ASTEROID5
Definition game_data.h:93
@ OBJECT_TYPE_SPIKERI
Definition game_data.h:69
@ OBJECT_TYPE_ASTEROID3
Definition game_data.h:91
@ OBJECT_TYPE_DORKIR
Definition game_data.h:70
@ OBJECT_TYPE_SIVAR
Definition game_data.h:75
@ OBJECT_TYPE_ASTEROID4
Definition game_data.h:92
@ OBJECT_TYPE_RED_SPARK
Definition game_data.h:107
@ OBJECT_TYPE_LASER_CANNON
Definition game_data.h:79
@ OBJECT_TYPE_LASER_SPARK
Definition game_data.h:106
@ OBJECT_TYPE_DEBRIS_PIPE
Definition game_data.h:102
@ OBJECT_TYPE_RAPTOR
Definition game_data.h:58
@ OBJECT_TYPE_JALTHI
Definition game_data.h:68
@ OBJECT_TYPE_THRUSTERS
Definition game_data.h:110
@ OBJECT_TYPE_SPACE_DUST
Definition game_data.h:115
@ OBJECT_TYPE_ASTEROID_FIELD
Definition game_data.h:77
@ OBJECT_TYPE_ASTEROID6
Definition game_data.h:94
@ OBJECT_TYPE_DUMB_FIRE_MISSILE
Definition game_data.h:83
@ OBJECT_TYPE_RAPIER
Definition game_data.h:56
@ OBJECT_TYPE_ASTEROID1
Definition game_data.h:89
@ OBJECT_TYPE_HORNET
Definition game_data.h:55
@ OBJECT_TYPE_ASTEROID2
Definition game_data.h:90
@ OBJECT_TYPE_DEBRIS_SHIP_GIRDER_CHUNK
Definition game_data.h:96
@ OBJECT_TYPE_TURRET
Definition game_data.h:82
@ OBJECT_TYPE_SPARK_TRAIL
Definition game_data.h:109
@ OBJECT_TYPE_DEBRIS_SHIP_TUBING
Definition game_data.h:97
@ OBJECT_TYPE_COUNT
Definition game_data.h:114
@ OBJECT_TYPE_DRALTHI
Definition game_data.h:65
@ OBJECT_TYPE_SPACE_MINE
Definition game_data.h:88
char CampaignVictoryProjectile_size_must_be_0x16[sizeof(CampaignVictoryProjectile)==0x16 ? 1 :-1]
Definition game_data.h:359
char CannedSceneObjectStateRecord_size_must_be_0x35[sizeof(CannedSceneObjectStateRecord)==0x35 ? 1 :-1]
Definition game_data.h:676
Side
Definition game_data.h:174
@ SIDE_IMPERIAL
Definition game_data.h:175
@ SIDE_KILRATHI
Definition game_data.h:176
@ SIDE_NEUTRAL
Definition game_data.h:177
char CannedSceneRecordHeader_size_must_be_6[sizeof(CannedSceneRecordHeader)==6 ? 1 :-1]
Definition game_data.h:679
char SaveGameDiskCampaignState_size_must_be_0x44[sizeof(SaveGameDiskCampaignState)==0x44 ? 1 :-1]
Definition game_data.h:1188
ShipObjective
Definition game_data.h:137
@ OBJECTIVE_ENGAGE_ENEMY
Definition game_data.h:145
@ OBJECTIVE_DESTROY_SHIP
Definition game_data.h:143
@ OBJECTIVE_HOLD_FORMATION
Definition game_data.h:147
@ OBJECTIVE_REACH_SHIP
Definition game_data.h:142
@ OBJECTIVE_NAV_POINT
Definition game_data.h:139
@ OBJECTIVE_GUARD
Definition game_data.h:141
@ OBJECTIVE_BREAK_FORMATION
Definition game_data.h:148
@ OBJECTIVE_WANDER
Definition game_data.h:144
@ OBJECTIVE_EVADE_ENEMY
Definition game_data.h:146
@ OBJECTIVE_HOME_BASE
Definition game_data.h:140
@ OBJECTIVE_NONE
Definition game_data.h:138
char MusicResource_size_must_be_6[sizeof(MusicResource)==6 ? 1 :-1]
Definition game_data.h:698
#define OBJECT_DATA_TORPEDO
Definition game_data.h:1613
char ScrambleShipDetail_size_must_be_0x05[sizeof(ScrambleShipDetail)==0x05 ? 1 :-1]
Definition game_data.h:1218
char MissionObjectiveSource_size_must_be_0x40[sizeof(MissionObjectiveSource)==0x40 ? 1 :-1]
Definition game_data.h:1500
ReleaseWeaponObjectType
Definition game_data.h:439
@ OBJECT_DATA_SPICULUM_IMAGE_RECOGNITION_MISSILE
Definition game_data.h:443
@ OBJECT_DATA_DART_DUMB_FIRE_MISSILE
Definition game_data.h:440
@ OBJECT_DATA_PILUM_FRIEND_OR_FOE_MISSILE
Definition game_data.h:442
@ OBJECT_DATA_JAVELIN_HEAT_SEEKING_MISSILE
Definition game_data.h:441
char BriefingCharacterLayout_size_must_be_0x12[sizeof(BriefingCharacterLayout)==0x12 ? 1 :-1]
Definition game_data.h:1192
char SceneFlicObject_size_must_be_0x4b[sizeof(SceneFlicObject)==0x4b ? 1 :-1]
Definition game_data.h:1212
char CutsceneSoundEffect_size_must_be_0x0a[sizeof(CutsceneSoundEffect)==0x0a ? 1 :-1]
Definition game_data.h:1202
char CockpitTargetCameraOverlay_size_must_be_0x20[sizeof(CockpitTargetCameraOverlay)==0x20 ? 1 :-1]
Definition game_data.h:705
char CampaignState_size_must_be_0x58[sizeof(CampaignState)==0x58 ? 1 :-1]
Definition game_data.h:1186
char MissionShipRecord_size_must_be_0x3c[sizeof(MissionShipRecord)==0x3c ? 1 :-1]
Definition game_data.h:1496
char MissionNavPointDisk_size_must_be_0x4d[sizeof(MissionNavPointDisk)==0x4d ? 1 :-1]
Definition game_data.h:1559
char MissionNavPoint_size_must_be_0x65[sizeof(MissionNavPoint)==0x65 ? 1 :-1]
Definition game_data.h:1477
char ScrambleAnimationActor_size_must_be_0x18[sizeof(ScrambleAnimationActor)==0x18 ? 1 :-1]
Definition game_data.h:1216
char NavMapObjectiveStyle_size_must_be_0x10[sizeof(NavMapObjectiveStyle)==0x10 ? 1 :-1]
Definition game_data.h:734
char CutsceneResourceTable_size_must_be_0x18[sizeof(CutsceneResourceTable)==0x18 ? 1 :-1]
Definition game_data.h:1196
char ObjectResourceSlot_size_must_be_0x16[sizeof(ObjectResourceSlot)==0x16 ? 1 :-1]
Definition game_data.h:1406
char MissionShipDisk_size_must_be_0x2a[sizeof(MissionShipDisk)==0x2a ? 1 :-1]
Definition game_data.h:1565
char CannedSceneBriefingCharacterRecord_size_must_be_0x10[sizeof(CannedSceneBriefingCharacterRecord)==0x10 ? 1 :-1]
Definition game_data.h:682
char SaveGameDiskRecord_size_must_be_0x33c[sizeof(SaveGameDiskRecord)==0x33c ? 1 :-1]
Definition game_data.h:1572
char NavMapLabel_size_must_be_0x0a[sizeof(NavMapLabel)==0x0a ? 1 :-1]
Definition game_data.h:722
char ObjectTypeData_weaponLoadout_must_be_at_0x3e[offsetof(ObjectTypeData, weaponLoadout)==0x3e ? 1 :-1]
Definition game_data.h:402
#define OBJECT_DATA_ASTEROID1
Definition game_data.h:1616
char PacketResourceDescriptor_size_must_be_0x0a[sizeof(PacketResourceDescriptor)==0x0a ? 1 :-1]
Definition game_data.h:775
SpecialManeuver
Definition game_data.h:258
@ SPECIAL_MANEUVER_STOP_DRIFT
Definition game_data.h:266
@ SPECIAL_MANEUVER_LOST_CONTROL
Definition game_data.h:267
@ SPECIAL_MANEUVER_BLOWING_UP
Definition game_data.h:268
@ SPECIAL_MANEUVER_NORMAL
Definition game_data.h:260
@ SPECIAL_MANEUVER_SUPER_BRAKE
Definition game_data.h:263
@ SPECIAL_MANEUVER_UNKNOWN_9
Definition game_data.h:269
@ SPECIAL_MANEUVER_KILL_ENGINES
Definition game_data.h:265
@ SPECIAL_MANEUVER_BOGUS_PUSH
Definition game_data.h:264
@ SPECIAL_MANEUVER_AFTERBURNER
Definition game_data.h:261
@ SPECIAL_MANEUVER_NONE
Definition game_data.h:259
@ SPECIAL_MANEUVER_BOGUS_LOOP
Definition game_data.h:262
char ObjectTypeData_objectClass_must_be_at_0x14[offsetof(ObjectTypeData, objectClass)==0x14 ? 1 :-1]
Definition game_data.h:400
char CockpitResourceLayout_size_must_be_0x13a[sizeof(CockpitResourceLayout)==0x13a ? 1 :-1]
Definition game_data.h:703
char CutsceneScene_size_must_be_0x19[sizeof(CutsceneScene)==0x19 ? 1 :-1]
Definition game_data.h:1210
char ShipIntelligenceMetadata_size_must_be_0x0c[sizeof(ShipIntelligenceMetadata)==0x0c ? 1 :-1]
Definition game_data.h:1493
ShipManeuver
Definition game_data.h:207
@ MANEUVER_ZIP_PAST
Definition game_data.h:249
@ MANEUVER_WABBLE
Definition game_data.h:222
@ MANEUVER_THINKING
Definition game_data.h:214
@ MANEUVER_KILL_MISSILE
Definition game_data.h:240
@ MANEUVER_OUTA_HERE
Definition game_data.h:230
@ MANEUVER_TARGET_MISSILE
Definition game_data.h:237
@ MANEUVER_ROLL_OVER
Definition game_data.h:223
@ MANEUVER_WARPING_OUT
Definition game_data.h:210
@ MANEUVER_DRIFT
Definition game_data.h:212
@ MANEUVER_BUZZ_DEBRIS
Definition game_data.h:250
@ MANEUVER_FULL_AHEAD
Definition game_data.h:213
@ MANEUVER_SIT_N_FIRE
Definition game_data.h:227
@ MANEUVER_FISH_HOOK
Definition game_data.h:225
@ MANEUVER_GLOAT
Definition game_data.h:234
@ MANEUVER_TURN_N_FIRE
Definition game_data.h:244
@ MANEUVER_CHILL
Definition game_data.h:252
@ MANEUVER_VEER_AWAY
Definition game_data.h:211
@ MANEUVER_STRAFE_N_ROLL
Definition game_data.h:239
@ MANEUVER_HARD_TURN
Definition game_data.h:224
@ MANEUVER_HARD_BRAKE
Definition game_data.h:218
@ MANEUVER_SPLIT_LEFT
Definition game_data.h:226
@ MANEUVER_UNKNOWN_49
Definition game_data.h:255
@ MANEUVER_TAIL_FIRE
Definition game_data.h:235
@ MANEUVER_GET_DISTANCE
Definition game_data.h:245
@ MANEUVER_SPLIT_RIGHT
Definition game_data.h:232
@ MANEUVER_DROP_A_MINE
Definition game_data.h:231
@ MANEUVER_CORKSCREW
Definition game_data.h:246
@ MANEUVER_TRY2TAIL
Definition game_data.h:248
@ MANEUVER_SUICIDE_RUN
Definition game_data.h:241
@ MANEUVER_NONE
Definition game_data.h:208
@ MANEUVER_TURN_N_KICK
Definition game_data.h:229
@ MANEUVER_LINE_UP_DROP
Definition game_data.h:251
@ MANEUVER_SIT_N_SPIN
Definition game_data.h:219
@ MANEUVER_ZIG_ZAG
Definition game_data.h:233
@ MANEUVER_ZIG_ZAG_PITCH
Definition game_data.h:242
@ MANEUVER_STRAFE_ENEMY
Definition game_data.h:238
@ MANEUVER_TIGHT_LOOP
Definition game_data.h:217
@ MANEUVER_INTERCEPT
Definition game_data.h:247
@ MANEUVER_WARPING_IN
Definition game_data.h:209
@ MANEUVER_SAFE_BRAKE
Definition game_data.h:243
@ MANEUVER_RAM_MISSILE
Definition game_data.h:215
@ MANEUVER_BURNOUT
Definition game_data.h:221
@ MANEUVER_UNKNOWN_44
Definition game_data.h:253
@ MANEUVER_UNKNOWN_48
Definition game_data.h:254
@ MANEUVER_TURN_N_SPIN
Definition game_data.h:220
@ MANEUVER_KICKIT
Definition game_data.h:228
@ MANEUVER_TARGET_LASER
Definition game_data.h:236
@ MANEUVER_KICK_STOP
Definition game_data.h:216
char CockpitLayout_size_must_be_0x118[sizeof(CockpitLayout)==0x118 ? 1 :-1]
Definition game_data.h:701
char SaveGameDiskObjective_size_must_be_0x19[sizeof(SaveGameDiskObjective)==0x19 ? 1 :-1]
Definition game_data.h:1568
CommMenuEntry
Definition game_data.h:276
@ COMM_RETURN_TO_BASE
Definition game_data.h:280
@ COMM_NEVER_MIND
Definition game_data.h:277
@ COMM_ATTACK_TARGET
Definition game_data.h:278
@ COMM_DIE_FURBALL
Definition game_data.h:281
@ COMM_SLAG_OFF
Definition game_data.h:282
@ COMM_HELP_ME_OUT
Definition game_data.h:279
char SaveGameRecord_size_must_be_0x3a0[sizeof(SaveGameRecord)==0x3a0 ? 1 :-1]
Definition game_data.h:1570
ObjectClass
Definition game_data.h:36
@ OBJECT_CLASS_PLANET
Definition game_data.h:40
@ OBJECT_CLASS_FIXED_OBJECT
Definition game_data.h:44
@ OBJECT_CLASS_MISSILE
Definition game_data.h:48
@ OBJECT_CLASS_SHIP
Definition game_data.h:49
@ OBJECT_CLASS_DUST
Definition game_data.h:41
@ OBJECT_CLASS_DEBRIS
Definition game_data.h:43
@ OBJECT_CLASS_CAPITAL_SHIP
Definition game_data.h:50
@ OBJECT_CLASS_STAR
Definition game_data.h:39
@ OBJECT_CLASS_FUTURION
Definition game_data.h:38
@ OBJECT_CLASS_ASTEROID
Definition game_data.h:46
@ OBJECT_CLASS_PROJECTILE
Definition game_data.h:45
@ OBJECT_CLASS_MINE
Definition game_data.h:47
@ OBJECT_CLASS_EXPLOSION
Definition game_data.h:42
@ OBJECT_CLASS_NULL
Definition game_data.h:37
@ OBJECT_CLASS_BASE
Definition game_data.h:51
char CutscenePlane_size_must_be_0x2b[sizeof(CutscenePlane)==0x2b ? 1 :-1]
Definition game_data.h:1206
ShipTactic
Definition game_data.h:151
@ TACTIC_SELF_DEFENSE
Definition game_data.h:169
@ TACTIC_TARGETTING
Definition game_data.h:165
@ TACTIC_ZIP_AWAY
Definition game_data.h:167
@ TACTIC_CHASE
Definition game_data.h:162
@ TACTIC_HEAD_HOME
Definition game_data.h:161
@ TACTIC_PICK_ATTACK
Definition game_data.h:170
@ TACTIC_APPROACH_TARGET
Definition game_data.h:164
@ TACTIC_CRUISE
Definition game_data.h:153
@ TACTIC_AVOID_OBJECT
Definition game_data.h:158
@ TACTIC_WARP_OUT
Definition game_data.h:159
@ TACTIC_SCOUT_AHEAD
Definition game_data.h:155
@ TACTIC_SHAKE_ENEMY
Definition game_data.h:166
@ TACTIC_RETREAT
Definition game_data.h:168
@ TACTIC_NONE
Definition game_data.h:152
@ TACTIC_LAG_BEHIND
Definition game_data.h:156
@ TACTIC_WARP_IN
Definition game_data.h:160
@ TACTIC_LOOK_OUT
Definition game_data.h:163
@ TACTIC_RAM
Definition game_data.h:157
@ TACTIC_SIT_STILL
Definition game_data.h:154
char PersonnelFileSlot_size_must_be_0x26[sizeof(PersonnelFileSlot)==0x26 ? 1 :-1]
Definition game_data.h:1166
char SceneResourceTable_size_must_be_0x08[sizeof(SceneResourceTable)==0x08 ? 1 :-1]
Definition game_data.h:777
char ShipWeaponSlot_size_must_be_0x0a[sizeof(ShipWeaponSlot)==0x0a ? 1 :-1]
Definition game_data.h:424
char ObjectTypeData_size_must_be_0xf3[sizeof(ObjectTypeData)==0xf3 ? 1 :-1]
Definition game_data.h:398
char FireworkState_size_must_be_0x0c[sizeof(FireworkState)==0x0c ? 1 :-1]
Definition game_data.h:343
char PacketSectionHandle_size_must_be_0x14[sizeof(PacketSectionHandle)==0x14 ? 1 :-1]
Definition game_data.h:1220
char MissionHeaderDisk_size_must_be_0x18[sizeof(MissionHeaderDisk)==0x18 ? 1 :-1]
Definition game_data.h:1556
const char * menuLabel
Definition game_data.h:1471
BarracksBunkState bunks[8]
Definition game_data.h:1463
signed char portraitFrameCount
Definition game_data.h:834
signed char animationPhase
Definition game_data.h:836
const signed char * animation
Definition game_data.h:835
signed char firstPortraitFrame
Definition game_data.h:833
unsigned int recRoomText0
Definition game_data.h:587
unsigned int recRoomScene0
Definition game_data.h:586
unsigned int recRoomText1
Definition game_data.h:591
unsigned int recRoomText2
Definition game_data.h:589
unsigned int recRoomScene2
Definition game_data.h:588
unsigned int briefingText
Definition game_data.h:583
unsigned int debriefingText
Definition game_data.h:585
unsigned int recRoomScene1
Definition game_data.h:590
unsigned int debriefingScene
Definition game_data.h:584
unsigned int briefingScene
Definition game_data.h:582
short shipPilotIndices[8]
Definition game_data.h:1156
short objectiveSighted[8]
Definition game_data.h:1151
short objectiveFlags[8]
Definition game_data.h:1150
unsigned char field_3c[0x10]
Definition game_data.h:1152
short previousMission
Definition game_data.h:1149
short pilotStatus[32]
Definition game_data.h:1159
unsigned short wordCount
Definition game_data.h:1136
short shipMissionFlags[8]
Definition game_data.h:1155
short shipVelocityState[16]
Definition game_data.h:1153
short shipKillCounts[8]
Definition game_data.h:1154
signed char seriesHistory[8]
Definition game_data.h:1074
PilotRecord * currentPilot
Definition game_data.h:1067
CampaignDate currentDate
Definition game_data.h:1077
signed char seriesHistoryCount
Definition game_data.h:1073
short missionScore
Definition game_data.h:1080
CampaignDate elapsedDate
Definition game_data.h:1078
short seriesScore
Definition game_data.h:1081
unsigned char badges[12]
Definition game_data.h:1070
short campaignIndex
Definition game_data.h:1082
short promotionScore
Definition game_data.h:1079
enum ObjectType playerShipType
Definition game_data.h:1068
signed char currentSeries
Definition game_data.h:1072
unsigned char aceFlags[4]
Definition game_data.h:1076
int personalityDeathMission[8]
Definition game_data.h:1075
unsigned char medals[5]
Definition game_data.h:1069
signed char currentMission
Definition game_data.h:1071
unsigned int byteCount
Definition game_data.h:615
short scannerPadding[2]
Definition game_data.h:547
ShortRect pilotHandBounds[5]
Definition game_data.h:548
ShortRect rightVduBounds[5]
Definition game_data.h:545
CockpitScannerGeometry scanner[5]
Definition game_data.h:546
ShortRect leftVduBounds[5]
Definition game_data.h:544
ShortPoint readoutOrigins[4][6]
Definition game_data.h:543
CockpitBarDefinition bars[8]
Definition game_data.h:506
ShortPoint weaponDisplayPositions[16]
Definition game_data.h:515
ShortPoint pilotHandOrigin
Definition game_data.h:512
signed char targetLockDisplayEnabled
Definition game_data.h:516
CockpitScannerGeometry scanner
Definition game_data.h:510
signed char lightOnFrame[7]
Definition game_data.h:505
ShortRect leftVduBounds
Definition game_data.h:508
ShortPoint readoutOrigins[4]
Definition game_data.h:507
ShortRect pilotHandBounds
Definition game_data.h:511
signed char lightOffFrame[7]
Definition game_data.h:504
ShortRect rightVduBounds
Definition game_data.h:509
ShortPoint damagePositions[4]
Definition game_data.h:501
signed char field_f6
Definition game_data.h:513
ShortPoint hudMessageOrigin
Definition game_data.h:500
unsigned char field_6[6]
Definition game_data.h:528
unsigned char field_16[6]
Definition game_data.h:533
unsigned char field_1e[2]
Definition game_data.h:535
unsigned char field_0[2]
Definition game_data.h:525
unsigned char field_e[4]
Definition game_data.h:530
struct CutsceneMusicNode * previous
Definition game_data.h:933
struct CutsceneMusicNode * next
Definition game_data.h:932
unsigned char resourceIndex
Definition game_data.h:930
unsigned char inheritedCount
Definition game_data.h:886
unsigned char inheritedDataCount
Definition game_data.h:897
unsigned char ** scripts
Definition game_data.h:907
struct CutsceneObjectResourceList * next
Definition game_data.h:914
unsigned char scriptCount
Definition game_data.h:906
unsigned char inheritedScriptCount
Definition game_data.h:905
short spriteCount
Definition game_data.h:942
signed char visible
Definition game_data.h:938
signed char deltaY
Definition game_data.h:945
unsigned char * spriteIndices
Definition game_data.h:943
signed char deltaX
Definition game_data.h:944
signed char deltaDepth
Definition game_data.h:946
signed char active
Definition game_data.h:937
unsigned char * scriptCursor
Definition game_data.h:940
unsigned short drawFlags
Definition game_data.h:952
short waitTicks
Definition game_data.h:954
short * locals
Definition game_data.h:941
unsigned char * scriptStart
Definition game_data.h:939
const unsigned char * filenameIndices
Definition game_data.h:874
const unsigned char * sectionIndices
Definition game_data.h:875
struct CutsceneResourceTable * next
Definition game_data.h:878
unsigned char * sequenceIndices
Definition game_data.h:974
short * locals
Definition game_data.h:978
unsigned char * scriptCursor
Definition game_data.h:977
short sequenceCount
Definition game_data.h:973
unsigned char field_7[4]
Definition game_data.h:975
signed char active
Definition game_data.h:972
unsigned char * scriptStart
Definition game_data.h:976
signed char active
Definition game_data.h:959
unsigned char * scriptCursor
Definition game_data.h:964
unsigned char * scriptStart
Definition game_data.h:963
unsigned char field_7[4]
Definition game_data.h:962
unsigned char * planeIndices
Definition game_data.h:961
struct CutsceneSoundEffect * next
Definition game_data.h:924
struct CutsceneTextResource * next
Definition game_data.h:920
unsigned char fileClass
Definition game_data.h:575
signed char diskNumber
Definition game_data.h:574
unsigned char logicalFile
Definition game_data.h:576
char name[13]
Definition game_data.h:573
short outerRadius
Definition game_data.h:1236
short innerRadius
Definition game_data.h:1235
FixedVector center
Definition game_data.h:1234
short density
Definition game_data.h:1237
signed char pilotIndex
Definition game_data.h:785
unsigned int score
Definition game_data.h:786
unsigned char field_11[0x10]
Definition game_data.h:604
unsigned char field_0[0x0d]
Definition game_data.h:602
struct Viewport * viewport
Definition game_data.h:610
void(*) pump(void)
Definition game_data.h:609
signed char secondary
Definition game_data.h:1248
signed char threshold
Definition game_data.h:1246
signed char primary
Definition game_data.h:1247
short initialMissionShips[8]
Definition game_data.h:1510
short playerMissionShip
Definition game_data.h:1346
short wingmanMissionShip
Definition game_data.h:1344
short entryNavPoint
Definition game_data.h:1343
short initialMissionShips[8]
Definition game_data.h:1347
short homeMissionShip
Definition game_data.h:1345
FixedVector position
Definition game_data.h:1517
short missionShips[10]
Definition game_data.h:1521
signed char triggers[4][2]
Definition game_data.h:1519
short preloadObjectTypes[2]
Definition game_data.h:1520
unsigned short proximityRadius
Definition game_data.h:1518
signed char systemIndex
Definition game_data.h:1329
short preloadObjectTypes[3]
Definition game_data.h:1333
short preloadObjectClasses[3]
Definition game_data.h:1334
FixedVector position
Definition game_data.h:1327
signed char waveCommands[8]
Definition game_data.h:1332
short proximityRadius
Definition game_data.h:1328
short missionShips[10]
Definition game_data.h:1336
char name[0x1e]
Definition game_data.h:1325
signed char field_2e
Definition game_data.h:1330
short preloadLogicalFiles[3]
Definition game_data.h:1335
signed char type
Definition game_data.h:1326
signed char triggers[4][2]
Definition game_data.h:1331
const char * displayName
Definition game_data.h:1420
unsigned char field_8
Definition game_data.h:1418
signed char flags
Definition game_data.h:1419
unsigned char field_4
Definition game_data.h:1415
signed char index
Definition game_data.h:1417
FixedVector position
Definition game_data.h:1422
signed char navPoint
Definition game_data.h:1536
signed char formationIndex
Definition game_data.h:1549
signed char leader
Definition game_data.h:1533
signed char leaderMissionIndex
Definition game_data.h:1548
signed char formationSpot
Definition game_data.h:1541
signed char field_5
Definition game_data.h:1534
FixedVector position
Definition game_data.h:1537
signed char state
Definition game_data.h:1547
signed char targetMissionIndex
Definition game_data.h:1550
signed char portrait
Definition game_data.h:1384
signed char missionParameter
Definition game_data.h:1383
signed char type
Definition game_data.h:1365
signed char navPoint
Definition game_data.h:1371
signed char leaderMissionIndex
Definition game_data.h:1381
FixedVector position
Definition game_data.h:1372
signed char field_19
Definition game_data.h:1368
signed char formationIndex
Definition game_data.h:1382
signed char field_13
Definition game_data.h:1364
signed char field_1a
Definition game_data.h:1369
signed char formationSpot
Definition game_data.h:1376
signed char state
Definition game_data.h:1380
void * packet
Definition game_data.h:692
signed char field_0d[3]
Definition game_data.h:1315
FixedVector position
Definition game_data.h:1314
signed char field_00
Definition game_data.h:1313
char name[20]
Definition game_data.h:1316
signed char active
Definition game_data.h:1317
short colour
Definition game_data.h:716
const char * text
Definition game_data.h:717
unsigned char * labelColour
Definition game_data.h:730
unsigned char * unvisitedColour
Definition game_data.h:728
unsigned char * markerColour
Definition game_data.h:729
unsigned int sizeAndFlags
Definition game_data.h:329
unsigned char * shapeSet
Definition game_data.h:1400
unsigned char * animation
Definition game_data.h:1401
unsigned char * field_12
Definition game_data.h:1403
unsigned char * shape
Definition game_data.h:1402
short maximumVelocity
Definition game_data.h:377
unsigned char * animation
Definition game_data.h:379
short resourceType
Definition game_data.h:368
short collisionRadius
Definition game_data.h:370
short explosionDamage
Definition game_data.h:376
unsigned char weaponLoadout[0xA1]
Definition game_data.h:385
short objectClass
Definition game_data.h:367
unsigned char * shape
Definition game_data.h:393
char displayName[20]
Definition game_data.h:366
short radarRadius
Definition game_data.h:371
short animationDelay
Definition game_data.h:373
short damageCapacity
Definition game_data.h:375
short afterburnerVelocity
Definition game_data.h:384
short cruiseVelocity
Definition game_data.h:378
unsigned char * shapeSet
Definition game_data.h:392
unsigned char decoder[0x3020]
Definition game_data.h:596
unsigned char input[0x400]
Definition game_data.h:597
unsigned char ** resource
Definition game_data.h:748
unsigned int dataOffset
Definition game_data.h:1177
unsigned int dataSize
Definition game_data.h:1179
unsigned int position
Definition game_data.h:1178
unsigned short blue
Definition game_data.h:1359
unsigned short red
Definition game_data.h:1357
unsigned short green
Definition game_data.h:1358
char description[36]
Definition game_data.h:1129
short missionScore
Definition game_data.h:1122
short playerShipType
Definition game_data.h:1123
char firstName[25]
Definition game_data.h:1113
char callsign[13]
Definition game_data.h:1115
char lastName[25]
Definition game_data.h:1114
unsigned char field_45[0x11]
Definition game_data.h:1119
short kills
Definition game_data.h:801
char callsign[14]
Definition game_data.h:797
short missions
Definition game_data.h:800
char name[14]
Definition game_data.h:796
short personality
Definition game_data.h:802
short portrait
Definition game_data.h:798
unsigned char medals[5]
Definition game_data.h:1091
signed char seriesHistoryCount
Definition game_data.h:1095
unsigned char badges[12]
Definition game_data.h:1092
signed char seriesHistory[8]
Definition game_data.h:1096
unsigned char aceFlags[4]
Definition game_data.h:1098
unsigned char flags
Definition game_data.h:1433
unsigned char field_4
Definition game_data.h:1430
PilotRecord pilots[9]
Definition game_data.h:1450
SaveGameDiskCampaignState campaign
Definition game_data.h:1451
signed char occupied
Definition game_data.h:1449
SaveGameDiskObjective objectives[16]
Definition game_data.h:1452
PilotRecord pilots[9]
Definition game_data.h:1442
MissionObjective objectives[16]
Definition game_data.h:1444
char description[17]
Definition game_data.h:1440
unsigned char occupied
Definition game_data.h:1441
CampaignState campaign
Definition game_data.h:1443
signed char * scriptStart
Definition game_data.h:845
signed char * scriptCursor
Definition game_data.h:846
unsigned char * shape
Definition game_data.h:850
unsigned short goalFlags
Definition game_data.h:848
signed char * repeatCursor
Definition game_data.h:847
unsigned char * shape
Definition game_data.h:1022
signed char visible
Definition game_data.h:987
unsigned char * shape
Definition game_data.h:991
signed char deltaX
Definition game_data.h:1002
unsigned char * linkedScript
Definition game_data.h:995
unsigned char * scriptCursor
Definition game_data.h:997
unsigned char * scriptStart
Definition game_data.h:996
const char * filename
Definition game_data.h:1013
signed char active
Definition game_data.h:986
signed char field_3
Definition game_data.h:989
short segmentEndFrame
Definition game_data.h:1012
short segmentStartFrame
Definition game_data.h:1011
signed char deltaDepth
Definition game_data.h:1004
signed char tick
Definition game_data.h:988
signed char deltaY
Definition game_data.h:1003
unsigned int decoderState
Definition game_data.h:1016
unsigned short drawFlags
Definition game_data.h:1010
unsigned char selection
Definition game_data.h:770
signed char animationFrame
Definition game_data.h:1035
unsigned char * shape
Definition game_data.h:1038
signed char animationState
Definition game_data.h:1036
const unsigned short * animation
Definition game_data.h:1037
signed char frame
Definition game_data.h:1047
short geometryOffsets[4]
Definition game_data.h:567
unsigned short geometryCount
Definition game_data.h:566
signed char weaponType
Definition game_data.h:418
ShortVector mount
Definition game_data.h:416
signed char disabled
Definition game_data.h:417
short top
Definition game_data.h:480
short left
Definition game_data.h:479
short right
Definition game_data.h:481
short bottom
Definition game_data.h:482