github spacefarergames/AloneInTheDarkReHaunted 1.0.6.2703

latest releases: 2.3.0.0705, 2.2.0.2704, 2.1.0.2204...
one month ago

Download link removed, please download newer version.

Note: The above link contains the full release, including the HD backgrounds and CD quality audio. The attached assets release on GitHub is the minmial build and does not include the HD backgrounds.

1.0.6.2703

Improvements

  • Selector now animated
  • Improved font rendering and reduced debug logging
  • Save screenshot UI bug fixed
  • Page turn shader on books restored
  • Many other QOL fixes and Life Script bugs fixed
  • CD mode stability issues fixed
  • Updated HD backgrounds - fixed the cellar camera mask, added animated water in cameras in Pregzt battle

Now future proofed for the AITD2 Remaster project that has now begun!

🔴 Crash Fixes
• Null pointer crash in audio playback — playSound() and playSoundLooping() in AITD1_Tatou.cpp now guard against -1 sample index, zero getPakSize, and null HQR_Get return before calling osystem_playSample / osystem_playLoopingSample
• CD audio crash in make3dTatou — On mixed-mode CDs the drive cannot read data while an audio track is playing, causing CheckLoadMallocPak to fail. Added osystem_stopTrack() call (new function in osystemAL.cpp) at the start of make3dTatou() in AITD1_Tatou.cpp, and reset currentMusic = -1
• Empty object draw list recovery — If NbAffObjets == 0 and lightOff is not active, the renderer now force-regenerates the active list via GenereActiveList() + GenereAffList(), preventing 3D objects from permanently disappearing after room transitions
🟡 Gameplay Bugs
• Script #83: Dead enemy chases player — InitDeplacement() in main.cpp now resets the speed interpolator (speedChange.numSteps = 0) when switching to follow mode (trackMode 2) or patrol mode (trackMode 3), preventing leftover speed state from a prior track mode from causing dead enemies to continue movement
• Character selection VOC book numbers — ChoosePerso() in AITD1.cpp was passing CVar values as VOC indices for character intro readings; corrected to pass the correct hardcoded vocIndex (0 for detective, 1 for heiress)
• LM_CONTINUE_TRACK safety — Added two guard checks: validates trackNumber >= 0 and HQR_Get returns non-null before dereferencing track data, preventing crashes on actors with no assigned track
🟢 Rendering & Visual Fixes
• Dark room blackout rendering — LM_LIGHT opcode sets lightOff flag, but the HD renderer wasn't properly rendering a black screen when lights are off. The main draw function now correctly skips scene rendering and leaves screen black when lightOff is active, while still allowing text/UI overlays
• Save/Load screen preview — Replaced scaleDownImageHD with a new fillSavePreviewToFrame helper that properly fills the preview area within the ornamental frame boundaries (x=183–286, y=43–126), avoiding overlap with corner sprites. Also fixed the highlight rect left boundary in the slot selection loop
• HD background compositing for book reading — Lire() now uses a delta-based approach: only pixels that differ from the baseline background (Aux) are written into uiLayer, so the HD background texture shows through correctly for both regular books and portrait-style intro readings
• HD background support for LM_PICTURE — The picture display opcode now attempts to load an HD replacement via loadHDBackground("ITD_RESS", pictureIndex) (e.g., for the Game Over screen), with proper fallback to 320×200 via recreateBackgroundTexture when no HD version exists
• Screen shake system — LM_SHAKING and LM_WATER opcodes now drive a proper screen shake via setupShaking() / stopShaking(), with shake offsets applied to the background quad vertices in the BGFX renderer

Other Bug Fixes
1 Critical drawZv(tObject*) — localZv was uninitialized before AdjustZV when actor is in a different room, causing garbage ZV data to be drawn Added CopyZV(&actorPtr->zv, &localZv) before AdjustZV in both code paths (same-room and different-room)
2 Critical parseAllSaves — stbi_load path was "SAVE%d.png" (relative to CWD) instead of using homePath, so preview PNGs would never load Prepended homePath to the PNG path (strcpy(pngPath, homePath) + strcat(pngPath, pngFile)), matching the pattern used for save file existence checks
3 Medium allocTextes — textCounter incremented without bounds check, risking buffer overflow past NUM_MAX_TEXT_ENTRY (1000) Added if(textCounter >= NUM_MAX_TEXT_ENTRY) break; guard before writing to tabTextes
4 Medium Duplicate extern "C" { extern char homePath[512]; } declaration before LoadWorld (already declared at file top) Removed the duplicate; only a single declaration remains at line 46 of main.cpp
5 Low OpenProgram — PtrCadre switch missing TIMEGATE case, leaving PtrCadre as null Added case TIMEGATE: loading from "ITD_RESS" index 0
6 Low Lire — ptrpage[page+1] written without bounds check against the 100-element array Added bounds check (if(page + 1 < (int)ptrpage.size())); exits reading if page limit exceeded

Don't miss a new AloneInTheDarkReHaunted release

NewReleases is sending notifications on new releases.