ПроектыФорумОцените

Space Cobra RetPixMod (12 стр)

Страницы: 19 10 11 12 13 14 Следующая »
#165
5:37, 19 мая 2022

Gradius
> Странно, что на эмуляторе игра вся проходится.

Ну это вообще не странно, эмуляторы редко точно соответствуют железу даже для NES, а для такой сложной штуки как PSP вообще говорить не о чем.
Им главное удовлетворить существующие игры достаточно точно и за этим ворох тонкостей теряется.
Например в соседней теме в исходниках SDL видно, что после софтовой заливки фреймбуфера делается вызов функции а-ля FlushCache. Вероятно не с проста, а потому что видеочип может не увидеть свежие данные от CPU и на экране может появится мельтешение между кадрами. Но эмулятор под x86-64 потеряет эту тонкость однозначно. Зачем ему вообще учитывать кеширование? А что еще может быть - хрен угадаешь, действительно надо пробовать.
В новоделах смешно научились определять не запускается ли образ под эмулятором - куча эмуляторов опрашивает ввод синхронно с обновлением экрана в game loop как это просто предполагает сам дизайн game loop. Но в реальном железе смена состояния порта ввода-вывода может наступить на любом scanline. Аккуратно определяя не кучкуется ли смена состояния кнопок вокруг конкретного сканлайна игры могут прийти к выводу, что работают под эмулятором. :)

#166
8:13, 19 мая 2022

=A=L=X=
> Например в соседней теме в исходниках SDL видно, что после софтовой заливки
> фреймбуфера делается вызов функции а-ля FlushCache. Вероятно не с проста, а
> потому что видеочип может не увидеть свежие данные от CPU и на экране может
> появится мельтешение между кадрами.

Дело в том, что растеризатор видеосистемы читает память напрямую(как DMA) и ему плевать на кеш. А софтовая заливка (или заполнение новыми данными) фреймбуфера может запросто лечь в кеш данных. Поэтому отображаемый кадр будет со старым содержимым или с частично новым содержимым.  Поэтому делают FulshDCache или CleanDCache, чтобы данные с кеша гарантированно попали в память. При таком раскладе растеризатор будет считывать уже актуальные данные, фреймбуфер полностью обновится. 

Таже  самая фигня есть и в ARM.  Есть ещё один путь обхода кеширования:

Объявить регионы видео-памяти некешируемыми(C=0), но буферизованными(B=1). Для ускорения можно включить ещё бит TEX=1. При таком раскладе, во время записи в эту память содержимое будет гарантировано сброшено всё полностью.  Для ускорения - можно использовать memcpy() на инструкциях NEON.  Правда, чтение из этой области будет очень медленным, но для первичного фрейм-буфера это и не требуется.

=A=L=X=
> Но эмулятор под x86-64 потеряет эту тонкость однозначно. Зачем ему вообще
> учитывать кеширование?

На самом деле эмулятор PPSSPP учитывает кеширование.  Проверял так:

src[i]=.... какие-то данные
src[i]=(src[i]>>8)|(src[i]<<8); //меняем местами байты
dst[i]=src[i]; //копируем буфер в видео-память

Так вот, байт-своппинг на эмуляторе не заработал. До тех пор пока не вызвал FlushDcache перед строкой:

dst[i]=src[i]; //копируем буфер в видео-память

Но есть способ сделать проще - без сброса кеша в память:

src[i]=.... какие-то данные
dst[i]=(src[i]>>8)|(src[i]<<8); //копируем буфер в видео-память, предварительно поменяв местами байты

Здесь байт-своппинг сработал и без FlushDcache.

Из всего деляю выводы, что:

1) Эмулятор учитывает кеширование
2) Видео-память не кешируется (dst[])

Аккуратно определяя не кучкуется ли смена состояния кнопок вокруг конкретного сканлайна игры могут прийти к выводу, что работают под эмулятором. :)

Это чтобы простимулировать покупку реальной консоли ? :)

Грустно, но придётся наверное покупать PSP не ниже 2000 (с 64 МБ памяти).

#167
8:40, 19 мая 2022

Gradius
> Так вот, байт-своппинг на эмуляторе не заработал. До тех пор пока не вызвал
> FlushDcache перед строкой:

На x86 это не может так работать. Сдаётся мне тут на деле проявлась многопоточность эмулятора когда из-за разных задержек поток рендера то успевал то не успевал застать обновление памяти.
P.S.
Хотя возможно еще, что это артефакты рендера эмулятора когда фреймбуфер передаётся в текстуру допустим OpenGL и возможно потом достаётся обратно.

#168
9:08, 19 мая 2022

На эмуляторе в режиме PSP-1000 (объём всей ОЗУ 32 МБ) игра идёт не на всех уровнях по причине "тупо не хватает кучи".

Если сделать маллок на 29 МБ(максимальное потребление игры), то лишь только в конфигурации PSP-2000/3000 он завершится с успехом,  потому что там уже 64 МБ ОЗУ.  А в PSP-1000 маллок вернёт NULL.

Забавно, на макетной плате с C6745 (которая применялась для прототипирования консоли  BlackPrism) было ОЗУ всего 32 МБ, и его хватало на нужды игры.  Это ещё раз подчёркивает приемущество BareMetal и монопольным владением всех ресурсов над решениями, основанными на ОС и прочих "паразитах памяти".

На эмуляторе PSP-1000 свободно где-то 16...18 МБ памяти.  Боюсь представить, как эта цифра уменьшится для реальных консолей, на которых установлены всякие демоны, отжирающие и без того малый остаток памяти....  Волей-неволей подумаешь "да ну их фтопку, эти многозадачные ОСи..." но это уже пошёл оффтоп.

#169
21:22, 19 мая 2022

Gradius
> Звуки  и музыка во вступительном ролике есть?

Да, есть. Вступительный ролик работает адекватно.

>Надпись движется? Музыка есть? Затем надпись ушла? Должен был начаться уровень.

Движется. Появляется, исчезает, остаётся белый экран и после этого консоль выключается. Музыка/звук во время движения надписей есть.

>А если в титульнике выбрать "LOAD GAME" и из меню позапускать разные уровни?

Без изменений, если не считать названия уровня перед выключением.

#170
23:27, 19 мая 2022

Gradius
Можешь собрать prx-файл? Я бы глянул через psplink, может там чего полезного увижу.

#171
13:30, 20 мая 2022

Dimich
> Можешь собрать prx-файл? Я бы глянул через psplink, может там чего полезного увижу.

Удалось взять PSP-3008 б/у. Без аккумулятора и карты памяти.  Аккумулятор взял с PSP N-1000, а карту памяти купил новую.

Угробил за всё 4500 р(консоль) + 400 р(карта памяти) + 400 р (такси в оба конца)

Что-то меня эта PSP вымотала изрядно. Я в этих делах новичок.  Пришлось перепрошить официальную прошивку 6.60 на 660PRO-C2.  А аккумулятор неродной: он не заряжается, но его присутствие нужно, иначе перепрошить не получится.

Аккумулятор не видится, подозреваю - проблема в среднем выводе, там должно быть определённое значение сопротивления, которое идентифицирует аккумулятор.  Как это можно обмануть?  Нужно зарядить аккум через PSP и чтобы работало без блока питания.

Всё, что написал  0iStalker увидел своими глазами.  Надо курить что не так...
Ради интереса ещё скачал Open Tyrian (не моя сборка), так он тоже выключает консоль и не играет.

WTF?

2 | Space Cobra RetPixMod 3 | Space Cobra RetPixMod
#172
17:42, 20 мая 2022

0iStalker
> Скачал, распаковал в PSP/GAME. Игра запускается, на New Game отрабатывает
> вступительный ролик с титрами, потом долго что-то грузит с чёрным экраном
> (индикатор бы загрузки туда какой-нибудь со сплэш скрином), показывает экран с
> надписью Level 1-1/Collect all parts, потом показывает белый экран и зависает

Gradius
> Надо курить что не так...

Нашёл причину сего безобразия. Флажок оптимизации -fno-exceptions приводил к таким последствиям. Пересобрал проект без него, теперь игра идёт на всех уровнях.

С питанием консоли проблема: от аккумулятора я отказался, питаю через шнур зарядки. Использовал китайские USB блоки питания 5V. Пробовал три варианта: на 1А, 2А и 2,5А.  Консоль может выключиться в любом месте игры, если выставить громкость звука и яркость подсветки дисплея на максимумы.  Очевидно, у этих блоков питания очень отвратительные динамические характеристики - кратковременные нагрузки в несколько ампер они не выдерживают: идёт просадка напряжения сразу.

Идеален был бы аккумулятор, но там чип стоит.  От чужих аккумуляторов консоль не включается. Или более качественный БП. Ещё мысль от повер-банки запитать ...

Перезалью игру позже с видео-обзором.

#173
8:02, 23 мая 2022

1. Добился работоспособности игры на реальной PSP (тестировал на PSP-3008).
2. Оптимизировал код игры под нужды PSP.
3. Сделал опцию растяжки кадра 400x240 на весь экран 480x272 (с помощью GU).
4. Сделал выход из игры (возврат в ОС).
5. Избавился от SDL2 (бинарник стал меньше).

Скачать игру для PSP(архив обновлён):
https://misterpix.itch.io/spacecobra (при скачивании выбрать архив SpaceCobra_v3.2_PSP.zip ).

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

Управление по умолчанию (изменил на более подходящее для игры на реальной PSP):

UP, DOWN, LEFT, RIGHT: direction of movement (DOWN: crouch, UP: door entry, teleportation)
CROSS: shooting with simple weapons
CIRCLE: jump (DOWN + CIRCLE: fall from platform)
SQUARE: shooting with super weapons (for Cobra: button down, button press + button up)
LTRIGGER: quick change of character
RTRIGGER: mode (jump/salto, sit/stand)
TRIANGLE: full health (if the player has picked up a medical kit)
START: start/pause/safe change character
HOME: exit game

Переопределить клавиши: Joy.ini

Изменить настройки игры: SpaceCobra.ini

Подробности в README.txt

400x240 | Space Cobra RetPixMod

480x272 | Space Cobra RetPixMod
#174
14:07, 28 мая 2022

Сделал новую версию порта игры для PSP.

Список улучшений/исправлений:

1. Частоты ЦП/Шины устанавливаются в игре равными 333 МГц/166 МГц соответственно (это поможет когда используется прошивка CFW 6.60 ME-C2 ).

2. Сделал выход игры через системное диалоговое окно.

3. Немного увеличена производительность графики.

4. Немного уменьшено потребление памяти.

5. Добавлена опция VSync в конфиг-файле.

Скачать обновлённую версию порта:  https://misterpix.itch.io/spacecobra (при скачивании выбрать архив SpaceCobra_v3.2_PSP_28.05.2022.zip ).

По ходу доработки обнаружились такие вещи:

1. Прошивка CFW 6.60 PRO-C2  не позволяет в коде игры ставить частоты ЦП/Шины  (курение его сорцов привело меня к выводу, что точки входа перехвачены). Частоты устанавливаются в самой ОС (кнопка SELECT).

2. Установка частот в прошивке CFW 6.60 ME-C2 не даёт эффекта в игре, зато возможно выставить частоты в коде игры.

3. Частоты ставятся на максимальные, если : scePowerSetClockFrequency(333,333,166).  Если сделать scePowerSetClockFrequency(333,333,167), то будет работать медленно.  Почему - Х.З. Изображение

В настоящее время игра проверялась на обоих прошивках: CFW 6.60 PRO-C2 и CFW 6.60 ME-C2 . Изображение

1 | Space Cobra RetPixMod 2 | Space Cobra RetPixMod
#175
5:47, 1 июня 2022

Подтянули все платформы до версии 3.2(Turbo Edition): PC(Windows/Linux), WEB, Android, PSP.

Скачать актуальную версию игры для PC,Android, PSP: https://misterpix.itch.io/spacecobra

Поиграть в браузере: https://misterpix.itch.io/space-cobra-retpixmod-web-edition

1 | Space Cobra RetPixMod

Gradius
> Сделал новую версию порта игры для PSP.

Отличная работа! Спасибо! :)

#176
2:10, 2 июня 2022

DEN 3D
> Отличная работа! Спасибо! :)

День прожит не зря! 1303 | Space Cobra RetPixMod

Прохождение двух последних уровней игры на PSP:

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

#177
13:25, 7 июня 2022
Изображение Пройденные два первых эпизода вместе с боссами. Изображение

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

Прошло более 1 года
#178
11:45, 20 июня 2023

Открыт 5-й эпизод. Сделали новый уровень: 5-1.

В этом эпизоде игроку доступны 2 персонажа: Кобра и Доминик.

Джейн пропала. Оказалось, что её похитил Саламандер. Он подавляет её волю и настраивает против команды Кобры. Предстоит найти Джейн и попытаться освободить её от влияния Саламандра.

Поиграть в уровень 5-1 можно,
скачав SpaceCobra_v4.0_Windows(WIP).zip с сайта: https://misterpix.itch.io/spacecobra

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры
0 | Space Cobra RetPixMod 1 | Space Cobra RetPixMod

2 | Space Cobra RetPixMod 3 | Space Cobra RetPixMod

#179
12:03, 22 июня 2023

Люблю игры из 90!

Страницы: 19 10 11 12 13 14 Следующая »
ПроектыФорумОцените