Порт классической Zuma Deluxe под аппаратную связку ZX-Evo (Pentevo / TS-Config) + VDAC2 + FT812 в нативном разрешении 640×480 с апскейлом до 1024x768.
Параллельная VDC-ветка (нативное 360×288 на TS-Conf без VDAC2) живёт в https://github.com/andrewinsidelazarev/Zuma-Deluxe-TS-Config в качестве демо-версии.
Игра 100 % была написана с помощью AI-агентов Claude Code и OpenAI Codex.
Игра содержит независимые: 1D-дискретный основной движок (VDC - virtual discrette chain) и 2D-рендер, благодаря чему может быть портирована и на другие ретро-платформы.
| Компонент | Параметр |
|---|---|
| CPU | Z80 @ 14 МГц (TS-Conf), кэш через SYSCONG.bit2 |
| Графика | FT812 (Gameduino 2 / BridgeTek BT81x клон) |
| Разрешение | 1024x768, FT_INT_SWAP vsync 57.25 Гц |
| RAM_G | 1 МБ — bg #010000, atlas #0A6000, frog #04C000 |
| SPI | порты #77 (CTRL), #57 (DATA), #AF (VCONFIG) |
| Эмулятор | Unreal x64 (Renderer = Double size в Unreal.ini) |
.
├── main.asm -- точка сборки: TSLib block (page 0) + Core block (page 5)
├── MainLoop.asm -- основной цикл, ввод, render-state machine
├── VDC.asm -- Virtual Discrete Chain (физика шаров) + render
├── Frog.asm -- лягушка: aim, rotation, sprite composition, выстрел
├── Bullet.asm -- летящий шар: spawn по LMB/SPACE, движение, collision bbox
├── Init_Video.asm -- FT_BOOT_UP + 640×480 timings + INT_SWAP
├── spgbld_vdac2.ini -- описание .spg-страниц для spgbld
├── build.cmd -- sjasmplus → spgbld → запуск в Unreal
│
├── make_balls_atlas.py -- генерация balls_atlas (6 цв × 16 фаз × 32×32 ARGB4)
├── make_bg_level01.py -- 400×300 RGB565 fade с матрицей scale 1.6×
├── make_bg_tile.py -- bg-тайл 64×64 для не-level превью
├── make_misc_sprites.py -- frog/plate/tongue/overlay (122×122) + killzone + GAME OVER
├── make_cursor.py -- глобальная стрелка-курсор 38×38
├── make_track_640.py -- TrackData (X,Y по 640×480, stride 6 байт)
├── make_test_ball.py -- одиночный test ball 40×40
│
├── *.bin -- ассеты для spgbld (генерируются из .png make_*-скриптами)
├── *.spg -- сборка для эмулятора (Unreal)
│
├── visual_emulator.py -- Python tkinter тестер для frog/aim/rotation
├── full_vdc_simulation.py-- stochastic VDC test (50+ random runs)
├── vdc_visual_emulator.py-- VDC chain physics reference (port from c:/z80/zuma)
├── sim_*.py -- prototyping rotation/pivot/tongue до asm-порта
│
├── Docs/
│ ├── uchebnik_tsconf_vdac2.{md,html} -- учебник (накопительный конспект)
│ ├── FT81x.pdf -- FT81x datasheet
│ ├── The_Gameduino_2_Tutorial_*.pdf -- главный референс по API (Bowman 2013)
│ ├── VDAC2 #2 - Первые шаги.docx -- ZX-Evo VDAC2 SPI tutorial
│ ├── _*.txt -- текстовые дампы тех же PDF/DOCX
│ └── TSLib/ -- готовая asm-обвязка от автора VDAC2
│
├── releases/ -- baseline-снэпшоты по эпохам (см. releases/README.md)
├── _hd_refs/ -- Frog.c/.h / ResourceStore.c/.h из Zuma-Deluxe-HD
└── Чат.txt -- cross-project канал общения с VDC-веткой (append-only)
build.cmd
Делает три шага:
sjasmplus Source/ASM/main.asm→Build/TSLib.bin,Build/Core.bin,Build/main1_play.bin,Build/main.lst,Build/zuma.symspgbld -b spgbld_vdac2.ini Build/zuma_vdac2.spg— упаковывает code blocks и graphics assets в.spg- запуск
Build/zuma_vdac2.spgв Unreal x64
Пути к sjasmplus.exe / spgbld.exe / Unreal.exe зашиты в build.cmd —
поправьте под себя.
Ассеты-.bin хранятся в репо (генерируются из spritesheet'ов соседнего проекта
Zuma Deluxe — ~/Desktop/Zuma Deluxe/graphics/...). Регенерировать локально:
python make_balls_atlas.py
python make_bg_level01.py
python make_misc_sprites.py
python make_cursor.py
python make_track_640.py
Главный накопительный конспект — Docs/uchebnik_tsconf_vdac2.md.
Туда складываются:
- открытия по FT812 (matrix pattern, cmd_scale inverse, paletted не работает в Unreal, bg-padding overlap atlas, …),
- решения нетривиальных багов (overlay Cell persistent state, FM_EN ломает keyboard port reads, BITMAP_TRANSFORM работает на UV не screen, …),
- архитектурные приёмы (chain-TSU поверх canvas, parallel build/render с FT INT sync, late vblank TSU writes, …).
При создании версии был частично произведен реверс-инжиниринг Zuma Deluxe HD: https://github.com/GalaxyShad/Zuma-Deluxe-HD