Разработчик: Libre Год выпуска: 2011 Платформа: Windows & .NET Framework 3.0+ Прошивка: Кастом или любая Официальная Язык интерфейса: Русский Автор перевода: ErikPshat
Инструкция по использованию и описание программы в оригинальной теме.
Последний раз редактировалось ErikPshat; 04.03.2011 в 13:37.
Зачем нам эти данные, когда эти данные не Windows программы, а PSP программы
Сообщение от pspsaludo
Выдаёт сообщение о неперемещённой секции.
Скорее всего у вас в хоумбрю DATA.PSP не ELF, а уже подписанное ~PSP. Вы хотя бы извлеките из EBOOT.PBP файл DATA.PSP и посмотрите его через Хекс-редактор.
Читайте инструкцию, как написано в шапке:
Сообщение от ErikPshat
Инструкция по использованию и описание программы в оригинальной теме.
Смотрите там более свежие методы подписывания под 6.60 хотя бы. А этот метод давно устаревший, где используется ELF не более 8МБ.
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
Зачем нам эти данные, когда эти данные не Windows программы, а PSP программы
Скорее всего у вас в хоумбрю DATA.PSP не ELF, а уже подписанное ~PSP. Вы хотя бы извлеките из EBOOT.PBP файл DATA.PSP и посмотрите его через Хекс-редактор.
Читайте инструкцию, как написано в шапке:
Смотрите там более свежие методы подписывания под 6.60 хотя бы. А этот метод давно устаревший, где используется ELF не более 8МБ.
Я взял другой проект из PSP SDK: C:\devkitPSP\psp\sdk\samples\audio\polyphonic
и собрал его.
Он работает в эмуляторе.
Дальше я как и вы посоветовали - извлёк DATA.PSP и просмотрел оба файла в Хекс-редакторе. У того что *.PSP - с ELF-хедером. Попробовал его подписать: ошибка о неперемещаемых секциях не ушла. И не запускается на реальной PSP.
Но в то же время, скачанные демки из интернета отлично подписываются и работают на консоли.
У меня складывается впечатление, что криво собирается. Хотя make-файл использую из проекта.
Копать в кастомизацию make-файла. Удалось собрать и подписать проект. make-файл должен быть таким (пример):
TARGET = main
OBJS = main.o
INCDIR =
CFLAGS = -Os -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)
#будет работать на 5.00 или 6.35.
PSP_FW_VERSION = 371
LIBDIR =
LDFLAGS =
LIBS = -lpspaudiolib -lpspaudio -lpsppower
BUILD_PRX=1
PSP_EBOOT_TITLE = Polyphonic sample by Shine
EXTRA_TARGETS = EBOOT.PBP
PSPSDK = $(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak
а не таким, как в SDK. Важные строчки:
PSP_FW_VERSION = 371
BUILD_PRX=1
Не знаю, почему они это не написали, может это очевидно, но для меня не так оказалось очевидно. Без этих строк EBOOT.EBP неправильно подписывается (выдаёт ошибку о неперемещаемых секциях) или при запуске на реальной консоли выдает ошибку 80020148 (неподдерживаемый тип PRX).
Вообще, удивительно, что пришлось по крупицам собирать инфу. Помог этот форум и make-файл из 660PRO-C2
Другие консоли: Все PSP, все PSV, SCPH-1002, SCPH-102, SCPH-77008, CECH-4208C, SCPH-1000R
Регистрация: 19.03.2008
Адрес: Россия
Сообщений: 5,742
Вы сказали Спасибо: 819
Поблагодарили 3,845 раз(а) в 2,017 сообщениях
Сила репутации: 1
Репутация: 3845 
(репутация неоспорима)
Сообщение от pspsaludo
Не знаю, почему они это не написали, может это очевидно, но для меня не так оказалось очевидно. Без этих строк EBOOT.EBP неправильно подписывается (выдаёт ошибку о неперемещаемых секциях) или при запуске на реальной консоли выдает ошибку 80020148 (неподдерживаемый тип PRX).
Потому, что SDK в состоянии извечной доработки. Мой проект, написанный на SDK от конца 2023, не собирается в SDK, скачанном меньше месяца назад. Пишите жалобы на GitHub и ищите помощи в Discord.
И да, строчка с указанием версии не должна быть нужна, насколько мне известно. Вот сжатие в PRX да. А в чём стоит задача вообще, зачем использовать эту древнюю софтину для псевдоподписи?
Верно, с этого и надо было начинать, чтобы до конца полноценный динамический ELF собрать, а не пытаться запускать недоделанный статичный ELF, где в начале код забит нулями.
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
Потому, что SDK в состоянии извечной доработки. Мой проект, написанный на SDK от конца 2023, не собирается в SDK, скачанном меньше месяца назад. Пишите жалобы на GitHub и ищите помощи в Discord.
Потестировал своё подписанное приложение на реальной консоли. Не всё работает, в некоторых случаях консоль повисает.
Но если запустить 660PRO-C2, а потом приложение, то работает всегда. Приложение требует много HEAP (динамической памяти). Может ли так быть, что в случае 660PRO-C2 распределение свободной памяти другое, по сравнению со стандартной прошивкой 6.60 ?
Сообщение от Yoti
А в чём стоит задача вообще, зачем использовать эту древнюю софтину для псевдоподписи?
А какие есть более современные способы подписи?
И где взять SDK последней версии для Windows? А то там GCC 4.5.x - он не поддерживает C++11, на котором написана игра.
Видел под Linux PSP SDK с GCC v.9 ЕМНИП, но он не работает в Ubuntu 15, так как требует GLIBC 2.36, который не ставится в Ubuntu 15.
pspsaludo добавил 20.05.2024 в 03:53
Сообщение от ErikPshat
Верно, с этого и надо было начинать, чтобы до конца полноценный динамический ELF собрать, а не пытаться запускать недоделанный статичный ELF, где в начале код забит нулями.
А где можно почитать про PRX, что это такое и с чем едят?
Всегда делал из ELF бинарник (для других платформ) и загружал его по жёстко указанному адресу. А PRX это что такое ?
Последний раз редактировалось pspsaludo; 20.05.2024 в 03:53.
Причина: добавил, подумав
Может ли так быть, что в случае 660PRO-C2 распределение свободной памяти другое, по сравнению со стандартной прошивкой 6.60 ?
Не в этом дело. Просто 660PRO-C2 - это кастомная прошивка, где отключены все проверки подписи файлов. А в официальной прошивке модули проверяются на подпись (~PSP), только потом получают права на запуск. ~PSP - это конечно же не подпись, а только аббревиатура подписанного файла, где в этой секции расположены необходимые данные о файле, ключи и Тег подписи для распознавания.
Сообщение от pspsaludo
А где можно почитать про PRX, что это такое и с чем едят?
PRX - это просто модули приложения, по типу DLL или консольных модулей EXE для Windous. Грубо говоря, они выполняют консольные вспомогательные операции. В принципе EBOOT.BIN или DATA.PSP - это исполняемые экзешники, они так же построены по типу PRX, только они не модули, а типа GUI приложения или игры (исполняемые экзешники). Вот и вся разница, но в принципе они все PRX, независимо от расширения.
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
pspsaludo,
я, конечно, сам местами использую Ubuntu 18, но 15 это вообще мрак.
Мой старый комп еле тянул 18-ю. Поэтому 15-я более-менее идёт. Но Win7 всёравно - вамая быстрая ОС на моём ПК.
pspsaludo добавил 25.05.2024 в 14:55
Сообщение от pspsaludo
Всё закончилось тем, что пересобрал проект в Линуксе исползуя GCC 9.3.0
Очень странно, что не нашёлся энтузиаст, который бы собрал тулчейн с СДК для Винды с GCC >=9.x.x.
Тот что сейчас под винду, он не поддерживает C++11, который жизненно необходим при портировании игрушек всяких.
Начиная с C++11 ЕМНИП есть поддержка constexpr, которая даёт возможность сделать шифрование строк в программе (при этом в исходном коде строки будут нормальные).
Последний раз редактировалось pspsaludo; 25.05.2024 в 14:55.
Причина: добавил, подумав