Skip to content

Version 1.18.0

Pre-release
Pre-release

Choose a tag to compare

@MrTyton MrTyton released this 14 Nov 21:20
· 7 commits to main since this release

FFX Speedrun Mod v1.8.0

New Features

GUI Improvements

  • Added graphical user interface: Complete Windows Forms GUI for easier configuration and control
  • Launch Game button: Automatically locate and launch the FFX executable from the mod
  • Auto-start feature: Automatically start the mod when FFX is detected, with UI checkbox and timer logic
  • Category selection UI: Added speedrun category selection with rules link; dynamic updates based on settings
  • Enhanced tooltips: Added helpful tooltips for UI elements to improve user experience
  • Application icon: Custom icon with fallback to default if extraction fails

Configuration Management

  • ConfigManager class: New centralized configuration file handling
  • Executable directory configuration: Configuration files now stored in executable directory for better portability
  • Preserve break checkbox state: Break checkbox state is remembered and restored when CSR is toggled

Code Quality & Architecture

  • MemoryWatcherFactory: Refactored memory watchers to use factory pattern for improved maintainability
  • Centralized offset constants: Consolidated cutscene transition logic using shared constants
  • Character ID constants: Added constants for character IDs, equipment flags, and menu triggers
  • Dialog box constants: New constants for dialog boxes, items, and battle states
  • Helper methods: Refactored Transition class to use helper methods for character management

Performance Improvements

  • Optimized transition lookups: Cached transition dictionaries to eliminate repeated property access (~60 times per second)
  • Faster memory watcher lookups: Implemented O(1) dictionary-based name lookups instead of O(n) LINQ searches
  • Reduced memory allocations: Pre-allocated and reused change detection lists, eliminating ~60+ allocations per second
  • Early-exit optimization: Added ForceLoad check to skip unnecessary transition evaluations when not needed
  • Dictionary optimization: Enhanced dictionary usage throughout for better performance

Bug Fixes

  • Fixed null reference exception on startup: Corrected reflection-based field lookup in MemoryWatcherFactory
  • Fixed dictionary initialization: Properly rebuild memory watcher name dictionary after reflection-based initialization
  • Fixed process exit error: Added graceful exception handling when FFX closes, preventing "Cannot process request because the process has exited" error dialog
  • Fixed RNG seed setting: Minor fix for setting seeds correctly
  • Fixed formatting inconsistencies: Improved code formatting across transition classes and MemoryWatchers

User Interface Changes

  • Removed sleep interval option from GUI: Sleep interval is now always set to the default value for backwards compatibility with existing timing documentation
  • Adjusted UI layout: Improved spacing and positioning of log level and auto-start controls
  • Enhanced button text: Clearer button labels for improved usability
  • Real-time logging: Enhanced logging functionality with real-time event subscription

Code Refactoring

  • Consolidated member variables: Improved organization in Transition class
  • Improved readability: Removed unnecessary blank lines and enhanced code organization throughout
  • Better maintainability: Refactored multiple classes for improved code structure
  • Boss transition logic: Implemented comprehensive boss transition logic and cutscene offsets

Technical Details

  • Built with .NET 8.0
  • Improved memory management and reduced GC pressure
  • Enhanced error handling and process lifecycle management

Installation Notes:

  • Self-contained version: No prerequisites, just extract and run