Завершить разделение SDK и внешних проектов

This commit is contained in:
Александр Петров
2026-09-16 10:01:43 +03:00
parent 0e74aaa7ee
commit 2e7ffd64a4
1965 changed files with 373 additions and 201393 deletions
+43 -13
View File
@@ -15,8 +15,8 @@
## Какие расширения нужны
Для build/run/debug используется собственное расширение этого проекта —
`toolchain/vscode-sprinter-debug`. Только оно знает формат source-debug
Для build/run/debug используется отдельный проект `VSCode-Sprinter`. Только
его расширение знает формат source-debug
пакета, загрузку приложения через DSS, банки Sprinter и DAP-сессию MAME.
Microsoft C/C++ или clangd можно поставить дополнительно ради completion,
@@ -41,7 +41,7 @@ pyenv exec make -C tests/hello SRC_DEBUG=1
Из корня репозитория откройте VS Code с распакованным расширением:
```sh
code --extensionDevelopmentPath="$PWD/toolchain/vscode-sprinter-debug" "$PWD"
code --extensionDevelopmentPath="/путь/к/VSCode-Sprinter" "$PWD"
```
Если команда `code` не добавлена в `PATH`, на macOS этого проекта доступен
@@ -50,10 +50,16 @@ code --extensionDevelopmentPath="$PWD/toolchain/vscode-sprinter-debug" "$PWD"
```sh
"/Applications/Visual Studio Code.app/Contents/Resources/app/bin/code" \
--new-window \
--extensionDevelopmentPath="$PWD/toolchain/vscode-sprinter-debug" \
--extensionDevelopmentPath="/путь/к/VSCode-Sprinter" \
"$PWD"
```
В локальных настройках workspace задайте `sprinterDebugger.sdkRoot` и
`sprinterDebugger.mameHome`. Первый указывает на установленный C-Compiler,
второй — на среду `MAME/runtime` с бинарником, ROM и DSS/CHD. Для выбора
stock/sdbg или нестандартной установки используются поля `mameBin`,
`mameRompath`, `mameDssImage`, `mameSystemHddImage`, `mameBios` профиля launch.
Расширение в режиме `auto` использует `~/.pyenv/shims/python` при наличии
local `.python-version`; для внешнего workspace ищет установленный
`~/.pyenv/versions/3.12*/bin/python`, затем `.venv/bin/python` и известные
@@ -98,8 +104,29 @@ service-точка `main` и вводится `a:\\HELLO.EXE`. После сов
наличие prompt всё равно обязательно. Перед вводом сохраняется диагностический
снимок DSS.
Дополнительные файлы на floppy задаются массивом `data`, путь к другому MAME —
полем `mame`.
Для перенесённого SprPoP его workspace содержит локальный профиль F5:
```json
{
"type": "sprinter-mame",
"request": "launch",
"name": "Sprinter: SprPoP (VS Code)",
"build": "${workspaceFolder}/build/.sprinter-cc-sprpop",
"buildTarget": "hdd",
"appHdd": "${workspaceFolder}/build/hdd/sprpop.chd",
"launchPath": "d:\\games\\sprpop\\sprpop.exe"
}
```
Расширение перед F5 запускает `make SRC_DEBUG=1 hdd` в каталоге игры,
затем загружает EXE с её локального диска. Для такого профиля нужен
`SPRINTER_ROOT` только на этапе сборки и `MAME_HOME` при запуске.
Дополнительные файлы на floppy задаются массивом `data`; для приложения с
собственным CHD задайте `appHdd`, `launchPath` и `buildTarget: "hdd"`.
Launcher монтирует временную копию CHD как `-hard2`, а DSS вводит путь EXE
из `launchPath`. Сам debug EXE остаётся также на временной A: для проверки
сигнатуры; несовпадение кода на диске с пакетом отладки останавливает launch.
## Ручная проверка VS Code
@@ -117,7 +144,7 @@ service-точка `main` и вводится `a:\\HELLO.EXE`. После сов
launcher дождётся prompt DSS, введёт
`A:\\HELLO.EXE` и VS Code остановится в `main`.
4. Проверьте Call Stack, scope Registers и Debug Console. После Continue
должна сработать подтверждённая точка строки 31 по адресу `0x824b`.
должна сработать подтверждённая точка строки 31.
5. На остановке проверьте F11 и F10. Курсор должен переходить только после
фактической остановки CPU, а не сразу после отправки команды. На строке 62
(`getchar`) нажмите F10, щёлкните окно Sprinter MAME и нажмите латинскую `x`:
@@ -205,16 +232,19 @@ reset в native console обходят модель состояния VS Code;
локального RPC и launcher; выбор `windows` решает только сторону MAME и не
обеспечивает работу VS Code-интеграции.
Backend `sdbg` входит как воспроизводимый patch к MAME 0.287. Для локального
checkout достаточно:
Backend `sdbg` входит как воспроизводимый patch к MAME 0.287. Исходники и
рецепты теперь принадлежат самостоятельному проекту MAME:
```sh
make mame-sdbg
cd /путь/к/MAME
scripts/sprinter/build-variants.sh stock
scripts/sprinter/build-variants.sh sdbg
```
Команда идемпотентно применяет
`toolchain/mame-patches/0001-sdbg-debugger-backend.patch`, инкрементально
собирает MAME и устанавливает `mame/v306/mame.arm`.
В fork patch уже зафиксирован в Git; для чистого baseline сохранён
`scripts/sprinter/apply-sdbg-patch.sh`. Каждый вариант копируется в
`MAME_HOME/bin/stock/mame.arm` или `MAME_HOME/bin/sdbg/mame.arm` без подмены
активного `MAME_HOME/mame.arm`.
## Logpoints