Iñigo Valentin ivalentin

ivalentin запушил(а) метку v0.3.0 в ivalentin/V-Gears

5 часов назад

ivalentin запушил(а) master в ivalentin/V-Gears

  • 41bfcb491c Merge branch 'release/v0.3.0'
  • 062e9c33d7 v0.3.0
  • adc1e71f56 Battle spell effects from the original assets, floating numbers Spell effects now come from the data in magic.lgp, extracted by the installer and recreated in Lua, instead of generic particles. Installer - LGP archives read the folder table, so files with the same name in different folders (fire_1.p, thund_3.p, ice_1.p...) are no longer overwritten. FileEntry has a folder field. - New install steps EFFECT_MODELS_INIT/CONVERT export effect meshes to models/battle/effects/<folder>_<name>.mesh, convert their textures, and write gamedata/effects.lua. - Sprite sheets (.s files) are parsed into gamedata/effect_sprites.lua and their textures go to images/battle_fx. Engine - BattleManager: add_effect_model / remove_effect_model. - Entity: set_scale, set_model_rotation, set_blend (normal, additive, alpha), set_alpha. EntityModel clones materials per entity and releases them on removal. - UiWidget/UiSprite: image sub-regions and additive blending. - UiTextArea::Render refreshes the layout when the widget changed after the UI update. Battle scripts run after it, so text that was moved or changed every frame was never drawn. Battle (Lua) - Effects by attack id (Regen, Barrier, MBarrier, Reflect, Wall, Slow, Stop, DeBarrier, Death) and by element (Fire, Ice, Bolt), plus Cure with the original sprites. The generic particles, flashes and caster sparks are removed; only the battle-start flash stays. - Floating damage, heal, MP and status numbers over the targets. - Fix: the party models were missing in battle after loading a save, because load_game did not export the party. It now calls export_party_members(). Sizes, timing and orientation of the effects are first guesses and have been tested in game only for Fire, Ice, Bolt, Cure and the numbers. Haste, summons and most status spells have no effect yet.
  • 69c3de913f Merge branch 'feature/data' into develop
  • 56a76f64b0 Save and load settings, fix loading, and read controls through game events Settings in the savemap - The savemap saves the config menu settings by name (<Settings> in the XML) and the scripts decide which ones there are. New savemap_manager functions: set_setting, is_slot_setting_set, get_slot_setting and get_slot_window_colour. Remove the unused Settings struct and the stub numeric settings. - save_game and load_game use ConfigMenu:save_settings and load_settings. Loading applies the volumes, the movement and the window colours, keeps the current settings if the game was saved before they existed, and clamps damaged values. - Fix the XML loader of the window colours: the bottom-left corner was never loaded (typo) and the maximum value of 255 was rejected. - Savemap::Write creates the save folder if it is missing and logs an error if it can't write, instead of silently not saving. Loading games - Rewrite load_game as the inverse of save_game. Inventory, materia and key items are 1-based in the game and 0-based in the savemap, the character materia used wrong arguments and a binding that doesn't exist, limit levels were off by one, and the characters are now updated in place. - Fix recalculate_stats crashing with armor materia in a slot where the weapon has none (it looked in the weapon). Stats - Equipment and materia bonuses were never applied: they were walked with ipairs although the stats are keyed by name. Use pairs, and read the accessory bonuses from the accessory instead of the armor. - The installer wrote the stat ID instead of the bonus amount for weapons, armor and accessories. Controls - New InputManager::IsGameEventPressed, to poll the controls through the game events and honor the keys chosen in the controller settings. - is_key_on translates the pad masks to game events instead of fixed keys. Menu, Extra, Select, Start, L2 and R2 are now mapped as well. - The world map moves with the walk events and leaves a vehicle with CANCEL. - Only letters and the space bar reach the scripts as raw keys. The name menu uses Config.CONTROLS, and a letter that is also the OK key types instead of confirming. - While the name menu is not enabled (NameMenu.enabled), the characters get their default names and the game goes on.
  • Просмотр сравнение для этих 9 коммитов »

5 часов назад

ivalentin запушил(а) feature/battle_module в ivalentin/V-Gears

  • adc1e71f56 Battle spell effects from the original assets, floating numbers Spell effects now come from the data in magic.lgp, extracted by the installer and recreated in Lua, instead of generic particles. Installer - LGP archives read the folder table, so files with the same name in different folders (fire_1.p, thund_3.p, ice_1.p...) are no longer overwritten. FileEntry has a folder field. - New install steps EFFECT_MODELS_INIT/CONVERT export effect meshes to models/battle/effects/<folder>_<name>.mesh, convert their textures, and write gamedata/effects.lua. - Sprite sheets (.s files) are parsed into gamedata/effect_sprites.lua and their textures go to images/battle_fx. Engine - BattleManager: add_effect_model / remove_effect_model. - Entity: set_scale, set_model_rotation, set_blend (normal, additive, alpha), set_alpha. EntityModel clones materials per entity and releases them on removal. - UiWidget/UiSprite: image sub-regions and additive blending. - UiTextArea::Render refreshes the layout when the widget changed after the UI update. Battle scripts run after it, so text that was moved or changed every frame was never drawn. Battle (Lua) - Effects by attack id (Regen, Barrier, MBarrier, Reflect, Wall, Slow, Stop, DeBarrier, Death) and by element (Fire, Ice, Bolt), plus Cure with the original sprites. The generic particles, flashes and caster sparks are removed; only the battle-start flash stays. - Floating damage, heal, MP and status numbers over the targets. - Fix: the party models were missing in battle after loading a save, because load_game did not export the party. It now calls export_party_members(). Sizes, timing and orientation of the effects are first guesses and have been tested in game only for Fire, Ice, Bolt, Cure and the numbers. Haste, summons and most status spells have no effect yet.
  • 69c3de913f Merge branch 'feature/data' into develop
  • 56a76f64b0 Save and load settings, fix loading, and read controls through game events Settings in the savemap - The savemap saves the config menu settings by name (<Settings> in the XML) and the scripts decide which ones there are. New savemap_manager functions: set_setting, is_slot_setting_set, get_slot_setting and get_slot_window_colour. Remove the unused Settings struct and the stub numeric settings. - save_game and load_game use ConfigMenu:save_settings and load_settings. Loading applies the volumes, the movement and the window colours, keeps the current settings if the game was saved before they existed, and clamps damaged values. - Fix the XML loader of the window colours: the bottom-left corner was never loaded (typo) and the maximum value of 255 was rejected. - Savemap::Write creates the save folder if it is missing and logs an error if it can't write, instead of silently not saving. Loading games - Rewrite load_game as the inverse of save_game. Inventory, materia and key items are 1-based in the game and 0-based in the savemap, the character materia used wrong arguments and a binding that doesn't exist, limit levels were off by one, and the characters are now updated in place. - Fix recalculate_stats crashing with armor materia in a slot where the weapon has none (it looked in the weapon). Stats - Equipment and materia bonuses were never applied: they were walked with ipairs although the stats are keyed by name. Use pairs, and read the accessory bonuses from the accessory instead of the armor. - The installer wrote the stat ID instead of the bonus amount for weapons, armor and accessories. Controls - New InputManager::IsGameEventPressed, to poll the controls through the game events and honor the keys chosen in the controller settings. - is_key_on translates the pad masks to game events instead of fixed keys. Menu, Extra, Select, Start, L2 and R2 are now mapped as well. - The world map moves with the walk events and leaves a vehicle with CANCEL. - Only letters and the space bar reach the scripts as raw keys. The name menu uses Config.CONTROLS, and a letter that is also the OK key types instead of confirming. - While the name menu is not enabled (NameMenu.enabled), the characters get their default names and the game goes on.
  • 57f8cc72f1 Menu overhaul: shared menu library, new menus, settings, and fixes Menu framework - New menu_lib.lua with Cursor, ListCursor and a Menu state machine that replace the nested current_menu/current_submenu ladders. Shared helpers: grid_buttons, set_bar, set_limit_bar, exp_progress, cursor_memory. A menu that gives the control back runs the on_resume hook of the receiver, so the main menu refreshes after its submenus close. - Pause, begin, save and main menus use the framework. - Maximum HP and MP shown in menus now include equipment and materia. New menus - Status: three pages (stats and equipment, elemental, status effects). Character effects come from the new character_effects.lua. - Order: toggles the row of a character and moves its portrait. - Limit: Set and Check modes, per-level technique lists and a confirmation to change the level. The installer now reads the limit technique names and descriptions (attack IDs 128+) from the kernel. - Quit: confirmation window that closes the game. - PHS: swap characters between the party and the reserve. Locked characters can't move, the party must be complete, and the reserve keeps the places of the portraits. The field opcodes MMBUD, MMBLK and MMBUK are now decompiled to set_character_enable and set_party_lock. - Magic: magic (one row per materia), summons and enemy skills in a grid with descriptions, MP cost and uses. Cure and Life spells can be cast on a party member from the menu. New character_abilities.lua computes the abilities from the equipped materia. - Config: window color, sound, controller, cursor, ATB, battle speed and messages, movement, camera angle and magic order. - Window color: four corners with RGB sliders, applied to every window. The engine marks window backgrounds (window_background) and exposes ui_manager:set_window_colours and widget:set_colours. - Sound: music and effects volume (0-4), applied at once through audio_manager:set_music_volume and set_sound_volume. The music volume also controls the audio of the movies. - Controller: the player can assign a key to each action, including the directions. Changes are applied and saved in controls.cfg, which the game runs after config.cfg, when the window is closed and the keys are valid. New input_manager functions to set, get and capture keys, the console command set_game_event_keys, and the menu directions are now game events. - Cursor memory (menus and battle), ATB modes in battle, and walk or run by default (entity_manager:set_player_default_run) are working. Camera angle is stored only, as the battle camera doesn't move yet. Fixes - Item menu: wrong item selected and crash on the first item. - Equip menu: list off-by-one, and weapons lost after one swap. - Materia saving: character IDs were stored as materia IDs, and armor materia used the weapon data. - Savemap: fix the XML loader (materia indexed by materia ID, enemy skill read into AP), saving the stash and enemy skill elements, and the copy of the window colours. The maximum colour is now 255. - Fix the text colour of the options of the config menu, set_party and the party add and remove functions, and the field names of the character enable and lock. - Accessory elements now keep their mode, like armor. Cleanup - Remove the dead prototype and unused data and texts. Known gaps: the settings are not saved in the savemap yet, Added-Ability is always "Nothing.", and the controller can't remap the keys of other modules that read raw keys.
  • 3b6d55ed8c Video playback, movie cameras, and audio fixes. Videos - The installer converts every FF7 movie with ffmpeg to a folder of JPEG frames, an ogg with the sound, and movie.xml. It runs after extracting the videos from a game disk and in the normal install. - It also copies the camera of each movie from moviecam.lgp (camera.cam). - New MoviePlayer and MovieState draw the frames at 15 fps behind the models and follow game speed. A movie with a camera takes the place of the background tiles; the models are drawn over it with the camera of each frame and hidden in frames without one. A movie without a camera covers the field. - The movie opcodes PMVIE, MOVIE and MVIEF generate movie_player:set(name, scale), play() and get_frame(). The movie names come from FF7.EXE. play() waits for the end of the movie in the script that calls it. - The sound plays in its own audio channel. Audio - Fix a crash and music stutter: a stopped player kept the id of a source that OpenAL could give to another player, so it freed its decoder twice and consumed the buffers of the other one.
  • Просмотр сравнение для этих 9 коммитов »

5 часов назад

ivalentin запушил(а) develop в ivalentin/V-Gears

  • ef3813e253 Merge tag 'v0.3.0' into develop v0.3.0
  • 41bfcb491c Merge branch 'release/v0.3.0'
  • 062e9c33d7 v0.3.0
  • adc1e71f56 Battle spell effects from the original assets, floating numbers Spell effects now come from the data in magic.lgp, extracted by the installer and recreated in Lua, instead of generic particles. Installer - LGP archives read the folder table, so files with the same name in different folders (fire_1.p, thund_3.p, ice_1.p...) are no longer overwritten. FileEntry has a folder field. - New install steps EFFECT_MODELS_INIT/CONVERT export effect meshes to models/battle/effects/<folder>_<name>.mesh, convert their textures, and write gamedata/effects.lua. - Sprite sheets (.s files) are parsed into gamedata/effect_sprites.lua and their textures go to images/battle_fx. Engine - BattleManager: add_effect_model / remove_effect_model. - Entity: set_scale, set_model_rotation, set_blend (normal, additive, alpha), set_alpha. EntityModel clones materials per entity and releases them on removal. - UiWidget/UiSprite: image sub-regions and additive blending. - UiTextArea::Render refreshes the layout when the widget changed after the UI update. Battle scripts run after it, so text that was moved or changed every frame was never drawn. Battle (Lua) - Effects by attack id (Regen, Barrier, MBarrier, Reflect, Wall, Slow, Stop, DeBarrier, Death) and by element (Fire, Ice, Bolt), plus Cure with the original sprites. The generic particles, flashes and caster sparks are removed; only the battle-start flash stays. - Floating damage, heal, MP and status numbers over the targets. - Fix: the party models were missing in battle after loading a save, because load_game did not export the party. It now calls export_party_members(). Sizes, timing and orientation of the effects are first guesses and have been tested in game only for Fire, Ice, Bolt, Cure and the numbers. Haste, summons and most status spells have no effect yet.
  • Просмотр сравнение для этих 4 коммитов »

5 часов назад

ivalentin запушил(а) feature/installer в ivalentin/V-Gears

  • dc8a7b4a96 Installer: presets, background install, video disks, audio tool finder Rework the data installer so it works from a single installation directory and is easier and safer to use. Installation layout - One installation directory (also the game's working directory): game data goes to <dir>/data, intermediates to <dir>/temp. Old ConfigDir/DataDir settings are migrated to InstallDir. - "Copy V-Gears data files" copies the repository data/ folder to the installation directory, and any missing Ogre plugin from the system. - Install the world map .MAP files the game reads from data/wm. Usability - Presets ("What to install"), option dependency rules, and a disk space estimate. Options are only editable with "Custom". - Preflight checks before extracting anything (ISO, directory, free space, plugins, world map needing fields). - Installation runs in a worker thread; unified colored log written to installer.log; per-step problem summaries. - Verify install and Launch game buttons, Close button, About and Help dialogs. Remove the unused V-Gears Config tab. - Install button is disabled after an installation starts, as the installer can only run once per window. Conversion - Unique material names per model and per-model cleanup of skeletons, fixing clashes between field, battle and world models that crashed or skipped models. Refresh the char resource location so field models are generated on a clean install. - Audio conversion runs in a task pool in the background. - Find FFmpeg and TiMidity (saved path, tools folders, PATH; Windows rules for PATHEXT), probe them, and run them without a shell. Warn before installing if they are missing and let the user locate them or continue without. Skipped audio keeps its originals and the sound/music indexes only list files that exist. - Accept PC game disks 1-3 and extract their videos to data/video. Remove the FFmpeg/TiMidity checkboxes. Data fixes - Fix the font definition path, and the resources.cfg that defined every material twice. Remove stale files from data/. Tests, docs and packaging - Add v-gears-installer-tests (layout, option rules, verifier, log, task pool, video paths, tool finder). - Update the installation, build and run guides. - Fix the desktop file and the Debian menu, control, changelog and install list so the game starts from the installation directory. - Stop tracking the generated ui_MainWindow.h.
  • 7c36af446e Merge tag 'vv0.2.0' into develop v0.2.0
  • b18a6c66e6 Merge branch 'release/v0.2.0'
  • 302de42e77 v0.2.0
  • f8c17ebcf2 Battle module: playable battles, AI, random encounters, world map encounters Installer - Fix battle IDs (scene * 4 + setup), battle locations, scene model table and formation flags/layouts - Fix .da animation decoding and export attacks, enemy attacks, elements, statuses, items, drops, steal and AI scripts - Export field random encounter tables to map.xml and world map encounter tables (ENC_W.BIN) to world_encounters.xml - Decompile BMUSC (battle music) and BTLMD (battle mode) field opcodes Engine - Formation layout, escape, next battle, preemptive/back/pincer/side attacks and BTLMD battle modes - Battle camera fixes, field entity hiding and audio handling (battle music, victory fanfare, resume field music) - Random encounters in fields using the original game's logic (lower rate = more frequent, special battles first, no immediate repeats) - World map random encounters: region and terrain group lookup, pause and resume the world around battles - Player lock respected by the world map module - Fix Manager::SetPreviousModule Battle scripts and UI - Action system, animations, damage formulas, magic, summons, items, statuses, escape, rewards and game over screen - Enemy AI interpreter (battle_ai_vm.lua) and battle effects screen - White flash transition into battles with movement lock - BTLMD flags: no results, no victory music, no escape, timed battles, no game over Data - New battle_fx and game_over screens, debug materia and items

11 часов назад

ivalentin создал новую ветку feature/installer в ivalentin/V-Gears

11 часов назад

ivalentin запушил(а) feature/data в ivalentin/V-Gears

  • 56a76f64b0 Save and load settings, fix loading, and read controls through game events Settings in the savemap - The savemap saves the config menu settings by name (<Settings> in the XML) and the scripts decide which ones there are. New savemap_manager functions: set_setting, is_slot_setting_set, get_slot_setting and get_slot_window_colour. Remove the unused Settings struct and the stub numeric settings. - save_game and load_game use ConfigMenu:save_settings and load_settings. Loading applies the volumes, the movement and the window colours, keeps the current settings if the game was saved before they existed, and clamps damaged values. - Fix the XML loader of the window colours: the bottom-left corner was never loaded (typo) and the maximum value of 255 was rejected. - Savemap::Write creates the save folder if it is missing and logs an error if it can't write, instead of silently not saving. Loading games - Rewrite load_game as the inverse of save_game. Inventory, materia and key items are 1-based in the game and 0-based in the savemap, the character materia used wrong arguments and a binding that doesn't exist, limit levels were off by one, and the characters are now updated in place. - Fix recalculate_stats crashing with armor materia in a slot where the weapon has none (it looked in the weapon). Stats - Equipment and materia bonuses were never applied: they were walked with ipairs although the stats are keyed by name. Use pairs, and read the accessory bonuses from the accessory instead of the armor. - The installer wrote the stat ID instead of the bonus amount for weapons, armor and accessories. Controls - New InputManager::IsGameEventPressed, to poll the controls through the game events and honor the keys chosen in the controller settings. - is_key_on translates the pad masks to game events instead of fixed keys. Menu, Extra, Select, Start, L2 and R2 are now mapped as well. - The world map moves with the walk events and leaves a vehicle with CANCEL. - Only letters and the space bar reach the scripts as raw keys. The name menu uses Config.CONTROLS, and a letter that is also the OK key types instead of confirming. - While the name menu is not enabled (NameMenu.enabled), the characters get their default names and the game goes on.
  • 57f8cc72f1 Menu overhaul: shared menu library, new menus, settings, and fixes Menu framework - New menu_lib.lua with Cursor, ListCursor and a Menu state machine that replace the nested current_menu/current_submenu ladders. Shared helpers: grid_buttons, set_bar, set_limit_bar, exp_progress, cursor_memory. A menu that gives the control back runs the on_resume hook of the receiver, so the main menu refreshes after its submenus close. - Pause, begin, save and main menus use the framework. - Maximum HP and MP shown in menus now include equipment and materia. New menus - Status: three pages (stats and equipment, elemental, status effects). Character effects come from the new character_effects.lua. - Order: toggles the row of a character and moves its portrait. - Limit: Set and Check modes, per-level technique lists and a confirmation to change the level. The installer now reads the limit technique names and descriptions (attack IDs 128+) from the kernel. - Quit: confirmation window that closes the game. - PHS: swap characters between the party and the reserve. Locked characters can't move, the party must be complete, and the reserve keeps the places of the portraits. The field opcodes MMBUD, MMBLK and MMBUK are now decompiled to set_character_enable and set_party_lock. - Magic: magic (one row per materia), summons and enemy skills in a grid with descriptions, MP cost and uses. Cure and Life spells can be cast on a party member from the menu. New character_abilities.lua computes the abilities from the equipped materia. - Config: window color, sound, controller, cursor, ATB, battle speed and messages, movement, camera angle and magic order. - Window color: four corners with RGB sliders, applied to every window. The engine marks window backgrounds (window_background) and exposes ui_manager:set_window_colours and widget:set_colours. - Sound: music and effects volume (0-4), applied at once through audio_manager:set_music_volume and set_sound_volume. The music volume also controls the audio of the movies. - Controller: the player can assign a key to each action, including the directions. Changes are applied and saved in controls.cfg, which the game runs after config.cfg, when the window is closed and the keys are valid. New input_manager functions to set, get and capture keys, the console command set_game_event_keys, and the menu directions are now game events. - Cursor memory (menus and battle), ATB modes in battle, and walk or run by default (entity_manager:set_player_default_run) are working. Camera angle is stored only, as the battle camera doesn't move yet. Fixes - Item menu: wrong item selected and crash on the first item. - Equip menu: list off-by-one, and weapons lost after one swap. - Materia saving: character IDs were stored as materia IDs, and armor materia used the weapon data. - Savemap: fix the XML loader (materia indexed by materia ID, enemy skill read into AP), saving the stash and enemy skill elements, and the copy of the window colours. The maximum colour is now 255. - Fix the text colour of the options of the config menu, set_party and the party add and remove functions, and the field names of the character enable and lock. - Accessory elements now keep their mode, like armor. Cleanup - Remove the dead prototype and unused data and texts. Known gaps: the settings are not saved in the savemap yet, Added-Ability is always "Nothing.", and the controller can't remap the keys of other modules that read raw keys.
  • 3b6d55ed8c Video playback, movie cameras, and audio fixes. Videos - The installer converts every FF7 movie with ffmpeg to a folder of JPEG frames, an ogg with the sound, and movie.xml. It runs after extracting the videos from a game disk and in the normal install. - It also copies the camera of each movie from moviecam.lgp (camera.cam). - New MoviePlayer and MovieState draw the frames at 15 fps behind the models and follow game speed. A movie with a camera takes the place of the background tiles; the models are drawn over it with the camera of each frame and hidden in frames without one. A movie without a camera covers the field. - The movie opcodes PMVIE, MOVIE and MVIEF generate movie_player:set(name, scale), play() and get_frame(). The movie names come from FF7.EXE. play() waits for the end of the movie in the script that calls it. - The sound plays in its own audio channel. Audio - Fix a crash and music stutter: a stopped player kept the id of a source that OpenAL could give to another player, so it freed its decoder twice and consumed the buffers of the other one.
  • dc8a7b4a96 Installer: presets, background install, video disks, audio tool finder Rework the data installer so it works from a single installation directory and is easier and safer to use. Installation layout - One installation directory (also the game's working directory): game data goes to <dir>/data, intermediates to <dir>/temp. Old ConfigDir/DataDir settings are migrated to InstallDir. - "Copy V-Gears data files" copies the repository data/ folder to the installation directory, and any missing Ogre plugin from the system. - Install the world map .MAP files the game reads from data/wm. Usability - Presets ("What to install"), option dependency rules, and a disk space estimate. Options are only editable with "Custom". - Preflight checks before extracting anything (ISO, directory, free space, plugins, world map needing fields). - Installation runs in a worker thread; unified colored log written to installer.log; per-step problem summaries. - Verify install and Launch game buttons, Close button, About and Help dialogs. Remove the unused V-Gears Config tab. - Install button is disabled after an installation starts, as the installer can only run once per window. Conversion - Unique material names per model and per-model cleanup of skeletons, fixing clashes between field, battle and world models that crashed or skipped models. Refresh the char resource location so field models are generated on a clean install. - Audio conversion runs in a task pool in the background. - Find FFmpeg and TiMidity (saved path, tools folders, PATH; Windows rules for PATHEXT), probe them, and run them without a shell. Warn before installing if they are missing and let the user locate them or continue without. Skipped audio keeps its originals and the sound/music indexes only list files that exist. - Accept PC game disks 1-3 and extract their videos to data/video. Remove the FFmpeg/TiMidity checkboxes. Data fixes - Fix the font definition path, and the resources.cfg that defined every material twice. Remove stale files from data/. Tests, docs and packaging - Add v-gears-installer-tests (layout, option rules, verifier, log, task pool, video paths, tool finder). - Update the installation, build and run guides. - Fix the desktop file and the Debian menu, control, changelog and install list so the game starts from the installation directory. - Stop tracking the generated ui_MainWindow.h.
  • 7c36af446e Merge tag 'vv0.2.0' into develop v0.2.0

11 часов назад

ivalentin создал новую ветку feature/data в ivalentin/V-Gears

11 часов назад

ivalentin запушил(а) feature/field_maps в ivalentin/V-Gears

  • 3b6d55ed8c Video playback, movie cameras, and audio fixes. Videos - The installer converts every FF7 movie with ffmpeg to a folder of JPEG frames, an ogg with the sound, and movie.xml. It runs after extracting the videos from a game disk and in the normal install. - It also copies the camera of each movie from moviecam.lgp (camera.cam). - New MoviePlayer and MovieState draw the frames at 15 fps behind the models and follow game speed. A movie with a camera takes the place of the background tiles; the models are drawn over it with the camera of each frame and hidden in frames without one. A movie without a camera covers the field. - The movie opcodes PMVIE, MOVIE and MVIEF generate movie_player:set(name, scale), play() and get_frame(). The movie names come from FF7.EXE. play() waits for the end of the movie in the script that calls it. - The sound plays in its own audio channel. Audio - Fix a crash and music stutter: a stopped player kept the id of a source that OpenAL could give to another player, so it freed its decoder twice and consumed the buffers of the other one.
  • dc8a7b4a96 Installer: presets, background install, video disks, audio tool finder Rework the data installer so it works from a single installation directory and is easier and safer to use. Installation layout - One installation directory (also the game's working directory): game data goes to <dir>/data, intermediates to <dir>/temp. Old ConfigDir/DataDir settings are migrated to InstallDir. - "Copy V-Gears data files" copies the repository data/ folder to the installation directory, and any missing Ogre plugin from the system. - Install the world map .MAP files the game reads from data/wm. Usability - Presets ("What to install"), option dependency rules, and a disk space estimate. Options are only editable with "Custom". - Preflight checks before extracting anything (ISO, directory, free space, plugins, world map needing fields). - Installation runs in a worker thread; unified colored log written to installer.log; per-step problem summaries. - Verify install and Launch game buttons, Close button, About and Help dialogs. Remove the unused V-Gears Config tab. - Install button is disabled after an installation starts, as the installer can only run once per window. Conversion - Unique material names per model and per-model cleanup of skeletons, fixing clashes between field, battle and world models that crashed or skipped models. Refresh the char resource location so field models are generated on a clean install. - Audio conversion runs in a task pool in the background. - Find FFmpeg and TiMidity (saved path, tools folders, PATH; Windows rules for PATHEXT), probe them, and run them without a shell. Warn before installing if they are missing and let the user locate them or continue without. Skipped audio keeps its originals and the sound/music indexes only list files that exist. - Accept PC game disks 1-3 and extract their videos to data/video. Remove the FFmpeg/TiMidity checkboxes. Data fixes - Fix the font definition path, and the resources.cfg that defined every material twice. Remove stale files from data/. Tests, docs and packaging - Add v-gears-installer-tests (layout, option rules, verifier, log, task pool, video paths, tool finder). - Update the installation, build and run guides. - Fix the desktop file and the Debian menu, control, changelog and install list so the game starts from the installation directory. - Stop tracking the generated ui_MainWindow.h.
  • 7c36af446e Merge tag 'vv0.2.0' into develop v0.2.0
  • b18a6c66e6 Merge branch 'release/v0.2.0'
  • 302de42e77 v0.2.0
  • Просмотр сравнение для этих 7 коммитов »

11 часов назад

ivalentin запушил(а) develop в ivalentin/V-Gears

  • 69c3de913f Merge branch 'feature/data' into develop
  • 56a76f64b0 Save and load settings, fix loading, and read controls through game events Settings in the savemap - The savemap saves the config menu settings by name (<Settings> in the XML) and the scripts decide which ones there are. New savemap_manager functions: set_setting, is_slot_setting_set, get_slot_setting and get_slot_window_colour. Remove the unused Settings struct and the stub numeric settings. - save_game and load_game use ConfigMenu:save_settings and load_settings. Loading applies the volumes, the movement and the window colours, keeps the current settings if the game was saved before they existed, and clamps damaged values. - Fix the XML loader of the window colours: the bottom-left corner was never loaded (typo) and the maximum value of 255 was rejected. - Savemap::Write creates the save folder if it is missing and logs an error if it can't write, instead of silently not saving. Loading games - Rewrite load_game as the inverse of save_game. Inventory, materia and key items are 1-based in the game and 0-based in the savemap, the character materia used wrong arguments and a binding that doesn't exist, limit levels were off by one, and the characters are now updated in place. - Fix recalculate_stats crashing with armor materia in a slot where the weapon has none (it looked in the weapon). Stats - Equipment and materia bonuses were never applied: they were walked with ipairs although the stats are keyed by name. Use pairs, and read the accessory bonuses from the accessory instead of the armor. - The installer wrote the stat ID instead of the bonus amount for weapons, armor and accessories. Controls - New InputManager::IsGameEventPressed, to poll the controls through the game events and honor the keys chosen in the controller settings. - is_key_on translates the pad masks to game events instead of fixed keys. Menu, Extra, Select, Start, L2 and R2 are now mapped as well. - The world map moves with the walk events and leaves a vehicle with CANCEL. - Only letters and the space bar reach the scripts as raw keys. The name menu uses Config.CONTROLS, and a letter that is also the OK key types instead of confirming. - While the name menu is not enabled (NameMenu.enabled), the characters get their default names and the game goes on.
  • 57f8cc72f1 Menu overhaul: shared menu library, new menus, settings, and fixes Menu framework - New menu_lib.lua with Cursor, ListCursor and a Menu state machine that replace the nested current_menu/current_submenu ladders. Shared helpers: grid_buttons, set_bar, set_limit_bar, exp_progress, cursor_memory. A menu that gives the control back runs the on_resume hook of the receiver, so the main menu refreshes after its submenus close. - Pause, begin, save and main menus use the framework. - Maximum HP and MP shown in menus now include equipment and materia. New menus - Status: three pages (stats and equipment, elemental, status effects). Character effects come from the new character_effects.lua. - Order: toggles the row of a character and moves its portrait. - Limit: Set and Check modes, per-level technique lists and a confirmation to change the level. The installer now reads the limit technique names and descriptions (attack IDs 128+) from the kernel. - Quit: confirmation window that closes the game. - PHS: swap characters between the party and the reserve. Locked characters can't move, the party must be complete, and the reserve keeps the places of the portraits. The field opcodes MMBUD, MMBLK and MMBUK are now decompiled to set_character_enable and set_party_lock. - Magic: magic (one row per materia), summons and enemy skills in a grid with descriptions, MP cost and uses. Cure and Life spells can be cast on a party member from the menu. New character_abilities.lua computes the abilities from the equipped materia. - Config: window color, sound, controller, cursor, ATB, battle speed and messages, movement, camera angle and magic order. - Window color: four corners with RGB sliders, applied to every window. The engine marks window backgrounds (window_background) and exposes ui_manager:set_window_colours and widget:set_colours. - Sound: music and effects volume (0-4), applied at once through audio_manager:set_music_volume and set_sound_volume. The music volume also controls the audio of the movies. - Controller: the player can assign a key to each action, including the directions. Changes are applied and saved in controls.cfg, which the game runs after config.cfg, when the window is closed and the keys are valid. New input_manager functions to set, get and capture keys, the console command set_game_event_keys, and the menu directions are now game events. - Cursor memory (menus and battle), ATB modes in battle, and walk or run by default (entity_manager:set_player_default_run) are working. Camera angle is stored only, as the battle camera doesn't move yet. Fixes - Item menu: wrong item selected and crash on the first item. - Equip menu: list off-by-one, and weapons lost after one swap. - Materia saving: character IDs were stored as materia IDs, and armor materia used the weapon data. - Savemap: fix the XML loader (materia indexed by materia ID, enemy skill read into AP), saving the stash and enemy skill elements, and the copy of the window colours. The maximum colour is now 255. - Fix the text colour of the options of the config menu, set_party and the party add and remove functions, and the field names of the character enable and lock. - Accessory elements now keep their mode, like armor. Cleanup - Remove the dead prototype and unused data and texts. Known gaps: the settings are not saved in the savemap yet, Added-Ability is always "Nothing.", and the controller can't remap the keys of other modules that read raw keys.
  • Просмотр сравнение для этих 3 коммитов »

11 часов назад

ivalentin запушил(а) develop в ivalentin/V-Gears

  • 3b6d55ed8c Video playback, movie cameras, and audio fixes. Videos - The installer converts every FF7 movie with ffmpeg to a folder of JPEG frames, an ogg with the sound, and movie.xml. It runs after extracting the videos from a game disk and in the normal install. - It also copies the camera of each movie from moviecam.lgp (camera.cam). - New MoviePlayer and MovieState draw the frames at 15 fps behind the models and follow game speed. A movie with a camera takes the place of the background tiles; the models are drawn over it with the camera of each frame and hidden in frames without one. A movie without a camera covers the field. - The movie opcodes PMVIE, MOVIE and MVIEF generate movie_player:set(name, scale), play() and get_frame(). The movie names come from FF7.EXE. play() waits for the end of the movie in the script that calls it. - The sound plays in its own audio channel. Audio - Fix a crash and music stutter: a stopped player kept the id of a source that OpenAL could give to another player, so it freed its decoder twice and consumed the buffers of the other one.
  • dc8a7b4a96 Installer: presets, background install, video disks, audio tool finder Rework the data installer so it works from a single installation directory and is easier and safer to use. Installation layout - One installation directory (also the game's working directory): game data goes to <dir>/data, intermediates to <dir>/temp. Old ConfigDir/DataDir settings are migrated to InstallDir. - "Copy V-Gears data files" copies the repository data/ folder to the installation directory, and any missing Ogre plugin from the system. - Install the world map .MAP files the game reads from data/wm. Usability - Presets ("What to install"), option dependency rules, and a disk space estimate. Options are only editable with "Custom". - Preflight checks before extracting anything (ISO, directory, free space, plugins, world map needing fields). - Installation runs in a worker thread; unified colored log written to installer.log; per-step problem summaries. - Verify install and Launch game buttons, Close button, About and Help dialogs. Remove the unused V-Gears Config tab. - Install button is disabled after an installation starts, as the installer can only run once per window. Conversion - Unique material names per model and per-model cleanup of skeletons, fixing clashes between field, battle and world models that crashed or skipped models. Refresh the char resource location so field models are generated on a clean install. - Audio conversion runs in a task pool in the background. - Find FFmpeg and TiMidity (saved path, tools folders, PATH; Windows rules for PATHEXT), probe them, and run them without a shell. Warn before installing if they are missing and let the user locate them or continue without. Skipped audio keeps its originals and the sound/music indexes only list files that exist. - Accept PC game disks 1-3 and extract their videos to data/video. Remove the FFmpeg/TiMidity checkboxes. Data fixes - Fix the font definition path, and the resources.cfg that defined every material twice. Remove stale files from data/. Tests, docs and packaging - Add v-gears-installer-tests (layout, option rules, verifier, log, task pool, video paths, tool finder). - Update the installation, build and run guides. - Fix the desktop file and the Debian menu, control, changelog and install list so the game starts from the installation directory. - Stop tracking the generated ui_MainWindow.h.
  • Просмотр сравнение для этих 2 коммитов »

1 день назад

ivalentin запушил(а) feature/battle_module в ivalentin/V-Gears

  • f8c17ebcf2 Battle module: playable battles, AI, random encounters, world map encounters Installer - Fix battle IDs (scene * 4 + setup), battle locations, scene model table and formation flags/layouts - Fix .da animation decoding and export attacks, enemy attacks, elements, statuses, items, drops, steal and AI scripts - Export field random encounter tables to map.xml and world map encounter tables (ENC_W.BIN) to world_encounters.xml - Decompile BMUSC (battle music) and BTLMD (battle mode) field opcodes Engine - Formation layout, escape, next battle, preemptive/back/pincer/side attacks and BTLMD battle modes - Battle camera fixes, field entity hiding and audio handling (battle music, victory fanfare, resume field music) - Random encounters in fields using the original game's logic (lower rate = more frequent, special battles first, no immediate repeats) - World map random encounters: region and terrain group lookup, pause and resume the world around battles - Player lock respected by the world map module - Fix Manager::SetPreviousModule Battle scripts and UI - Action system, animations, damage formulas, magic, summons, items, statuses, escape, rewards and game over screen - Enemy AI interpreter (battle_ai_vm.lua) and battle effects screen - White flash transition into battles with movement lock - BTLMD flags: no results, no victory music, no escape, timed battles, no game over Data - New battle_fx and game_over screens, debug materia and items
  • f65f233d37 Merge branch 'feature/field_maps' into develop
  • df6d14f685 Field installer and engine fixes: fades, camera, scripted moves, name clashes Installer / decompiler - Add the FADE, NFADE and FADEW opcodes (screen_fade), SHAKE, MOVA (move to entity), ASPED, background areas (BGON/BGOFF/BGCLR) and the remaining scroll opcodes. - Write IFKEY as entity_manager:is_key_on instead of the undefined Key(). - Give entities that share a name in the original data (e.g. a line and a model) unique names, so the model is no longer dropped. - Name the LADER animation from the model instead of a fixed "Climb". - Set walk and run animations for models that don't call them Walk/Run (second and third animation of the model). - Default animations for models without Idle, temporary variable bank reset per field, scale fixes for walkmesh and scripts. Engine - Add the ScreenFade renderer and ScreenFadeState rules (types 1-10 and NFADE 0/11/12), plus the fade/nfade console commands. - Scripted walks of non-player characters are not stopped by the walkmesh edge; lines can be triggered when a script zeroes the player's solid radius (minimum reach). - IsKeyOn reads FF7 button masks. - Scripted ladder/lift moves play on their own while the player is locked. - Instant background scrolls are applied at the end of the frame, so a following timed scroll starts from the current camera position. - Background tile areas and states, shake, scroll to entity, interaction target choice, zero-length animation fix. Tests - Decompiler cases for the new opcodes, ScreenFadeState, trigger reach and walkmesh edge rules.
  • b1af0c86f5 Field installer fixes: scale, scripts, backgrounds and animations Field scripts and data: - Walkmesh, spawn heights and LINE triggers use the field scale, like the rest of the script positions. - on_update runs once when the script returns, as in the original game. - Temporary variable bank 5 is reset at the start of every field. - Messages in windows the field never defines get a default window. - Models with no Idle animation play their first one by default. - BATTLE passes its real battle ID. Scripting and engine: - Implemented SCRLA, SCRLW, SCRLC, SCRCC, FMOVE, ANIME2, ANIM!1, CANIM1, CANM!1 and ANIMW. - Scripts that wait for a script that is already queued are resumed when it ends, instead of waiting forever. - Background2D can scroll to an entity, and scroll_sync no longer blocks when nothing is scrolling. - Background tiles in scripted areas are shown and hidden by BGON, BGOFF and BGCLR (the installer writes area and state; states are bit masks). - World map Cloud is sized from his unanimated bounds. Tests cover the new decompiler output and the field script header.
  • 1489daec88 Key bindings unified

3 дней назад

ivalentin создал новую ветку feature/battle_module в ivalentin/V-Gears

3 дней назад

ivalentin запушил(а) метку vv0.2.0 в ivalentin/V-Gears

3 дней назад

ivalentin запушил(а) develop в ivalentin/V-Gears

  • 7c36af446e Merge tag 'vv0.2.0' into develop v0.2.0
  • b18a6c66e6 Merge branch 'release/v0.2.0'
  • 302de42e77 v0.2.0
  • f8c17ebcf2 Battle module: playable battles, AI, random encounters, world map encounters Installer - Fix battle IDs (scene * 4 + setup), battle locations, scene model table and formation flags/layouts - Fix .da animation decoding and export attacks, enemy attacks, elements, statuses, items, drops, steal and AI scripts - Export field random encounter tables to map.xml and world map encounter tables (ENC_W.BIN) to world_encounters.xml - Decompile BMUSC (battle music) and BTLMD (battle mode) field opcodes Engine - Formation layout, escape, next battle, preemptive/back/pincer/side attacks and BTLMD battle modes - Battle camera fixes, field entity hiding and audio handling (battle music, victory fanfare, resume field music) - Random encounters in fields using the original game's logic (lower rate = more frequent, special battles first, no immediate repeats) - World map random encounters: region and terrain group lookup, pause and resume the world around battles - Player lock respected by the world map module - Fix Manager::SetPreviousModule Battle scripts and UI - Action system, animations, damage formulas, magic, summons, items, statuses, escape, rewards and game over screen - Enemy AI interpreter (battle_ai_vm.lua) and battle effects screen - White flash transition into battles with movement lock - BTLMD flags: no results, no victory music, no escape, timed battles, no game over Data - New battle_fx and game_over screens, debug materia and items
  • Просмотр сравнение для этих 4 коммитов »

3 дней назад

ivalentin запушил(а) метку v0.1.1 в ivalentin/V-Gears

3 дней назад

ivalentin запушил(а) master в ivalentin/V-Gears

  • b18a6c66e6 Merge branch 'release/v0.2.0'
  • 302de42e77 v0.2.0
  • f8c17ebcf2 Battle module: playable battles, AI, random encounters, world map encounters Installer - Fix battle IDs (scene * 4 + setup), battle locations, scene model table and formation flags/layouts - Fix .da animation decoding and export attacks, enemy attacks, elements, statuses, items, drops, steal and AI scripts - Export field random encounter tables to map.xml and world map encounter tables (ENC_W.BIN) to world_encounters.xml - Decompile BMUSC (battle music) and BTLMD (battle mode) field opcodes Engine - Formation layout, escape, next battle, preemptive/back/pincer/side attacks and BTLMD battle modes - Battle camera fixes, field entity hiding and audio handling (battle music, victory fanfare, resume field music) - Random encounters in fields using the original game's logic (lower rate = more frequent, special battles first, no immediate repeats) - World map random encounters: region and terrain group lookup, pause and resume the world around battles - Player lock respected by the world map module - Fix Manager::SetPreviousModule Battle scripts and UI - Action system, animations, damage formulas, magic, summons, items, statuses, escape, rewards and game over screen - Enemy AI interpreter (battle_ai_vm.lua) and battle effects screen - White flash transition into battles with movement lock - BTLMD flags: no results, no victory music, no escape, timed battles, no game over Data - New battle_fx and game_over screens, debug materia and items
  • f65f233d37 Merge branch 'feature/field_maps' into develop
  • df6d14f685 Field installer and engine fixes: fades, camera, scripted moves, name clashes Installer / decompiler - Add the FADE, NFADE and FADEW opcodes (screen_fade), SHAKE, MOVA (move to entity), ASPED, background areas (BGON/BGOFF/BGCLR) and the remaining scroll opcodes. - Write IFKEY as entity_manager:is_key_on instead of the undefined Key(). - Give entities that share a name in the original data (e.g. a line and a model) unique names, so the model is no longer dropped. - Name the LADER animation from the model instead of a fixed "Climb". - Set walk and run animations for models that don't call them Walk/Run (second and third animation of the model). - Default animations for models without Idle, temporary variable bank reset per field, scale fixes for walkmesh and scripts. Engine - Add the ScreenFade renderer and ScreenFadeState rules (types 1-10 and NFADE 0/11/12), plus the fade/nfade console commands. - Scripted walks of non-player characters are not stopped by the walkmesh edge; lines can be triggered when a script zeroes the player's solid radius (minimum reach). - IsKeyOn reads FF7 button masks. - Scripted ladder/lift moves play on their own while the player is locked. - Instant background scrolls are applied at the end of the frame, so a following timed scroll starts from the current camera position. - Background tile areas and states, shake, scroll to entity, interaction target choice, zero-length animation fix. Tests - Decompiler cases for the new opcodes, ScreenFadeState, trigger reach and walkmesh edge rules.
  • Просмотр сравнение для этих 21 коммитов »

3 дней назад

ivalentin запушил(а) develop в ivalentin/V-Gears

  • f65f233d37 Merge branch 'feature/field_maps' into develop
  • df6d14f685 Field installer and engine fixes: fades, camera, scripted moves, name clashes Installer / decompiler - Add the FADE, NFADE and FADEW opcodes (screen_fade), SHAKE, MOVA (move to entity), ASPED, background areas (BGON/BGOFF/BGCLR) and the remaining scroll opcodes. - Write IFKEY as entity_manager:is_key_on instead of the undefined Key(). - Give entities that share a name in the original data (e.g. a line and a model) unique names, so the model is no longer dropped. - Name the LADER animation from the model instead of a fixed "Climb". - Set walk and run animations for models that don't call them Walk/Run (second and third animation of the model). - Default animations for models without Idle, temporary variable bank reset per field, scale fixes for walkmesh and scripts. Engine - Add the ScreenFade renderer and ScreenFadeState rules (types 1-10 and NFADE 0/11/12), plus the fade/nfade console commands. - Scripted walks of non-player characters are not stopped by the walkmesh edge; lines can be triggered when a script zeroes the player's solid radius (minimum reach). - IsKeyOn reads FF7 button masks. - Scripted ladder/lift moves play on their own while the player is locked. - Instant background scrolls are applied at the end of the frame, so a following timed scroll starts from the current camera position. - Background tile areas and states, shake, scroll to entity, interaction target choice, zero-length animation fix. Tests - Decompiler cases for the new opcodes, ScreenFadeState, trigger reach and walkmesh edge rules.
  • b1af0c86f5 Field installer fixes: scale, scripts, backgrounds and animations Field scripts and data: - Walkmesh, spawn heights and LINE triggers use the field scale, like the rest of the script positions. - on_update runs once when the script returns, as in the original game. - Temporary variable bank 5 is reset at the start of every field. - Messages in windows the field never defines get a default window. - Models with no Idle animation play their first one by default. - BATTLE passes its real battle ID. Scripting and engine: - Implemented SCRLA, SCRLW, SCRLC, SCRCC, FMOVE, ANIME2, ANIM!1, CANIM1, CANM!1 and ANIMW. - Scripts that wait for a script that is already queued are resumed when it ends, instead of waiting forever. - Background2D can scroll to an entity, and scroll_sync no longer blocks when nothing is scrolling. - Background tiles in scripted areas are shown and hidden by BGON, BGOFF and BGCLR (the installer writes area and state; states are bit masks). - World map Cloud is sized from his unanimated bounds. Tests cover the new decompiler output and the field script header.
  • Просмотр сравнение для этих 3 коммитов »

4 дней назад

ivalentin запушил(а) feature/field_maps в ivalentin/V-Gears

  • df6d14f685 Field installer and engine fixes: fades, camera, scripted moves, name clashes Installer / decompiler - Add the FADE, NFADE and FADEW opcodes (screen_fade), SHAKE, MOVA (move to entity), ASPED, background areas (BGON/BGOFF/BGCLR) and the remaining scroll opcodes. - Write IFKEY as entity_manager:is_key_on instead of the undefined Key(). - Give entities that share a name in the original data (e.g. a line and a model) unique names, so the model is no longer dropped. - Name the LADER animation from the model instead of a fixed "Climb". - Set walk and run animations for models that don't call them Walk/Run (second and third animation of the model). - Default animations for models without Idle, temporary variable bank reset per field, scale fixes for walkmesh and scripts. Engine - Add the ScreenFade renderer and ScreenFadeState rules (types 1-10 and NFADE 0/11/12), plus the fade/nfade console commands. - Scripted walks of non-player characters are not stopped by the walkmesh edge; lines can be triggered when a script zeroes the player's solid radius (minimum reach). - IsKeyOn reads FF7 button masks. - Scripted ladder/lift moves play on their own while the player is locked. - Instant background scrolls are applied at the end of the frame, so a following timed scroll starts from the current camera position. - Background tile areas and states, shake, scroll to entity, interaction target choice, zero-length animation fix. Tests - Decompiler cases for the new opcodes, ScreenFadeState, trigger reach and walkmesh edge rules.
  • b1af0c86f5 Field installer fixes: scale, scripts, backgrounds and animations Field scripts and data: - Walkmesh, spawn heights and LINE triggers use the field scale, like the rest of the script positions. - on_update runs once when the script returns, as in the original game. - Temporary variable bank 5 is reset at the start of every field. - Messages in windows the field never defines get a default window. - Models with no Idle animation play their first one by default. - BATTLE passes its real battle ID. Scripting and engine: - Implemented SCRLA, SCRLW, SCRLC, SCRCC, FMOVE, ANIME2, ANIM!1, CANIM1, CANM!1 and ANIMW. - Scripts that wait for a script that is already queued are resumed when it ends, instead of waiting forever. - Background2D can scroll to an entity, and scroll_sync no longer blocks when nothing is scrolling. - Background tiles in scripted areas are shown and hidden by BGON, BGOFF and BGCLR (the installer writes area and state; states are bit masks). - World map Cloud is sized from his unanimated bounds. Tests cover the new decompiler output and the field script header.
  • 1489daec88 Key bindings unified
  • 3ed80e0885 Merge branch 'feature/world_installer' into develop
  • 6741b6cb36 The installer parses all worlds and generates world scripts.

4 дней назад

ivalentin создал новую ветку feature/field_maps в ivalentin/V-Gears

4 дней назад