722 Commits

Author SHA1 Message Date
njohnson
79800c5c2a Add stable Updates.xml. 2026-01-12 23:08:33 -05:00
njohnson
1b210b9815 Update .gitignore. 2026-01-12 23:07:12 -05:00
njohnson
4cb15c5873 Update .pro. 2026-01-12 23:06:48 -05:00
njohnson
1587269f8f Update .gitignore. 2026-01-12 23:06:09 -05:00
njohnson
1f48b85cc3 Remove old bsp assets. 2026-01-12 23:05:16 -05:00
njohnson
0c3d2d0de9 Remove old model files. 2026-01-12 23:04:56 -05:00
njohnson
57c7ee7de5 Enhance app UI with export integration and tab management
Major UI improvements across the application:

MainWindow:
- Integrate undo stack for field editing
- Dirty state tracking with tab title indicators (*)
- Save/SaveAs prompts on tab close with unsaved changes
- Export menu integration in tab context menu
- Tab management: close all, close left/right of current tab
- Connect export system to tree widget signals

XTreeWidget:
- Add context menus for tree items
- Quick export action for immediate saves
- Export dialog action for format options
- Raw data export for any item
- Batch export for containers

XTreeWidgetItem:
- Add modified state tracking with visual indicator
- Support for marking items as dirty

ImagePreviewWidget:
- Enhanced image display and navigation
- Improved zoom and pan controls

TreeBuilder:
- Better handling of nested data structures
- Improved child node generation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1.10
2026-01-12 20:55:41 -05:00
njohnson
37bde14174 Add parse command to CLI with multiple output formats
Extend CLI with comprehensive file parsing capabilities:

New parse command:
- Parse binary files using XScript definitions
- Auto-detect file type or force specific type with -t option
- Output formats: JSON, tree, or table view

Output options:
- JSON (-f json): Machine-readable structured output
- Tree (-f tree): Hierarchical view with colored output
- Table (-f table): Compact tabular format

Additional features:
- Verbose mode (-v) to show hidden fields
- Warnings-only mode (-w) to show blank/zero values
- Nested data expansion in tree view
- Hex formatting for addresses and hashes

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 20:55:00 -05:00
njohnson
d7488c5fa9 Add comprehensive export system with format-specific dialogs
Implement a unified export system for extracting data from parsed files:

ExportManager (singleton):
- Centralized export handling for all content types
- Content type detection (image, audio, video, text, binary)
- Batch export support with progress tracking

Format-specific export dialogs:
- ImageExportDialog: PNG, JPEG, BMP, TGA with quality options
- AudioExportDialog: WAV, MP3, OGG with FFmpeg integration
- BinaryExportDialog: Raw data export with optional decompression
- BatchExportDialog: Recursive export with filtering options
- Base ExportDialog class for common functionality

Settings additions:
- FFmpeg path configuration with auto-detection
- Search common install locations and PATH

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 20:54:38 -05:00
njohnson
05c70c1108 Add field editing UI with undo support and dirty state tracking
Implement infrastructure for editing parsed binary fields:

FieldEditCommand (QUndoCommand):
- Undo/redo support for field value changes
- Stores old and new values with field metadata
- Integrates with Qt's undo stack

DirtyStateManager:
- Tracks modified state per-tab
- Emits signals when dirty state changes
- Enables save prompts and tab indicators

ScriptTypeEditorWidget enhancements:
- Add recompilation debouncing (300ms) for responsive editing
- Build form layout only for fields with values (skip unexecuted branches)
- Support edit signals for modified fields
- Improved table and form layout building

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 20:54:23 -05:00
njohnson
908100f487 Enhance Volition format definitions for Saints Row series
Major improvements to VPP, PEG, and ASM parsers:

vpp.xscript:
- Support all VPP versions (4-10) for Saints Row 1-4 and Red Faction
- Add container type detection (str2, packfile, etc.)
- Improved compression handling (zlib, LZO, auto-detection)
- Better recursive parsing of nested archives

peg.xscript:
- Full PEG texture container parsing
- Support for multiple texture formats (DXT1, DXT3, DXT5, etc.)
- Xbox 360 and PC format variants

asm.xscript:
- Animation state machine container parsing

New format definitions:
- anim.xscript: Animation data
- audio.xscript: Audio containers (bank files)
- mesh.xscript: 3D mesh geometry
- morph.xscript: Morph targets
- rig.xscript: Skeletal rigs
- sim.xscript: Simulation data
- zone.xscript: Level zone data

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 20:53:59 -05:00
njohnson
a86c5f592c Add Dead Rising 2 format definitions
XScript definitions for Dead Rising 2 (Xbox 360) file formats:
- big.xscript: Main archive format with LZX-compressed entries
- tex.xscript: Texture files
- anm.xscript: Animation files
- bcf.xscript, bcs.xscript, bct.xscript: Character format files
- bin.xscript: Generic binary containers
- bik.xscript: Bink video references
- havok.xscript: Havok physics data

The .big archive parser uses deadrising_lzx() to decompress entries
and recursively parses nested archives.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 20:53:43 -05:00
njohnson
3e3883cfeb Add DSL journaling infrastructure for field editing and write-back
Introduce operation journaling to track how values are read from the
binary stream, enabling future write-back of edited fields.

New components:
- OperationJournal: Records read operations with stream offsets, sizes,
  byte order, and original values during parsing
- ReverseEval: Analyzes expressions for invertibility (e.g., x+5 can be
  reversed to compute the source field when editing the result)
- Recompiler: Infrastructure for recompiling modified values back to
  binary format

Interpreter enhancements:
- Add runTypeInternalWithJournal() for journaled parsing
- Journal scalar reads, byte reads, strings, skip/seek operations
- Add deadrising_lzx() built-in for Dead Rising 2 LZX decompression
- Support _deadrising_lzx_stem context variable for nested archives

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 20:53:20 -05:00
njohnson
2f84e41cb7 Add native LZX decompression via libmspack
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>
2026-01-12 20:52:18 -05:00
njohnson
4ff45f1cac Remove COD test files, keep empty tests directory
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>
2026-01-11 17:04:08 -05:00
njohnson
1554eb4d74 Remove unused third-party libraries from git tracking
Analysis of .pro files shows these are never referenced:
- dx9_sdk/ - DirectX 9 SDK (completely unused)
- xna/ - XNA framework (completely unused)
- zlib/ - Qt's internal QtZlib is used instead

Active libraries retained:
- devil_sdk/ - Image loading for previews
- xbox_sdk/ - Xbox 360 format decompression
- oodle_lib/ - Dynamic compression loading

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 16:59:06 -05:00
njohnson
6fbb62a242 Ignore CLAUDE.md 2026-01-11 16:56:03 -05:00
njohnson
92caed5f7e Ignore CLAUDE.md 2026-01-11 16:54:42 -05:00
njohnson
6fdcc44948 Gitignore build and deploy scripts
These contain local paths and shouldn't be tracked.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 16:13:03 -05:00
njohnson
6b19ebb217 Add confirmation prompt before publishing release
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>
2026-01-11 16:12:28 -05:00
njohnson
f9d9333bd7 Use Claude Code to generate release notes in deploy script
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>
2026-01-11 16:11:34 -05:00
njohnson
0c43e3e250 Update gitignore and app.pro
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 16:08:54 -05:00
njohnson
7b1f5d34a1 Consolidate XScript definitions with byte order inheritance
- 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>
2026-01-11 16:08:46 -05:00
njohnson
39230139b9 Update DSL parser and interpreter
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 16:08:38 -05:00
njohnson
ca98c059ba Rename xscript-cli to cli tool
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 16:08:33 -05:00
njohnson
b844c71758 Add build and deploy scripts
- build_debug.cmd / build_release.cmd: Windows batch files with MSVC setup
- build_all_debug.sh / build_all_release.sh: Shell wrappers for Git Bash
- deploy.sh: Automated release script for Gitea
- Update CLAUDE.md with build instructions

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 16:08:27 -05:00
njohnson
144ed7b83d Fix remaining match() call in fastfile.xscript
Convert platform_u32 match to if-else chain.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 13:01:21 -05:00
njohnson
8430428a91 Fix XScript syntax errors in COD definitions
- 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>
2026-01-11 12:50:59 -05:00
njohnson
272216a7d5 Fix TreeBuilder assignment and xscript-cli linking
- 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>
2026-01-11 12:39:18 -05:00
njohnson
f9c3f91eec Fix xscript-cli build dependency on libs
Enable tools.depends = libs so xscript-cli waits for dsl.lib
to be built before linking.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 12:36:16 -05:00
njohnson
1b3b5ee194 Add project documentation and clean up obsolete files
- 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>
2026-01-11 12:12:00 -05:00
njohnson
8277be6518 Add xscript-cli tool and GML disassembler
- 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>
2026-01-11 12:11:38 -05:00
njohnson
19459d7aaf Enhance LogManager with file output and entry buffering
- 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>
2026-01-11 12:11:16 -05:00
njohnson
f0030ea6f2 Add new format definitions for FMOD, THQ, Volition, and Wii
- 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>
2026-01-11 12:10:58 -05:00
njohnson
8f07bf0b72 Update Asura XScript definitions with new syntax
- 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>
2026-01-11 12:10:29 -05:00
njohnson
f3bca6871e Update COD XScript definitions with new syntax
- 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>
2026-01-11 12:09:57 -05:00
njohnson
e4c913bb06 Refactor main window and extend settings functionality
- 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>
2026-01-11 12:09:31 -05:00
njohnson
57ad7c4111 Add new preview widgets and enhance existing viewers
- 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>
2026-01-11 12:08:59 -05:00
njohnson
c45d5cba86 Add XScript language features and DslKeys abstraction
- Add inline, array, const, and match statement syntax
- Add true/false keywords and deflate() decompression function
- Introduce DslKeys enum for internal metadata key management
- Improve parse_here delegation pattern with variable merging
- Remove deprecated bracket attribute syntax (use ui() instead)
- Enhance script type editor with additional functionality
- Remove obsolete install.cmd

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 12:08:26 -05:00
njohnson
904abf2e36 Add configurable QuickBMS path with auto-detection
- 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>
2026-01-08 00:54:57 -05:00
njohnson
2017abb175 Add reset settings option in preferences
- 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>
2026-01-08 00:43:52 -05:00
njohnson
d0510d7ab2 Update Asura archive XScript definitions
- Enhanced chunk parsing
- Improved structure definitions

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-08 00:38:33 -05:00
njohnson
b46c94a47b Update compression and logging libraries
- 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>
2026-01-08 00:38:25 -05:00
njohnson
c208595473 Update DSL interpreter and type registry
- 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>
2026-01-08 00:38:12 -05:00
njohnson
5f43466057 Update main app with theming and UI improvements
- 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>
2026-01-08 00:38:04 -05:00
njohnson
42373120b0 Clean up report issue dialog with build-time token
- 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>
2026-01-08 00:37:55 -05:00
njohnson
079e790aae Redesign about dialog to match splash screen style
- 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>
2026-01-08 00:37:46 -05:00
njohnson
50d90d4742 Update preferences editor with theme support
- 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>
2026-01-08 00:36:50 -05:00
njohnson
cd686a8b41 Add definition viewer dialog
- 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>
2026-01-08 00:36:42 -05:00
njohnson
885b4f6ad6 Add audio preview widget
- 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>
2026-01-08 00:36:00 -05:00