Conversation
|
Developer build links: Sys11 (Tiny) WPC EM WhiteStar DataEast |
There was a problem hiding this comment.
Pull request overview
Expands the WPC game configuration catalog and introduces a lightweight ROM-alias mechanism (GameInfo.LinkTo) to reuse an existing config for another ROM version without duplicating the full JSON.
Changes:
- Add
GameInfo.LinkTosupport when loading game configs, plus build-time validation forLinkToreferences. - Add/refresh multiple WPC JSON config files (new switch maps, flippers, and format adjustments).
- Bump WPC
SystemVersionand commonVectorVersion.
Reviewed changes
Copilot reviewed 20 out of 20 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
src/wpc/systemConfig.py |
Bumps WPC firmware SystemVersion to 1.7.7. |
src/wpc/config/JunkYard_12.json |
Adds a full config definition for Junk Yard ROM 1.2. |
src/wpc/config/JunkYard_10.json |
Converts Junk Yard ROM 1.0 config into a LinkTo alias. |
src/wpc/config/JackBot_10R.json |
Removes OneBall format entry. |
src/wpc/config/Hurricane_L2.json |
Removes OneBall format entry. |
src/wpc/config/FunHouse_L9.json |
Removes OneBall format entry. |
src/wpc/config/FishTales_L4.json |
Removes OneBall format entry. |
src/wpc/config/FishTales_L5.json |
Reorganizes/updates config sections (modes/formats placement) and checksum range change. |
src/wpc/config/AttackMars_10.json |
Removes OneBall format entry. |
src/wpc/config/HarleyDavidson_L4.json |
Deletes the L4 config file. |
src/wpc/config/HarleyDavidson_L3.json |
Adds an updated Harley Davidson L3 config (incl. switches). |
src/wpc/config/Dracula_L1.json |
Adds switches section and expands config detail. |
src/wpc/config/DoctorWho_L2.json |
Adds switches section and expands config detail. |
src/wpc/config/DirtyHarry_L2.json |
Adds switches + flippers sections and updates player-up address. |
src/wpc/config/DemoMan_H6.json |
Adds switches section and updates checksum range. |
src/wpc/config/AddamsFam_L2.json |
Adds switches section and adjusts ball-in-play address. |
src/wpc/config/AddamsFam_H2.json |
Adds switches + flippers sections. |
src/common/SharedState.py |
Bumps common VectorVersion to 1.11.12. |
src/common/GameDefsLoad.py |
Implements runtime LinkTo resolution and adds temporary debug prints. |
dev/build.py |
Adds build-time validation for LinkTo references before combining JSON configs. |
|
@copilot update the script used in .github/workflows/validate-json-configs.yml so it correctly handles the LinkTo. In cases where we're linking to another config we just need to make sure that the linked config exists and is also valid. currently it's outputting: Run python dev/ci/validate_json_configs.py
|
Updated the validation script in |
|
@copilot change the code that generates the dev/generated/special_features.csv file to ignore configuration json files that are LinkTo files. The LinkTo json files are currently creating extra entries in the special_features.csv with empty or default entries. |
LinkTo config files are lightweight aliases that only contain GameInfo with GameName and LinkTo fields. They have no System, feature data, or other config sections, so including them produces UNKNOWN entries with empty/default values. Skip them during CSV generation. Agent-Logs-Url: https://github.com/warped-pinball/vector/sessions/6d045a1a-edb2-485b-9a83-13301c9c8eb6 Co-authored-by: paulmullin <18378908+paulmullin@users.noreply.github.com>
Fixed in |
|
@copilot make the special features github action trigger when the script is changed in addition to a config being changed. Also make the script add a new column that lists all ROM versions that we have a config for for each title. so the column should contain a list of ROM versions. you can get the ROM version from splitting the config file name by _ and taking the last segment |
Adds rom_version_from_path() and collect_rom_versions() to extract ROM versions from config filenames (e.g. BanzaiRun_L3.json -> L3) and collect them per game title including LinkTo aliases. The new rom_versions column is semicolon-delimited and sorted alphabetically. Agent-Logs-Url: https://github.com/warped-pinball/vector/sessions/df93f358-d4d5-4b9c-b7d7-13a6c200ab5d Co-authored-by: mullinmax <14000345+mullinmax@users.noreply.github.com>
Agent-Logs-Url: https://github.com/warped-pinball/vector/sessions/df93f358-d4d5-4b9c-b7d7-13a6c200ab5d Co-authored-by: mullinmax <14000345+mullinmax@users.noreply.github.com>
Done in |
|
@copilot add a manual trigger for the special features generation github action. |
I've added on:
workflow_dispatch:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
paths:
- "src/*/config/*.json"
- "dev/utilities/export_game_feature_csvs.py"And update both |
Description
Building out more WPC game configuration files.
Adding a method to link a game ROM version to another version, allows for game ROM alias essentially without duplicating the entire JSON.
Removing unused data form all WPC configs ("Memory", some ball in play data, "Definition")
Edited config validation functions for removed sections
Updated the CI JSON validation script (
dev/ci/validate_json_configs.py) to correctly handle LinkTo configs — these lightweight alias configs are now detected and validated separately (checking thatGameInfo.GameNameexists and the linked target config file exists in the same directory) instead of applying the full schema validation.Related Issues
Motivation and Context
Testing
Validating on WPC.
Added 10 new unit tests for LinkTo detection, validation, and end-to-end flows in
dev/tests/test_validate_json_configs.py. All 27 tests pass. CI JSON validation script runs clean against the repo.Screenshots (if applicable)
Types of Changes
Checklist
Additional Notes