Просмотр полной версии : HostCore 1.2.1 - Используем файловую систему ПК на PSP
HostCore
HostCore - это плагин , позволяющий использовать цифровой контент на PSP с компьютера посредством USB подключения или Wi-Fi. Возможно использование аудио, видео, фото файлов, а также ISO/CSO с использованием сохранений с ПК, а также Homebrew
Внимание: ISO игры работают только со вставленым в UMD диском в режиме "Normal"
Установка:
Скачайте HostCore 1.2.1 (http://www.pspx.ru/forum/attachment.php?attachmentid=2373&stc=1&d=1301314846)
Разархивируйте в удобное вам место.
Папку HostCore положите в корень карты памяти.
В файл vsh.txt из папки seplugins пропишите:
ms0:/HostCore/hostcore.prx 1
!Важно! Если у вас включен какой либо другой плагин с использованием клавиши нотка, например скриншотер, то его следует отключить либо изменить клавишу включения плагина. Об этом читайте ниже.
Всё плагин установлен...
Использование:
В папки ISO, PICTURE, MUSIC, VIDEO, PSP\GAME, PSP\THEME, PSP\SAVEDATA кладем соответствующий контент.
Вставляем USB шнур во включеную psp, но не включаем USB соиденение (перед этим отключите автоподключение в настройках системы).
Качаем архив (http://www.pspx.ru/forum/attachment.php?attachmentid=2371&stc=1&d=1301314591)!
На компьютере запускаем usbhostfs.exe (http://www.2alien.info/stuff/usbhostfs_win.zip)
!Важно! Если при попытке запустить файл usbhostfs.exe (пункт номер 3, главы "Приводим всё это в действие) вылазит ошибка: "Не удалось найти файл libusb0.dll", то просто копируем этот файл из папки "PSP-Type B" из архива в папку Windows).
На psp нажимаем нотку.
Жмем стрелку в право.
На компьютере появится установка драйвера для устройства "PSP TYPE B". Указываем путь к папке PSP TYPE B и устанавливаем драйвер.
На psp заходим в меню Игра => Карта памяти.
Смотрим результат =)
В файле конфигурации вы можете менять клавишу активации плагина и настройки беспроводного подключения.
По умолчанию клавиша активации Quick Key "800000", то есть нотка. Так же можно использовать комбинации клавиш. Для этого следует умножить их Хекс-номера. Например селект(000001) и левый шифт(000100) - получаем 000101, это и следует вписывать в параметр Quick Key.
В настройках подключения есть 5 параметров:
IP компьютера (Если вы его не знаете сделайте следующее "Пуск - выполнить - cmd - ipconfig".)
Порт соиденения;
Пароль;
Количество соединений;
Количество передаваемой информации.
Источник 1 (http://bbs.pspchina.net/)
Исходный код (http://code.google.com/p/hostcore-psp/) или 9869
жаль, попробовал на прошивке 4.01 М33-2... Плагин не заработал...
У кого на этой прошивке он работает?
Уже вышел Host Core 1.2b и он точно на этой проше работает...
PhoeniX-LIFE
23.10.2008, 18:24
У меня все нормально работает через юсб, прошивка 4.01 М33-2!
п.с. Щас попробую через вафлю!
Пока ничего не вышло, а жаль!
psixokomatoz
27.12.2009, 21:39
чё-то не пашет ни на 5.03GEN-C, ни на CFW 3.70 ^^(
DARK-MAN-X
23.11.2010, 00:31
Извиняюсь за некропост однако...
По wi-fi отлично всё работает.
Только вот при запуске игры идёт идёт разрыв соеденения.
как же быть?
И какой Block Size лучше ставить?
TerraDor
07.04.2011, 19:51
Ща попробую=))))
shaggoth
25.05.2011, 19:18
млеать. а без диска совсем никак?
DARK-MAN-X
25.05.2011, 19:39
shaggoth, через USB только
http://www.pspx.ru/forum/showthread.php?t=77900
shaggoth
25.05.2011, 21:00
нет, это не то совсем :( жаль шыт.
Вроде когда-то по usb без диска через irshell играл. Или путаю чего.
ps хотя на pspfaqs пишут, что и hostcore поддерживает хотя бы M33 driver. Странно.
DARK-MAN-X
26.05.2011, 17:37
alex90, я проверял. игры не запускаются ни на irshell ни на hostcore
как его запустить на 6,39pro? поставил фюз 1 в vsh.txt и виртуалка через этот плагин вобше не запускается
DARK-MAN-X
30.06.2011, 01:25
lazard, никак на 6.39
есть ли какая-нибудь альтернатива для wifi?
консоль 4g
DARK-MAN-X
30.06.2011, 11:30
lazard, нет.....вроде.......хотя точно нет! к сожалению
Xandr_Log
05.07.2011, 22:07
эм... это я дурак, или в архиве правда нету папки PSP-Type B?
Ну если что: http://www.pspx.ru/forum/showthread.php?p=969848#post969848
lazard, никак на 6.39
а если 6,20?
DARK-MAN-X
06.07.2011, 17:46
lazard, не уверне что даже нормально будет работать на 5.50
ErikPshat
01.04.2014, 20:56
Ну в шапке есть ссылка на исходный код. Так что юзайте исходники и играйтесь хоть на 6.60.
Ну в шапке есть ссылка на исходный код. Так что юзайте исходники и играйтесь хоть на 6.60.
какую строчку там менять надо?
Иршелл с его нетхостами так никто и не переплюнул... А жаль.
karenjan99
13.06.2016, 17:56
кто нить может компилить его для 6.61? или может есть альтернатива? а то это вроде единственный с wifi
ErikPshat
14.06.2016, 15:31
karenjan99, да, там много нидах завязано на версии прошивок. Смотри файл syspatch.c.
karenjan99
14.06.2016, 15:45
ErikPshat, да уже посмотрел но мне не понятно что это и на что заменить
ErikPshat
14.06.2016, 16:03
karenjan99, ну берёшь PRXTool 1.1 by TyRaNiD (http://www.pspx.ru/forum/showthread.php?t=85874), дизассемблишь файлы известных прошивок и ищешь там известные НИД-ы. Потом находишь в том же месте изменившиеся НИД-ы в 6.61
/*
* syspatch.c is part of HostCore
* Copyright (C) 2008 Poison
*
* This program 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.
*
* This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*
* De******ion:
* Author: Poison <hbpoison@gmail.com>
* Date Created: 2008-05-15
*/
#include <pspkernel.h>
#include <pspsdk.h>
#include <psputilsforkernel.h>
#include <pspsysmem_kernel.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "utils.h"
int fw_version = FW_371;
int model = PSP_MODEL_STANDARD;
int ( * getDevkitVersion )( void );
int initPatches( void )
{
getDevkitVersion = ( void * )findProc( "sceSystemMemoryManager", "SysMemUserForUser", 0x3FC9AE6A );
fw_version = getDevkitVersion();
model = sceKernelGetModel();
//Disable slim specific patches
model = PSP_MODEL_STANDARD;
return fw_version;
}
unsigned int getFindDriverAddr( void )
{
tSceModule * pMod = ( tSceModule * )sceKernelFindModuleByName( "sceIOFileManager" );
unsigned int addr = 0;
if ( !pMod )
return 0;
if ( fw_version == FW_371 )
addr = pMod->text_addr + 0x00002844;
else if ( fw_version == FW_380 || fw_version == FW_390 )
addr = pMod->text_addr + 0x00002808;
else if ( fw_version == FW_401 )
addr = pMod->text_addr + 0x000027EC;
else if ( fw_version == FW_500 || fw_version == FW_550 )
addr = pMod->text_addr + 0x00002838;
return addr;
}
void getCtrlNids( unsigned int * nid )
{
if ( fw_version == FW_371 )
{
nid[0] = 0x454455ac; //sceCtrlReadBufferPositive
nid[1] = 0xc4aad55f; //sceCtrlPeekBufferPositive
}
else if ( fw_version == FW_380 || fw_version == FW_390 )
{
nid[0] = 0xad0510f6;
nid[1] = 0xd65d4e9a;
}
else if ( fw_version == FW_401 )
{
nid[0] = 0xBA664B5E;
nid[1] = 0x591B3F36;
}
else if ( fw_version == FW_500 || fw_version == FW_550 )
{
nid[0] = 0x919215D7;
nid[1] = 0x6B247CCE;
}
}
void getUtilsNids( unsigned int * nid )
{
if ( fw_version == FW_371 )
{
nid[0] = 0xa3d5e142; //sceKernelExitVSHVSH
nid[1] = 0xd9739b89; //sceKernelUnregisterExitCallback
nid[2] = 0x659188e1; //sceKernelCheckExitCallback
nid[3] = 0x49C5B9E1; //sceKernelLoadModuleForLoadExecVSHMs2
nid[4] = 0xa1a78C58; //sceKernelLoadModuleForLoadExecVSHDisc
}
else if ( fw_version == FW_380 || fw_version == FW_390 )
{
nid[0] = 0x62879ad8;
nid[1] = 0xf1c99c38;
nid[2] = 0x753ef37c;
nid[3] = 0x42ED1407;
nid[4] = 0xc8f0090d;
}
else if ( fw_version == FW_401 )
{
nid[0] = 0xCA8011A2;
nid[1] = 0x5AF87B62;
nid[2] = 0x6274D0D5;
nid[3] = 0x313F2757;
nid[4] = 0x83B28C87;
}
else if ( fw_version == FW_500 || fw_version == FW_550 )
{
nid[0] = 0x94A1C627;
nid[1] = 0x71F9FB1B;
nid[2] = 0x2E96EDF8;
nid[3] = 0xB8E49712;
nid[4] = 0x7C8A2B62;
}
}
unsigned int getKillMutexNid()
{
return 0xf8170fbe;
}
void getDisplayNids( unsigned int * nid )
{
if ( fw_version == FW_371 )
{
nid[0] = 0xe56b11ba;
nid[1] = 0x7fba941a;
}
else if ( fw_version == FW_380 || fw_version == FW_390 )
{
nid[0] = 0x3749cda0;
nid[1] = 0xc89e1f1d;
}
else if ( fw_version == FW_401 )
{
nid[0] = 0xC28EFAA7;
nid[1] = 0xC922270C;
}
else if ( fw_version == FW_500 || fw_version == FW_550 )
{
nid[0] = 0xD8D2FD35;
nid[1] = 0xFBDA7A1E;
}
}
void patchMemPartitionInfo()
{
if ( model == PSP_MODEL_STANDARD ) sceKernelSetDdrMemoryProtection( ( void * )0x88300000, 0x00100000, 0xf );
else sceKernelSetDdrMemoryProtection( ( void * )0x88600000, 0x00200000, 0xf );
tSceModule * pMod = ( tSceModule * )sceKernelFindModuleByName( "sceSystemMemoryManager" );
// 0x02001021 move $v0 $s0
int offset = 0x00001304;
if ( fw_version == FW_371 || fw_version == FW_380 || fw_version == FW_390 )
{
offset = 0x00001304; //for 3.71, 3.80, 3.90
}
else if ( fw_version == FW_401 )
{
offset = 0x00003A68; //for 4.01
}
else if ( fw_version == FW_500 || fw_version == FW_550 )
{
offset = 0x00003AA8; //for 5.00
}
_sw( 0x02001021, pMod->text_addr + offset );
sceKernelIcacheInvalidateAll();
sceKernelDcacheWritebackInvalidateAll();
PspSysmemPartitionInfo info;
memset( &info, 0, sizeof( PspSysmemPartitionInfo ) );
info.size = sizeof( PspSysmemPartitionInfo );
PspSysmemPartitionInfo * p_info = ( PspSysmemPartitionInfo * )sceKernelQueryMemoryPartitionInfo( 4, &info );
if ( model == PSP_MODEL_STANDARD ) p_info->startaddr = 0x08300000;
else p_info->startaddr = 0x08600000;
p_info->attr = 0xf;
//restore
_sw( 0x00001021, pMod->text_addr + offset );
sceKernelIcacheInvalidateAll();
sceKernelDcacheWritebackInvalidateAll();
}
typedef struct PatchSav
{
unsigned int addr;
unsigned int val;
} PatchSav;
PatchSav LoadExecVSHCommon_ori[2];
void restoreLoadExecVSHCommon()
{
_sw( LoadExecVSHCommon_ori[0].val, LoadExecVSHCommon_ori[0].addr );
_sw( LoadExecVSHCommon_ori[1].val, LoadExecVSHCommon_ori[1].addr );
sceKernelIcacheInvalidateAll();
sceKernelDcacheWritebackInvalidateAll();
}
void * patchLoadExecVSHCommon( void * func )
{
tSceModule * pMod = ( tSceModule * )sceKernelFindModuleByName( "sceLoadExec" );
if ( fw_version == FW_371 )
LoadExecVSHCommon_ori[0].addr = pMod->text_addr + 0x0000121c; //same in standare/slim
else if ( fw_version == FW_380 || fw_version == FW_390 )
LoadExecVSHCommon_ori[0].addr = pMod->text_addr + 0x000014cc; //same in standare/slim
else if ( fw_version == FW_401 )
LoadExecVSHCommon_ori[0].addr = pMod->text_addr + 0x00001E1C; //same in standare/slim
else if ( fw_version == FW_500 )
LoadExecVSHCommon_ori[0].addr = pMod->text_addr + 0x00001E58; //verified in phat
else if ( fw_version == FW_550 )
LoadExecVSHCommon_ori[0].addr = pMod->text_addr + 0x00001F3C; //same on slim & phat
LoadExecVSHCommon_ori[1].addr = LoadExecVSHCommon_ori[0].addr + 4;
LoadExecVSHCommon_ori[0].val = _lw( LoadExecVSHCommon_ori[0].addr );
LoadExecVSHCommon_ori[1].val = _lw( LoadExecVSHCommon_ori[1].addr );
MAKE_JUMP( LoadExecVSHCommon_ori[0].addr, func );
_sw( NOP, LoadExecVSHCommon_ori[1].addr );
sceKernelIcacheInvalidateAll();
sceKernelDcacheWritebackInvalidateAll();
return ( void * )LoadExecVSHCommon_ori[0].addr;
}
unsigned int modulemgr_offset = 0, threadman_offset = 0;
void wifiModulesPatch1()
{
tSceModule * pMod = ( tSceModule * )sceKernelFindModuleByName( "sceThreadManager" );
//a0 = 4, change partition id to 4
if ( fw_version == FW_371 )
threadman_offset = 0x00010B30;
else if ( fw_version == FW_380 || fw_version == FW_390 )
threadman_offset = 0x00010CB8;
else if ( fw_version == FW_401 )
threadman_offset = 0x00012154;
else if ( fw_version == FW_500 || fw_version == FW_550 )
threadman_offset = 0x000121E0;
_sw( 0x34040004, pMod->text_addr + threadman_offset );
pMod = ( tSceModule * )sceKernelFindModuleByName( "sceModuleManager" );
//a3 stack size 0x40000 -> 0x10000
if ( fw_version == FW_371 )
modulemgr_offset = 0x000076A0;
else if ( fw_version == FW_380 || fw_version == FW_390 )
modulemgr_offset = 0x00007C9C;
else if ( fw_version == FW_401 )
modulemgr_offset = 0x00007C50;
else if ( fw_version == FW_500 )
modulemgr_offset = 0x00007C84;
//added for 5.50
else if ( fw_version == FW_550 )
modulemgr_offset = 0x00007F80;
_sw( 0x3C070001, pMod->text_addr + modulemgr_offset );
sceKernelIcacheInvalidateAll();
sceKernelDcacheWritebackInvalidateAll();
}
void wifiModulesPatch2()
{
if ( fw_version == FW_550 ) {
//module renamed to sceNet_Service in 5.50
tSceModule * pMod = ( tSceModule * )sceKernelFindModuleByName( "sceNet_Service" );
//a2 partid = 4 of ifhandle
_sw( 0x34050004, pMod->text_addr + 0x000014D8 ); //for 5.50
} else {
tSceModule * pMod = ( tSceModule * )sceKernelFindModuleByName( "sceNetInterface_Service" );
_sw( 0x34050004, pMod->text_addr + 0x00001440 ); //for 3.71, 3.80, 3.90, 4.01, 5.00
}
tSceModule * pMod = ( tSceModule * )sceKernelFindModuleByName( "sceNet_Library" );
unsigned int net_offset = 0;
if ( fw_version == FW_371 || fw_version == FW_380 || fw_version == FW_390 )
net_offset = 0x00001800;
else if ( fw_version == FW_401 )
net_offset = 0x00002320;
else if ( fw_version == FW_500 || fw_version == FW_550 )
net_offset = 0x00002348;
_sw( 0x34020002, pMod->text_addr + net_offset );
_sw( 0xAFA20000, pMod->text_addr + net_offset + 0x4 );
_sw( 0x3C020000, pMod->text_addr + net_offset + 0xC );
pMod = ( tSceModule * )sceKernelFindModuleByName( "sceModuleManager" );
//a3 stack size 0x10000 -> 0x4000
_sw( 0x34074000, pMod->text_addr + modulemgr_offset );
sceKernelIcacheInvalidateAll();
sceKernelDcacheWritebackInvalidateAll();
}
void wifiModulesPatch3()
{
tSceModule * pMod = ( tSceModule * )sceKernelFindModuleByName( "sceModuleManager" );
//restore
_sw( 0x02403821, pMod->text_addr + modulemgr_offset );
pMod = ( tSceModule * )sceKernelFindModuleByName( "sceThreadManager" );
//restore
_sw( 0x02402021, pMod->text_addr + threadman_offset );
sceKernelIcacheInvalidateAll();
sceKernelDcacheWritebackInvalidateAll();
}
karenjan99
14.06.2016, 16:53
о спасибо, а я искал как найти эти нид-ы
karenjan99 добавил 14.06.2016 в 16:38
а случаем не найдется файлы 5.00?
karenjan99 добавил 14.06.2016 в 16:53
сорри еще вопросик а для NID-ов prx надо перегнать через файл xmlfile.bat?
ErikPshat
14.06.2016, 16:59
Устанавливаешь компилятор для PSP: Minimalist PSPSDK for Windows (http://www.pspx.ru/forum/showthread.php?t=90993)
Распаковываешь в папку документации компилятора уже готовые НИД-ы до 5.00 SilverSpring's PSP PRX LibDoc's (http://www.pspx.ru/forum/showthread.php?t=104558).
Путь должен получится какой-то такой: C:\pspsdk\doc\pspsdk\silverspring.lan.st\
Поиск по НИД-ам производишь с помощью программы Replace Studio v7.17 Professional Edition (http://www.pspx.ru/forum/showthread.php?t=106131)
а случаем не найдется файлы 5.00?
Уже декриптованные файлы можешь найти в БАЗЕ (http://www.pspx.ru/forum/showthread.php?t=64180).
Или можешь сам извлечь (http://www.pspx.ru/forum/showthread.php?t=82925) и декриптовать (http://www.pspx.ru/forum/showthread.php?t=84326) необходимые инсталляторы официальных прошивок (http://www.pspx.ru/forum/showthread.php?t=64223).
сорри еще вопросик а для NID-ов prx надо перегнать через файл xmlfile.bat?
Нет, его (PRX) нужно дизассемблировать через 17. DISASM.bat или 22. DISASM & DISOPTS & FUNCS.bat. Я не помню, как там точно этот пункт называется в той версии, т.к. у меня раздробленная версия на более мелкие операции и названия файлов уже совсем другие. Короче, там должно быть в названии слово DISASM.
Очистка результатов работы производится батником 00. CLEAR ALL.BAT
karenjan99
14.06.2016, 17:14
спасибо разберусь сегодня :)
ErikPshat
14.06.2016, 18:08
karenjan99, если ты правильно установишь SilverSpring's PSP PRX LibDoc's, то потом можешь запускать справку PSPSDK через:
C:\pspsdk\doc\pspsdk.html
или
C:\pspsdk\doc\pspsdk\index.html
или
C:\pspsdk\doc\pspsdk\silverspring.lan.st\default.html
Ну это чисто для визуального чтения функций.
А для поиска нужных НИД-ов юзай Replace Studio
В поле "Путь" указывай на папку:
C:\pspsdk\doc\pspsdk\silverspring.lan.st
В поле "Маска файлов" выставь *.xml (т.е. искать в файлах с любым именем и с XML расширением после точки, т.к. все НИД-ы прописаны в XML файлах)
В поле "Найти" забивай номер НИД-а без нуля в начале (0x).
Потом нажимай синий бинокль для поиска.
Будь осторожен, если случайно нажмёшь на фиолетовый бинокль, то будет происходить замена на то, что прописано в поле "Заменить", даже если там пусто, то заменится на пусто :), т.е. удалится искомое. Хотя там настройки должны стоять так, что перед заменой будет выводится запрос на выполнение.
karenjan99
14.06.2016, 18:40
сейчас все поставлю и попробую , если получится конечно:lol:
ErikPshat
14.06.2016, 18:42
Не забудь отметить свойство "Искать в подпапках"
11337
А что там получаться? Всё легко и просто. По названию функции в версии 5.00 из исходников, ты находишь её и можно догадаться название PRX файла. Потом дизассемблишь PRX и находишь через текстовый редактор этот NID. Потом дизассемблишь этот же файл от прошивки 6.61 и ищешь тоже самое место по схожему окружению и определяешь новый NID. Потом заменяешь все НИД-ы от 6.61 в исходнике и компилируешь командой "make" в той папке исходников, где находится файл "Makefile".
Правда я скачал исходники отсюда: https://code.google.com/archive/p/hostcore-psp/source/default/source
karenjan99
14.06.2016, 19:01
компилятор поставил дальше с архива папку pspsdk полностью копировать в папку doc? эти файлы md5 html map всё надо копировать туда?
karenjan99 добавил 14.06.2016 в 19:01
сорри а тупость при открытии ехе Replace Studio винда требует пароль, вообще то никаког пароля я не поставил на винде:) что делать?:D smartscreen предотвратил запуск бла бла бла требуется уттверждение администратором :)
ErikPshat
14.06.2016, 19:12
при открытии ехе Replace Studio винда требует пароль
Хех, ну так это же обычная программа, устанавливается точно так же, как и все обычные программы.
Ты когда-нибудь ставил программы? :D
Ну просто соглашайся на установку. Может требует не пароль, а цифровую подпись, т.к. инсталлятор же не подписан официально.
Либо запускай от имени Администратора.
karenjan99
14.06.2016, 19:19
ErikPshat, не не я даже не установил просто когда открыл установщик винда требовала утверждение админа паролем отключил smartscreen на пять минут все пошло:D
ну а теперь
компилятор поставил дальше с архива папку pspsdk полностью копировать в папку doc? эти файлы md5 html map всё надо копировать туда?:D
ErikPshat
14.06.2016, 19:21
smartscreen
Какой нахрен smartscreen :xDD: ну ты же знаешь, когда запускаешь кейгены или любые взломанные программы, то такие вот smartscreen-ы и прочие фильтры и антивирусы обычно всегда ругаются и блокируют, т.к. разработчики программ постоянно жалуются производителям антивирусов на патчи, кейгены, взломанные программы, которые находят в сети, а те, в свою очередь, заносят сигнатуры этих программ в базу данных своих антивирусов, которые потом ругаются.
Не, ну это же ты должен сам знать и понимать. Антивирусы и всякие блокировщики smartscreen-ы, нужно отключать перед установкой программы, если они проявили такой интерес к заведомо чистой программе.
А так же понимать, что я, как админ ресурса, не буду пихать в свои сборки всякие вирусы, за чистоту своих сборок отвечаю!
karenjan99
14.06.2016, 19:25
ErikPshat, да нет сам не пользуюсь антивирусами, а вот smartscreen до сех пор не знал что эт такое:lol: никогда при открытии еще не мешала. я то думал отключением defendera все проблемы ушли от меня оказывается в винде есть еще один хрен:lol:
ErikPshat
14.06.2016, 19:28
с архива папку pspsdk полностью копировать в папку doc? эти файлы md5 html map всё надо копировать туда?
Эмм, ты архив распакуй снаружи на рабочий стол. Думаю ты должен знать, как работать с архивами. Я обычно открываю архивы в архиваторе и смотрю, что там внутри. Если там отдельная папка, то я её извлекаю. А если там сразу куча папок и файлов, то я извлекаю архив снаружи в "название папки", чтобы все файлы и папки изнутри не рассыпались по всему рабочему столу или где бы то ни было.
Потом ты сверяешь структуру каталогов этого распакованного архива со структурой каталогов в C:\pspsdk\doc
Тут думаю должно быть понятно, что структура должна сойтись точно так же, как я написал пути выше в сообщении: http://www.pspx.ru/forum/showpost.php?p=1103468&postcount=31
karenjan99
15.06.2016, 00:45
сразу не заметил что остальные присутствуют в папке pspsdk, осталось найти НИД-Ы :D
karenjan99 добавил 14.06.2016 в 19:52
мда уж небольшая проблемка карта памяти еще не пришла с алиекспреса:D с 32мб картой я точно декриптую файлы. по одному:lol:
качал файлы для 6.60 вот думаю попробовать на 6.60?
karenjan99 добавил 14.06.2016 в 19:54
если найдется время декриптуй файлы 6.61 заодно и в базе будет:blush:
karenjan99 добавил 14.06.2016 в 23:30
ErikPshat, можешь выложить конфиг редактора? я чет не мог разобратся и сделать так чтоб оффсеты подсвечивались
karenjan99 добавил 15.06.2016 в 00:45
так вот нашел пока двое.
в syspatch 0x919215D7 (строка87) 0x6B247CCE(строка88) нашел в файле от 5.00 ctrl.prx открыл DISASM & DISOPTS & FUNCS создались несколько текстовиков один из них 17_DISASM_wiXDRSMW размер у него самый большой искать надо в нем? я искал в другом и нашел :)
потом тоже самое сделал с ctrl.prx от 6.60 в нем нашел ту же строку scepeekbuffer и т.д
надеюсь все правильно?
http://i79.fastpic.ru/big/2016/0615/5e/3b42eb7a394d0d995f2c342535b91f5e.png
ErikPshat
15.06.2016, 02:21
если найдется время декриптуй файлы 6.61 заодно и в базе будет
ОК, выложил в базе. Ну они 6.60 и 6.61 мало чем отличаются.
Можешь сам сравнить папки от 6.60 и от 6.61 с помощью Araxis Merge Professional (http://www.pspx.ru/forum/showthread.php?t=93387). Слева наверху в меню выбираешь сравнение папками и указываешь в окнах на папки. Делаешь сравнение и сразу прога покажет какие файлы различаются и в каком месте.
можешь выложить конфиг редактора?
Эмм, не понял, какой конфиг от какого редактора?
DISASM & DISOPTS & FUNCS создались несколько текстовиков один из них 17_DISASM_wiXDRSMW размер у него самый большой искать надо в нем?
Не обязательно, как тебе удобней. Там, под цифрой 17 должно появиться много всяких вариантов. Это просто дизасм с разным представлением, например в одном будут регистры слева, а справа смещения, а в другом будет всё наоборот. Потом в некоторых результат дизасма показывается через регистры (r1,r2,r3,...), а в других через ASM-код. В общем смотри тот, в котором тебе более удобней. Я обычно смотрю 1-ый вариант из 17-ых или в формате HTML (такой тоже должен выводится или для HTML есть отдельный батник DISASM_HTML).
потом тоже самое сделал с ctrl.prx от 6.60 в нем нашел ту же строку scepeekbuffer и т.д
надеюсь все правильно?
Да, да, да, ты идёшь в верном направлении. Всё так и делается. В текстовом редакторе чаще пользуйся через "Поиск" и проверяй поиск далее, чтобы убедиться, что это именно то, а не ложный дубль. Только я чаще пользуюсь бесплатным Notepad++ (https://notepad-plus-plus.org/)
karenjan99
15.06.2016, 12:13
Эмм, не понял, какой конфиг от какого редактора?
имел ввиду конфиг текстового редактора у тебя немного выше в посте syspatch.c оффсеты отображаются другим цветом ну ладн оне так уж важно :)
пользуюсь и с Notepad и с emeditor но emeditor как то больше нравится :)
а как насчет в строках где написано if fw = 500 их тоже надо менять на 600/661?
ErikPshat
15.06.2016, 14:35
В посте syspatch.c подсвечивается не текстовым редактором, а BB-кодом [CODE] на форуме :D
А в EmEditor или Notepad++ есть точно такая же подсветка синтаксиса, там в настройках выбирается тема и подсвечивается синтаксис в зависимости от формата файла и расширения. Почитай про установку Тем в EmEditor (http://www.pspx.ru/forum/showthread.php?t=91839), скачай Theme.Pack.zip и установи по инструкции.
if fw = 500 их тоже надо менять на 600/661?
Это не надо менять, а нужно добавлять по образу и подобию.
Ниже добавляешь точно такой же код, как выше и получается дополнительная поддержка 661:
if fw = 661
Хотя и правда, старые прошивки никому не нужны, так что можно просто менять 401 и 500 на 660 и 661.
karenjan99
15.06.2016, 14:56
ErikPshat, я думал это картинка:D
ладно лучше поменяю, все равно вряд ли сейчас кто то пользуется старыми прошами :)
ErikPshat
15.06.2016, 15:29
karenjan99, ОК, ты пеши если чо. Заведи себе текстовик или в сообщении на форуме, где записывай найденные NID-ы, например:
syspatch.c
500 661
0x919215D7 -> 0xBE30CED0
0x6B247CCE -> 0xxxxxxxxx
И потом, имей в виду, что НИД-ы не только в syspatch.c, а и в других файлах тоже нужно искать и проверять.
Я нашёл ещё зеркало с исходниками: https://github.com/Saner2oo2/hostcore-psp/tree/master/HostCore
Обрати внимание на подобные комментарии к файлам и папкам: launcher add 4.01 iso/cso support, add wifi capability, disable savedata searc…
usbhostfs add 5.00CFW support
log.c update patches for 4.01
main.c add 5.00CFW support
syspatch.h add 5.00CFW support
tinyui.c update patches for 4.01
umd.c update patches for 4.01
umd.h update patches for 4.01
usbhost.c Added missing 5.50 check in usbhost.c
utils.c update patches for 4.01
utils.h Added fixes for FW 5.50
wifihost.c add 5.00CFW support
karenjan99
15.06.2016, 19:47
запутался немного некоторые нид-ы трудно найти вот теперь остановился на этом строка 123 в syspatch находится она в файлах init и modulemgr
вот мои файлы http://rgho.st/7H9kKGPZZ, пока что нашел несколько нидов в my change мои изменеия то что нашел пока. передние цифры строка в syspatch.c потом уже найденные ниды от 6.61 и в каких файлах их надо искать
вот нид с 123 строки не могу найти оно находится в файлах init modulemgr проверял оба файлов но там окружение у нидов разное и не понятно где найти его
в остальных что нашел тоже 100% не уверен что это правильные но скорее всего правильные :)
karenjan99 добавил 15.06.2016 в 19:47
500 661 Files
0x919215D7 -> 0xBE30CED0 -> ctrl.prx
0x6B247CCE -> 0x2BA616AF -> ctrl.prx
0x94A1C627 -> 0xD4B49C4B -> loadexec_01g.prx ; vshbridge
0x71F9FB1B -> 0x24114598 -> loadexec_01g.prx ; loadexec_02g.prx
0x2E96EDF8 -> 0xB57D0DEC -> impose.prx ; loadexec_01g.prx ; loadexec_02g.prx
0xB8E49712 -> xxxxxxxxxx -> init.prx ; modulemgr.prx
0xD8D2FD35 -> 0xFBB369FD -> display_01g.prx
0xFBDA7A1E -> 0xFE5884EF -> display_01g.prx
ну вот вроде это всё в файле syspatch
правда ту одну не смог найти
но как я понимаю просто йзаменой нидов палги не заработает?
ведь там есть строки if fw = 500 add offset 0xXXXXXXX их ведь тоже надо заменить чем то но как?
ErikPshat
15.06.2016, 20:34
karenjan99, ну да, тяжелый случай, там идёт перечисление нидов и все секции практически схожи.
Ну я посмотрел через хекс эти файлы modulemgr.prx и в той позиции сидит такой код 955D6CB2 (в хексе он записывается задом наперёд побайтово).
Ну конечно код может сдвинуться, т.к. в 6.61 нидов добавилось. Тут нужно будет методом подбора действовать.
123 - ModuleMgrForKernel_B8E49712 -> ModuleMgrForKernel_?
ну вот вроде это всё в файле syspatch
Да нет, вроде там намного больше.
ведь там есть строки if fw = 500 add offset 0xXXXXXXX их ведь тоже надо заменить чем то но как?
Это адресация. Так же дизасмишь в текстовик и ищешь известный адрес в 5.00, затем дизасмишь от 6.61 и смотришь новый адрес в том же месте.
karenjan99
15.06.2016, 20:43
ErikPshat, ModuleMgrForKernel в init от 500 начинается с строки 2370 и заканчивается на 2522 сам B8E49712 в строке 2458
а в 661 ModuleMgrForKernel начинается с 2416 и зканчивается на 2616 (всего 26) а в 500 всего 20
ну а добавились они либо сверху либо снизу да? в 500 B8E49712 12-ый если посчитать сверху т.е в 661 оно должно находится в строке 2504 (76F0E956)
а если снизу то 9ый и 661 должен быть в строке 2552 (955D6CB2)
ErikPshat
15.06.2016, 20:44
Допустим вот такой код...unsigned int getFindDriverAddr( void )
{
tSceModule * pMod = ( tSceModule * )sceKernelFindModuleByName( "sceIOFileManager" );
unsigned int addr = 0;
if ( !pMod )
return 0;
if ( fw_version == FW_371 )
addr = pMod->text_addr + 0x00002844;
else if ( fw_version == FW_380 || fw_version == FW_390 )
addr = pMod->text_addr + 0x00002808;
else if ( fw_version == FW_401 )
addr = pMod->text_addr + 0x000027EC;
else if ( fw_version == FW_500 || fw_version == FW_550 )
addr = pMod->text_addr + 0x00002838;
return addr;
}
Тут понятно, что это файл IOFileManager.prx. Тут есть известные смещения у разных прошивок FW_371, FW_380/FW_390, FW_401, FW_500/FW_550. Можешь отдизасмить этолт файл от разных прошивок и вбить в поиск адресацию соответственно 0x00002844, 0x00002808, 0x000027EC, 0x00002838. Ты увидишь, что этот адрес будет попадать в одно и то же место.
karenjan99
15.06.2016, 20:44
Это адресация. Так же дизасмишь в текстовик и ищешь известный адрес в 5.00, затем дизасмишь от 6.61 и смотришь новый адрес в том же месте
а их нет, replace studio ничего не находит
ErikPshat
15.06.2016, 20:48
ну а добавились они либо сверху либо снизу да?
Не обязательно по порядку. Могли добавить и в начале и в середине, где угодно.
а их нет, replace studio ничего не находит
Не, это же не NID-ы, а адрес позиции. Это в дизассемблированном текстовике нужно искать через поиск текстового редактора.
karenjan99
15.06.2016, 20:49
ну ладно этот нид пускай пока останется найду все остальные что смогу то что не получилось запишу в файлик
karenjan99 добавил 15.06.2016 в 20:49
Не, это же не NID-ы, а адрес позиции. Это в дизассемблированном текстовике нужно искать через поиск текстового редактора.
ааа ну теперь понятно:)
собираю палгин для псп НЕ ЗНАЯ что именно я делаю:D:lol:
ErikPshat
15.06.2016, 21:18
собираю палгин для псп НЕ ЗНАЯ что именно я делаю:D:lol:
Ну так сначала ничего не понимаешь, зато потом можешь стать профессионалом ;)
Главное не останавливаться, копать, анализировать и разбираться, тогда всё получится.
karenjan99
15.06.2016, 21:27
в дизассемблированном текстовике нужно искать через поиск текстового редактора.
да их невозоможн онайти:cray:
else if ( fw_version == FW_500 || fw_version == FW_550 )
threadman_offset = 0x000121E0;
вот например надо искать в файле threadman ну да открыл я его
name="loc_00012190">loc_00012190:</a>
; Refs: <a href="#0x00012174">0x00012174</a>
<a name="0x00012190"></a> addiu $s4, $s4, -0x20 ; 0x00012190: 0x2694FFE0 '...&'
<a name="0x00012194"></a> li $t5, 0x10 ; 0x00012194: 0x240D0010 '...$'
<a name="0x00012198"></a> lui $t4, 0x0 ; 0x00012198: 0x3C0C0000 '...<'
<a name="0x0001219C"></a> move $a0, $s2 ; 0x0001219C: 0x02402021 '! @.'
<a name="0x000121A0"></a> move $a1, $s4 ; 0x000121A0: 0x02802821 '!(..'
<a name="0x000121A4"></a> jal <a href="#SysMemForKernel_940FCB99">SysMemForKernel_940FCB99</a> ; 0x000121A4: 0x0C005CE6 '.\..'
<a name="0x000121A8"></a> sw $t5, 0x6D0($t4) ; 0x000121A8: 0xAD8D06D0 '....'
<a name="0x000121AC"></a> bnez $v0, <a href="#loc_00012494">loc_00012494</a> ; 0x000121AC: 0x144000B9 '..@.'
<a name="0x000121B0"></a> move $fp, $v0 ; 0x000121B0: 0x0040F021 '!.@.'
<a name="0x000121B4"></a> lw $t6, 0x14($s0) ; 0x000121B4: 0x8E0E0014 '....'
<a name="0x000121B8"></a> bltzl $t6, <a href="#loc_0001247C">loc_0001247C</a> ; 0x000121B8: 0x05C200B0 '....'
<a name="0x000121BC"></a> lw $t8, 0xC($s4) ; 0x000121BC: 0x8E98000C '....'
<a name="0x000121C0"></a> lw $fp, 0xC($s4) ; 0x000121C0: 0x8E9E000C '....'
<a name="0x000121C4"></a> andi $t9, $fp, 0x3 ; 0x000121C4: 0x33D90003 '...3'
<a name="0x000121C8"></a> bnez $t9, <a href="#loc_0001245C">loc_0001245C</a> ; 0x000121C8: 0x172000A4 '.. .'
<a name="0x000121CC"></a> srl $a1, $s3, 22 ; 0x000121CC: 0x00132D82 '.-..'
<a name="loc_000121D0">loc_000121D0:</a>
; Refs: <a href="#0x00012484">0x00012484</a>
<a name="0x000121D0"></a> xori $a0, $a1, 0x1 ; 0x000121D0: 0x38A40001 '...8'
<a name="0x000121D4"></a> lui $v0, 0x0 ; 0x000121D4: 0x3C020000 '...<'
<a name="0x000121D8"></a> andi $a2, $a0, 0x1 ; 0x000121D8: 0x30860001 '...0'
<a name="0x000121DC"></a> addiu $a1, $v0, 0x6F0 ; 0x000121DC: 0x244506F0 '..E$'
<a name="0x000121E0"></a> move $a0, $s2 ; 0x000121E0: 0x02402021 '! @.'
<a name="0x000121E4"></a> move $a3, $s5 ; 0x000121E4: 0x02A03821 '!8..'
<a name="0x000121E8"></a> jal <a href="#SysMemForKernel_5630F321">SysMemForKernel_5630F321</a> ; 0x000121E8: 0x0C005CE2 '.\..'
<a name="0x000121EC"></a> move $t0, $zr ; 0x000121EC: 0x00004021 '!@..'
<a name="0x000121F0"></a> blez $v0, <a href="#loc_00012388">loc_00012388</a> ; 0x000121F0: 0x18400065 'e.@.'
<a name="0x000121F4"></a> move $v1, $v0 ; 0x000121F4: 0x00401821 '!.@.'
<a name="0x000121F8"></a> lw $a2, 0x14($s0) ; 0x000121F8: 0x8E060014 '....'
<a name="0x000121FC"></a> bltz $a2, <a href="#loc_00012454">loc_00012454</a> ; 0x000121FC: 0x04C00095 '....'
<a name="0x00012200"></a> sw $v0, 0x12C($s0)
и как же его найти в threadman от 661:dash:
голова уже болит:D отдохну немного:D:D:D
ErikPshat
15.06.2016, 22:11
да их невозоможн онайти:cray:
Ну вот смотри, взять тот же самый первый код в syspatch.c. Я тут дописал код для 6.60/6.61 unsigned int getFindDriverAddr( void )
{
tSceModule * pMod = ( tSceModule * )sceKernelFindModuleByName( "sceIOFileManager" );
unsigned int addr = 0;
if ( !pMod )
return 0;
if ( fw_version == FW_371 )
addr = pMod->text_addr + 0x00002844;
else if ( fw_version == FW_380 || fw_version == FW_390 )
addr = pMod->text_addr + 0x00002808;
else if ( fw_version == FW_401 )
addr = pMod->text_addr + 0x000027EC;
else if ( fw_version == FW_500 || fw_version == FW_550 )
addr = pMod->text_addr + 0x00002838;
else if ( fw_version == FW_660 || fw_version == FW_661 )
addr = pMod->text_addr + 0x00002A4C;
return addr;
}
Смотри скриншоты шестерёнкой... Открой все в браузере, потом щёлкай по очереди вкладки:
attachment.php?attachmentid=11348 attachment.php?attachmentid=11349 attachment.php?attachmentid=11350 attachment.php?attachmentid=11351 attachment.php?attachmentid=11352
Есть ещё простой вариант, чтобы не копаться с PRXTool...
Разархивируй прогу в корень любого диска или на рабочий стол CTFtool GUI v5 Beta 3 (http://www.pspx.ru/forum/showthread.php?t=84046) (в ней тоже есть PRXTool, только работает на лету)
При первом запуске, необходимо запустить экзешник правой кнопкой "Запуск от имени Администратора" обязательно!
Потом просто жмёшь по файлу PRX правой кнопкой и выбираешь в контекстном меню "CTFtool Menu -> Disassembly Filename.prx"
Рядом получаешь дизассемблированный файл ASM.
Ассоциируешь расширение ASM с текстовым редактором, например "Открыть с помощью...", указываешь редактор и ставишь галочку типа "Всегда открывать файлы такого типа этой программой".
Потом сразу будет открываться такой файл в редакторе с подсветкой синтаксиса.
karenjan99
15.06.2016, 23:01
этот я тоже нашел а вот другие чет не получается
например вот этот
tSceModule * pMod = ( tSceModule * )sceKernelFindModuleByName( "sceThreadManager" );
//a0 = 4, change partition id to 4
if ( fw_version == FW_371 )
threadman_offset = 0x00010B30;
else if ( fw_version == FW_380 || fw_version == FW_390 )
threadman_offset = 0x00010CB8;
else if ( fw_version == FW_401 )
threadman_offset = 0x00012154;
else if ( fw_version == FW_500 || fw_version == FW_550 )
threadman_offset = 0x000121E0;
_sw( 0x34040004, pMod->text_addr + threadman_offset );
sceThreadManager что это за файл? threadman.prx? в нем то такой код есть 0x000121E0
и оно находится в таких строках
<a name="loc_000121D0">loc_000121D0:</a>
; Refs: <a href="#0x00012484">0x00012484</a>
<a name="0x000121D0"></a> xori $a0, $a1, 0x1 ; 0x000121D0: 0x38A40001 '...8'
<a name="0x000121D4"></a> lui $v0, 0x0 ; 0x000121D4: 0x3C020000 '...<'
<a name="0x000121D8"></a> andi $a2, $a0, 0x1 ; 0x000121D8: 0x30860001 '...0'
<a name="0x000121DC"></a> addiu $a1, $v0, 0x6F0 ; 0x000121DC: 0x244506F0 '..E$'
<a name="0x000121E0"></a> move $a0, $s2 ; 0x000121E0: 0x02402021 '! @.'
<a name="0x000121E4"></a> move $a3, $s5 ; 0x000121E4: 0x02A03821 '!8..'
<a name="0x000121E8"></a> jal <a href="#SysMemForKernel_5630F321">SysMemForKernel_5630F321</a> ; 0x000121E8: 0x0C005CE2 '.\..'
<a name="0x000121EC"></a> move $t0, $zr ; 0x000121EC: 0x00004021 '!@..'
<a name="0x000121F0"></a> blez $v0, <a href="#loc_00012388">loc_00012388</a> ; 0x000121F0: 0x18400065 'e.@.'
<a name="0x000121F4"></a> move $v1, $v0 ; 0x000121F4: 0x00401821 '!.@.'
<a name="0x000121F8"></a> lw $a2, 0x14($s0) ; 0x000121F8: 0x8E060014 '....'
<a name="0x000121FC"></a> bltz $a2, <a href="#loc_00012454">loc_00012454</a> ; 0x000121FC: 0x04C00095 '....'
<a name="0x00012200"></a> sw $v0, 0x12C($s0)
ну это явно не то что мне нужно там же таких строк более 20000 это же невозможно найти в threadman от 661, другой файл с похожим названием не нашел
karenjan99 добавил 15.06.2016 в 23:01
Есть ещё простой вариант, чтобы не копаться с PRXTool
все prx-ы кинул в папку с prxtool 1.1 запустил батник html теперь есть html для всех файлов
ну и открываются через пр. клик emedit проблем с этим нет :)
ErikPshat
15.06.2016, 23:40
sceSystemMemoryManager что это за файл? sysmem.prx? в нем то такой код есть 0x00003AA8
Смотри внимательно, в заголовке окна виден путь и версия прошивки:
attachment.php?attachmentid=11353 attachment.php?attachmentid=11354 attachment.php?attachmentid=11355 attachment.php?attachmentid=11356
На картинке в браузере курсор приобретает вид + или -, щёлкаешь мышкой плюсик и картинка разворачивается в оригинальный размер.
Я не понимаю, откуда ты выдёргиваешь такой хитрый код?:
<a name="0x000121D0"></a> xori $a0, $a1, 0x1 ; 0x000121D0: 0x38A40001 '...8'
<a name="0x000121D4"></a> lui $v0, 0x0 ; 0x000121D4: 0x3C020000 '...<'
<a name="0x000121D8"></a> andi $a2, $a0, 0x1 ; 0x000121D8: 0x30860001 '...0'
<a name="0x000121DC"></a> addiu $a1, $v0, 0x6F0 ; 0x000121DC: 0x244506F0 '..E$'
Это ты смотришь HTML в текстовике?
<a name="0x000121D4"></a> - это же ссылка интернета :D
HTML нужно открывать в браузере, а поиск в браузере производить по CTRL+F и смотреть окружение.
То есть, выделяешь искомое и копируешь CTRL+C, затем открываешь HTML в браузере автоматически и жмёшь CTRL+F, вставляешь искомое туда CTRL+V и листаешь поиск стрелками.
http://www.pspx.ru/forum/picture.php?albumid=1&pictureid=29
karenjan99
16.06.2016, 00:12
<a name="0x000121D4"></a> - это же ссылка интернета
да ну не знал:D да не мозги еще на месте :Dпросто браузер тупит поэтому в текстовике открываю но какая разница главное текст виден:D
а ну ладно теперь я понял, просто тогда я думал что обязательно надо искать типа в таком строке Subroutine sceAudio_driver_324BA73D - Address 0x00000578 - Aliases: sceAudioOutput
а prx-ы лучше в текстовик перегоняю а то неразбериха html в редакторе:lol:
ErikPshat
16.06.2016, 00:27
karenjan99, а чо браузер тупит? Поставь Google Chrome, он вроде память не кушает много и быстро открывается.
С Оперы и Мазилы я спрыгнул давно, т.к. память у них утекает в бесконечность.
а prx-ы лучше в текстовик перегоняю а то неразбериха html в редакторе
Ну лучше делай, как я советовал, через CTFtool GUI. Там просто нужный файл правой кнопкой тут же дизассемблишь в той же папке и сразу открываешь, и ASM хорошо подсвечивает синтаксис, не то что TXT. Не надо таскать файлы в папку PRXTool и баловаться батниками.
А если уж так приспичило через PRXTool, тогда придётся по одному PRX таскать в папку.
Юзай первый "17_DISASM_w.txt", там по-моему самый удобный код.
В EmEditor в настройках для всех конфигураций выставь на вкладке "Вид" подсветку синтаксиса из темы (там есть выбор тем, они идут в комплекте по дефолту несколько штук)
А я пойду спать, уже башка набекрень отваливается...
karenjan99
16.06.2016, 14:03
ErikPshat, funday СЛУЧАЙНО :D в браузеры попал лень удалить:D
да ладно завтра разберусь:dash: я тоже пойду спасибо за помощ :)
karenjan99 добавил 16.06.2016 в 14:03
sceNet_Service
sceNetInterface_Service
sceNet_Library
что за prx-ы? что то не могу определится
ErikPshat
16.06.2016, 18:52
sceNet_Service
sceNetInterface_Service
sceNet_Library
что за prx-ы? что то не могу определится
Ну это ifhandle.prx. Там же в исходниках написано в комментариях: void wifiModulesPatch2()
{
if ( fw_version == FW_550 ) {
//module renamed to sceNet_Service in 5.50
tSceModule * pMod = ( tSceModule * )sceKernelFindModuleByName( "sceNet_Service" );
//a2 partid = 4 of ifhandle
_sw( 0x34050004, pMod->text_addr + 0x000014D8 ); //for 5.50
} else {
tSceModule * pMod = ( tSceModule * )sceKernelFindModuleByName( "sceNetInterface_Service" );
_sw( 0x34050004, pMod->text_addr + 0x00001440 ); //for 3.71, 3.80, 3.90, 4.01, 5.00
Если перевести //module renamed to sceNet_Service in 5.50 - получается //модуль sceNet_Service переименован в прошивке 5.50
А до этого он назывался sceNetInterface_Service в прошивках //for 3.71, 3.80, 3.90, 4.01, 5.00
Поэтому берём Replace Studio и ищем название sceNetInterface_Service в файлах *.XML в папке C:\pspsdk\doc\pspsdk\silverspring.lan.st
Там записана коллекция NID-ов до прошивки 5.00. А так как название модуля изменилось в прошивке 5.50, значит в 6.61 оно тоже будет иметь новое название sceNet_Service и возможно даже название файла может измениться. Поэтому, берём Replace Studio и ищем это название sceNet_Service в файлах *.PRX прошивки 6.61. То есть, не забываем сменить "Маску файла" со *.xml на *.prx и указываем путь к папке с декриптованными файлами PRX прошивки 6.61.
karenjan99
16.06.2016, 21:12
вообщем то получилось вот так вот
500 661 Files
0x3FC9AE6A -> 0x3FC9AE6A -> sysmem.prx
0x00002838 -> 0x00002A4C -> iofilemgr.prx
0x919215D7 -> 0xBE30CED0 -> ctrl.prx
0x6B247CCE -> 0x2BA616AF -> ctrl.prx
0x94A1C627 -> 0xD4B49C4B -> loadexec_01g.prx ; vshbridge
0x71F9FB1B -> 0x24114598 -> loadexec_01g.prx ; loadexec_02g.prx
0x2E96EDF8 -> 0xB57D0DEC -> impose.prx ; loadexec_01g.prx ; loadexec_02g.prx
0xB8E49712 -> xxxxxxxxxx -> init.prx ; modulemgr.prx
0x7C8A2B62 -> 0xC2A5E6CA -> modulemgr.prx ; init.prx не уверен
0xf8170fbe -> 0xf8170fbe -> clockgen.prx
0xD8D2FD35 -> 0xFBB369FD -> display_01g.prx
0xFBDA7A1E -> 0xFE5884EF -> display_01g.prx
0x00001304 -> 0x00001B94 -> sysmem.prx
0x00003AA8 -> 0x00004184 -> sysmem.prx
0x00001F3C -> 0x00002464 -> loadexec_01g.prx не уверен
0x000121E0 -> 0x00012F90 -> threadman.prx (661 23932 line) не уверен
0x00007C84 -> 0x00008398 -> modulemgr.prx
0x3C070001 -> 0x3C0A0001 -> ???
0x34050004 -> xxxxxxxxxx -> ifhandle.prx???
0x00001440 -> 0x00001780 -> ifhandle.prx (line 2015 661) не уверен
0x00002348 -> 0x000024E0 -> ifhandle.prx ((line 3119 661)??? не уверен) и есть в pspnet.prx в обеих и от 500 и от 661 не изменено 0x00002348
0x34020002 -> xxxxxxxxxx -> pspnet.prx нет оффсета }
0xAFA20000 -> xxxxxxxxxx -> pspnet.prx нет оффсета }
0x3C020000 -> xxxxxxxxxx -> pspnet.prx нет оффсета }Либо не тот файл
0x34074000 -> xxxxxxxxxx -> modulemgr.prx нет оффсета }
0x02403821 -> xxxxxxxxxx -> modulemgr.prx нет оффсета }
0x02402021 -> xxxxxxxxxx -> threadman.prx нет оффсета }
я много в чем не уверен:D
ErikPshat
17.06.2016, 18:23
karenjan99, у меня вот что получилось: syspatch.c
FW 5.00 FW 6.61
064 0x00002838 -> 0x00002A4C (iofilemgr.prx)
089 0x919215D7 -> 0xBE30CED0 (ctrl.prx)
090 0x6B247CCE -> 0x2BA616AF (ctrl.prx)
127 0x94A1C627 -> 0x08F7166C (loadexec.prx)
128 0x71F9FB1B -> 0x24114598 (loadexec.prx)
129 0x2E96EDF8 -> 0xB57D0DEC (loadexec.prx)
130 0xB8E49712 -> 0xFE61F16D (modulemgr.prx) ?
131 0x7C8A2B62 -> 0xCE0A74A5 (modulemgr.prx) ?
167 0xD8D2FD35 -> 0xFBB369FD (display.prx)
168 0xFBDA7A1E -> 0xFE5884EF (display.prx)
194 0x00003AA8 -> 0x00004184 (sysmem.prx)
242 0x00001E58 -> 0x00002384 (loadexec.prx)
270 0x000121E0 -> 0x00012F90 (threadman.prx)
284 0x00007C84 -> 0x00008398 (modulemgr.prx)
304 0x00001440 -> 0x00001780 (ifhandle.prx)
314 0x00002348 -> 0x00002348 (pspnet.prx) не изменилось!
Я не стал заменять исходные данные, а просто добавил поддержку 6.60/661
Номера строк соответствуют данным прошивки 5.00, а данные прошивки 6.60/6.61 дописаны ниже.
Поэтому смотри мой файл из вложения, т.к. файл увеличился и номера строк соответствуют новым подвижкам.
P.S. У тебя прогрессирует невнимательность, ты в каком-то месте взял данные от 5.50, а сравнивал файл от 5.00.
Ну так потом можешь сам компилировать и проверять работу плагина, у тебя же установлен PSPSDK.
Чтобы не сыпались ошибки, т.к. ты добавил новые прошивки 6.60 и 6.61, о которых компилятор ничего не знает, нужно объявить новые прошивки в исходниках.
Для этого, открой файл utils.h, там увидишь обявление прошивок в таком виде: enum PspFwVersion
{
FW_371 = 0x03070110,
FW_380 = 0x03080010,
FW_390 = 0x03090010,
FW_401 = 0x04000110,
FW_500 = 0x05000010,
FW_550 = 0x05050010,
};
Добавь туда FW_660 и FW_661, должно получиться вот так: enum PspFwVersion
{
FW_371 = 0x03070110,
FW_380 = 0x03080010,
FW_390 = 0x03090010,
FW_401 = 0x04000110,
FW_500 = 0x05000010,
FW_550 = 0x05050010,
FW_660 = 0x06060010,
FW_661 = 0x06060110,
};
Потом, чтобы скомпилировать программу, в этой папке с исходниками (где лежит файл Makefile), производишь следующие действия:
Удерживаешь клавишу SHIFT и щёлкаешь правой кнопкой мыши в пустом месте этой папки.
В контекстном меню появится пункт "Открыть окно команд".
В окне команд пишешь команду "make" (без кавычек) и наблюдаешь за процессом компиляции.
Чтобы удалить результаты компиляции и привести всё к исходному виду, пишешь команду "make clean". Это нужно делать перед каждой новой компиляцией, чтобы не замешать в новую компиляцию результаты от старой компиляции.
То же самое делаешь в других папках (где лежит файл Makefile), для компиляции других модулей программы. Правда там тоже нужно проверять и менять НИД-ы.
karenjan99
17.06.2016, 19:07
P.S. У тебя прогрессирует невнимательность
с возрастом пройдет :D
а файл ты полностью правил? те с ним закончено или еще надо что то искать?
как насчет вот этих?
0x34020002
0xAFA20000
0x3C020000
0x34074000
0x02403821
0x02402021
и еще этот 0x3C070001
их не нужно менять?
ErikPshat
17.06.2016, 19:19
как насчет вот этих?
их не нужно менять?
Нет, это к НИД-ам или к оффсетам или к прошивкам не имеет никакого отношения. Не мудрено, что у тебя получилось "нет оффсета }" :D
Скомпилируй новый hostcore.prx и проверь, как он работает. Потом перейдём к проверке других файлов, там тоже явно есть что менять.
а файл ты полностью правил? те с ним закончено или еще надо что то искать?
Да, похоже с этим файлом полностью закончено.
karenjan99
17.06.2016, 19:37
скомпилил, не робит, вот http://rgho.st/7MJMkt5bd
когда нажимаю на нотку ниче не происходит исходник тот что ты ссылку кидал
у меня 6.61 promod
ErikPshat
17.06.2016, 20:21
скомпилил, не робит, вот http://rgho.st/7MJMkt5bd
Ну не мудрено, что не робит, там же ещё куча других файлов :D
Я просто хотел проверить, как ты осилишь процесс компиляции :xD:
Ну а раз получилось, значит ты уже почти профи :xDD:
Да..., и почти все смещения ты сам правильно нашёл, если не учитывать, что ты ещё перестарался с теми, которые вообще не нужно трогать.
Так что не всё так печально, главное ты уже кое-в-чём разбираешься. На самом деле ведь там ничего сложного нет.
Насчёт кода программы: if ( fw_version == FW_371 )
addr = pMod->text_addr + 0x00002844;
else if ( fw_version == FW_380 || fw_version == FW_390 )
addr = pMod->text_addr + 0x00002808;
return addr;
Ты наверное заметил, что там постоянно сталкиваешься со словами if и else.
Тут главное понимать, что это значит и уметь читать код.
if - означает по-русски если. Причем это не просто "если", а условие.
То есть, как бы ты выдвигаешь условие: "Если ты мне не дашь мороженое, в противном случае я тебе засажу всю аллею цветами".
else - означает по-русски в противном случае. Поэтому этот код срабатывает, если предыдущий если не соответствует условиям.
|| - это оператор ИЛИ.
Таким образом переводим этот код на русский язык: если ( версия прошивки равно FW_371 )
тогда исполняем этот код: addr = pMod->text_addr + 0x00002844;
в противном случае если ( версия прошивки равно FW_380 ИЛИ версия прошивки равно FW_390 )
тогда исполняем этот код: addr = pMod->text_addr + 0x00002808;
return addr;
karenjan99
17.06.2016, 20:25
ErikPshat, ну ладно не ржи :D я думал что меню плагина должен открыватся уже :) :D
Ты наверное заметил, что там постоянно сталкиваешься со словами if и else.
Тут главное понимать, что это значит и уметь читать код.
про это еще месяц назад узнал (пишу тупые проги в vb :D вот один из них https://rutracker.org/forum/viewtopic.php?t=5218486 :D)
ErikPshat
17.06.2016, 20:27
karenjan99, ах да, забыл добавить. Чтобы произвести полную компиляцию всей программы, нужно ввести команду "make release".
Результат получишь в новой создавшейся папке "release" или в появившемся архиве "HostCore_1.2.tar.gz".
karenjan99
17.06.2016, 20:41
эт тоже менять?
setUmdFile = ( void * )findProc( "SystemControl", "SystemCtrlForKernel", 0xB64186D0 );
getUmdFile = ( void * )findProc( "SystemControl", "SystemCtrlForKernel", 0xAC56B90B );
setInitApitype = ( void * )findProc( "SystemControl", "SystemCtrlForKernel", 0x8d5be1f0 );
setInitFileName = ( void * )findProc( "SystemControl", "SystemCtrlForKernel", 0x128112c3 )
слушай ты не темни, этот плагин в конце концов заработает? :D
ErikPshat
17.06.2016, 21:27
karenjan99, да, там больше ловить нечего, вроде всё пучком должно быть. Нужно смотреть другие папки и компилить полностью программу.
В корне ms0:/ должна лежать новая папка ms0:/HostCore
эт тоже менять?
setUmdFile = ( void * )findProc( "SystemControl", "SystemCtrlForKernel", 0xB64186D0 );
getUmdFile = ( void * )findProc( "SystemControl", "SystemCtrlForKernel", 0xAC56B90B );
setInitApitype = ( void * )findProc( "SystemControl", "SystemCtrlForKernel", 0x8d5be1f0 );
setInitFileName = ( void * )findProc( "SystemControl", "SystemCtrlForKernel", 0x128112c3 )
Нет, это функции кастомной прошивки. Они должны подхватываться через NID_resolver прошивки 661, если разрабы PRO не забыли их прописать.
Можешь загуглить эти НИД-ы.
karenjan99
17.06.2016, 21:38
http://i77.fastpic.ru/big/2016/0617/2a/07bd0f68f6f6e7fc6be0477fd3a31a2a.png
ErikPshat
17.06.2016, 22:07
karenjan99, ну у тебя ошибка перемещения.
Из папки extras копируется всё содержимое в папку release/HostCore.
Потом файл readme.txt должен переместиться из папки release/HostCore в папку release, но этого не происходит.
Может файла readme.txt нету в исходной папке extras и он не скопировался в папку release/HostCore, либо по каким-то причинам он не может переместиться из папки release/HostCore в папку release.
Короче, вот готовая сборка: во вложении. Тестируй, отключи все другие плагины.
karenjan99
17.06.2016, 22:31
не робит
ErikPshat
17.06.2016, 23:02
karenjan99, ну так нужно на компьютере установить USB TYPE B, а затем включить USB Host и активировать плагин. В шапке usbhostfs.exe совсем, мне кажется, не рабочий.
Читай в этой теме 5. Установка драйвера хоста "USB Type B" (http://www.pspx.ru/forum/showthread.php?t=73742) или в этой: http://www.pspx.ru/forum/showthread.php?t=77900
Ещё можно почитать здесь: http://pspfaqs.ru/faqs/18-psphost.html
karenjan99
17.06.2016, 23:18
я вообще то вай фай хотел использовать
psphost давно стоял а усб режим ругался
On 64 bit, Installs to Windows\syswow64\libusb0.dll
копировал туда теперь не ругается но все равно при подключении не просит установить драйвер да и если нажать на нотку меню и так должна появится а у меня не появляется
ErikPshat
17.06.2016, 23:27
karenjan99, ну тогда забей, поигрались и хватит :D
Я вообще не соображаю, что делать с этим хостом и зачем он сдался :)
Вот RemoteJoy Lite нормально работает и понятно, почему и как она должна работать.
А по этой инструкции я сомневаюсь, что вообще должно заработать.
На компе эта программа вроде делает вид, что работает, но по-моему нифига она не работает.
Проще откатиться на 5.00 М33-6 и пользоваться, ну хотя бы попытаться завести, а если заведётся, тогда и тестировать на 6.61.
karenjan99
17.06.2016, 23:32
ErikPshat,3 дня тупо посидел из за этого плагина ну спасибо :D
хотя много нового узнал + куча софта которые упростили жизнь
:lol:
karenjan99 добавил 17.06.2016 в 23:32
p.s. не в теме но случаем в синтезаторах/циф пианино/миди клавиатур не разбираешься? ты же профи :D
ErikPshat
17.06.2016, 23:40
p.s. не в теме но случаем в синтезаторах/циф пианино/миди клавиатур не разбираешься? ты же профи
Неее, в такой аппаратуре не разбираюсь. Могу только ноты на нотном стане нарисовать, ну там на гитаре сыграть :)
karenjan99
17.06.2016, 23:45
ErikPshat, жаль а я хотел спросить возможно ли самому научится играть на фо-пиано а то в гугле часть пишут возможно часть нет, а академики в форумах вообще НЕТ НЕВОЗМОЖНО :D чет в другую сторону я пошел тема совсем не подходящая :lol:
а как нибудь по другому есть возможность смотреть медиа на псп через вайфай?
ErikPshat
17.06.2016, 23:55
а как нибудь по другому есть возможность смотреть медиа на псп через вайфай?
Да забей на это баловство. Будет всё тормозить и глючить. Всё-таки на PSP нету WiFi со скоростью N или хотя бы G. Есть только B.
karenjan99
18.06.2016, 00:00
ErikPshat, жаль ладно поищу в форуме какую нибудь интересную тему например другой старый плагин :lol: будет чем занятся :lol:
ErikPshat
20.06.2016, 21:02
эт тоже менять?
setUmdFile = ( void * )findProc( "SystemControl", "SystemCtrlForKernel", 0xB64186D0 );
getUmdFile = ( void * )findProc( "SystemControl", "SystemCtrlForKernel", 0xAC56B90B );
setInitApitype = ( void * )findProc( "SystemControl", "SystemCtrlForKernel", 0x8d5be1f0 );
setInitFileName = ( void * )findProc( "SystemControl", "SystemCtrlForKernel", 0x128112c3 )
Кстати, установил прошивку 5.00 М33-6 и вытащил кастомный модуль vshctrl.prx, там не сходятся ниды с модулем от 6.61...
Плагин на PSP открывается и появляется надпись USB или WiFi, но на компе никак не находятся никакие папки, видимо прога для компа на Windows 10 не пашет. setUmdFile = ( void * )findProc( "SystemControl", "SystemCtrlForKernel", 0xB64186D0 );
getUmdFile = ( void * )findProc( "SystemControl", "SystemCtrlForKernel", 0xAC56B90B );
setInitApitype = ( void * )findProc( "SystemControl", "SystemCtrlForKernel", 0x8d5be1f0 ); //не найдено
setInitFileName = ( void * )findProc( "SystemControl", "SystemCtrlForKernel", 0x128112c3 ); //не найдено
mountUmdFromFile = ( void * )findProc( "SystemControl", "SystemCtrlForKernel", 0x85b520c6 );
unmountUmd = ( void * )findProc( "SystemControl", "SystemCtrlForKernel", 0x512e0cd8 );
getCfwConfig = ( void * )findProc( "SystemControl", "SystemCtrlForKernel", 0x16c3b7ee );
В 5.00 M33-6 25 функций:
SystemCtrlForKernel_159AF5CC - Address 0x00003CC4
SystemCtrlForKernel_B47C9D77 - Address 0x00003CCC
SystemCtrlForKernel_2D10FB28 - Address 0x00003CD4
SystemCtrlForKernel_16C3B7EE - Address 0x00003CDC
SystemCtrlForKernel_85B520C6 - Address 0x00003CE4
SystemCtrlForKernel_1C90BECB - Address 0x00003CEC
SystemCtrlForKernel_31C6160D - Address 0x00003CF4
SystemCtrlForKernel_512E0CD8 - Address 0x00003CFC
SystemCtrlForKernel_FFEFA034 - Address 0x00003D04
SystemCtrlForKernel_AC56B90B - Address 0x00003D0C
SystemCtrlForKernel_B64186D0 - Address 0x00003D14
SystemCtrlForKernel_5CB025F0 - Address 0x00003D1C
SystemCtrlForKernel_F9584CAD - Address 0x00003D24
SystemCtrlForKernel_A65E8BC4 - Address 0x00003D2C
SystemCtrlForKernel_260CA420 - Address 0x00003D34
SystemCtrlForKernel_B078D9A0 - Address 0x00003D3C
SystemCtrlForKernel_E82E932B - Address 0x00003D44
SystemCtrlForKernel_324FB7B1 - Address 0x00003D4C
SystemCtrlForKernel_CAE6A8E1 - Address 0x00003D54
SystemCtrlForKernel_3BC8E648 - Address 0x00003D5C
SystemCtrlForKernel_DC974FF8 - Address 0x00003D64
SystemCtrlForKernel_7E6F2BBA - Address 0x00003D6C
SystemCtrlForKernel_826668E9 - Address 0x00003D74
SystemCtrlForKernel_98012538 - Address 0x00003D7C
SystemCtrlForKernel_2F157BAF - Address 0x00003D84
В 6.61 PROMOD-C2p 24 функции:
SystemCtrlForKernel_577AF198 - Address 0x00005600
SystemCtrlForKernel_94FE5E4B - Address 0x00005608
SystemCtrlForKernel_ABA7F1B0 - Address 0x00005610
SystemCtrlForKernel_AF22D576 - Address 0x00005618
SystemCtrlForKernel_2D10FB28 - Address 0x00005620
SystemCtrlForKernel_EB74FE45 - Address 0x00005628
SystemCtrlForKernel_1090A2E1 - Address 0x00005630
SystemCtrlForKernel_5328B431 - Address 0x00005638
SystemCtrlForKernel_159AF5CC - Address 0x00005640
SystemCtrlForKernel_F988C1DC - Address 0x00005648
SystemCtrlForKernel_1C90BECB - Address 0x00005650
SystemCtrlForKernel_745286D1 - Address 0x00005658
SystemCtrlForKernel_F9584CAD - Address 0x00005660
SystemCtrlForKernel_A65E8BC4 - Address 0x00005668
SystemCtrlForKernel_BA21998E - Address 0x00005670
SystemCtrlForKernel_5A35C948 - Address 0x00005678
SystemCtrlForKernel_BC939DC1 - Address 0x00005680
SystemCtrlForKernel_70B92B45 - Address 0x00005688
SystemCtrlForKernel_1DDDAD0C - Address 0x00005690
SystemCtrlForKernel_16C3B7EE - Address 0x00005698
SystemCtrlForKernel_98012538 - Address 0x000056A0
SystemCtrlForKernel_56CEAF00 - Address 0x000056A8
SystemCtrlForKernel_31C6160D - Address 0x000056B0
SystemCtrlForKernel_16100529 - Address 0x000056B8
Хотя нет, они должны подхватываться через nid_resolver https://github.com/kasuraj/procfw/blob/master/SystemControl/libs/libpspsystemctrl_kernel/SystemCtrlForKernel.S
karenjan99
20.06.2016, 22:55
ErikPshat, ты же сам сказал их может быть больше или меньше зависимо от версии прошивки
а по какому пробовал по вай фай или по усб?
кстати я эти усб дрова не мог поставить на 10, отключил проверку подписи драйверов через gpedit.msc но все равно при установке ругается
ErikPshat
21.06.2016, 10:14
karenjan99, ну это правильно, их количество может варьироваться в зависимости от функций. Некоторые добавляются, а некоторые за ненадобностью удаляются.
Ну вообще я же потом нашёл исходники ПРО 661 и там эти функции действительно присутствуют, т.е. разработчики ПРО создали nid_resolver, чтобы кастомные функции старых прошивок были совместимы с функциями новых прошивок.
Я соединялся по USB и PSP TYPE B у меня нормально установился и ведь работает RemoteJoy Lite. Там, скачиваешь новую утилиту с sourceforge, во время установки просят выбрать тип подключения из списка уже имеющихся, там ничего не выбираешь, т.к. это новая функция, затем, в конце, будет предложено сохранить новые драйвера для твоего компа, но там есть ещё одна хитрая кнопка слева повыше - "Сразу установить", вот её и выбираешь, и устанавливаешь.
karenjan99
21.06.2016, 13:30
что ни пробовал при установке этого драйвера ругается что не подписан, даже после отключения проверки, да ладно не так уж и надо все равно remotejoy-ем не пользуюсь а плагин все равно как вижу на 6.61 не заработает:cray:
vBulletin® v3.8.7, Copyright ©2000-2025, vBulletin Solutions, Inc. Перевод: zCarot