| Разработка и ромхакинг > Разработка игр |
| 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: |
| Навигация |
| Главная страница сообщений |
| Предыдущая страница |