Integrate libmspack's LZX decompressor for Xbox 360 and UE-style
compressed data. This replaces the need for external xcompress64.dll
which was hanging/crashing on certain files.
- Add mspack/ library (lzxd.c decompressor with Gildor's fixes)
- Implement memory-based mspack_system for in-memory decompression
- Support multiple LZX formats: raw streams, Xbox 360 block format,
and Dead Rising 2's per-block format with 4-byte size headers
- Add DecompressDeadRisingLZX() with per-block independent contexts
to handle the block-based compression correctly
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Stripped all platform-specific COD test files (360, PC, PS3, Wii, WiiU).
Will rebuild test suite later with new approach.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Pauses and shows what will be published, requires y/Y to proceed.
If declined, exits gracefully with local files still available.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Calls claude.exe --print with git log to generate professional
release notes. Falls back to basic git log format if unavailable.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Volition VPP: Unified BE/LE types using inheritance pattern
- THQA PAK: Child types now inherit byte order from parent
- Various XScript definition updates and fixes
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Convert match() function calls to if-else chains (match keyword conflict)
- Remove unsupported bracket attributes [table=..., columns=...]
- Expand inline statement with bracket attributes to explicit if block
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Change TreeBuilder m_registry from reference to pointer to allow assignment
- Add default constructor to TreeBuilder for member initialization
- Add Xbox SDK xcompress64 library to xscript-cli linker dependencies
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add CLAUDE.md with project overview and XScript reference
- Remove obsolete ai-commit.sh script
- Clean up duplicate .env entry in .gitignore
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add xscript-cli: Command-line validator for XScript definition files
- Syntax checking and reference validation
- Directory batch processing
- Type listing and info commands
- Add gml_disasm.py: Python disassembler for Avatar GML bytecode
- Update tools.pro for new subprojects
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add log-to-file functionality with configurable path
- Buffer log entries before listeners connect to prevent lost messages
- Add flush mechanism for buffered entries
- Improve utils.h with additional helper functions
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- FMOD: FSB audio bank format support
- THQ: PAK archives, G4RC textures, RAD video, STR strings, GML scripts
- Volition: VPP archives, PEG textures, ASM container format
- Wii: BNR banner format with metadata extraction
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Migrate from bracket attributes to ui() function calls
- Enhance chunk parsing with improved structure definitions
- Add additional metadata fields to chunk handlers
- Update Xbox 360 texture and archive definitions
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Migrate from set_global/get_global to ctx_set/ctx_get
- Replace if-else chains with match() expressions
- Update inline pointer handling patterns
- Improve GfxWorld and asset parsing structures
- Clean up redundant code across 60+ definition files
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Refactor MainWindow to use TreeBuilder for parsed data organization
- Integrate new ListPreviewWidget and TextViewerWidget
- Add Python path auto-detection and scripts directory settings
- Add log-to-file option and improve debug logging feedback
- Improve image format detection (PNG, JPEG, BMP, DDS, TGA, RCB)
- Update app.pro with new source files
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add ListPreviewWidget for displaying parsed list data with table view
- Add TextViewerWidget for text file preview with syntax highlighting
- Add TreeBuilder class to organize parsed data into tree structure
- Enhance HexView with selection support, copy functionality, keyboard navigation
- Enhance ImagePreviewWidget with additional format support and metadata display
- Minor audio preview widget adjustments
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add QuickBMS path setting to Settings class with auto-detection
- Add Tools page in Preferences with QuickBMS configuration UI
- Update Compression class to use configurable path instead of hardcoded
- Add startup prompt if QuickBMS not found, with option to locate
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Reset All Settings button in General preferences
- Clears all settings and restores XPlor Dark theme
- Applies theme change immediately
- Confirmation dialog before reset
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Enhanced compression support
- Log manager improvements
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Enhanced XScript parsing capabilities
- Type registry improvements
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- App metadata defines at top of main.cpp
- Dynamic themed app icon (accent color replaces red)
- Icon refreshes on theme change
- Disabled unimplemented menu actions
- Image preview with theme support
- Updated CLI help text with feature list
- Splash screen integration
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- API token loaded from .env at build time via qmake
- All fields required with validation
- Email validation with regex
- Cleaner UI with placeholder text
- Added .env to gitignore
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Custom painting with theme colors
- Accent stripe at top
- "X" in accent color, "Plor" in text color
- Dynamic version from QCoreApplication
- Dynamic copyright year
- Removed "With Help From" section
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Theme selection (dark/light modes)
- Accent color picker with presets
- Live preview of theme changes
- Settings persistence via QSettings
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- View loaded XScript definitions
- Shows definition name and source path
- Displays load status (success/error)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Waveform visualization with theme accent color
- Playback controls (play/pause, stop, position slider)
- Time display with milliseconds (MM:SS.mmm)
- Position tracking line on waveform
- Volume control
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Custom hex viewer with address, hex, and ASCII columns
- Theme-aware colors for selection and highlights
- Keyboard navigation and selection support
- Scrollable view for large files
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Settings singleton for app-wide preferences (theme, recent files)
- Theme support with accent colors and dark/light modes
- Splash screen with custom painting, progress bar, theme colors
- Wait-for-interaction option for splash screen
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Document:
- Project overview and features
- Supported game formats (CoD, Asura Engine)
- Project structure
- Build instructions
- XScript language syntax and examples
- Usage guide
- How to add new format support
- Dependencies and acknowledgments
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add TypeRegistry::supportedExtensions() to extract file extensions
from loaded XScript definitions by parsing criteria blocks
- Implement File > Open action with QFileDialog
- Generate filter string dynamically from all root type definitions
- Include "All Supported Files" and "All Files" filter options
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add new asset type definitions:
- GfxWorld and related structures (cells, lights, probes)
- Menu system (menudef, itemdef, windowdef, listboxdef)
- Sound system (soundalias, soundfile, speakermap, sndcurve)
- D3D resources (vertex/index buffers)
- Font glyphs and expression entries
Update existing definitions with improved field annotations
and UI display properties.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add XScript definitions for Rebellion's Asura engine formats:
- Archive chunks (fcsr, acsr, rcsr)
- Texture chunks (tsxt, xbtx2d_chunk)
- Resource chunks and headers
Used by games like Sniper Elite V2 on Xbox 360.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add ImagePreviewWidget class for previewing texture assets:
- TGA image loading (uncompressed and RLE)
- Xbox 360 XBTX2D texture format support (work in progress)
- DXT1/DXT5 block decompression
- Xbox 360 texture untiling using SDK algorithms
- Scroll-to-zoom and drag-to-pan functionality
- Debug export to PNG for development
The Xbox 360 texture decoding is still a work in progress and
needs further research for proper implementation.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add support for:
- basename() function for extracting filenames from paths
- cstring() function for reading null-terminated strings
- ascii() function for reading fixed-length ASCII strings
- Enhanced type registry with additional primitive types
- Improved parser with better error handling
These additions enable more flexible XScript definitions for
parsing binary file formats.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>