An open API service indexing awesome lists of open source software.

https://github.com/amdray/bounce_zero

Reverse-engineered PSP port of Nokia’s 2002 Java ME game "Bounce", uses only original data files.
https://github.com/amdray/bounce_zero

bounce c classic-games gaming homebrew java port porting porting-game psp psp-homebrew retro vibe-coding

Last synced: 4 months ago
JSON representation

Reverse-engineered PSP port of Nokia’s 2002 Java ME game "Bounce", uses only original data files.

Awesome Lists containing this project

README

          

[English version](README_en.md)

# Bounce Zero

Порт оригинальной игры **Bounce (2002, Java/Sun для Nokia 7210)** на платформу **PlayStation Portable (PSP)**.
Игровая логика полностью переписана на **C**, при этом используются только оригинальные игровые ассеты из версии для телефонов Nokia.
Проект создан в исследовательских целях, без модификации контента.

## Скриншоты
Первый экран
![BOUN01179_00000](docs/screenshots/BOUN01179_00000.jpg)
Главное меню/меню паузы
![BOUN01179_00001](docs/screenshots/BOUN01179_00001.jpg)
Первый уровень с HUD
![BOUN01179_00002](docs/screenshots/BOUN01179_00002.jpg)
Выбор уровней
![BOUN01179_00003](docs/screenshots/BOUN01179_00003.jpg)
Третий уровень
![BOUN01179_00004](docs/screenshots/BOUN01179_00004.jpg)

## Особенности
- Полная переимплементация игрового цикла и физики
- Чтение и использование оригинальных игровых данных из JAR-версии Bounce 2002:
- файлы уровней 001-011 - написан парсер уровней
- текстуры png - использует нативный загрузчик psp sdk
- файлы звуков ott - написан парсер ott формата на лету генерирующий звук в PCM
- lang файлы - написан парсер формата локализации, в зависимости от языка консоли переключает язык в игре
- шрифты из телефона Nokia 7210 (9, 12, 23 размера) были сдамплены через PPmod, сконвертированы bitmap формат и вшиты в игру
- возможность выбрать уроовень
- система сейвов (в dat файл, пока что не использует систему сохранений Sony PSP)
- Совместимость с реальным устройством PSP и эмулятором PPSSPP

## Недостатки, недоработки
- таймер физики в оригинале 33 кадра, в этом порте - 30 кадров
- шрифт состоит из пикселей, не из текстур, нагрузка на консоль чуть сильнее чем могло быть
- мимнимальные расхождения физики, не влияющие на геймплей, будт поправлены в новой версии

## Сборка
Необходим установленный [PSP SDK (pspdev)](https://github.com/pspdev/pspdev).

```bash
sudo apt-get update
sudo apt-get install build-essential cmake pkgconf libreadline8 libusb-0.1 libgpgme11 libarchive-tools fakeroot wget
wget https://github.com/pspdev/pspdev/releases/latest/download/pspdev-ubuntu-latest-x86_64.tar.gz
tar -xvf pspdev-ubuntu-latest-x86_64.tar.gz -C $HOME
export PSPDEV="$HOME/pspdev"
export PATH="$PATH:$PSPDEV/bin"
make
```

Собранный файл `EBOOT.PBP` появится в каталоге `release/`.

## Инструменты
В папке `tools/` лежат утилиты для генерации шрифтов и атласов из исходных текстовых данных.
Это вспомогательные скрипты, которые не требуются для сборки, но нужны для воспроизводимости пайплайна.
Документация к этим инструментам находится в `docs/font_txt_format.md`.
Также в `tools/` есть `grid_watcher_1.py` для просмотра/проверки тайловой сетки.

## Запуск
Скопируйте содержимое папки `release/` на карту памяти PSP:

```
/PSP/GAME/BounceZero/
```

или откройте `EBOOT.PBP` через эмулятор PPSSPP.

## Совместимость
- PlayStation Portable 6.00 и выше
- Эмулятор PPSSPP

## Лицензия
Исходный код распространяется под лицензией **MIT**.
Все оригинальные материалы (*Bounce, 2002*) принадлежат **Nokia** и/или **Sun Microsystems** и используются исключительно в исследовательских целях.

## Об эксперименте

Весь исходный код написан с использованием модели **Claude AI** в рамках эксперимента по **vibe-coding** — записание полноценного проекта на основе описаний поведения и логики, без ручного программирования.