Skip to content

Conversation

@OZORDI
Copy link

@OZORDI OZORDI commented Dec 17, 2025

No description provided.

Prince Ozordi added 19 commits December 13, 2025 01:45
…tion

Major changes:
- Rename MarathonRecomp/ -> LibertyRecomp/
- Rename MarathonRecompLib/ -> LibertyRecompLib/
- Replace all MARATHON_RECOMP_* macros with LIBERTY_RECOMP_*
- Delete Sonic-specific API (Sonicteam/, Chao/ namespaces)
- Create RAGE engine placeholder stubs for GTA IV
- Update flatpak metadata for io.github.ozordi.libertyrecomp
- Update README.md for GTA IV project
- Update user paths, registry keys, window titles
- Update build configuration and workflow files

This fork adapts the static recompilation framework for Grand Theft Auto IV
on Xbox 360. The XenonRecomp and XenosRecomp tools are preserved as they
are generic Xbox 360 recompilers.
Builds for:
- Windows x64
- Linux x64
- Linux ARM64
- macOS ARM64 (Apple Silicon)
- macOS x64 (Intel)
- Linux Flatpak

Triggers on version tags (v*) or manual dispatch.
Creates GitHub releases with all artifacts.
The original MarathonRecomp required private Sonic '06 assets.
For LibertyRecomp, we make these optional so CI can run without them.
Prevent accidental commits of:
- Grand Theft Auto IV* folders
- GTA4/ gta4/ folders
- *.xex *.iso *.xcp files
- Created GTA4.toml config for XenonRecomp
- Generated gta4_switch_tables.toml with ~28k lines of switch tables
- XenonAnalyse successfully analyzed the default.xex
- Add arm64-osx triplet to macos-base preset in CMakePresets.json
- Move ninja installation before vcpkg cache step in workflow to ensure it's available when vcpkg bootstraps
- Rename all Marathon.h/inl includes to Liberty.h/inl
- Update MARATHON_RECOMP_* macros to LIBERTY_RECOMP_*
- Update locale strings for GTA IV (Liberty Recompiled)
- Update update_checker URLs to OZORDI/LibertyRecomp
- Update bug_report.yml for GTA IV (TLAD, TBoGT DLC)
- Update flatpak README
- Comment out MarathonRecompResources submodule
- Update CMakeLists.txt paths
- Replace Sonicteam classes with GTA4 equivalents
- Update ffmpeg-core references
- Add RAGE engine stubs (RAGE.h, RAGE.inl, README.md)
…penFile, support dir handles in NtQueryVolumeInformationFile; add diagnostics
- Increase physical heap from 1.5GB to 2GB by moving RESERVED_END from
  0xA0000000 to 0x80000000
- Improve TryGetAnsiPath garbage path detection to reject paths starting
  with non-ASCII characters or containing majority garbage bytes
- Add logging to XFindFirstFileA for debugging
- Implement MmQueryAllocationSize - returns allocation size via g_userHeap
- Implement ObDereferenceObject, KeSetDisableBoostThread, ExTerminateThread,
  KeEnterCriticalRegion, KeLeaveCriticalRegion as no-ops
- Extend RtlNtStatusToDosError with more status code translations
- Add missing error codes to xdm.h: ERROR_FILE_NOT_FOUND, ERROR_INVALID_PARAMETER,
  ERROR_INVALID_NAME, ERROR_HANDLE_EOF, ERROR_ALREADY_EXISTS
- Add STATUS_OBJECT_NAME_INVALID and STATUS_OBJECT_NAME_COLLISION constants

Game still not progressing past initial setup - threads calling null function
pointers and empty path loads indicate uninitialized structures.
- Add persistent_storage_manager for GTA IV save data (load/save/delete)
- Add gta4_input_patches with official Xbox 360 control scheme
- Add memcpy_patches for native memory operations
- Update CMakeLists.txt with new source files
- Update .gitignore to exclude copyrighted game content
- Various kernel and file system improvements for GTA IV support

New files:
- user/persistent_storage_manager.h/.cpp - Save data management
- patches/gta4_input_patches.h/.cpp - Controller input handling
- patches/memcpy_patches.cpp - Memory operation fixes
- Update audio_patches.cpp for RAGE audio engine (replaces Sonicteam refs)
- Add GTA4Audio namespace for volume control (music, effects, master)
- Add GTA4Radio namespace for in-game radio system
- Add macOS audio attenuation support
- Enable audio_patches.cpp in CMakeLists.txt build
- GameWindow now detects native display resolution at startup instead of defaulting to 1280x720
- Simplified sub_829A1F00 file loading hook - removed complex async tracking
- Set XXOVERLAPPED completion flags before returning per static recomp playbook
- Removed retry loop bypass (sub_827F0B20) as it broke file loading

Current state: Game initializes GPU, loads shaders, but still loops on async file reads.
The async completion signaling is correct but game's streaming system keeps re-requesting same data.
- Add platform_paths.h/cpp for cross-platform install directories
  - Windows: %LOCALAPPDATA%\LibertyRecomp  - Linux: ~/.local/share/LibertyRecomp/ (XDG compliant)
  - macOS: ~/Library/Application Support/LibertyRecomp/

- Add iso_extractor.h/cpp for Xbox 360 ISO extraction
  - Wrapper for extract-xiso tool
  - Cross-platform support

- Add rpf_extractor.h/cpp for RPF archive parsing
  - Native RPF2 header/TOC parsing
  - SparkCLI fallback for encrypted files
  - Shader scanning and extraction from RPFs

- Add shader_converter.h/cpp for RAGE FXC shader extraction
  - Parse RAGE FXC container (magic: rgxa)
  - Extract Xbox 360 shader binaries
  - Platform detection (DXIL/SPIR-V/AIR)

- Add rage_fxc_extractor standalone tool

- Update installer.cpp with enhanced flow
  - RPF shader scanning integration
  - Platform paths integration

- Add comprehensive documentation
  - SHADER_PIPELINE.md - Shader extraction and conversion
  - INSTALLATION_ARCHITECTURE.md - Platform paths and install flow
  - LibertyRecompLib/ppc/docs.md - Boot-critical function documentation

- Update README.md with project status and documentation links
- Update .gitignore for Reference Projects and temp files
@hyperbx hyperbx closed this Dec 17, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants