Skip to content
Владислав edited this page Sep 5, 2026 · 2 revisions

JumpyBall - порт на C89 + SDL2

Вики к репозиторию jumpyball-decomp: порт игры JumpyBall для Windows Mobile / Pocket PC (экран 240x320) на ANSI C (C89) и SDL2.

Логика восстановлена реверс-инжинирингом оригинальных JumpyBall.exe (imagebase 0x00010000) и hss.dll. Код порта написан с нуля: из оригинальной поставки в репозиторий входят только ассеты - BITMAP, Sounds, Musics.

README.md в репозитории - это инструкция: как собрать, как играть, как поменять уровни. Вики про другое: как порт устроен внутри и откуда взята каждая цифра.

Страницы

Страница О чём
Architecture Карта модулей jb_*, кадровый цикл, порядок отрисовки
Graphics Поверхности, спрайты, десять блиттеров, RGB565, blend и тинт
Track-and-camera Псевдо-3D: построчная проекция, 17 строк, таблицы, пять тем
Physics Мяч: ускорения, прыжок, гравитация, спин, респавн
Levels Формат уровня: три битмапа, сетка 16x1024, чекпоинты
Audio-and-TKM Плеер .tkm (ProTracker), WAV-эффекты, шкалы громкости
Menu-and-controls Экраны меню, шесть клавиш, keys.cfg, сенсор
Build-and-CI Четыре способа сборки и что проверяет CI
Reverse-engineering Как это восстанавливалось: Ghidra, адреса, проверки
Deviations Где порт сознательно отличается от оригинала

Коротко о числах

Что Значение Откуда
Кадр 240x320, 16 bpp RGB565 g_viewW 0x00026260, g_viewH 0x00026264
Размер выгруженного кадра 153600 байт (2403202) --
Сетка уровня 16 столбцов x 1024 строки g_mapCols 0x0002628c, g_mapRows 0x00026274
Видимых строк трассы 17 kVisibleRows 0x00026358
Финиш уровня строка камеры > 0x3fe WndProc 0x00020920
Уровней 3 Level_LoadTileMap 0x0001261c
Тем оформления 5 (две недостижимы) Level_Begin 0x0001376c
Кадров мяча 9 по 70 px, рисуется 69 Track_DrawFrame 0x0001ef10
Такт трекера 7159090 Гц hssSpeaker::createTables 0x00103664

Лицензия и происхождение

Порт - собственная реализация; сведения о поведении получены из дизассемблированного оригинала, а не из чужих исходников. В коде каждый неочевидный блок помечен комментарием с адресом функции оригинала, из которой он взят - см. Reverse-engineering.

Clone this wiki locally