Два года назад автор портировал JavaScript-движок Impact на C — просто так. Теперь причина есть: на базе порта high_impact он сделал Xibalba 64, шутер в духе Wolfenstein 3D. Modretro издаёт игру физически как стартовый тайтл для M64, современного клона N64, с картриджем и мануалом. Это лишь второй физический релиз новой N64-игры после конца коммерческой жизни консоли: в 2023-м вышла Xeno Crisis от Bitmap Bureau, а до неё новых игр не было с Tony Hawk's Pro Skater 3 в 2002-м.
high_impact модульный: платформенные бэкенды SDL2 и Sokol, рендер программный, OpenGL или Metal. Для N64 автор написал бэкенд на Libdragon — библиотеке вроде SDL. Железо N64 капризное: 93-мегагерцовый MIPS CPU с big-endian, графический RDP и программируемый RSP в общем корпусе RCP. Nintendo долго не пускала к RSP, официальный libultra сейчас рискован. Тест на Biolab Disaster прошёл без изменений игрового кода, хоть и медленно.
Для отладки нужен реальный N64: даже Ares с полной эмуляцией RDP/RSP не покажет медленную память консоли. Автор взял SummerCart64 с USB-C, ROM заливается через sc64deployer прямо при сборке. Видео выводилось через дешёвую USB-карту захвата и mpv. Из веток Libdragon нужна preview, stable отстала. Рендером занимается Tiny3D. У N64 всего 4 KB текстурной памяти, тайлы 64×64, загрузка медленная. Автор не стал, как Mario 64, рисовать пустые полигоны, а группировал тайлы с одинаковыми текстурами в батчи по 17 квадов и сортировал вызовы. Видимость — рейкастинг: 320 лучей на кадр, с рекурсивным разбиением, пока два луча не попадают в одну клетку. Скайбокс — текстура 32×32. Игра держит 60 FPS, в четырёхплеерном сплите чуть ниже, но плавно; GoldenEye 007 там часто падал в однозначные числа.
Xibalba выросла из демо 2014 года: порт занял две недели, потом несколько месяцев на новые уровни и оптимизацию. Игра всё время собиралась и для SDL2/Sokol. Редактор уровней — HTML-файл, читающий C-код; уровни из JSON компилируются в бинарный формат. Музыку написал Andreas Lösch; звук занимает 31 MB из 32 MB картриджа. Giovanni Bajo сделал RSP-ускоренный декодер Opus — кодек 2012 года, на 16 лет младше N64 — но для геймплея он слишком тяжёлый, поэтому используется 4-битный VADPCM. Modretro ответила на письмо в поддержку за день, контракт позволил открыть исходники движка. Коробку оформлял друг, в девяностых отвечавший за упаковку игр Sierra в Германии, включая Half-Life. Продажи автор не раскрывает, но выглядит хорошо.