mirror of
https://github.com/open-goal/jak-project
synced 2026-06-15 14:31:58 -04:00
6d99f1bfc1
Reasons for doing so include: 1. This should stop the confusion around editing the wrong config file's flags -- when for example, extracting a level. Common settings can be in one central place, with bespoke overrides being provided for each version 2. Less verbose way of supporting multiple game versions. You don't have to duplicate the entire `type_casts` file for example, just add or override the json objects required. 3. Makes the folder structure consistent, Jak 1's `all-types` is now in a `jak1` folder, etc.
153 lines
7.3 KiB
YAML
153 lines
7.3 KiB
YAML
version: 3
|
|
|
|
includes:
|
|
build: ./scripts/tasks/Taskfile_{{OS}}.yml
|
|
|
|
dotenv:
|
|
- ./scripts/tasks/.env
|
|
- ./scripts/tasks/.env.default
|
|
|
|
tasks:
|
|
# SETTINGS / CONFIGURATION
|
|
settings:
|
|
- 'python ./scripts/tasks/update-env.py --info'
|
|
set-game-jak1:
|
|
- 'python ./scripts/tasks/update-env.py --game jak1'
|
|
set-game-jak2:
|
|
- 'python ./scripts/tasks/update-env.py --game jak2'
|
|
set-decomp-ntscv1:
|
|
desc: "aka black label"
|
|
cmds:
|
|
- 'python ./scripts/tasks/update-env.py --decomp_config ntscv1'
|
|
set-decomp-ntscv2:
|
|
desc: "aka red label"
|
|
cmds:
|
|
- 'python ./scripts/tasks/update-env.py --decomp_config ntscv2'
|
|
set-decomp-pal:
|
|
desc: "PAL region version"
|
|
cmds:
|
|
- 'python ./scripts/tasks/update-env.py --decomp_config pal'
|
|
set-decomp-ntscjp:
|
|
desc: "NTSC-J region version"
|
|
cmds:
|
|
- 'python ./scripts/tasks/update-env.py --decomp_config ntscjp'
|
|
# GENERAL
|
|
extract:
|
|
desc: "Extracts the game's assets from './iso_data' with the set decompiler config"
|
|
preconditions:
|
|
- sh: test -f {{.DECOMP_BIN_RELEASE_DIR}}/decompiler{{.EXE_FILE_EXTENSION}}
|
|
msg: "Couldn't locate decompiler executable in '{{.DECOMP_BIN_RELEASE_DIR}}/decompiler'"
|
|
cmds:
|
|
- "{{.DECOMP_BIN_RELEASE_DIR}}/decompiler \"./decompiler/config/{{.DECOMP_CONFIG}}\" \"./iso_data\" \"./decompiler_out\" --version \"{{.DECOMP_CONFIG_VERSION}}\" --config-override '{\"decompile_code\": false, \"levels_extract\": true, \"allowed_objects\": []}'"
|
|
boot-game:
|
|
desc: "Boots the game, it will fail if it's not already compiled!"
|
|
preconditions:
|
|
- sh: test -f {{.GK_BIN_RELEASE_DIR}}/gk{{.EXE_FILE_EXTENSION}}
|
|
msg: "Couldn't locate runtime executable in '{{.GK_BIN_RELEASE_DIR}}/gk'"
|
|
cmds:
|
|
- "{{.GK_BIN_RELEASE_DIR}}/gk -boot -fakeiso -debug -v"
|
|
boot-game-retail:
|
|
desc: "Boots the game without debug mode, it will fail if it's not already compiled!"
|
|
preconditions:
|
|
- sh: test -f {{.GK_BIN_RELEASE_DIR}}/gk{{.EXE_FILE_EXTENSION}}
|
|
msg: "Couldn't locate runtime executable in '{{.GK_BIN_RELEASE_DIR}}/gk'"
|
|
cmds:
|
|
- "{{.GK_BIN_RELEASE_DIR}}/gk -boot -fakeiso -v"
|
|
run-game:
|
|
desc: "Start the game's runtime, to start the game itself the REPL is required"
|
|
preconditions:
|
|
- sh: test -f {{.GK_BIN_RELEASE_DIR}}/gk{{.EXE_FILE_EXTENSION}}
|
|
msg: "Couldn't locate runtime executable in '{{.GK_BIN_RELEASE_DIR}}/gk'"
|
|
cmds:
|
|
- "{{.GK_BIN_RELEASE_DIR}}/gk -fakeiso -debug -{{.GAME}} -v"
|
|
# DEVELOPMENT
|
|
repl:
|
|
desc: "Start the REPL"
|
|
preconditions:
|
|
- sh: test -f {{.GOALC_BIN_RELEASE_DIR}}/goalc{{.EXE_FILE_EXTENSION}}
|
|
msg: "Couldn't locate compiler executable in '{{.GOALC_BIN_RELEASE_DIR}}/goalc'"
|
|
cmds:
|
|
- "{{.GOALC_BIN_RELEASE_DIR}}/goalc --user-auto --game {{.GAME}}"
|
|
format:
|
|
desc: "Format code"
|
|
cmds:
|
|
- cmd: python ./third-party/run-clang-format/run-clang-format.py -r common decompiler game goalc test tools lsp -i
|
|
# npm install -g prettier
|
|
- cmd: npx prettier --write ./decompiler/config/jak1/**/*.jsonc
|
|
ignore_error: true
|
|
- cmd: npx prettier --write ./decompiler/config/jak2/**/*.jsonc
|
|
ignore_error: true
|
|
run-game-headless:
|
|
cmds:
|
|
- "{{.GK_BIN_RELEASE_DIR}}/gk -fakeiso -debug -nodisplay"
|
|
# DECOMPILING
|
|
decomp:
|
|
cmds:
|
|
- "{{.DECOMP_BIN_RELEASE_DIR}}/decompiler \"./decompiler/config/{{.DECOMP_CONFIG}}\" \"./iso_data\" \"./decompiler_out\" --version \"{{.DECOMP_CONFIG_VERSION}}\" --config-override '{\"decompile_code\": true, \"levels_extract\": false}'"
|
|
decomp-file:
|
|
cmds:
|
|
- "{{.DECOMP_BIN_RELEASE_DIR}}/decompiler \"./decompiler/config/{{.DECOMP_CONFIG}}\" \"./iso_data\" \"./decompiler_out\" --version \"{{.DECOMP_CONFIG_VERSION}}\" --config-override '{\"decompile_code\": true, \"levels_extract\": false, \"allowed_objects\": [\"{{.FILE}}\"]}'"
|
|
decomp-clean:
|
|
cmds:
|
|
- python ./scripts/tasks/clean-decomp.py --game "{{.GAME}}"
|
|
lint-gsrc-file:
|
|
cmds:
|
|
- python ./scripts/gsrc/lint-gsrc-file.py --game {{.GAME}} --file {{.FILE}}
|
|
update-gsrc:
|
|
cmds:
|
|
- python ./scripts/gsrc/update-gsrc-via-refs.py --game "{{.GAME}}" --decompiler "{{.DECOMP_BIN_RELEASE_DIR}}/decompiler" --decompiler_config {{.DECOMP_CONFIG}} --version {{.DECOMP_CONFIG_VERSION}}
|
|
update-gsrc-glob:
|
|
cmds:
|
|
- python ./scripts/gsrc/update-gsrc-via-refs.py --game "{{.GAME}}" --file_pattern "{{.GLOB}}" --decompiler "{{.DECOMP_BIN_RELEASE_DIR}}/decompiler" --decompiler_config {{.DECOMP_CONFIG}} --version {{.DECOMP_CONFIG_VERSION}}
|
|
update-gsrc-file:
|
|
cmds:
|
|
- task: decomp-file
|
|
- python ./scripts/gsrc/update-from-decomp.py --game "{{.GAME}}" --file {{.FILE}}
|
|
- task: lint-gsrc-file
|
|
# TOOLS
|
|
analyze-ee-memory:
|
|
cmds:
|
|
- python ./scripts/tasks/extract-zip.py --file "{{.FILE}}" --out ./savestate_out/
|
|
- '{{.MEMDUMP_BIN_RELEASE_DIR}}/memory_dump_tool ./savestate_out/eeMemory.bin --output-path ./ --game {{.GAME}} > ee-analysis.log'
|
|
watch-pcsx2:
|
|
# python -m pip install -U "watchdog[watchmedo]"
|
|
cmds:
|
|
- watchmedo shell-command --drop --patterns="*.p2s" --recursive --command='task analyze-ee-memory FILE="${watch_src_path}"' "{{.SAVESTATE_DIR}}"
|
|
vars:
|
|
SAVESTATE_DIR: '{{default "." .SAVESTATE_DIR}}'
|
|
type-search:
|
|
desc: Just an example to show it running
|
|
cmds:
|
|
- "{{.TYPESEARCH_BIN_RELEASE_DIR}}/type_searcher --output-path ./search-results.json --game {{.GAME}} --fields '[{\"type\":\"int16\",\"offset\":2},{\"type\":\"int16\",\"offset\":4}]'"
|
|
# TESTS
|
|
offline-tests: # ran by jenkins
|
|
cmds:
|
|
- '{{.OFFLINETEST_BIN_RELEASE_DIR}}/offline-test --iso_data_path "./iso_data/{{.GAME}}" --game {{.GAME}} --fail-on-cmp'
|
|
offline-test-file:
|
|
cmds:
|
|
- '{{.OFFLINETEST_BIN_RELEASE_DIR}}/offline-test --iso_data_path "./iso_data/{{.GAME}}" --game {{.GAME}} --file {{.FILE}}'
|
|
offline-tests-fast:
|
|
cmds:
|
|
- '{{.OFFLINETEST_BIN_RELEASE_DIR}}/offline-test --iso_data_path "./iso_data/{{.GAME}}" --game {{.GAME}} --pretty-print --num_threads 32 --dump_current_output --fail-on-cmp'
|
|
# TODO - amalgamate offline-tests and this task, run twice if the previous step fails
|
|
update-ref-tests:
|
|
cmds:
|
|
- cmd: python ./scripts/tasks/delete-file-or-folder.py --path failures
|
|
- cmd: '{{.OFFLINETEST_BIN_RELEASE_DIR}}/offline-test --iso_data_path "./iso_data/{{.GAME}}" --game {{.GAME}} --pretty-print --num_threads 32 --dump_current_output --fail-on-cmp'
|
|
ignore_error: true
|
|
- python ./scripts/update_decomp_reference.py ./failures ./test/decompiler/reference/ --game {{.GAME}}
|
|
- task: offline-tests-fast
|
|
update-ref-file:
|
|
cmds:
|
|
- cmd: python ./scripts/tasks/delete-file-or-folder.py --path failures
|
|
- cmd: '{{.OFFLINETEST_BIN_RELEASE_DIR}}/offline-test --iso_data_path "./iso_data/{{.GAME}}" --file {{.FILE}} --game {{.GAME}} --dump_current_output --fail-on-cmp'
|
|
ignore_error: true
|
|
- python ./scripts/update_decomp_reference.py ./failures ./test/decompiler/reference/ --game {{.GAME}}
|
|
- task: offline-test-file
|
|
type-test-jak1:
|
|
cmds:
|
|
- cmd: '{{.GOALCTEST_BIN_RELEASE_DIR}}/goalc-test --gtest_brief=0 --gtest_filter="*Jak1TypeConsistency*" --gtest_break_on_failure'
|
|
type-test:
|
|
cmds:
|
|
- cmd: '{{.GOALCTEST_BIN_RELEASE_DIR}}/goalc-test --gtest_brief=0 --gtest_filter="*Jak2TypeConsistency*" --gtest_break_on_failure'
|