Завершить разделение SDK и внешних проектов
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user