Игры > Игры на консолях 1-4 поколений

[SMD] Paprium, новая игра для мегадрайва

<< < (21/33) > >>

Chaotix:
Вот ещё для маломощных х86 компов билд:
Optimized-Paprium-x86-20250718.zip

Из любопытства, посмотреть насколько лучше будет с музыкой в wav.

Минимальные требования: проц не ниже ~1ГГц.
Несколько бинарников: для WinXP-7-10.
На условном ASUS Eee PC 1001P (2010г) можно ожидать ~60фпс. По крайней мере, под Win7 x86. Первых три уровня прошёл, особых заиканий звука и сильных просадок небыло.

Особенности:
- с эмуляцией Sega-CD может уже не тянуть, поэтому без CPU напарника.
- lowpass фильтр на звук звучит интересно, но с ним тормозит на ~1ГГц (по-умолчанию выключен)

В исходниках dr_wav.h мелкий твик, что бы скомпилилось под Винду. А в остальном, сырцы из https://www.emu-land.net/forum/index.php/topic,77919.msg1648316.html#msg1648316


--- Цитата: pav13 от 18 Июля 2025, 02:40:55 ---Там какой-то нереальный квест надо пройти, чтобы понять куда ложить упакованный ром игры, куда ложить и как назвать архив с музыкой (причем не понятно в каком формате и с какими именами)
--- Конец цитаты ---
Попробовал запустить FBNeo, но не ядром к ретроарчу. Так-то ром запускает легко, просто запаковать в zip. С музыкой непонятно, может вообще не поддерживается.

С ядром FBNeo под Ретроарч понятнее, там наверное:
ROM: C:\RetroArch\roms\fbneo\paprium.zip
МУЗЫКА: C:\RetroArch\system\fbneo\samples\paprium.zip
Музыку непожатыми вавками запаковать в архив без сжатия и оперативы нужно ~2.5Гб кешировать, если не выключить "song preload" на "on demand" в настройках.
Как должны называться, непонятно. Может цифрами аля p_01.wav, может track01.wav, а может как было.

Расстраивает уже то, что музыка будет весить ~2Гб. Поэтому не пробовал.
Ведь FBNeo нужен что-бы не юзать RetroArch. А тут получается те же грабли, но какой размер..

drakula1912:
https://www.youtube.com/watch?v=bkAx72RL3kM&t=302s интервью на французском я смотрю через яндекс браузер

Chaotix:

--- Цитата: drakula1912 от 19 Июля 2025, 11:07:49 ---https://www.youtube.com/watch?v=bkAx72RL3kM&t=302s интервью на французском я смотрю через яндекс браузер

--- Конец цитаты ---
Краткое содержание:
"Сегодня у нас беседа с Оливье, одним из ключевых программистов, работавших над оптимизацией движка Paprium, хардкорного бит-эм-апа для Sega Mega Drive, который взорвал хайп-метер в 2020 году.

Как всё начиналось:
---------------------------------

Оливье рассказал, что в 2015 году Гвен (известен как Fonzie; основной разработчик Paprium) связался с ним, чтобы помочь с оптимизацией графики.

«Гвен сказал: "У нас проблема с движком. Нам нужно больше спрайтов, 60 FPS без лагов". Я подумал: "Ну окей, почему бы и нет?" – и в итоге это заняло год вместо предполагаемых трёх недель», – смеётся Оливье.

Fonzie описывают как «человека с амбициями Стива Джобса»:

«Он говорил: “Я хочу спрайты размером с дом, 60 FPS”, а мы думали: “Это невозможно”… но потом находили способ».

Его энтузиазм был заразителен: «Он толкал тебя вперёд, даже когда ты сомневался».

Финансы:
Гвен не разбогател на Paprium. «Он точно не купил Lamborghini», – шутит Оливье.

Paprium фактически был финансовым провалом.

Основные причины:
Огромные затраты на физическое производство картриджей; Минимальный тираж; Высокая себестоимость проекта; Небольшое количество реальных продаж
"Мы вложили больше денег, чем смогли заработать. Гвен был скорее энтузиастом, чем бизнесменом. Все средства шли обратно в разработку."

Он специально подчеркивал, что проект был не коммерческим предприятием, а данью уважения олдскулу.

"Lamborghini? Да он еле окупил затраты на производство картриджей. Речь шла о ностальгии, а не о прибыли."

Звучало это очень эмоционально и с легкой иронией над собственными амбициями того времени.

Странные подарки и NDA:
В благодарность за работу Оливье получил эксклюзивную статуэтку и… «некоторые странные вещицы, которые лучше не показывать» (намёк на фирменные стринги Paprium).

До сих пор под NDA:
«Я удалил все исходники. Paprium – ребёнок Гвена, а я лишь помогал».

Конфликты и хейт:
Оливье подтвердил, что Fonzie сталкивался с агрессией: угрозы, попытки докопаться до его адреса, обвинения в «неумении программировать».

«Но его код… Я не всё понял, но он работал. А те, кто критиковал, просто не видели масштаба задач».

Разработка:
---------------------------------

Первые месяцы работы были похожи на настоящее приключение. Оливье признался, что сначала не понимал код и методы оптимизации. Он начал с изучения регистров процессора 68000, времени выполнения инструкций и внутренней кухни компилятора..

Оптимизация велась на ассемблере Motorola 68000. Ключевая задача – выжать максимум производительности из 30-летней железяки.

• Первые 10% оптимизации: легко. Переписал функции, применил хитрые инструкции.

Он использовал инструкцию DBRA (Decrement and Branch), которая особенно эффективна для оптимизации циклов.
Проблема была в том, что компилятор не очень хорошо оптимизировал циклы for, особенно на cross-компиляции для 68000. Оливье обнаружил, что некоторые циклы можно существенно ускорить, применив специфические инструкции процессора.

• Следующие 20%: тонкая оптимизация использования регистров.

Смысл был в том, что компилятор использует регистры не максимально эффективно. Оливье говорил, что нашел уже существующую calling convention, где первые два регистра данных (D0, D1) используются для передачи параметров.
 "...я думал, что изобретаю что-то новое, но оказалось, что такой метод уже известен. Будь интернет 20 лет назад, мы бы сразу это знали".
Он эмпирически нашел более эффективный способ использования регистров, но который уже был известен в среде разработчиков для 68000.

• Последние 5%: настоящий ад с бесконечными тестами.

Оливье запускал игру и проверял стабильность через 20, 30, 35 минут; Создавал виртуальные машины для разных версий; Отслеживал малейшие падения и сбои.

Проблемы: Игра могла внезапно вылетать через час игры; Очень сложно поймать и воспроизвести баг; Каждое исправление требовало полного цикла тестирования.
Процесс становился невероятно утомительным.

«Я знал коды операций наизусть. Когда начал видеть их во сне – понял, что пора завязывать», – говорит программист.

Философия и трудности:
Без зарплаты, ради фана.

Он говорил, что для него, молодого программиста начала 90-х, попасть в титры игры для Mega Drive было огромной честью. Денежная компенсация его абсолютно не интересовала.

"Мне было 22-23 года, я только начинал в индустрии. Возможность прикоснуться к разработке для SEGA - это было мечтой. Какие деньги? Мне достаточно было видеть своё имя в титрах!"

Процесс оптимизации был невероятно кропотливым. Бывали моменты, когда игра падала через 30 секунд, а иногда и через 2 минуты. "Это было утомительно", - признается Оливье.

Тестирование – 80% работы. «Разработка игр – это не веселье, а рутина: код → тест → дебаг → повторить.

В итоге ему удалось добиться 30% прироста производительности. Гвен был в восторге! Это позволило добавить больше графики и улучшить звук.

Итог:
"Этот проект научил меня, что геймдев – тяжёлый труд. Если хотите делать игры, будьте готовы к монотонной работе, а не только к творчеству".

"Если бы я знал раньше, насколько это сложно, возможно, не взялся бы", - признается он.

В конце концов, Оливье гордится своим участием в Paprium. Для него это была возможность прикоснуться к легендарной консоли и создать частичку игровой истории." (С) https://www.youtube.com/watch?v=bkAx72RL3kMСложно без Яндекс Браузера смотреть 1.2 часа на французском, пришлось сгенерить краткое содержание текстом.
А так, достаточно интерестное интервью.

suhmai:
Что-то эта игра, понравившаяся сильно вначале, всё больше и больше "радует". Почему-то теперь доступ запрещен в один пункт, где я на "харде" играл и открыл новых персонажей.

Про Игрок:
Казалось бы, надо игру хвалить, но без правок, без замены музыки на оную из других крутых игр (музыка из Sor Remake повышает градус в двое-трое), без замены глухих звуков ударов, без оптимизации боевки игра с каждым прохождением вызывает эффект...выветривания. Будто этот "паприум" из мозга выводится и остается пустота и раздражение от незавершенности проекта.
Открыл двух секретных персонажей, увидел около трех разных окончаний, а вот дальше что-то искать наверное буду, когда захочу рипнуть уровни не более...

YuzorG:
suhmai, ну вот у меня такая же ерунда
У тебя черт здоровый в конце был? Ты не небесный путь прошел?

suhmai:
YuzorG, я играл по пути Mid-Levels, но в процессе игры прошел те локации, которые есть в    Skyline, и да, вот этого босса убил, и после этого запрет возник.

pav13:
Немного технической информации  :wacko:

тайлы (размер, процент от общего количества при использовании)
   32 bytes, 26.4 %
   64 bytes, 0.2 %
   96 bytes, 0.1 %
  128 bytes, 0.5 %
  160 bytes, 0.1 %
  192 bytes, 0.3 %
  224 bytes, 0.0 %
  256 bytes, 0.7 %
  320 bytes, 0.3 %
  384 bytes, 1.2 %
  416 bytes, 0.0 %
  448 bytes, 0.0 %
  512 bytes, 70.1 %

спрайты (размер X*Y тайлов, процент от общего количества при использовании)
 1x1, 2.2 %
 1x2, 2.9 %
 1x3, 2.1 %
 1x4, 3.8 %
 2x1, 1.6 %
 2x2, 3.9 %
 2x3, 4.6 %
 2x4, 13.9 %
 3x1, 1.2 %
 3x2, 2.9 %
 3x3, 3.4 %
 3x4, 8.6 %
 4x1, 1.3 %
 4x2, 8.2 %
 4x3, 5.3 %
 4x4, 34.1 %

анимации (размер в байтах)
от 4 байт (99 %) до 4092 байт (буквально единичные использования)
   4 bytes: 178470
  12 bytes: 1
  24 bytes: 1
  32 bytes: 1
  40 bytes: 14
  44 bytes: 15
  48 bytes: 57
  56 bytes: 51
  60 bytes: 1
  64 bytes: 3
  72 bytes: 5
  80 bytes: 1
  84 bytes: 1
  88 bytes: 3
  96 bytes: 2
 100 bytes: 3
 104 bytes: 1
 108 bytes: 1
 120 bytes: 1
 124 bytes: 2
 128 bytes: 1
 132 bytes: 5
 136 bytes: 1
 152 bytes: 3
 164 bytes: 1
 168 bytes: 1
 172 bytes: 1
 176 bytes: 2
 180 bytes: 17
 184 bytes: 4
 188 bytes: 1
 192 bytes: 1
 196 bytes: 1
 200 bytes: 4
 204 bytes: 5
 208 bytes: 7
 212 bytes: 4
 216 bytes: 3
 224 bytes: 2
 228 bytes: 3
 232 bytes: 3
 236 bytes: 3
 240 bytes: 4
 244 bytes: 5
 248 bytes: 3
 252 bytes: 2
 256 bytes: 3
 260 bytes: 1
 264 bytes: 1
 272 bytes: 2
 276 bytes: 2
 280 bytes: 1
 284 bytes: 4
 288 bytes: 1
 296 bytes: 2
 300 bytes: 1
 304 bytes: 1
 308 bytes: 2
 312 bytes: 3
 316 bytes: 2
 320 bytes: 2
 324 bytes: 3
 328 bytes: 3
 332 bytes: 6
 340 bytes: 2
 344 bytes: 1
 352 bytes: 2
 356 bytes: 1
 360 bytes: 1
 364 bytes: 2
 380 bytes: 2
 384 bytes: 2
 388 bytes: 34
 392 bytes: 5
 396 bytes: 1
 400 bytes: 4
 408 bytes: 1
 416 bytes: 1
 420 bytes: 11
 424 bytes: 1
 432 bytes: 3
 436 bytes: 59
 440 bytes: 1
 448 bytes: 3
 452 bytes: 3
 456 bytes: 3
 460 bytes: 1
 464 bytes: 1
 468 bytes: 5
 476 bytes: 1
 480 bytes: 1
 488 bytes: 7
 492 bytes: 5
 496 bytes: 1
 500 bytes: 3
 508 bytes: 1
 512 bytes: 5
 516 bytes: 2
 524 bytes: 1
 528 bytes: 5
 532 bytes: 4
 536 bytes: 2
 540 bytes: 1
 544 bytes: 2
 552 bytes: 1
 560 bytes: 1
 568 bytes: 2
 576 bytes: 1
 580 bytes: 1
 584 bytes: 1
 588 bytes: 1
 592 bytes: 1
 596 bytes: 1
 600 bytes: 2
 612 bytes: 1
 624 bytes: 2
 640 bytes: 2
 644 bytes: 2
 652 bytes: 3
 656 bytes: 1
 664 bytes: 4
 672 bytes: 1
 680 bytes: 1
 688 bytes: 2
 696 bytes: 2
 700 bytes: 1
 704 bytes: 2
 708 bytes: 5
 712 bytes: 4
 716 bytes: 2
 732 bytes: 2
 744 bytes: 1
 748 bytes: 1
 752 bytes: 1
 756 bytes: 1
 760 bytes: 1
 764 bytes: 1
 768 bytes: 2
 772 bytes: 2
 776 bytes: 2
 780 bytes: 2
 784 bytes: 1
 788 bytes: 1
 792 bytes: 3
 796 bytes: 2
 808 bytes: 1
 812 bytes: 1
 820 bytes: 20
 824 bytes: 1
 828 bytes: 2
 832 bytes: 1
 836 bytes: 1
 844 bytes: 1
 864 bytes: 1
 868 bytes: 1
 872 bytes: 1
 876 bytes: 2
 884 bytes: 1
 892 bytes: 1
 896 bytes: 1
 900 bytes: 4
 904 bytes: 2
 912 bytes: 2
 916 bytes: 2
 920 bytes: 2
 928 bytes: 6
 932 bytes: 3
 940 bytes: 2
 948 bytes: 1
 956 bytes: 1
 972 bytes: 1
 976 bytes: 6
 980 bytes: 6
 984 bytes: 2
 988 bytes: 1
 996 bytes: 2
1020 bytes: 1
1024 bytes: 1
1032 bytes: 1
1036 bytes: 1
1048 bytes: 38
1052 bytes: 1
1056 bytes: 4
1060 bytes: 37
1064 bytes: 1
1068 bytes: 2
1076 bytes: 16
1088 bytes: 11
1092 bytes: 2
1096 bytes: 1
1104 bytes: 2
1108 bytes: 7
1112 bytes: 1
1116 bytes: 7
1128 bytes: 1
1148 bytes: 3
1152 bytes: 3
1164 bytes: 1
1168 bytes: 3
1172 bytes: 1
1180 bytes: 1
1188 bytes: 2
1200 bytes: 1
1216 bytes: 1
1220 bytes: 4
1224 bytes: 1
1232 bytes: 1
1236 bytes: 2
1240 bytes: 3
1252 bytes: 5
1256 bytes: 5
1260 bytes: 1
1264 bytes: 5
1268 bytes: 2
1276 bytes: 6
1280 bytes: 4
1284 bytes: 8
1288 bytes: 3
1292 bytes: 3
1296 bytes: 2
1300 bytes: 1
1304 bytes: 4
1308 bytes: 3
1312 bytes: 5
1316 bytes: 2
1320 bytes: 2
1328 bytes: 10
1332 bytes: 3
1344 bytes: 1
1348 bytes: 2
1352 bytes: 1
1356 bytes: 1
1364 bytes: 2
1368 bytes: 2
1372 bytes: 5
1384 bytes: 6
1388 bytes: 5
1396 bytes: 1
1400 bytes: 1
1404 bytes: 2
1420 bytes: 1
1436 bytes: 1
1452 bytes: 8
1464 bytes: 2
1480 bytes: 2
1488 bytes: 2
1492 bytes: 8
1500 bytes: 2
1504 bytes: 3
1524 bytes: 2
1528 bytes: 1
1532 bytes: 1
1544 bytes: 1
1548 bytes: 3
1564 bytes: 2
1568 bytes: 1
1576 bytes: 1
1608 bytes: 1
1612 bytes: 1
1624 bytes: 5
1668 bytes: 1
1696 bytes: 2
1708 bytes: 1
1732 bytes: 53
1736 bytes: 1
1740 bytes: 1
1744 bytes: 1
1748 bytes: 11
1752 bytes: 1
1760 bytes: 1
1772 bytes: 1
1780 bytes: 1
1784 bytes: 1
1800 bytes: 1
1808 bytes: 3
1812 bytes: 1
1816 bytes: 1
1820 bytes: 2
1824 bytes: 1
1832 bytes: 1
1840 bytes: 1
1852 bytes: 1
1856 bytes: 1
1860 bytes: 1
1864 bytes: 1
1896 bytes: 1
1900 bytes: 1
1916 bytes: 1
1936 bytes: 1
1940 bytes: 1
1944 bytes: 1
1948 bytes: 1
1956 bytes: 1
1976 bytes: 1
1980 bytes: 1
1992 bytes: 3
2032 bytes: 1
2048 bytes: 4
2056 bytes: 1
2060 bytes: 1
2088 bytes: 1
2104 bytes: 1
2108 bytes: 1
2116 bytes: 1
2140 bytes: 1
2168 bytes: 3
2176 bytes: 1
2180 bytes: 1
2188 bytes: 1
2192 bytes: 1
2204 bytes: 2
2216 bytes: 1
2224 bytes: 1
2232 bytes: 1
2244 bytes: 2
2252 bytes: 1
2264 bytes: 1
2276 bytes: 1
2280 bytes: 4
2284 bytes: 4
2300 bytes: 1
2304 bytes: 5
2340 bytes: 1
2344 bytes: 1
2348 bytes: 1
2352 bytes: 1
2376 bytes: 3
2384 bytes: 1
2400 bytes: 2
2408 bytes: 2
2412 bytes: 2
2416 bytes: 2
2424 bytes: 2
2428 bytes: 3
2432 bytes: 2
2436 bytes: 4
2440 bytes: 1
2444 bytes: 1
2448 bytes: 3
2452 bytes: 2
2456 bytes: 12
2460 bytes: 1
2464 bytes: 2
2468 bytes: 4
2472 bytes: 2
2476 bytes: 4
2480 bytes: 1
2484 bytes: 5
2488 bytes: 4
2492 bytes: 1
2496 bytes: 6
2500 bytes: 3
2504 bytes: 4
2508 bytes: 4
2512 bytes: 6
2516 bytes: 9
2520 bytes: 6
2524 bytes: 7
2528 bytes: 10
2532 bytes: 11
2536 bytes: 11
2540 bytes: 97
2544 bytes: 1
2548 bytes: 2
2552 bytes: 1
2564 bytes: 2
2576 bytes: 1
2580 bytes: 1
2592 bytes: 1
2608 bytes: 1
2636 bytes: 2
2648 bytes: 1
2668 bytes: 1
2672 bytes: 2
2688 bytes: 1
2708 bytes: 1
2716 bytes: 1
2748 bytes: 1
2752 bytes: 1
2772 bytes: 1
2784 bytes: 2
2788 bytes: 2
2820 bytes: 1
2824 bytes: 1
2832 bytes: 3
2836 bytes: 1
2840 bytes: 1
2844 bytes: 2
2860 bytes: 1
2864 bytes: 1
2876 bytes: 2
2880 bytes: 1
2900 bytes: 1
2904 bytes: 1
2908 bytes: 1
2924 bytes: 1
2928 bytes: 3
2940 bytes: 1
2944 bytes: 1
2956 bytes: 1
2968 bytes: 2
2980 bytes: 1
2992 bytes: 1
3000 bytes: 1
3016 bytes: 3
3024 bytes: 1
3028 bytes: 1
3032 bytes: 3
3044 bytes: 1
3056 bytes: 1
3100 bytes: 1
3104 bytes: 1
3120 bytes: 1
3124 bytes: 2
3184 bytes: 1
3192 bytes: 1
3204 bytes: 1
3228 bytes: 1
3232 bytes: 1
3236 bytes: 1
3248 bytes: 1
3264 bytes: 2
3272 bytes: 2
3280 bytes: 1
3284 bytes: 1
3300 bytes: 2
3308 bytes: 1
3312 bytes: 1
3320 bytes: 2
3324 bytes: 1
3328 bytes: 1
3332 bytes: 1
3340 bytes: 1
3344 bytes: 1
3348 bytes: 2
3352 bytes: 2
3356 bytes: 1
3368 bytes: 2
3372 bytes: 1
3384 bytes: 1
3388 bytes: 1
3392 bytes: 2
3400 bytes: 1
3408 bytes: 2
3412 bytes: 2
3420 bytes: 3
3428 bytes: 1
3432 bytes: 1
3448 bytes: 1
3472 bytes: 1
3480 bytes: 1
3488 bytes: 1
3492 bytes: 1
3504 bytes: 3
3516 bytes: 1
3528 bytes: 1
3540 bytes: 1
3544 bytes: 1
3560 bytes: 1
3564 bytes: 4
3572 bytes: 1
3608 bytes: 1
3624 bytes: 1
3628 bytes: 1
3676 bytes: 1
3696 bytes: 8
3700 bytes: 1
3708 bytes: 1
3720 bytes: 1
3724 bytes: 1
3756 bytes: 1
3768 bytes: 3
3784 bytes: 2
3800 bytes: 1
3808 bytes: 1
3812 bytes: 1
3816 bytes: 1
3832 bytes: 1
3852 bytes: 1
3856 bytes: 1
3864 bytes: 1
3872 bytes: 1
3876 bytes: 1
3884 bytes: 2
3892 bytes: 1
3904 bytes: 1
3952 bytes: 9
3976 bytes: 3
3992 bytes: 1
4008 bytes: 2
4052 bytes: 2
4060 bytes: 1
4068 bytes: 3
4076 bytes: 2
4084 bytes: 1
4092 bytes: 1
Возможно есть и больше, но уже не логировал.

На резонный вопрос "нах.. Зачем?" отвечу, что хочу под это всё сделать кэш таблицы в оперативной памяти.

Тайловый кэш самый выгодный, в принципе работает и хорошо работает, но не возымел существенной прибавки производительности эмулятора.

Обращения к кэшу 98-99% от всех операций декодирования.
Ускорение обращения к тайлам в 7-10 раз, но минус из оперативки (оптимально 2-6 Мб, можно и уменьшить, например 512 Кб).

Размер тайла: скорость обработки в наносекундах

без кэша (vita 2000 - реальное железо):
 32 bytes: avg=14.46 ns, min=13 ns, max=35 ns
 64 bytes: avg=14.12 ns, min=13 ns, max=34 ns
 96 bytes: avg=13.25 ns, min=9 ns,  max=43 ns
128 bytes: avg=15.32 ns, min=13 ns, max=76 ns
192 bytes: avg=22.09 ns, min=19 ns, max=75 ns
256 bytes: avg=12.07 ns, min=9 ns,  max=63 ns
384 bytes: avg=14.41 ns, min=10 ns, max=25 ns
512 bytes: avg=13.77 ns, min=8 ns,  max=75 ns

с кэшем (vita 2000 - реальное железо):
 32 bytes: avg=1.75 ns, min=1 ns, max=24 ns
 64 bytes: avg=1.81 ns, min=1 ns, max=25 ns
 96 bytes: avg=2.01 ns, min=1 ns, max=25 ns
128 bytes: avg=1.92 ns, min=1 ns, max=62 ns
192 bytes: avg=2.55 ns, min=1 ns, max=26 ns
256 bytes: avg=2.07 ns, min=1 ns, max=63 ns
288 bytes: avg=2.90 ns, min=1 ns, max=35 ns
384 bytes: avg=2.15 ns, min=1 ns, max=25 ns
512 bytes: avg=2.19 ns, min=1 ns, max=44 ns

Возможно если получится настроить кэш спрайтов и анимаций на работу по шаблонам, тогда что-то и получится

YuzorG:
suhmai, да. Вот и он у меня
 Видимо на него надо идти выполнив все миссии

pav13:
Правка для ядра Genesis plus GX

уже содержит правки из -> https://www.emu-land.net/forum/index.php/topic,77919.msg1648316.html#msg1648316

- добавлен кэш тайлов (#define TILE_CACHE_ENABLE 1)

Остановился только на кэше для тайлов. Они неизменны, но декодируются каждый раз при новом вызове из ROM. Кэш для спрайтов и анимаций не имеет смысла, так как при их обработке много динамической информации, а постоянной составляющей являются только тайлы (кэш для которых уже есть).
Кэш сбрасывается при воспроизведении нового трека (кроме босс-треков).

Серьёзного прироста производительности НЕ ждите.

Как уже писал ранее тайлы бывают по 32, 64, 96, 128, 192, 256, 288, 384, 512 байт, но обрабатываются всегда как 512 байтные (по крайней мере при декодировании).

Средняя скорость отрисовки одного спрайта (не тайла) проверено на vita 2000:
- без кэша:            52,6 наносекунды
- с кэшем на 1 Мб: 10,8 наносекунд

========= LOG STARTED =========

== TILE cache CLEARED when start PLAY new TRACK ==     ------------------------------------------------------ TITLE SCREEN

[TILE CACHE] Count:2000  Hits:1970(98.5%)  Misses:30  Writes:30  Replace:0  MaxSlots:2048
[TILE CACHE_] Sizes:  64:2  128:1  256:8  512:19
[TILE CACHE] Count:4000  Hits:3881(97.0%)  Misses:119  Writes:119  Replace:0  MaxSlots:2048
[TILE CACHE_] Sizes:  64:44  128:1  192:43  256:8  384:4  512:19
[TILE CACHE] Count:6000  Hits:5860(97.7%)  Misses:140  Writes:140  Replace:0  MaxSlots:2048
[TILE CACHE_] Sizes:  64:44  96:1  128:1  192:43  256:8  384:4  512:39

== TILE cache CLEARED when start PLAY new TRACK ==     ------------------------------------------------------ CHARACTER SELECTION

[TILE CACHE] Count:2000  Hits:1889(94.5%)  Misses:111  Writes:111  Replace:0  MaxSlots:2048
[TILE CACHE_] Sizes:  32:7  64:3  96:1  128:5  192:6  256:11  384:10  512:68
[TILE CACHE] Count:4000  Hits:3843(96.1%)  Misses:157  Writes:157  Replace:0  MaxSlots:2048
[TILE CACHE_] Sizes:  32:12  64:4  96:1  128:6  192:6  256:11  288:1  384:11  512:105

== TILE cache CLEARED when start PLAY new TRACK ==     ------------------------------------------------------ LEVEL 1 START

[TILE CACHE] Count:2000  Hits:1920(96.0%)  Misses:80  Writes:80  Replace:0  MaxSlots:2048
[TILE CACHE_] Sizes:  32:4  64:4  96:4  128:2  192:10  256:14  288:6  384:9  512:27
[TILE CACHE] Count:4000  Hits:3920(98.0%)  Misses:80  Writes:80  Replace:0  MaxSlots:2048
[TILE CACHE_] Sizes:  32:4  64:4  96:4  128:2  192:10  256:14  288:6  384:9  512:27
[TILE CACHE] Count:6000  Hits:5873(97.9%)  Misses:127  Writes:127  Replace:0  MaxSlots:2048
[TILE CACHE_] Sizes:  32:4  64:5  96:6  128:9  192:11  256:21  288:7  384:17  512:47
[TILE CACHE] Count:8000  Hits:7833(97.9%)  Misses:167  Writes:167  Replace:0  MaxSlots:2048
[TILE CACHE_] Sizes:  32:5  64:6  96:7  128:11  192:14  256:26  288:11  384:21  512:66
[TILE CACHE] Count:10000  Hits:9793(97.9%)  Misses:207  Writes:207  Replace:0  MaxSlots:2048
[TILE CACHE_] Sizes:  32:6  64:9  96:8  128:16  192:16  256:32  288:15  384:25  512:80
[TILE CACHE] Count:12000  Hits:11766(98.0%)  Misses:234  Writes:234  Replace:0  MaxSlots:2048
[TILE CACHE_] Sizes:  32:7  64:10  96:8  128:18  192:17  256:35  288:17  384:34  512:88
[TILE CACHE] Count:14000  Hits:13703(97.9%)  Misses:297  Writes:297  Replace:0  MaxSlots:2048
[TILE CACHE_] Sizes:  32:8  64:11  96:9  128:19  192:32  256:36  288:17  384:37  512:128
[TILE CACHE] Count:16000  Hits:15681(98.0%)  Misses:319  Writes:319  Replace:0  MaxSlots:2048
[TILE CACHE_] Sizes:  32:9  64:12  96:9  128:20  192:36  256:37  288:18  384:41  512:137
[TILE CACHE] Count:18000  Hits:17672(98.2%)  Misses:328  Writes:328  Replace:0  MaxSlots:2048
[TILE CACHE_] Sizes:  32:9  64:12  96:9  128:21  192:36  256:38  288:18  384:43  512:142
[TILE CACHE] Count:20000  Hits:19646(98.2%)  Misses:354  Writes:354  Replace:0  MaxSlots:2048
[TILE CACHE_] Sizes:  32:10  64:12  96:9  128:24  192:37  256:38  288:18  384:45  512:161
[TILE CACHE] Count:22000  Hits:21623(98.3%)  Misses:377  Writes:377  Replace:0  MaxSlots:2048
[TILE CACHE_] Sizes:  32:10  64:12  96:9  128:24  192:37  256:39  288:18  384:45  512:183
[TILE CACHE] Count:24000  Hits:23622(98.4%)  Misses:378  Writes:378  Replace:0  MaxSlots:2048
[TILE CACHE_] Sizes:  32:10  64:12  96:9  128:24  192:37  256:39  288:18  384:45  512:184
[TILE CACHE] Count:26000  Hits:25611(98.5%)  Misses:389  Writes:389  Replace:0  MaxSlots:2048
[TILE CACHE_] Sizes:  32:10  64:12  96:9  128:24  192:38  256:39  288:18  384:47  512:192
[TILE CACHE] Count:28000  Hits:27609(98.6%)  Misses:391  Writes:391  Replace:0  MaxSlots:2048
[TILE CACHE_] Sizes:  32:10  64:12  96:9  128:24  192:38  256:39  288:18  384:47  512:194
[TILE CACHE] Count:30000  Hits:29609(98.7%)  Misses:391  Writes:391  Replace:0  MaxSlots:2048
[TILE CACHE_] Sizes:  32:10  64:12  96:9  128:24  192:38  256:39  288:18  384:47  512:194
[TILE CACHE] Count:32000  Hits:31567(98.6%)  Misses:433  Writes:433  Replace:0  MaxSlots:2048

........  //........  //........  //........  //........

[TILE CACHE] Count:420000  Hits:413648(98.5%)  Misses:6352  Writes:6352  Replace:4304  MaxSlots:2048
[TILE CACHE_] Sizes:  32:79  64:100  96:173  128:414  192:290  256:1812  288:297  384:616  512:2571
[TILE CACHE] Count:422000  Hits:415585(98.5%)  Misses:6415  Writes:6415  Replace:4367  MaxSlots:2048
[TILE CACHE_] Sizes:  32:80  64:100  96:175  128:419  192:291  256:1832  288:297  384:622  512:2599
[TILE CACHE] Count:424000  Hits:417540(98.5%)  Misses:6460  Writes:6460  Replace:4412  MaxSlots:2048
[TILE CACHE_] Sizes:  32:80  64:100  96:175  128:419  192:291  256:1854  288:297  384:623  512:2621
[TILE CACHE] Count:426000  Hits:419491(98.5%)  Misses:6509  Writes:6509  Replace:4461  MaxSlots:2048
[TILE CACHE_] Sizes:  32:80  64:101  96:175  128:419  192:291  256:1877  288:297  384:628  512:2641
[TILE CACHE] Count:428000  Hits:421464(98.5%)  Misses:6536  Writes:6536  Replace:4488  MaxSlots:2048
[TILE CACHE_] Sizes:  32:80  64:101  96:175  128:419  192:291  256:1890  288:297  384:629  512:2654
[TILE CACHE] Count:430000  Hits:423445(98.5%)  Misses:6555  Writes:6555  Replace:4507  MaxSlots:2048
[TILE CACHE_] Sizes:  32:80  64:101  96:175  128:420  192:292  256:1893  288:303  384:635  512:2656
[TILE CACHE] Count:432000  Hits:425434(98.5%)  Misses:6566  Writes:6566  Replace:4518  MaxSlots:2048
[TILE CACHE_] Sizes:  32:80  64:101  96:176  128:421  192:292  256:1895  288:303  384:636  512:2662
[TILE CACHE] Count:434000  Hits:427429(98.5%)  Misses:6571  Writes:6571  Replace:4523  MaxSlots:2048
[TILE CACHE_] Sizes:  32:80  64:101  96:177  128:421  192:292  256:1896  288:303  384:637  512:2664
[TILE CACHE] Count:436000  Hits:429420(98.5%)  Misses:6580  Writes:6580  Replace:4532  MaxSlots:2048
[TILE CACHE_] Sizes:  32:80  64:101  96:177  128:421  192:292  256:1897  288:303  384:637  512:2672

== TILE cache CLEARED when start PLAY new TRACK ==  ------------------------------------------------------ LEVEL 1 END

[TILE CACHE] Count:2000  Hits:1973(98.7%)  Misses:27  Writes:27  Replace:0  MaxSlots:2048
[TILE CACHE_] Sizes:  32:2  64:2  96:1  128:2  256:6  384:2  512:12
[TILE CACHE] Count:4000  Hits:3973(99.3%)  Misses:27  Writes:27  Replace:0  MaxSlots:2048
[TILE CACHE_] Sizes:  32:2  64:2  96:1  128:2  256:6  384:2  512:12

== TILE cache CLEARED when start PLAY new TRACK ==  ------------------------------------------------------ LEVEL 2 START

[TILE CACHE] Count:2000  Hits:1954(97.7%)  Misses:46  Writes:46  Replace:0  MaxSlots:2048
[TILE CACHE_] Sizes:  32:1  64:2  96:1  128:2  192:1  256:10  384:6  512:23
[TILE CACHE] Count:4000  Hits:3937(98.4%)  Misses:63  Writes:63  Replace:0  MaxSlots:2048
[TILE CACHE_] Sizes:  32:3  64:3  96:1  128:3  192:1  256:16  384:6  512:30
[TILE CACHE] Count:6000  Hits:5919(98.7%)  Misses:81  Writes:81  Replace:0  MaxSlots:2048
[TILE CACHE_] Sizes:  32:3  64:3  96:2  128:3  192:2  256:19  384:13  512:36
[TILE CACHE] Count:8000  Hits:7839(98.0%)  Misses:161  Writes:161  Replace:0  MaxSlots:2048
[TILE CACHE_] Sizes:  32:3  64:3  96:3  128:11  192:5  256:26  288:1  384:44  512:65
[TILE CACHE] Count:10000  Hits:9787(97.9%)  Misses:213  Writes:213  Replace:0  MaxSlots:2048
[TILE CACHE_] Sizes:  32:3  64:4  96:3  128:11  192:5  256:26  288:1  384:68  512:92
[TILE CACHE] Count:12000  Hits:11720(97.7%)  Misses:280  Writes:280  Replace:0  MaxSlots:2048
[TILE CACHE_] Sizes:  32:3  64:4  96:3  128:11  192:5  256:26  288:1  384:100  512:127
[TILE CACHE] Count:14000  Hits:13718(98.0%)  Misses:282  Writes:282  Replace:0  MaxSlots:2048
[TILE CACHE_] Sizes:  32:3  64:4  96:3  128:11  192:5  256:26  288:1  384:100  512:129
[TILE CACHE] Count:16000  Hits:15711(98.2%)  Misses:289  Writes:289  Replace:0  MaxSlots:2048
[TILE CACHE_] Sizes:  32:3  64:4  96:3  128:11  192:5  256:30  288:1  384:100  512:132
[TILE CACHE] Count:18000  Hits:17691(98.3%)  Misses:309  Writes:309  Replace:0  MaxSlots:2048
[TILE CACHE_] Sizes:  32:3  64:4  96:3  128:11  192:5  256:38  288:1  384:100  512:144
[TILE CACHE] Count:20000  Hits:19679(98.4%)  Misses:321  Writes:321  Replace:0  MaxSlots:2048
[TILE CACHE_] Sizes:  32:3  64:4  96:3  128:11  192:5  256:43  288:2  384:100  512:150
[TILE CACHE] Count:22000  Hits:21631(98.3%)  Misses:369  Writes:369  Replace:0  MaxSlots:2048
[TILE CACHE_] Sizes:  32:3  64:4  96:3  128:11  192:5  256:43  288:2  384:124  512:174
[TILE CACHE] Count:24000  Hits:23566(98.2%)  Misses:434  Writes:434  Replace:0  MaxSlots:2048

Street Fighter:
На первом уровне, когда выходишь из комнаты, можно не делать крюк, а сразу отравиться к боссу, пройдя влево в экран, это как-то влияет на пути прохождения или просто своеобразная лазейка?

YuzorG:
Street Fighter, как написано по ссылке ранее - просто лазейка, которая открывается после первого прохождения

MicroNut99:

--- Цитата: Chaotix от 15 Июля 2025, 16:02:38 ---Кстати, там можно играть с CPU-напарником, как в Street of Rage Remake.
Возможно, все это знают, но не очень очевидно сделано.

Нужно в настройках самой игры Options -> CPU Mate (Enable CPU Second Player), зайти поставить галочку.
Начать игру и на втором контроллере нажать старт (замаппить кнопку Start для Player 2 в Settings -> Input -> Port 2 Controls -> Start = например на "V" на клавиатуры).
И если никто на втором контроллере кнопки не нажимает, то комп будет играть за второго игрока.

Должен быть "подключен" Sega-CD аддон, но Ретроарч автоматически подключает. Поэтому, просто старт на втором контроллере нажать.
Неудобно сдалали, что комп не может нажать сам Start, но работает

--- Конец цитаты ---
Yes.
Goto the game settings Options -> CPU Mate (Enable CPU Second Player), go and check the box.
Start a Game
Next on P1 Controller - Hold L1+Select then Press Start x2 (twice)
Much easier.
Enjoy!

sidnei55:
I really wanted to run this game on amlogic processors with emuelec, I tried the r36s core and it even works but the game ends up crashing.

Mad:
Почему люди не идут простым путем и не поиграют на том, на чем легко запустить :)

MicroNut99:

--- Цитата: sidnei55 от 22 Июля 2025, 20:06:04 ---I really wanted to run this game on amlogic processors with emuelec, I tried the r36s core and it even works but the game ends up crashing.

--- Конец цитаты ---
If possible create a 2GB Swap file.
That fixed my RG351P and RPiZero2
Both run great now. No Crashes.

suhmai:
Кто-нибудь понял, можно ли открыть игровую акулу Spinal на уровне "hard"? В инструкции указан уровень, по прохождении которого акула открыться должна, но не открывается. Может, лишь на "very hard" это можно сделать?....И вообще, нет ли уже случайно сейв-файла по типу файла "всё открыто" в Streets of rage Remake, чтоб не заморачиваться с прохождением? :lol:

suhmai:
Еще повстречались глюки: предметы почему-то невидимые некоторые, бью в пустоту - они разбиваются и появляются вкусняшки, невидимым стал также враг на роликах, после того, как нагнул спину, приглашая на него залезть. Я к пустому месту подошел, нажал на кнопку, и тогда роллер стал видимым. А еще после победы над этим боссом-толстяком его помощники почему-то не умерли, и мне пришлось в пафосном слоу-моушн с ними биться еще несколько минут, потому что после победы над боссом всё замедляется.

pav13:

--- Цитата: Mad от 22 Июля 2025, 20:08:30 ---Почему люди не идут простым путем
--- Конец цитаты ---
кто-то играет в игру. кто-то играет с игрой. по итогу играют все.


кстати игру запустили с флешкартриджа
https://www.reddit.com/r/PAPRiUM/comments/1m5zd15/mapper_file_now_available_for_everdrive_pro_to/

Chaotix:

--- Цитата: sidnei55 от 22 Июля 2025, 20:06:04 ---I really wanted to run this game on amlogic processors with emuelec, I tried the r36s core and it even works but the game ends up crashing.

--- Конец цитаты ---
You can try the core for Amlogic s905w or Anbernic h700 series. See attachment.
 gpgx-cores-retroarch-paprium.7z (4575.42 КБ - загружено 500 раз.)

Use music from RG350 build or a one for low-spec PC (or convert it yourself).

Open paprium-gcw0-adpcm-20250718.zip\paprium_gcw0\paprium-gcw0-20250718.opk\data\paprium\*.wav in 7-zip and extract all wav files near paprium.bin.

If you need a better quality, then Optimized-Paprium-x86-20250718.zip\Optimized-Paprium-x86-20250718\RetroArch\roms\paprium\paprium\*.wav

In the attachment above, compiled cores for Anbernic h700 series, Win x86, Steam Deck, GCW0, Pi4.

MP3 can be converted like this:

put ffmpeg.exe (easy to find) to the folder with mp3 files, then create a bat script there like this:
@echo off
REM Create output folder if it does not exist
if not exist "adpcm" mkdir adpcm

REM Loop through all mp3 files in current directory
for %%f in (*.mp3) do (
    echo Processing "%%f" ...
    ffmpeg -i "%%f" -ac 1 -ar 32000 -c:a adpcm_ima_wav "adpcm\%%~nf.wav" -y
)

echo All files converted.
pause
run it and it will convert mp3 music tracks to 4-bit ADPCM (not resource hungry format). For very low-spec devices like GCW0 you can try -ac 1 -ar 16000 instead.

Also, for more performance (on low-spec devices) it's better to set options in Retroarch like this:

Quick menu -> Options -> Audio -> Mega Drive/Genesis FM = MAME (YM2612)
Quick menu -> Options -> Audio -> Master System FM (YM2612) = OFF
Quick menu -> Options -> Audio -> Audio Filter = OFF
Quick menu -> Options -> System-> CD add-on = none
Main menu -> Audio -> Synchronization = OFF
Main menu -> Audio -> Resamper = nearest & quality lowest
Main menu -> Setting -> Latency = Audio Latency (ms) = 150




--- Цитата: MicroNut99 от 22 Июля 2025, 20:11:27 ---a 2GB Swap file.
That fixed my RG351P and RPiZero2
Both run great now. No Crashes.

--- Конец цитаты ---
It makes sense to use the core with optimizations by pav13 with wav/adpcm/ogg support.
It needs just ~1GHz CPU and ~190Mb free RAM.
The original core for paprium used mp3 and the miniplayer is very slow and require more RAM, I believe.

Навигация

[0] Главная страница сообщений

[#] Следующая страница

[*] Предыдущая страница

Перейти к полной версии