Skip to content
This repository was archived by the owner on Aug 8, 2025. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1064 commits
Select commit Hold shift + click to select a range
5fed286
feat: add foreground vector to MIDGAME_SHOT structure for enhanced sh…
remileonard Sep 26, 2025
e3d3f24
feat: implement DebugAnimationPlayer for enhanced animation debugging…
remileonard Sep 27, 2025
cc34df3
feat: implement wait command for actors and update command handling
remileonard Sep 28, 2025
cf4392c
feat: enhance wait command logic and adjust distance threshold for wa…
remileonard Sep 29, 2025
8a1c197
feat: add DebugEmptyActivity class and integrate into main applicatio…
remileonard Sep 29, 2025
ee78fe8
feat: add UI buttons for shot management and implement midgame choose…
remileonard Sep 29, 2025
84d3d29
feat: implement rendering logic for animation frames and enhance midg…
remileonard Sep 29, 2025
d722649
feat: refactor color palette rendering into a separate displayPalette…
remileonard Sep 29, 2025
36e9f6e
feat: add shot editor functionality and enhance midgame animation man…
remileonard Sep 30, 2025
60f8854
feat: add initialization checks to RSMixer and RSSound classes
remileonard Oct 1, 2025
8922899
Enhance Debug Animation Player and Related Components
remileonard Oct 1, 2025
43c8dc1
feat: implement SCAnimationArchive for loading and saving animations,…
remileonard Oct 2, 2025
a4a91e5
feat: update SCAnimationArchive to enhance shot handling and improve …
remileonard Oct 2, 2025
fd7f6e3
feat: enhance midgame shot sprite editing and improve sprite data han…
remileonard Oct 2, 2025
76e5e74
feat: add palette selection functionality to DebugAnimationPlayer and…
remileonard Oct 3, 2025
d30fbed
feat: enhance DebugEmptyActivity with text rendering and vSync, impro…
remileonard Oct 4, 2025
ae0292b
feat: improve weapon load checks in SCCockpit rendering functions
remileonard Oct 5, 2025
1216eb5
Add character editing functionality and music control to DebugAnimati…
remileonard Oct 5, 2025
20c07ef
feat: refactor DebugAnimationPlayer editor UI for better organization…
remileonard Oct 5, 2025
610c664
feat: implement PKWare decompressor and add character handling in SCA…
remileonard Oct 6, 2025
4138d6b
fix: correct handling of external palette usage in background writing…
remileonard Oct 8, 2025
bc80993
Add PKWARE Data Compression Library Implementation
remileonard Oct 11, 2025
cd1b580
fix: improve frame data handling in parseREAL_APPR_POLY_TRIS_TXMS_TXM…
remileonard Oct 12, 2025
2e70687
fix: unify two-sided triangle handling in SCRenderer and update Debug…
remileonard Oct 12, 2025
604fea3
fix: set twoSided to true in drawModel for consistent rendering
remileonard Oct 13, 2025
1baa35f
feat: add color, texture, and transparent drawing passes for RSEntity…
remileonard Oct 13, 2025
2b6706d
fix: improve alpha handling and texture environment settings in drawM…
remileonard Oct 13, 2025
bd6af9a
feat: add conversation loading functionality and improve asset manage…
remileonard Oct 13, 2025
17f4aab
fix: improve error handling and logging in ConvAssetManager and PakAr…
remileonard Oct 13, 2025
19a8de4
feat: enhance sprite rendering and add palette display functionality …
remileonard Oct 14, 2025
45c913f
Add DebugPacificStrikeMISN class and related mission handling
remileonard Oct 15, 2025
3624586
feat: add mission loading dialog and improve entity initialization wi…
remileonard Oct 15, 2025
d135076
feat: initialize mission data flags and improve entity checks in SCMi…
remileonard Oct 15, 2025
f582e65
Enhance cockpit and HUD initialization and rendering
remileonard Oct 16, 2025
68dc336
feat: update mission handling by resetting target and initializing pl…
remileonard Oct 16, 2025
57ffaf2
fix: improve voice message handling in SCMissionActors
remileonard Oct 16, 2025
5a01f57
feat: add overlay visualization and parsing functionality with Matplo…
remileonard Oct 17, 2025
876067e
feat: refactor verticalOffset handling in SCRenderer and related classes
remileonard Oct 17, 2025
3f5d361
feat: add palette selection functionality in DebugAnimationPlayer and…
remileonard Oct 17, 2025
4609000
fix: add missing asset copy for MID_1.IFF in CMakeLists.txt
remileonard Oct 17, 2025
8b11ae7
fix: ensure empty textures are created and added to images in RSMapTe…
remileonard Oct 17, 2025
04296cc
feat: add color, texture, and transparency rendering passes in SCRend…
remileonard Oct 18, 2025
00b47a7
fix: improve palette loading logic in multiple components
remileonard Oct 18, 2025
bd41eb3
fix: handle negative leftDist for shape positioning in SCConvPlayer
remileonard Oct 18, 2025
1ceee91
feat: add insert and delete functionality for MIDGAME_SHOT in DebugAn…
remileonard Oct 18, 2025
5887542
feat: add loadWingsOfGlory function and integrate into DebugScreen menu
remileonard Oct 19, 2025
e0f533d
feat: enhance DebugAnimationPlayer with new shot management features …
remileonard Oct 19, 2025
865fc80
feat: add sound effect management to MIDGAME_SHOT and update UI for s…
remileonard Oct 19, 2025
3d39a1d
feat: reorganize menu structure in DebugScreen and add new test optio…
remileonard Oct 19, 2025
f073eb3
feat: initialize shot and fps counters in DebugAnimationPlayer and im…
remileonard Oct 19, 2025
4c929aa
feat: initialize current_midvoc and current_midvoc_entry_index in res…
remileonard Oct 19, 2025
38a39eb
feat: add new binary resource file MID_2.IFF
remileonard Oct 19, 2025
198287d
feat: add pairs.txt and implement hash variant finder in test_crc32.py
remileonard Oct 19, 2025
970ec59
feat: update position handling in animation player and archive struct…
remileonard Oct 20, 2025
ae0cd7f
code format
remileonard Oct 20, 2025
fcdeaab
feat: integrate native file dialog for loading and saving animations
remileonard Oct 20, 2025
b699ead
fix: improve filepath handling in IFFSaxLexer::InitFromFile
remileonard Oct 20, 2025
477667f
Refactor ByteStream usage across multiple files to include size param…
remileonard Oct 20, 2025
dd1b784
fix: handle zero size in RLEShape initialization and update size calc…
remileonard Oct 20, 2025
013c19f
fix: update size checks and add IsEndOfStream method for ByteStream s…
remileonard Oct 20, 2025
4ad4ee7
fix: add checks for empty shapes in DebugConvPlayer rendering functions
remileonard Oct 20, 2025
b05d79f
Refactor ByteStream and introduce PSConv classes
remileonard Oct 21, 2025
eceb99b
fix: update size checks in parseREAL_APPR_POLY functions for better v…
remileonard Oct 21, 2025
766ac0d
feat: add LOD level input to DebugObjectViewer UI and update model re…
remileonard Oct 21, 2025
7333c9e
feat: add IFFSaxLexer tests for various chunk handling scenarios
remileonard Oct 21, 2025
ba4e59b
feat: implement DebugPSConvPlayer class and integrate into DebugGame
remileonard Oct 21, 2025
cc2a3e0
feat: enhance PSConvFrame parsing methods and improve ByteStream inte…
remileonard Oct 21, 2025
1ec78ac
fix: update frame parsing logic to handle specific byte conditions in…
remileonard Oct 21, 2025
100a142
fix: update PSConvPlayer ID in loadPacificConv method
remileonard Oct 21, 2025
b07f883
feat: implement DebugPSGameFlow and enhance conversation player funct…
remileonard Oct 22, 2025
046844a
fix: correct initialization in DebugPSGameFlow constructor and adjust…
remileonard Oct 23, 2025
288f2e2
feat: add removeFirstEmptyShape method to RSImageSet and invoke it in…
remileonard Oct 24, 2025
4a213b3
Add effect byte parser and enhance game flow handling
remileonard Oct 24, 2025
a2e9bdf
feat: add current_position to MIDGAME_SHOT_SPRITE and update animatio…
remileonard Oct 25, 2025
73430b6
feat: integrate midgame animation handling in SCGameFlow and add mid_…
remileonard Oct 25, 2025
8a2f48e
feat: add MoveBackward method to ByteStream and improve padding byte …
remileonard Oct 26, 2025
adc1027
fix: correct size parameter in PakArchive initialization to prevent o…
remileonard Oct 26, 2025
ee8b3eb
feat: add additional MID IFF resources to asset copying process
remileonard Oct 26, 2025
570bed2
Merge pull request #10 from remileonard/wip_on_pacific_strike
remileonard Oct 26, 2025
5dc0723
Merge branch 'master' of github.com:remileonard/libRealSpace
remileonard Oct 26, 2025
be8b09a
feat: add video properties adjustments for contrast, brightness, and …
remileonard Oct 26, 2025
e7a2069
Refactor SCAnimationPlayer: Remove duplicate member declarations and …
remileonard Oct 27, 2025
21d4b88
feat: update current position in editMidGameShotBG and editMidGameSho…
remileonard Oct 27, 2025
1c1c881
Add pstrike_miss0.txt and update DebugPSGameFlow and SCScene
remileonard Oct 31, 2025
0ab67f2
feat: implement PSGameFlowParser and enhance DebugPSGameFlow initiali…
remileonard Nov 1, 2025
44a8c8b
feat: refactor PSGameFlowParser to unify opcode parsing and enhance f…
remileonard Nov 2, 2025
d66affd
feat: implement parseRequBytes method in PSGameFlowParser and RSGameF…
remileonard Nov 2, 2025
900fef7
feat: implement PSMissionParser and update mission loading logic for …
remileonard Nov 2, 2025
a88d2bf
feat: enhance character and background removal logic in DebugAnimatio…
remileonard Nov 3, 2025
e6b7e90
feat: enhance runFrame logic to handle null navMap and name, improvin…
remileonard Nov 3, 2025
1f5a115
feat: update flyMission method to accept mission ID and enhance missi…
remileonard Nov 3, 2025
c29196b
Refactor ByteStream and PSConvPlayer for improved functionality and r…
remileonard Nov 6, 2025
033d8d5
feat: add opcode definitions and decode_effect function for game flow…
remileonard Nov 7, 2025
2a07fb3
feat: enhance drawModelTexturePass to support two-sided rendering bas…
remileonard Nov 7, 2025
025ac0e
feat: enhance DebugObjectViewer to support quad rendering and improve…
remileonard Nov 8, 2025
eaea5ee
feat: initialize NFD library for file dialog in DebugAnimationPlayer
remileonard Nov 9, 2025
0dbad51
feat: add force_keyboard_capture flag to RSScreen and update DebugScr…
remileonard Nov 9, 2025
e05433e
feat: add MID_4.IFF resource and update SCGameFlow to include it in m…
remileonard Nov 10, 2025
80ca45f
fix: update area ID checks in SCNavMap to include zero index
remileonard Nov 10, 2025
263bc97
fix: update renderWorkingRegisters to skip zero flags in mission data
remileonard Nov 10, 2025
d3d7d6b
fix: change gameflow_registers to use uint16_t instead of uint8_t
remileonard Nov 10, 2025
7a47c35
fix: reset current_midvoc and current_midvoc_entry_index in editMidGa…
remileonard Nov 11, 2025
cf969eb
feat: add ReadFixedFloatLE and ReadFixedFloatBE methods to ByteStream…
remileonard Nov 14, 2025
80a5783
fix: replace integer coordinate reading with fixed-point reading in p…
remileonard Nov 14, 2025
a07fc9a
fix: correct cash and overhead calculations in runEffect method
remileonard Nov 14, 2025
c0f5f19
fix: set default palette value to 255 in MIDGAME_SHOT structures and …
remileonard Nov 15, 2025
20109cd
feat: add additional MID resources and implement resource copying for…
remileonard Nov 23, 2025
f01d7a6
fix: improve target activation logic to correctly set position based …
remileonard Dec 12, 2025
3d75b51
fix: optimize ground level calculation using bilinear interpolation
remileonard Dec 13, 2025
25002b0
feat: add start and end frame properties to MIDGAME_SHOT_SPRITE and u…
remileonard Dec 14, 2025
e711ddd
fix: correct boundary checks in ByteStream and update string reading …
remileonard Dec 20, 2025
0559ebc
fix: improve ground level calculation by refining distance comparison…
remileonard Dec 23, 2025
6820284
feat: add x, y, width, and height properties to RAWS, ALTI, and AIRS …
remileonard Dec 28, 2025
86f5bc5
fix: correct maximum missions count in SCStrike header
remileonard Dec 31, 2025
8b6cbcc
feat: add VR support with OpenXR integration
remileonard Jan 1, 2026
d9364ca
feat: add target overlay rendering in VR cockpit
remileonard Jan 1, 2026
bd59d79
feat: add model drawing functionality with scale adjustment in SCRend…
remileonard Jan 1, 2026
b8afb99
feat: implement desktop mirror rendering functionality in VRScreen
remileonard Jan 1, 2026
e1a8378
feat: enhance color format selection and adjust screen distance and s…
remileonard Jan 1, 2026
65c9129
feat: integrate RSScreen instance into Loader and update screen initi…
remileonard Jan 1, 2026
4649f46
refactor: remove direct RSScreen reference from Loader class constructor
remileonard Jan 1, 2026
140a2e8
feat: update targeting reticle and bomb sight rendering to use frameb…
remileonard Jan 2, 2026
e6b3744
feat: add const overloads for Vector3D operators
remileonard Jan 2, 2026
a3d6d96
feat: implement 3D HUD projection for cannon sight and add angular of…
remileonard Jan 2, 2026
9946acc
feat: add radar mode toggle action and implement mode switching in SC…
remileonard Jan 2, 2026
ca64928
feat(cockpit): add communication framebuffer and rendering functionality
remileonard Jan 3, 2026
5ec4894
fix: update project version to 0.2.0
remileonard Jan 3, 2026
1060542
Merge pull request #11 from remileonard/vrstrike
remileonard Jan 3, 2026
2614273
fix: initialize structure members to nullptr in VRScreen
remileonard Jan 3, 2026
111934c
fix: remove debug print statements from VRScreen refresh method
remileonard Jan 3, 2026
8160302
fix: clean up OpenGL state management in drawTargetSquareOverlay func…
remileonard Jan 3, 2026
b3a4839
fix: update project structure and resources for vrstrike executable
remileonard Jan 3, 2026
f9fbc83
fix: initialize Texture dimensions and data pointer, add cleanup meth…
remileonard Jan 3, 2026
7278851
feat: implement GameTimer and DesktopTimer classes for improved time …
remileonard Jan 5, 2026
57455ae
feat: add VRTimer class for VR time management and integrate with Gam…
remileonard Jan 5, 2026
8aa5c13
feat: integrate VRTimer for XR time updates in VRScreen refresh
remileonard Jan 6, 2026
eef5d47
feat(VRScreen): integrate ImGui for rendering debug information and t…
remileonard Jan 6, 2026
76360ad
feat(SCMission): optimize ground position calculations and improve ac…
remileonard Jan 8, 2026
f0fea91
feat(GameFlow): rename EFECT_OPT_U15 to EFECT_IF_LAST_MISS_FAILED and…
remileonard Jan 10, 2026
5854f21
fix(SCZone): refine isActive logic to handle nextOpIsOr condition
remileonard Jan 10, 2026
e84776a
feat(VRTimer): add realDeltaTime tracking for accurate frame timing
remileonard Jan 10, 2026
4dbe89d
feat(SCGameFlow): add additional mid-game assets for enhanced gameplay
remileonard Jan 11, 2026
3844c72
fix(RSScreen): include SDL_INIT_GAMECONTROLLER in initialization
remileonard Jan 14, 2026
f695ea8
feat(SCStrike): add SPEC_KEY_1 and SPEC_KEY_2 actions to end mission
remileonard Jan 17, 2026
9bc1ba4
feat(SCStrike): add handling for SPEC_KEY_2 in mission end logic
remileonard Jan 17, 2026
13210b0
fix(SCGameFlow): update EFECT_IF_LAST_MISS_FAILED to EFECT_IF_LAST_MI…
remileonard Jan 17, 2026
1ef4182
feat(RSArea): add unknowns vector to MapObject and update object pars…
remileonard Jan 18, 2026
df44b36
feat(SCMissionActors): enhance ground target attack logic and weapon …
remileonard Jan 18, 2026
101a7fb
feat(SCMissionActors, SCPlane): update attack altitude logic and weap…
remileonard Jan 18, 2026
16370a5
feat(SCMissionActors): optimize attack range calculation for bomb wea…
remileonard Jan 18, 2026
80bd726
feat(SCMissionActors, SCPlane): add checks for destroyed state and we…
remileonard Jan 18, 2026
19768b4
feat(SCMissionActors): update target defense logic to include team ch…
remileonard Jan 18, 2026
4b250bd
feat(SCMissionActors, RSEntity): add runway entity type and update bo…
remileonard Jan 19, 2026
169767e
feat(SCMissionActors): add check for destroyed state in target area v…
remileonard Jan 20, 2026
6185deb
feat(SCPlane): add getWeaponInitialVector method for thrust calculation
remileonard Jan 24, 2026
f4e235f
feat(SCPlane, SCJdynPlane, SCCockpit): add pitch and yaw variance tra…
remileonard Jan 25, 2026
7631951
fix(SCCockpit, SCStrike): correct cannon angular offset and adjust an…
remileonard Jan 26, 2026
d26f04f
feat(ByteStream, Math, Matrix, SCCockpit, SCPlane): enhance functiona…
remileonard Feb 1, 2026
1b9afb6
fix(SCCockpit): correct cannon angle calculations and update trajecto…
remileonard Feb 1, 2026
0a8b95a
feat(SCPlane, SCJdynPlane): add angular velocity tracking and update …
remileonard Feb 3, 2026
ff53275
feat(SCCockpit, SCJdynPlane): enhance targeting reticle calculations …
remileonard Feb 14, 2026
672e937
feat(SCCockpit, SCStrike): adjust HUD rendering positions and add cen…
remileonard Feb 15, 2026
d80f356
feat(RSHud, SCCockpit): refactor shape handling and improve HUD targe…
remileonard Feb 15, 2026
2939a88
fix(SCCockpit): adjust time of flight in targeting reticle calculations
remileonard Feb 15, 2026
40f72bf
feat(SCCockpit): enhance targeting reticle with distance to target re…
remileonard Feb 15, 2026
21953e4
feat(SCPlane, SCStrike): add infinite ammo and weapon mode toggles; e…
remileonard Feb 15, 2026
b6198ea
feat(SCGameFlow): add MID_36.IFF to midgame file map
remileonard Feb 21, 2026
c05f235
feat(SCCockpit, SCStrike): add camera rendering functionality to cock…
remileonard Feb 21, 2026
d0b72f7
feat(SCCockpit): implement palette LUT building and Y-axis inversion …
remileonard Feb 21, 2026
f070a3e
feat(Camera): add zoom functionality and adjust perspective calculation
remileonard Feb 21, 2026
05820a5
refactor(SCJdynPlane): remove unused speed and vector variables; scal…
remileonard Feb 21, 2026
70781fb
fix(project): update version to 0.3.0
remileonard Feb 21, 2026
f25d8bc
feat(SCCockpit, SCStrike): add project_to_screen function and enhance…
remileonard Feb 22, 2026
9fe8834
feat(SCCockpit): enhance targeting reticle rendering and add single t…
remileonard Feb 22, 2026
f618c26
fix(SCStrike): correct conditional logic in renderVirtualCockpit func…
remileonard Feb 22, 2026
c855487
fix(SCCockpit): update cannon sight projection logic and store target…
remileonard Feb 22, 2026
ff54f29
feat(RSEntity, RSMission, SCStrike): add new parsing functions and en…
remileonard Feb 28, 2026
aa3b456
fix(SCRenderer): enhance block rendering logic in renderWorldToTextur…
remileonard Feb 28, 2026
a4236a0
feat(Config): implement configuration loading and retrieval methods; …
remileonard Feb 28, 2026
c00e8a8
feat(InputActionSystem, Keyboard, DebugControllerActivity): add joyst…
remileonard Feb 28, 2026
047a202
fix(SCCockpit): comment out pixel plotting and framebuffer blitting f…
remileonard Feb 28, 2026
5523756
feat(CMakeLists): add additional resource files for assets and config…
remileonard Feb 28, 2026
1d552fb
feat(DebugControlMapping): implement joystick mapping functionality a…
remileonard Mar 1, 2026
c30036c
feat(SCCockpit): enhance targeting reticle calculations with dynamic …
remileonard Mar 1, 2026
ca32c2c
feat(SCCockpit): enhance targeting reticle with lead angle calculatio…
remileonard Mar 1, 2026
6b6bb11
feat(SCCockpit): improve targeting reticle calculations with accurate…
remileonard Mar 1, 2026
65298de
feat(SCCockpit): enhance targeting reticle calculations with accurate…
remileonard Mar 1, 2026
00dfedc
fix(SCCockpit): correct time of flight calculation and clean up redun…
remileonard Mar 1, 2026
669076c
fix(SCCockpit): improve targeting reticle prediction calculations wit…
remileonard Mar 3, 2026
0dc80ba
fix(SCStrike): refactor target position handling and rendering logic …
remileonard Mar 3, 2026
b4e46ba
fix(SCCockpit): adjust velocity calculations in RenderTargetingReticl…
remileonard Mar 3, 2026
6df2a85
refactor: replace Norm() with Length() for consistency in vector calc…
remileonard Mar 7, 2026
a8d8320
feat(Vector3D): add rotateByAxis method and corresponding tests
remileonard Mar 7, 2026
b36981f
feat(SCCockpit): add debug_print flag for conditional debug output
remileonard Mar 7, 2026
f9856fa
feat(SCCockpit): enhance altitude and distance rendering with formatt…
remileonard Mar 8, 2026
b73346b
feat(Camera): add update method and integrate zoom functionality in p…
remileonard Mar 8, 2026
0b8aafb
feat(SCCockpit): refactor Render method to use CockpitFace enum and i…
remileonard Mar 8, 2026
eb144ff
feat(SCRenderer): implement dynamic LOD level handling and improve mo…
remileonard Mar 8, 2026
47dfc01
feat(SCCockpit): refactor distance calculation in RenderHUD for clari…
remileonard Mar 13, 2026
f989ffd
feat(SCCockpit, RSHud): refactor HUD data parsing and rendering logic…
remileonard Mar 14, 2026
3bf96c9
feat(SCCockpit, SCenums): enhance weapon handling and HUD display log…
remileonard Mar 14, 2026
475e8b1
feat(SCCockpit, RSHud): enhance HUD data handling and rendering logic…
remileonard Mar 15, 2026
0bbd071
feat(SCCockpit, RSHud): enhance HUD data parsing and rendering for al…
remileonard Mar 15, 2026
5632fb8
feat(DesktopTimer): adjust smoothed delta time calculation for expect…
remileonard Mar 21, 2026
ea1c15e
feat(DesktopTimer, Timer): implement warmup phase for FPS calibration…
remileonard Mar 21, 2026
a928a4f
feat(SCCockpit, RSHud): enhance SLADD structure and implement RenderP…
remileonard Mar 21, 2026
1145784
fix(SCCockpit): adjust tick mark positioning in RenderPitchLadder for…
remileonard Mar 21, 2026
fdc0c5e
feat(CMakePresets): add macOS preset with Clang compiler configuration
remileonard Mar 21, 2026
60da606
refactor(main): move game initialization code to after loading comple…
remileonard Mar 21, 2026
fa0fa61
fix(vcpkg): correct openxr-loader entry to exclude macOS platform
remileonard Mar 21, 2026
b984271
fix(CMakeLists): conditionally include vrstrike executable for non-Ap…
remileonard Mar 21, 2026
617fe16
fix: update fullscreen setting in config and improve OpenGL compatibi…
remileonard Mar 22, 2026
eaa2dd7
fix: improve fullscreen handling in DebugScreen and update FrameBuffe…
remileonard Mar 22, 2026
da8d836
fix(SCCockpit): adjust heading compass and altitude rendering positio…
remileonard Mar 28, 2026
181631e
fix(SCCockpit): improve targeting reticle rendering and update HUD ha…
remileonard Mar 28, 2026
0a515a6
fix(SCCockpit): enhance targeting reticle rendering and improve HUD r…
remileonard Mar 29, 2026
0199858
fix(SCCockpit, SCStrike): adjust HUD framebuffer dimensions and impro…
remileonard Mar 29, 2026
1997851
fix(SCCockpit, RSCockpit): enhance RAWS handling and improve targetin…
remileonard Mar 30, 2026
6b6715e
fix(SCCockpit, SCStrike): update RAWS framebuffer dimensions and refa…
remileonard Mar 31, 2026
d04dfad
feat(SCCockpit, SCStrike): implement HUD weapon mode management and e…
remileonard Mar 31, 2026
9f0082c
refactor(SCCockpit): remove deprecated rendering functions and stream…
remileonard Apr 5, 2026
8e23407
feat(RSHud, SCCockpit): enhance circular HUD element handling and ren…
remileonard Apr 5, 2026
40c7a4a
fix(RSImageSet): adjust GetNumImages to account for empty shapes
remileonard Apr 5, 2026
f1454a1
feat(SCCockpit): enhance targeting reticle and bomb sight rendering w…
remileonard Apr 6, 2026
6c6a187
feat(SCCockpit, SCStrike): integrate cockpit camera for improved HUD …
remileonard Apr 6, 2026
39d2226
feat(SCCockpit): extend RenderMissileHud to include HUD positioning p…
remileonard Apr 6, 2026
7aa10a6
feat(SCCockpit): implement projectCannonSightToHUD function for impro…
remileonard Apr 8, 2026
428d4da
feat(SCCockpit): refactor projectCannonSightToHUD for improved target…
remileonard Apr 8, 2026
6cea4a3
feat(SCCockpit, SCStrike): refactor cockpit projection logic to utili…
remileonard Apr 8, 2026
76d9769
feat(SCCockpit): adjust targeting reticle size based on cockpit face …
remileonard Apr 10, 2026
1674ed2
feat(SCControls): add rudder controls and input handling for player p…
remileonard Apr 11, 2026
9491950
feat(VRTimer): update target frame rate to 60 FPS for improved perfor…
remileonard Apr 11, 2026
8f8092d
fix(RSImageSet): correct index boundary check and return value in Get…
remileonard Apr 11, 2026
cf2e1c1
fix(SCStrike): improve weapon mode handling by adding null checks for…
remileonard Apr 11, 2026
3e7a763
feat(SCCockpit): add RenderIrTargetHud function for improved HUD targ…
remileonard Apr 11, 2026
99bf414
fix(SCCockpit): correct positioning parameters in RenderMissileHud an…
remileonard Apr 12, 2026
a53ea1f
feat(RLEShape): implement copy constructor and assignment operator fo…
remileonard Apr 18, 2026
b6227ca
fix(FrameBuffer, RLEShape): replace std::min and std::max with their …
remileonard Apr 18, 2026
4e4213f
fix(RLEShape): adjust distance calculations and improve RLE shape exp…
remileonard Apr 18, 2026
42aaeb2
Merge branch 'master' of https://github.com/remileonard/libRealSpace
remileonard Apr 18, 2026
8912c43
feat(SCCockpit): implement straffing reticle rendering and target man…
remileonard Apr 18, 2026
bdc802e
fix(RSImageSet): prevent memory leaks by deleting uncompressed RLESha…
remileonard Apr 19, 2026
a991849
feat(Config): add setBool and save methods; update DebugControlMappin…
remileonard Apr 19, 2026
046335b
fix(RLEShape): update dimension checks and add warnings for invalid R…
remileonard Apr 19, 2026
3423380
feat(RSImageSet): implement InitFromTreEntryBis for enhanced image an…
remileonard Apr 19, 2026
ae54bb0
feat(RSImageSet): refactor image and palette loading in InitFromPakEn…
remileonard Apr 24, 2026
7ae1540
refactor(RSImageSet): remove InitFromRam and related methods for clea…
remileonard Apr 24, 2026
af28865
fix(VRTimer): update target frame time and expected FPS to use TARGET…
remileonard Apr 25, 2026
a303e58
fix(SCCockpit): improve text positioning for pitch ladder labels in R…
remileonard Apr 26, 2026
fe3ab40
refactor(SCCockpit): remove unnecessary calculations in RenderPitchLa…
remileonard Apr 26, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
13 changes: 13 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,16 @@ DerivedData

# CocoaPods
Pods
.vs
SC/Debug/
libRealSpace/Debug/*
libRealSpace/packages/*
libRealSpace/x64/*
/librealspace/librealspace/x64/Debug
/SC/SC/x64/Debug
/SC/x64/Debug
out/
.vscode
CMakeFiles
.clang-uml
GAMEFLOW.IFF
132 changes: 132 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
cmake_minimum_required(VERSION 3.26.0)
project(LibRealSpace VERSION 0.3.1 LANGUAGES C CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)
add_definitions(-D_CRT_SECURE_NO_WARNINGS)

# Trouver Google Test
find_package(GTest CONFIG REQUIRED)

# Activer les tests
enable_testing()

find_package(SDL2 REQUIRED)
find_package(SDL2_mixer_ext CONFIG REQUIRED)
find_package(SDL2_ttf CONFIG REQUIRED)
find_package(imgui CONFIG REQUIRED)
if (APPLE)
set(CMAKE_FIND_FRAMEWORK FIRST)
endif()
set (OpenGL_GL_PREFERENCE LEGACY)
find_package(OpenGL REQUIRED)

add_subdirectory(src/executables/sc)
add_subdirectory(src/executables/to)
add_subdirectory(src/executables/debugger)
if (NOT APPLE)
add_subdirectory(src/executables/vrstrike)
endif()
add_subdirectory(src/strike_commander)
add_subdirectory(src/pacific_strike)
add_subdirectory(src/engine)
add_subdirectory(src/realspace)
add_subdirectory(src/commons/pklib)
add_subdirectory(src/commons)

# Tests unitaires
add_subdirectory(tests)

# Configuration du package CPack
set(CPACK_GENERATOR "ZIP")
set(CPACK_PACKAGE_NAME "NeoSC")
set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "NeoSC - Strike Commander")
set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY OFF)

set(CPACK_NSIS_ENABLE OFF CACHE BOOL "Ne pas utiliser NSIS" FORCE)
set(CPACK_SOURCE_GENERATOR "ZIP")

# Configuration du packaging et des assets
include(InstallRequiredSystemLibraries)
include(CPack)

# Dossier où seront copiés les assets et les DLLs pour le développement
set(ASSETS_DIR "${CMAKE_BINARY_DIR}/assets")
set(FONTS_DIR "${ASSETS_DIR}/fonts")

# Création des dossiers pour les assets
file(MAKE_DIRECTORY ${ASSETS_DIR})
file(MAKE_DIRECTORY ${FONTS_DIR})

# Copie des assets (ajustez les chemins selon votre structure de projet)
file(COPY "${CMAKE_SOURCE_DIR}/resources/STRIKE.wopl" DESTINATION "${ASSETS_DIR}")
file(COPY "${CMAKE_SOURCE_DIR}/resources/MID_1.IFF" DESTINATION "${ASSETS_DIR}")
file(COPY "${CMAKE_SOURCE_DIR}/resources/MID_2.IFF" DESTINATION "${ASSETS_DIR}")
file(COPY "${CMAKE_SOURCE_DIR}/resources/MID_3.IFF" DESTINATION "${ASSETS_DIR}")
file(COPY "${CMAKE_SOURCE_DIR}/resources/MID_4.IFF" DESTINATION "${ASSETS_DIR}")
file(COPY "${CMAKE_SOURCE_DIR}/resources/MID_5.IFF" DESTINATION "${ASSETS_DIR}")
file(COPY "${CMAKE_SOURCE_DIR}/resources/MID_12.IFF" DESTINATION "${ASSETS_DIR}")
file(COPY "${CMAKE_SOURCE_DIR}/resources/MID_14.IFF" DESTINATION "${ASSETS_DIR}")
file(COPY "${CMAKE_SOURCE_DIR}/resources/MID_15.IFF" DESTINATION "${ASSETS_DIR}")
file(COPY "${CMAKE_SOURCE_DIR}/resources/MID_17.IFF" DESTINATION "${ASSETS_DIR}")
file(COPY "${CMAKE_SOURCE_DIR}/resources/MID_20.IFF" DESTINATION "${ASSETS_DIR}")
file(COPY "${CMAKE_SOURCE_DIR}/resources/MID_36.IFF" DESTINATION "${ASSETS_DIR}")
file(COPY "${CMAKE_SOURCE_DIR}/resources/config.ini" DESTINATION "${ASSETS_DIR}")
file(COPY "${CMAKE_SOURCE_DIR}/resources/AcPlus_IBM_VGA_9x16.ttf" DESTINATION "${FONTS_DIR}")

# Installation des exécutables et des DLLs
install(TARGETS ${SC_TARGET_NAME} ${TO_TARGET_NAME} ${DEBUGGER_TARGET_NAME} ${VRSTRIKE_TARGET_NAME} DESTINATION ".")

# Installation des assets
install(DIRECTORY "${ASSETS_DIR}/" DESTINATION "assets")



# Pour les DLLs des dépendances (Windows)
if(WIN32)
# Récupération des DLLs de runtime Visual C++
set(CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION ".")
include(InstallRequiredSystemLibraries)

# Récupération des DLLs depuis VCPKG
if(DEFINED VCPKG_INSTALLED_DIR)
# Obtention de l'architecture cible
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(VCPKG_TARGET_TRIPLET "x64-windows")
else()
set(VCPKG_TARGET_TRIPLET "x86-windows")
endif()

# Chemin vers les DLLs dans VCPKG
set(VCPKG_BIN_DIR "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/bin")

# Installation des DLLs requises
file(GLOB VCPKG_DLLS
"${VCPKG_BIN_DIR}/SDL2.dll"
"${VCPKG_BIN_DIR}/SDL2_ttf.dll"
"${VCPKG_BIN_DIR}/SDL2_mixer.dll"
"${VCPKG_BIN_DIR}/SDL2_mixer_ext.dll"
"${VCPKG_BIN_DIR}/openmpt.dll"
"${VCPKG_BIN_DIR}/libmpg123-0.dll"
"${VCPKG_BIN_DIR}/libopusfile-0.dll"
"${VCPKG_BIN_DIR}/libopus-0.dll"
"${VCPKG_BIN_DIR}/libflac.dll"
"${VCPKG_BIN_DIR}/libogg.dll"
"${VCPKG_BIN_DIR}/zlib1.dll"
"${VCPKG_BIN_DIR}/freetype.dll"
"${VCPKG_BIN_DIR}/bz2.dll"
"${VCPKG_BIN_DIR}/brotlidec.dll"
"${VCPKG_BIN_DIR}/brotlicommon.dll"
"${VCPKG_BIN_DIR}/libpng16.dll"
"${VCPKG_BIN_DIR}/adlmidi.dll"
"${VCPKG_BIN_DIR}/opnmidi.dll"
"${VCPKG_BIN_DIR}/nfd.dll"
"${VCPKG_BIN_DIR}/openxr_loader.dll"
)

message(STATUS "VCPKG DLLs: ${VCPKG_DLLS}")
install(FILES ${VCPKG_DLLS} DESTINATION ".")
else()
message(WARNING "VCPKG_INSTALLED_DIR n'est pas défini. Impossible de localiser les DLLs VCPKG automatiquement.")
endif()
endif()
95 changes: 95 additions & 0 deletions CMakePresets.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
{
"version": 8,
"configurePresets": [
{
"name": "windows",
"displayName": "Visual Studio Community 2022 Release - x86_amd64",
"description": "Using compilers for Visual Studio 17 2022 (x86_x64 architecture)",
"generator": "Visual Studio 17 2022",
"toolset": "host=x86",
"architecture": "x64",
"binaryDir": "${sourceDir}/out/build/${presetName}",
"cacheVariables": {
"CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake",
"CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}",
"CMAKE_C_COMPILER": "cl.exe",
"CMAKE_CXX_COMPILER": "cl.exe"
}
},
{
"name": "linux",
"displayName": "GCC 13.2.0 x86_64-linux-gnu",
"description": "Using compilers: C = /usr/bin/gcc, CXX = /usr/bin/g++",
"binaryDir": "${sourceDir}/out/build/${presetName}",
"cacheVariables": {
"CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake",
"CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}",
"CMAKE_C_COMPILER": "/usr/bin/gcc",
"CMAKE_CXX_COMPILER": "/usr/bin/g++",
"CMAKE_MAKE_PROGRAM": "/usr/bin/make",
"CMAKE_BUILD_TYPE": "Debug"
}
},
{
"name": "linux_clang",
"displayName": "Clang 18.1.3 x86_64-pc-linux-gnu",
"description": "Using compilers: C = /usr/bin/clang, CXX = /usr/bin/clang++",
"binaryDir": "${sourceDir}/out/build/${presetName}",
"cacheVariables": {
"CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake",
"CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}",
"CMAKE_C_COMPILER": "/usr/bin/clang",
"CMAKE_CXX_COMPILER": "/usr/bin/clang++",
"CMAKE_BUILD_TYPE": "Debug"
}
},
{
"name": "macos",
"displayName": "Clang 17.0.0 arm64-apple-darwin25.3.0",
"description": "Utilisation des compilateurs : C = /usr/bin/clang, CXX = /usr/bin/clang++",
"binaryDir": "${sourceDir}/out/build/${presetName}",
"cacheVariables": {
"CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake",
"CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}",
"CMAKE_C_COMPILER": "/usr/bin/clang",
"CMAKE_CXX_COMPILER": "/usr/bin/clang++",
"CMAKE_BUILD_TYPE": "Debug"
}
}
],
"buildPresets": [
{
"name": "windows-debug",
"displayName": "Visual Studio Community 2022 Release - x86_amd64 - Debug",
"configurePreset": "windows",
"configuration": "Debug",
"jobs": 8
},
{
"name": "Release",
"description": "",
"displayName": "Visual Studio Community 2022 Release - x86_amd64 - Release",
"configurePreset": "windows",
"configuration": "Release",
"jobs": 8
},
{
"name": "linux-debug",
"displayName": "Linux GCC Debug",
"configurePreset": "linux",
"jobs": 8
},
{
"name": "linux-clang-debug",
"displayName": "Linux Clang Debug",
"configurePreset": "linux_clang",
"jobs": 8
},
{
"name": "macos-clang-debug",
"displayName": "macOS Clang Debug",
"configurePreset": "macos",
"jobs": 8
}
]
}
133 changes: 108 additions & 25 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,42 +1,125 @@
libRealSpace
============
# libRealSpace

Tools to parse and render Origin Systems RealSpace engine assets.
A cross-platform open-source project aimed at recreating the RealSpace engine originally developed by Origin Systems for games such as Strike Commander and Wing Commander.

- Full TRE Support.
- Full IFF Support.
- Full PAK Support.
## Features

### File Format Support
- Full TRE Support
- Full IFF Support
- Full PAK Support
- Comprehensive parsing for all game assets

### Rendering Capabilities
- Render Textures 3D Jets for all Level Of Details
- Render animation layers (individually).
- Render Map Textures.
- Render animation layers (individually)
- Render Map Textures
- Render ingame screen (conversation, transition animation, scenes)
- Environment and terrain rendering
- Cockpit and instrument simulation

### Gameplay & Systems
- Flying with realistic flight physics
- GameFlow logic and mission scripting
- Complete mission system with event-based scripting
- User interface and menu systems

### Asset Handling
- Guess PAK contents:
- VOC sound effects.
- XMidi music
- Animations.
- IFF
- Images
- Map Textures
- Sub-pack structure
- VOC sound effects
- XMidi music
- Animations
- IFF
- Images
- Map Textures
- Sub-pack structure

### Development Tools
- Debug interface with ImGui integration
- Performance profiling and monitoring
- Asset browser and inspector

## Platform Support
- Windows
- Linux
- macOS

## Goal

The long term goal is to be able to play Strike Commander with a Virtual Reality Headset (Oculus Rift)


## Dependencies

- SDL 2: https://www.libsdl.org/
- Dear IMGui: https://github.com/ocornut/imgui
- SDL-Mixer-ext: https://wohlsoft.github.io/SDL-Mixer-X/
- Legacy OpenGL

Support MacOS X, Windows and Linux
## Eye Candies

Goal :
======
### Last update

The long term goal is to be able to play Strike Commander with a Virtual Reality Headset
(Oculus Rift).
![Alt text](pics/debbuger.png)
![Alt text](pics/catalogues.png)
![Alt text](pics/choose_pilot.png)
![Alt text](pics/sf_bridge.png)
![Alt text](pics/vc_shooting.png)

Dependencies :
==============
### News :)

SDL 2
![Alt text](pics/gameflow.png)
![Alt text](pics/flying.png)
![Alt text](pics/conversation.png)
![Alt text](pics/external.png)
![Alt text](pics/transistion.png)
![Alt text](pics/virtualcp.png)
![Alt text](pics/object_viewer.png)

Eye Candies :
=============
### Originals Eye Candies :)

![Alt text](pics/nice_sc_scene.png)
![Alt text](/pics/F-22.png)
![Alt text](/pics/face.png)

## Build

To build the project using CMake and Vcpkg, follow these instructions:

1. Install CMake:
- Download and install CMake from the official website: https://cmake.org/download/
- Follow the installation instructions for your operating system.

2. Install Vcpkg:
- Download and install Vcpkg from the official GitHub repository: https://github.com/microsoft/vcpkg
- Follow the installation instructions for your operating system.

3. Configure the project:
- Open a terminal or command prompt.
- Navigate to the project directory.
- Run the following command to configure the project using CMake:
```bash
cmake --preset=windows
```
- Current presets are:
- `windows`: to build for Windows with Visual Studio 17 2022
- `linux`: to build for Linux with GCC 13.2.0 x86_64-linux-gnu
- `linux_clang`: to build for Linux with Clang 18.1.3 x86_64-pc-linux-gnu

4. Build the project:
- Run the following command to build the project using CMake (if you have selected the windows profile):
```
cmake --build .\out\build\windows\
```

5. Run the project:
- After the build is successful, you can run the project using the generated executable.

Remember to adjust the paths and commands according to your specific setup.

## Contributors and Acknowledgments

Special thanks to:
- Origin Systems for creating the original RealSpace engine
- The Wing Commander CIC community for documentation and support
- All contributors who have helped with reverse engineering and development
Loading