Разработка и ромхакинг > Разработка игр
Space Cobra RetPixMod
<< < (6/6)
lupus:
Емнип, на псп homebrew умеют менять частоту цп под себя.

Но, вообще да, странно предъявлять претензии к игре, не соблюдая рекомендации по системным требованиям.
rep-stosw:

--- Цитата: lupus от 25 Май 2022, 08:16:32 ---Емнип, на псп homebrew умеют менять частоту цп под себя.
--- Конец цитаты ---

В принципе, можно копнуть в эту сторону... НО! Внимание, вопрос:

понравится ли пользователям консолей, что приложение меняет системные настройки без их ведома?

Я всё-же, склонен считать, что менять частоту должен сам пользователь через функционал настройки ОС PSP.  И если это не приводит к нужным результатам (в чём я сомневаюсь), то надо менять прошивку на ту, которая это поддерживает или смириться с тем, что есть.

Между нами говоря, запуск игр на PSP в обход её штатных CD-дисков, это незаконно и лишает гарантий.  Вся ответственность за перепрошивку лежит на пользователе.

Я использую хакерскую прошивку 660PRO-C2 на PSP-3008.  До этого стояла официальная прошивка 6.60, которая запрещала запускать игры с Memory stick.
lupus:
Ну, написать в ридми, что на время игры частота CPU будет 333. Полно таких хомбрю было, в том числе эмуляторы других платформ.
Точно не уверен, возможно именно это является причиной того, что при попытке выхода кнопкой HOME консоль срубает.
С другой стороны, решать автору, конечно.
Я, хоть и не играл, благодарен за любые homebrew для старушки psp, это моя первая консоль, ставшая мультимедийным эму комбайном.
rep-stosw:

--- Цитата: lupus от 25 Май 2022, 10:46:24 ---Точно не уверен, возможно именно это является причиной того, что при попытке выхода кнопкой HOME консоль срубает.
--- Конец цитаты ---

Если нажать на HOME (у меня вместо неё - кнопка с логотипом PSP) во время игры, то происходит завершение работы игры с выходом в ОС. 
Без всякой лишней романтики:  выключается звук и гаснет экран... Через несколько секунд оказываемся в ОС.  Ничего лишнего.  :D

Делать всякие "конфирмейшн нотисы" для нубов и сомневающихся, у меня нет ни времени, ни желания. Только тёмные окна DOS  :lol:
ALEX_230_VOLT:
Давайте не начинать выяснение отношений. Основная версия на ПК, а на PSP всего лишь порт, который автор сделал в силу своих знаний и умений.
rep-stosw:
Сделал новую версию порта игры для 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  не позволяет в коде игры ставить частоты ЦП/Шины  (курение его сорцов привело меня к выводу, что точки входа перехвачены)

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

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

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

rep-stosw:

--- Цитата: lupus от 28 Май 2022, 22:10:12 ---Лайк
--- Конец цитаты ---

День прожит не зря!  :) Спасибо!  ^_^


--- Цитата: Yoti от 30 Май 2022, 01:43:31 ---Проверить на несуществующей прошивке, это сильно.
--- Конец цитаты ---

Бред несёшь.




--- Цитата: Yoti от 30 Май 2022, 01:43:31 ---Оказывается, несуществующие режимы не работают, как удивительно!
--- Конец цитаты ---

Кури матчасть.

~\$(PSPSDK)\psp\sdk\include\psppower.h :


--- Цитата ---/**
 * Set Clock Frequencies
 *
 * @param pllfreq - pll frequency, valid from 19-333
 * @param cpufreq - cpu frequency, valid from 1-333
 * @param busfreq - bus frequency, valid from 1-167
 *
 * and:
 *
 * cpufreq <= pllfreq
 * busfreq*2 <= pllfreq
 *
 */
int scePowerSetClockFrequency(int pllfreq, int cpufreq, int busfreq);
--- Конец цитаты ---

И ещё касаемо твоего ехидного коммента, оставленного здесь: https://www.pspx.ru/forum/showthread.php?p=1255910#post1255910
Не подписываются вообще никакие EBOOT.PBP  (не моего производства).  :D Так что мимо кассы.

Ты умудрился как минимум, быть уже трижды не в тему.  :lol:
Yoti:

--- Цитата: rep-stosw от 30 Май 2022, 02:03:39 ---Бред несёшь.
--- Конец цитаты ---
Обведи мне текст "ME-C2" на своём скриншоте?


--- Цитата: rep-stosw от 30 Май 2022, 02:03:39 ---Кури матчасть.
--- Конец цитаты ---
Научись понимать, что теория и практика разные вещи.


--- Цитата: rep-stosw от 30 Май 2022, 02:03:39 ---Не подписываются вообще никакие EBOOT.PBP  (не моего производства).   Так что мимо кассы.

--- Конец цитаты ---
Руки.


--- Цитата: rep-stosw от 30 Май 2022, 02:03:39 ---Ты умудрился как минимум, быть уже трижды не в тему.
--- Конец цитаты ---
В аттаче тестовая софтина, написанная за минуту-две. E1008 6.61 PROMOD-C2p & LME-2.3 -- всё работает.
Смена частот происходит на любом (из двух) кастоме, согласно выводу scePowerGet[Bus|Cpu]ClockFrequency.
rep-stosw:

--- Цитата: Yoti от 30 Май 2022, 02:21:33 ---В аттаче тестовая софтина, написанная за минуту-две. E1008 6.61 PROMOD-C2p & LME-2.3 -- всё работает.
Смена частот происходит на любом (из двух) кастоме, согласно выводу scePowerGet[Bus|Cpu]ClockFrequency.
--- Конец цитаты ---


--- Цитата ---   printf("scePowerGetCpuClockFrequency: %d\n", scePowerGetCpuClockFrequency());
   printf("scePowerGetBusClockFrequency: %d\n", scePowerGetBusClockFrequency());

--- Конец цитаты ---

Всегда даёт 222/111 МГц, несмотря на то, что CPU CLOCK XMB и GAME могут отличаться.


--- Цитата ---         if (flag)
            scePowerSetClockFrequency(222, 222, 111);
         else
            scePowerSetClockFrequency(333, 333, 166);

--- Конец цитаты ---

Переключение частот происходит только с 6.60 ME.  В 6.60 PRO C2 переключение частот не происходит, хотя функция возвращает успех(=0).

Консоль та же PSP-3008.  :D


--- Цитата: Yoti от 30 Май 2022, 02:21:33 ---Научись понимать, что теория и практика разные вещи.
--- Конец цитаты ---

Никакой теории, только практика. Раз в хедере SDK заявлена возможность переключения на 167 МГц, то значит должно быть 167. Иначе - отбить руки программисту, который этот камент  оставил.

А то выходит, что там может быть и 165, вместо желаемых 166.6666...

Курим буржуй-форумы: https://forums.ps2dev.org/viewtopic.php?p=52329  :)

И вообще, что за тайна сего мрака?  MIPS R4000.   Отсутствует внятное описание регистров PLL, которыми можно установить частоты ЦП/шины.   И не обязательно 333/166.   А например   340/170 МГц.  :-\

Смотрел R4400_Uman_book_Ed2.pdf  и playstationportable.pdf - в обоих не нашёл упоминания о регистрах PLL.  Может плохо искал? :biggrin:
Yoti:

--- Цитата: rep-stosw от 30 Май 2022, 07:08:30 ---Всегда даёт 222/111 МГц, несмотря на то, что CPU CLOCK XMB и GAME могут отличаться.
--- Конец цитаты ---
PSP-3008 6.61 PRO-C2:
rep-stosw:

--- Цитата: Yoti от 30 Май 2022, 21:52:26 ---PSP-3008 6.61 PRO-C2:
--- Конец цитаты ---

У меня так же. Только это всего-лишь картинка.  С радостными бравадами о том, что частота меняется.  А на самом деле она как была установлена до запуска этой программы, так и остаётся неизменной.  :D


--- Код: ---/*
 * This file is part of PRO CFW.

 * PRO CFW is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.

 * PRO CFW is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with PRO CFW. If not, see <http://www.gnu.org/licenses/ .
 */

#include <pspsdk.h>
#include <pspsysmem_kernel.h>
#include <pspkernel.h>
#include <psputilsforkernel.h>
#include <psppower.h>
#include <stdio.h>
#include <string.h>
#include "main.h"
#include "utils.h"
#include "systemctrl.h"
#include "printk.h"
#include "libs.h"

static const int g_cpu_list[] = {
20, 75, 100, 133, 166, 222, 266, 300, 333
};

static int g_fake_pll = 222;
static int g_fake_cpu = 222;
static int g_fake_bus = 111;

typedef struct _PowerFuncRedir {
u32 nid;
void *fp;
} PowerFuncRedir;

static u32 g_scePowerSetClockFrequency_orig;

static int myPowerGetPllClockFrequencyInt(void)
{
printk("%s: %d/%d/%d\n", __func__, g_fake_pll, g_fake_cpu, g_fake_bus);

return g_fake_pll;
}

static float myPowerGetPllClockFrequencyFloat(void)
{
printk("%s: %d/%d/%d\n", __func__, g_fake_pll, g_fake_cpu, g_fake_bus);

return g_fake_pll;
}

static int myPowerGetCpuClockFrequency(void)
{
printk("%s: %d/%d/%d\n", __func__, g_fake_pll, g_fake_cpu, g_fake_bus);

return g_fake_cpu;
}

static float myPowerGetCpuClockFrequencyFloat(void)
{
printk("%s: %d/%d/%d\n", __func__, g_fake_pll, g_fake_cpu, g_fake_bus);

return g_fake_cpu;
}

static int myPowerGetBusClockFrequency(void)
{
printk("%s: %d/%d/%d\n", __func__, g_fake_pll, g_fake_cpu, g_fake_bus);

return g_fake_bus;
}

static float myPowerGetBusClockFrequencyFloat(void)
{
printk("%s: %d/%d/%d\n", __func__, g_fake_pll, g_fake_cpu, g_fake_bus);

return g_fake_bus;
}

static int myPowerSetClockFrequency(int pllfreq, int cpufreq, int busfreq)
{
g_fake_pll = pllfreq;
g_fake_cpu = cpufreq;
g_fake_bus = busfreq;
printk("%s: %d/%d/%d\n", __func__, g_fake_pll, g_fake_cpu, g_fake_bus);

return 0;
}

static int myPowerSetCpuClockFrequency(int cpufreq)
{
g_fake_cpu = cpufreq;
printk("%s: %d/%d/%d\n", __func__, g_fake_pll, g_fake_cpu, g_fake_bus);

return 0;
}

static int myPowerSetBusClockFrequency(int busfreq)
{
g_fake_bus = busfreq;
printk("%s: %d/%d/%d\n", __func__, g_fake_pll, g_fake_cpu, g_fake_bus);

return 0;
}

static inline u32 find_power_function(u32 nid)
{
return sctrlHENFindFunction("scePower_Service", "scePower", nid);
}

static PowerFuncRedir g_power_func_redir[] = {
{ 0x737486F2, myPowerSetClockFrequency },
{ 0x545A7F3C, myPowerSetClockFrequency },
{ 0xEBD177D6, myPowerSetClockFrequency },
{ 0xA4E93389, myPowerSetClockFrequency },
{ 0x469989AD, myPowerSetClockFrequency },
{ 0x843FBF43, myPowerSetCpuClockFrequency },
{ 0xB8D7B3FB, myPowerSetBusClockFrequency },
{ 0x34F9C463, myPowerGetPllClockFrequencyInt },
{ 0xEA382A27, myPowerGetPllClockFrequencyFloat },
{ 0xFEE03A2F, myPowerGetCpuClockFrequency },
{ 0xB1A52C83, myPowerGetCpuClockFrequencyFloat },
{ 0x478FE6F5, myPowerGetBusClockFrequency },
{ 0x9BADB3EB, myPowerGetBusClockFrequencyFloat },
};

void SetSpeed(int cpuspd, int busspd)
{
int (*_scePowerSetClockFrequency)(int, int, int);
u32 fp;
int i;

for(i=0; i<NELEMS(g_cpu_list); ++i) {
if(cpuspd == g_cpu_list[i])
break;
}

if(i >= NELEMS(g_cpu_list)) {
return;
}

fp = find_power_function(0x737486F2);
g_scePowerSetClockFrequency_orig = fp;
_scePowerSetClockFrequency = (void*)fp;
_scePowerSetClockFrequency(cpuspd, cpuspd, busspd);

if (sceKernelApplicationType() == PSP_INIT_KEYCONFIG_VSH) {
hook_import_bynid(sctrlKernelFindModuleByName("vsh_module"), "scePower", 0x469989AD, NULL, 1);
return;
}

for(i=0; i<NELEMS(g_power_func_redir); ++i) {
fp = find_power_function(g_power_func_redir[i].nid);

if(fp != 0) {
REDIRECT_FUNCTION(g_power_func_redir[i].fp, fp);
} else {
printk("%s: scePower_%08X not found\n", __func__, (uint)g_power_func_redir[i].nid);
}
}
}

void sctrlHENSetSpeed(int cpuspd, int busspd)
{
int (*_scePowerSetClockFrequency)(int, int, int);

g_scePowerSetClockFrequency_orig = find_power_function(0x545A7F3C); /* scePowerSetClockFrequency */
_scePowerSetClockFrequency = (void *) g_scePowerSetClockFrequency_orig;
_scePowerSetClockFrequency(cpuspd, cpuspd, busspd);
}

--- Конец кода ---

Забавно, да?  :lol:

SavitarSvit:
Этой 16 битной 2D игре нужно 333 MHz?  0_0  Зачем?
Вон человек первый Томб Райдер на 3DO с её 12.5 MHz оптимизировал.
MisterPix:
Подтянули все платформы до версии 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




--- Цитата: rep-stosw от 10 Май 2022, 11:04:36 ---Вышла новая версия игры Space Cobra RetPixMod 3.2 Turbo Edition.
--- Конец цитаты ---

Отличная работа!  :thumbup: Так держать!  :hi:
rep-stosw:
 :) Прохождение двух последних уровней  :)



--- Цитата: SavitarSvit от 31 Май 2022, 17:38:53 ---Вон человек первый Томб Райдер на 3DO с её 12.5 MHz оптимизировал.
--- Конец цитаты ---

И чо? А тут с нуля игра пишется под SEGA с её менее, чем 8 MHz.  :lol:


--- Цитата: SavitarSvit от 31 Май 2022, 17:38:53 ---Этой 16 битной 2D игре нужно 333 MHz?  0_0  Зачем?
--- Конец цитаты ---

А ты включи головушку и подумай... :wacko:


--- Цитата: MisterPix от 01 Июнь 2022, 05:35:47 ---Отличная работа!  :thumbup: Так держать!  :hi:
--- Конец цитаты ---

Ещё один день прожит не зря!  :nyam:

rep-stosw:
 :biggrin: Пройденные два первых эпизода вместе с боссами.  :oldgamer:

Навигация
Главная страница сообщений
Предыдущая страница

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