Repository navigation
fixes_031_build
Pre-release
Pre-release
·
411 commits
to master
since this release
libRealSpace 0.3.1 — Release notes (from lcos_030_build → fixes_031_build)
Compare: lcos_030_build...fixes_031_build
Date: 2026-02-28
Highlights
- Bumped version to 0.3.1.
- New INI-based configuration support (SimpleIni) + shipped default
assets/config.ini. - Input system improvements: joystick (raw SDL joystick) axis/button bindings + persistent default bindings file.
- Cockpit/HUD & MFD improvements: new radar single-target view, damage MFD page, better targeting indicators, gunsight HUD offset adjustable in debugger.
- Parser robustness & format coverage: IFF lexer bounds fix; additional REAL/MISN chunk handlers.
Added
- Config system (SimpleIni)
- Added
src/engine/Config.cppandsrc/engine/Config.hpp(singleton wrapper around SimpleIni). vcpkg.jsonnow depends on simpleini.- Engine CMake now locates and exposes SimpleIni include dir.
- Added
- Default config file
- Added
resources/config.ini, copied into assets at build/install time.
- Added
- Joystick support (raw SDL joystick)
- New input types:
JOYSTICK_BUTTON,JOYSTICK_AXIS. - Keyboard bindings expanded with
bindJoystickButtonToAction/bindJoystickAxisToAction. - Debugger controller UI now enumerates joystick axes/buttons dynamically when not using SDL game controller mapping.
- New input types:
- Persistent default bindings
GameEngine::initKeyboard()loadsdefault_bindings.cfgif present, otherwise generates bindings and saves them.
Changed / Improved
- Window sizing now configurable
GameEngine::init()readsWindow.width/Window.heightfrom config (with defaults).src/executables/sc/main.cpploads./assets/config.iniand appliesWindow.width/height/fullscreen.- Debugger main also loads config (note: it reads
Display.Width/Heightkeys—see “Notes / Potential follow-ups”).
- SDL initialization
RSScreenandDebugScreennow initialize SDL withSDL_INIT_JOYSTICKin addition to game controller support.- Fullscreen window flags now include
SDL_WINDOW_ALLOW_HIGHDPI.
- Rendering
SCRenderer::renderWorldToTexture()now renders additional neighboring blocks aroundblock_id(9 renders total).
- Cockpit / HUD / MFD
- Target projection code refactored into
SCCockpit::project_to_screen. - HUD target indicator now uses shape assets (
TARG->SHAPSET) and displays “in range” marker (MISD->SHAP) when applicable. - Added tracking of
targetImpactPointWorldand optional debug drawing hooks. - Radar mode
ASSTnow uses a dedicated single-target radar rendering implementation that shows only the current target and prints altitude/heading/speed next to it. - Added Damage MFD page (
RenderMFDSDamage) and integrated it into both 2D and virtual cockpit rendering paths. - Camera MFD width calculation fixed (was incorrectly using height).
- Gunsight HUD angular offset is now adjustable via a new debugger menu panel (“GunSight HUD angular offset”) and used in virtual cockpit.
- Target projection code refactored into
- Mission / audio behavior
SCMissiontracks anin_combatflag set when an AI actor targets the player.SCStrike::runFrame()switches music to track 5 during combat, otherwise uses mission tune.
- Target selection
SCStrike::findTarget()now:- filters enemies within 30,000 units,
- sorts candidates by distance,
- cycles to the next target (instead of always snapping to nearest).
- Camera look-at
setCameraLookat()now:- if target is very far (> 20000), uses plane forward direction instead of target framing,
- passes an explicit up vector into
camera->lookAt(...).
- Palette LUT
BuildPaletteLUT()now searches only the green ramp[128..159](instead of all 0..255) and uses 128 as the starting best index.
Fixed
- IFFSaxLexer bounds/size handling
- If the computed
chunk_size + 8exceeds available buffer at the start of parsing, the code now allocates a larger buffer, copies data, and reinitializes the stream to avoid overrun.
- If the computed
- ByteStream destructor
- Clears
cursorpointer in destructor.
- Clears
- HUD shape parsing
RSHud::parseREAL_CHUD_LARG_TARG_SHAP()now builds anRSImageSetviaPakArchive(and assignsSHAPSET) instead of manually LZW-decoding into anRLEShape.
- Removed noisy debug prints
- RSMapTextureSet texture dump spam removed; palette transparency print removed; some mission parsing prints removed.
Format / content parsing coverage
RSEntitynow registers/accepts additional REAL chunk handlers (stubs added):REAL:INFOOBJT/TRCR:INFOMISS/DYNM:{ATMO,GRAV,AGRV}APPR/POLY/TRIS:LNTHOBJT/ORNT:SIGNhandler wiring added
RSMissionnow registersMISN:CACH(parser stub) andLOADparsing was cleared out (now empty).
Packaging / build system
- Top-level
CMakeLists.txt- project version 0.3.0 → 0.3.1
- assets now also copy
MID_36.IFFandconfig.ini.
vcpkg.json- added dependency: simpleini