- Автор
- skoolkid
Что такое SkoolKit?
SkoolKit — это набор утилит (suite of tools) для создания дизассемблированных листингов игр и программ для ZX Spectrum (или любого другого ПО в машинных кодах). Процесс работы строится вокруг создания специального промежуточного файла формата skool. Этот файл является единым источником, из которого SkoolKit затем может сгенерировать:- HTML-версию: Удобный для чтения в браузере гипертекстовый документ с навигацией по коду.
- ASM-версию: Файл для ассемблера, готовый к повторной компиляции (re-assemblable).
Системные требования
Согласно репозиторию, SkoolKit требует Python 3.10 или выше.Состав пакета и как с ним работать (Утилиты)
Проект состоит из множества отдельных скриптов Python, каждый из которых выполняет свою задачу в цепочке создания дизассемблинга. Вот полный перечень и функционал, указанный в README:1. Инструменты первичного анализа и создания сырого дампа:
- sna2ctl.py: Генерирует контрольный файл (control file) из снапшота (SNA, SZX, Z80) или raw-файла памяти. Пытается отличить код от данных методом статического анализа.
- trace.py: Трассирует выполнение машинного кода в снапшоте или raw-файле. Позволяет получить карту исполнения кода для sna2ctl.py.
- rzxplay.py: Проигрывает RZX файл (запись действий пользователя) и трассирует выполнение кода для создания точной карты исполнения (code execution map) для sna2ctl.py.
- sna2skool.py: Используя контрольный файл, создает первичный дизассемблинг (skool файл) из снапшота.
2. Инструменты конвертации и анализа медиа-данных:
- tap2sna.py: Конвертирует файлы лент (PZX, TAP, TZX) в "чистый" снапшот Z80 или SZX.
- tapinfo.py: Анализирует блоки в файлах PZX, TAP или TZX и выводит листинг содержащегося в них BASIC.
- snapinfo.py: Анализирует снапшот или raw-файл. Умеет показывать BASIC программу, значения регистров, строить граф вызовов, искать спрайты (tile graphic data), текст или произвольные последовательности байтов.
- rzxinfo.py: Анализирует блоки в RZX файле и может извлечь из него снапшоты.
- sna2img.py: Конвертирует графические данные из дизассемблинга, SCR-файла, снапшота или raw-файла в изображение PNG.
- skool2html.py: Конвертирует skool-файл в набор HTML страниц. Операнды инструкций CALL и JP автоматически становятся гиперссылками.
- skool2asm.py: Конвертирует skool-файл в исходный код ассемблера (с сохранением комментариев-аннотаций).
- skool2ctl.py: Конвертирует skool-файл обратно в контрольный файл (например, если вы правили код вручную и хотите обновить структуру).
- skool2bin.py: Конвертирует skool-файл обратно в бинарный файл памяти.
- bin2tap.py: Конвертирует снапшот или raw-файл в ленту (PZX или TAP).
- bin2sna.py: Конвертирует raw-файл памяти в снапшот Z80 или SZX.
- snapmod.py: Позволяет изменять значения регистров или содержимое памяти в снапшотах Z80 или SZX.
Расширенные возможности HTML-дизассемблинга
В созданных skool2html.py HTML-файлах доступны специальные макросы, которые превращают обычный текст в интерактивный контент:- Макросы изображений: Создание статичных и анимированных PNG прямо из графических данных кода.
- Макрос #AUDIO: Генерация WAV файлов для звуковых эффектов и музыки.
- Макрос #R: Создание гиперссылок между процедурами и блоками данных, которые ссылаются друг на друга в аннотациях.
- Секции [Bug:*], [Fact:*], [Poke:*]: Автоматическое формирование страниц с багами, интересными фактами и POKE-кодами.