1
Разработка игр / [NES] T-Rex Runner — порт динозаврика из Chrome
« : Вчера в 18:59:35 »
Я сделал еще одну игру а точнее порт знаменитой игры с динозавриком из Google Chrome для Dendy, Famicom и NES. Проект написан с нуля на ассемблере 6502 и собирается в обычный ROM-файл формата .nes.

Я постарался сохранить оригинальную механику игры:
Как это сделано
Внутри игровая логика работает в координатах оригинальной браузерной версии. Дробные значения, скорость и физика реализованы через fixed-point арифметику 8.8, поскольку у процессора 6502 нет чисел с плавающей точкой.
Кактусы выводятся не спрайтами, а тайлами фона и постепенно записываются в nametable во время прокрутки. Это помогает экономить спрайты и избегать мерцания.
Для независимой прокрутки игрового поля и неподвижной строки очков используется sprite-zero hit.
ROM имеет простой формат NROM-256, mapper 0:
Он подходит для эмуляторов и флеш-карт для NES, Famicom и Dendy. Игра рассчитана прежде всего на NTSC 60 Гц. На 50-герцовых клонах Dendy игровой процесс и темп музыки могут быть немного медленнее.
Сборка
Для сборки нужны только
Графика
Лицензия
Проект бесплатный и с открытым исходным кодом. Код NES-порта распространяется по лицензии MIT. Элементы, основанные на Chromium, сохраняют условия BSD-лицензии.
Ссылки
Готовый ROM и последняя версия:
Скачать T-Rex Runner для NES
Исходный код и инструкция по сборке:
GitHub — atonamy/nes-t-rex-game
Для разработки и отладки использовался Mesen и инструмент:
atonamy/mesen-agent
Буду рад отзывам, результатам запуска на реальном железе и сообщениям о найденных ошибках.

Я постарался сохранить оригинальную механику игры:
- физику прыжка и управление его высотой;
- постепенное увеличение скорости;
- кактусы разных размеров и их комбинации;
- птеродактилей на разных высотах;
- подсчёт очков и сохранение рекорда;
- смену дня и ночи;
- паузу, экран Game Over и перезапуск;
- музыку и звуковые эффекты через четыре звуковых канала NES.
Как это сделано
Внутри игровая логика работает в координатах оригинальной браузерной версии. Дробные значения, скорость и физика реализованы через fixed-point арифметику 8.8, поскольку у процессора 6502 нет чисел с плавающей точкой.
Кактусы выводятся не спрайтами, а тайлами фона и постепенно записываются в nametable во время прокрутки. Это помогает экономить спрайты и избегать мерцания.
Для независимой прокрутки игрового поля и неподвижной строки очков используется sprite-zero hit.
ROM имеет простой формат NROM-256, mapper 0:
- 32 КБ PRG-ROM;
- 8 КБ CHR-ROM;
- вертикальный mirroring.
Он подходит для эмуляторов и флеш-карт для NES, Famicom и Dendy. Игра рассчитана прежде всего на NTSC 60 Гц. На 50-герцовых клонах Dendy игровой процесс и темп музыки могут быть немного медленнее.
Сборка
Для сборки нужны только
Код: [Выделить]
make и пакет Код: [Выделить]
cc65, в который входят ассемблер Код: [Выделить]
ca65 и линкер Код: [Выделить]
ld65.Код: [Выделить]
git clone https://github.com/atonamy/nes-t-rex-game.git
cd nes-t-rex-game
make
Графика
Код: [Выделить]
build/trex.chr уже включена в репозиторий, поэтому дополнительные инструменты для её генерации не нужны.Лицензия
Проект бесплатный и с открытым исходным кодом. Код NES-порта распространяется по лицензии MIT. Элементы, основанные на Chromium, сохраняют условия BSD-лицензии.
Ссылки
Готовый ROM и последняя версия:
Скачать T-Rex Runner для NES
Исходный код и инструкция по сборке:
GitHub — atonamy/nes-t-rex-game
Для разработки и отладки использовался Mesen и инструмент:
atonamy/mesen-agent
Буду рад отзывам, результатам запуска на реальном железе и сообщениям о найденных ошибках.
