PSPx форум

PSPx форум (https://www.pspx.ru/forum/index.php)
-   Программирование для PSP (https://www.pspx.ru/forum/forumdisplay.php?f=101)
-   -   PSPxIDE - среда разработки хомбрю (https://www.pspx.ru/forum/showthread.php?t=36622)

Puella 06.08.2007 20:03

Цитата:

Сообщение от l3VGV (Сообщение 488556)
это в виндах у вас чевота нехватает :)

как просто все всегда свалить на винду :) а винда лицензионная-то, самая полная :Р

Цитата:

Сообщение от pspowner (Сообщение 488570)
Если брали из 1ого поста, то там ещё папка Language нужна

эх, уже приноровила Eclipse, но всеравно спасибо :)

pspowner 21.10.2007 11:52

Quick Start
 
Довольно много вопросов о том как и с чего начать программирование для PSP, вот решил написать
некое подобие Quick Start.


Итак, что нам понадобится

1) PSPSDK в сборке wSlava - http://elmortem.mirgames.ru/?link=18
(из архива всё распаковать, желательно в корень диска, если вы не знаете что такое "корень диска",
то советую дальше не читать, а записаться на какие-нибудь компьютерные курсы).
2) PSPxIDE от wSlava - http://pspx.ru/ide/PSPXIDEv_2_1_5.zip
http://ifolder.ru/1601332
(Качаем версию 2.1.5. и также распаковываем в корень диска, затем качаем по второй ссылке
обновление 2.1.6 и распаковываем в папку PSPxIDE, это заменит ехешник на более свежий)
Вот, собственно и всё. =) Запускаем IDE.

Идём в пункт меню Проект->Опции. Внимание, здесь вы должны в поле "Директория PSPDev" указать
куда вы распаковали PSPSDK, т.е. если как я и советывал вы распаковали его в корень диска, то путь будет
выглядеть примерно так - C:\pspdev

Поставьте галку у пункта "Параметры по умолчанию" и давите ОК.

Ну вот и всё готово. Просто, не правда ли? Однако, для того чтобы проверить всё ли мы сделали правильно,
мы попробуем откомпилировать один из примеров входящих в PSPSDK. Итак, идём в пункт меню Файл->Открыть
Идём в папку "c:\pspdev\psp\sdk\samples" (Именно там вы найдёте некоторые примеры программ для ПСП).
Входим в папку "controller\basic" и открываем файлик "main.c".

Сейчас мы не будем разбирать все строчки кода появившегося на экране. Эта программа написана
полностью правильно, так что для проверки работы нам надо просто её откомпилировать.

Идём в пункт "Проект->Компиляция". Если мы всё сделали правильно, то увидим в окошке вывода -

Код:

******************************************
Компиляция/Построение.
******************************************
Microsoft Windows XP [Версия 5.1.2600]
(С) Корпорация Майкрософт, 1985-2001.

>set PSPDEV=C:/pspdev

>set PATH=%PSPDEV%/bin;%PATH%

>C:\pspdev\bin\make.exe kxploit  2>>deberr.tmp
psp-gcc -I. -IC:/pspdev/psp/sdk/include -g -G0 -Wall -O0  -c -o main.o main.c
psp-gcc -I. -IC:/pspdev/psp/sdk/include -g -G0 -Wall -O0  -L. -LC:/pspdev/psp/sdk/lib  main.o  -lpspdebug -lpspdisplay -lpspge -lpspctrl -lpspsdk -lc -lpspnet -lpspnet_inet -lpspnet_apctl -lpspnet_resolver -lpsputility -lpspuser -lpspkernel -o controller_basic.elf
psp-fixup-imports controller_basic.elf
mkdir2 -p "controller_basic"
psp-strip controller_basic.elf -o controller_basic/EBOOT.PBP
mkdir2 -p "controller_basic%"
pack-pbp "controller_basic%/EBOOT.PBP" PARAM.SFO NULL  \
        NULL NULL NULL  \
        NULL NULL NULL

>echo 1 > OK.tmp"

>
******************************************
Компиляция завершена успешно !
Время компиляции: 0:00:01

Далее, идём в папку "c:\pspdev\psp\sdk\samples\controller\basic" и видим там 2 папки -

controller_basic
controller_basic%

Копируем их на мемори стик в папку psp/game150 и запускаем.
Наслаждаемся нашим первым откомпиленным хоумбрю.

Программа была откомпилена для ядра 1.50 с использованием kxploit.

TO BE CONTINUE...

pspowner 21.10.2007 13:43

Hello, World!
 
Первая программа =)

Ну прежде чем заняться непосредственно созданием прог, я советую завести папку pspdev\Projects\
где вы будете хранить всё своё хозяйство =)

Писать мы будем конечно же, следуя традиции, программу "Hello, world!".

Итак, создали папку с проектами (pspdev\Projects\), создаём там папку "HW",
запускаем PSPxIDE.

Для начала идём в пункт "Файл->Новый" и получаем чистый лист. Сохраним его (Файл->Сохранить как...).
Выбираем нашу папку для программы (pspdev\Projects\HW) Имя файла вбиваем "main"(именно так и никак иначе)
и давим кнопку сохранить.

Далее идём в пункт "Проект->Мастер Makefile" и приводим появившуюся формочку к следующему виду -

[IMG]http://img81.**************/img81/2580/21914180ti4.jpg[/IMG]

Давайте пока не будем разбирать что там и как, просто сделайте как на картинке и всё. =)
Сделали? Давите "ОК".

Ну всё =) Начинаем писать собственно программу.

Код:

#include <pspkernel.h>
#include <pspdebug.h>

Это два необходимых нам хедера, копипастим этот код :D в свою программу.
pspkernel.h - очень нужный хедер, без него вобще ничего работать не будет.
pspdebug.h - хедер для вывода на экран отладочной инфы, именно его методы будем использовать для
вывода на экран.

Код:

PSP_MODULE_INFO("HW", 0, 1, 1);
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER);

Это тоже вписываем в программу и не задумываемся =) Последние две цифры модульинфы - версия вашей проги, второй аргумент указывает
что прога грузится в юзермод. Вторая строчка по сути дублирует первую, но туда ещё можно вписать и другие параметры, но мы их не рассматриваем здесь.

Код:

#define printf    pspDebugScreenPrintf
Для вывода текста на экран PSP мы будем использовать функцию pspDebugScreenPrintf из хедера pspdebug.h,
однако, название это слишком длинное, и для удобства набора, а также чтобы выглядело по привычней,
переопределим её как printf. Вписываем в программу.

Код:

int exit_callback(int arg1, int arg2, void *common)
{
    sceKernelExitGame();

    return 0;
}

int CallbackThread(SceSize args, void *argp)
{
    int cbid;

    cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);
    sceKernelRegisterExitCallback(cbid);

    sceKernelSleepThreadCB();

    return 0;
}

int SetupCallbacks(void)
{
    int thid = 0;

    thid = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, 0, 0);
    if(thid >= 0)
    {
        sceKernelStartThread(thid, 0, 0);
    }

    return thid;
}

Данный кусок кода мы тоже незадумываясь копипастим в нашу программу. Это обработчик колбеков,
которые нужны для правильной отработки выхода по кнопочке "HOME", а также чтобы прога правильно
прибила все свои хвосты, если вдруг пользователь вздумает выключать PSP с нашей работающей программой.


Код:

int main(void)
{

    SetupCallbacks(); //Установить колбеки
    pspDebugScreenInit(); //Проинициализировать экран для вывода текста

А вот собственно наш код. Функция main получит управление сразу после старта программы.
Переносим.

Код:

    printf ("Hello, World!\n");      //Собственно, строчка выводящая наше "Здравствуй, мир" =)
    sceKernelDelayThread (1000*1000); //Делаем 10 паузу чтобы можно было насладиться плодами наших трудов =)
        sceKernelExitGame();        //Завершаем работу программы.
    return 0;              //Ну это так, для порядку =)
}

Тоже переносим в текст программы. Ну вот и всё, наша программа "Здравствуй, Мир!" готова. Сохраняем
её. и идём в "Проект->Компиляция".

В "pspdev\Projects\HW" обнаруживаем две папки - Hello_world и Hello_world%, копируем из на
мемори стик в psp/game150, запускаем и наслаждаемся =)

Вот так. Даю несколько полезных ссылок для дальнейшиз изысканий.

pspdev\psp\sdk\samples - Не забывайте что здесь находится ряд примеров.
pspdev\psp\sdk\doc\html - Справочник.
Онлайн версия справочника доступна зесь - http://psp.jim.sh/pspsdk-doc/modules.html
В частности по pspdebug - http://psp.jim.sh/pspsdk-doc/group__Debug.html

Если с Си/Си++ совсем плохо, сходите в лавку с компьютерной литературой и купите какой-нибудь
худо бедно учебник(типа для начинающих), или погуглите на предмет подобной литературы.
Вот что нашёл почти сразу - http://www.lib.ru/CTOTOR/

Удачи :)

(C) pspowner for pspx.ru

Возможно, TO BE CONTINUE...

SееD 23.10.2007 14:32

а можно также кратенько и доступно, но про кернел 3хх. просто писать под 1,50 уже смысла нет.

l3VGV 23.10.2007 14:45

и новый сдк скомпиленый :)

Lord_Maloy 23.10.2007 19:32

Сразу хочу извиниться за оффтоп...
У меня возникла проблем, прошу помощи. Только не надо советовать читать мануал и давать прочие не относящиеся к делу советы.
Проблема такова, при попытке скомпилировать любой проект у меня возникает ошибка следующего характера:
http://nages.rxfly.net/files/pictures/er.jpg
Перепробовал всё что мог. Помогите. Заранее спасибо.

pspowner 23.10.2007 20:17

Так, есть подозрение что у тебя левый cygwin1.dll. Потому что качал девкит другой сборки? Или у тебя ещё 1 есть?

pspowner 23.10.2007 20:31

И ваще как и чего... по какому мануалу делалось то?

Lord_Maloy 23.10.2007 20:37

Цитата:

Сообщение от pspowner (Сообщение 547303)
Так, есть подозрение что у тебя левый cygwin1.dll. Потому что качал девкит другой сборки? Или у тебя ещё 1 есть?

В общем с самого начала я делал сборку сам. То есть скачал отдельно PSPDev который идёт с инсталятором, установил его. Затем распаковал архив с PSPxIDE и сделал всё по инструкции. Тогда у меня ничего не запустилось, да и как то не было времени разьираться.
Сейчас, прочитав последние сообщения скачал Вашу подборку т.е. уже подготовленный PSPDev и PSPxIDE 2.1.6. Всё установил, всё раскидал. В папке Windows проверил файлик "гугвин". его там как и должно не оказалось. Но вот при попытке запука компилятора вылазит сообщение... Чего я только уже не перепробовал...
Сечас вот на пареллельной ОСи запустить попробую.

В общем в ходе опытов, выяснилось что проблема именно в компе. Попробовал запускать не на ноутбуке, а на домашней банке, выслушал пару матов, но проект скомпилировать тем не менее смог...
Если вдруг кто-то узнает в чем состоит проблема, скажите плиз.

pspowner 23.10.2007 21:04

Цитата:

Сообщение от Lord_Maloy (Сообщение 547318)
В общем с самого начала я делал сборку сам. То есть скачал отдельно PSPDev который идёт с инсталятором, установил его. Затем распаковал архив с PSPxIDE и сделал всё по инструкции. Тогда у меня ничего не запустилось, да и как то не было времени разьираться.

Сейчас, прочитав последние сообщения скачал Вашу подборку т.е. уже подготовленный PSPDev и PSPxIDE 2.1.6. Всё установил, всё раскидал. В папке Windows проверил файлик "гугвин". его там как и должно не оказалось. Но вот при попытке запука компилятора вылазит сообщение... Чего я только уже не перепробовал...
Сечас вот на пареллельной ОСи запустить попробую.

В общем в ходе опытов, выяснилось что проблема именно в компе. Попробовал запускать не на ноутбуке, а на домашней банке, выслушал пару матов, но проект скомпилировать тем не менее смог...
Если вдруг кто-то узнает в чем состоит проблема, скажите плиз.

Очень странно, вот по тем сборкам которые указал, я устанавливал 3 раза - два раза дома и один раз на работе. Всё пашет на ура... матов не наблюдаю.

Сам Cygwin я ни разу не ставил, возможно дело в этом...

ALgraFx 23.10.2007 22:09

Lord_Maloy
у меня такая=же проблема была pspowner прав - дело 100% в версии Cygwin - найди все cygwin1.dll и удали их кроме того что в ...\pspdev\bin лежит (у меня например проблема была в том что использовалась cygwin1.dll от psp video converter)

добавлено через 12 минут
Lord_Maloy

И еще ты точно переменные среды настроил?

zaero 24.10.2007 02:02

Нужна сборка под слим. Пожалуйста выложите. А то пользоваться Eboot loader'ом надоело))

Lord_Maloy 24.10.2007 04:57

[quote=ALgraFx;547383]Lord_Maloy
у меня такая=же проблема была pspowner прав - дело 100% в версии Cygwin - найди все cygwin1.dll и удали их кроме того что в ...\pspdev\bin лежит (у меня например проблема была в том что использовалась cygwin1.dll от psp video converter)[quote]
Спасибо, в общем подумал тут. Где обычно Windows смотрит свои dll, и вот оно... C:\Windows\System32, удалил оттуда гугвин и всё стало ОК.
Спасибо всем.:thank_you:

easy_net 24.10.2007 15:26

Подскажите ка сделать сой загрузочный EBOOT.PBP со воей картинкой и названиием?

pspowner 24.10.2007 15:35

Что значит "загрузочный EBOOT.PBP"?

Если речь о PSPxIDE, то в пункте Проект->Мастер Makefile надо написать "Название в XMB". Далее, в пункте Проект->XMB Media включить картинки на заставку/фон и музыку.

Ещё проще воспользоваться программой PSPBrew.

easy_net 24.10.2007 17:08

Спасибо за поощь все получилось.

zurt 25.10.2007 14:17

попробовал сделать, как описано - все нормально компилится, но возникла проблема на 8гигстике - не запускается хоумбрюшка, черный экран, после вкл-выкл идет перезагрузка, причем и с другими хоумками такая беда, единственное идет PSPWrite. А на 4 гиг все нормально. У меня 3.40ОЕ.

SееD 26.10.2007 11:29

у хомок под 1,50 проблемы с запуском на 8Гб карте. обновись до 371М33 (хотя может и так сойдет) и пользуйся хомками для ядра 3хх.

надеюсь, кто Оунер таки объяснит как их делать :)

pspowner 26.10.2007 12:43

Ну хорошо, спрашивали - отвечаем =)

Итак, прошивки 3.ХХ требуют чтобы ваше хомбрю было в формате .prx

Что надо сделать -

Во-первых редактируем Makefile - хотите блокнотом/ворпадом, хотите через PSPxIDE пункт Проект->Мастер Makefile->Закладка
Advanced. Туда вписываем перед "include $(PSPSDK)/lib/build.mak" -

Код:

BUILD_PRX = 1
PSP_FW_VERSION = 371

Если у вас в Makefile уже есть строчка "BUILD_PRX = 0" - можете использовать её, заменив 0 на 1 =)

Во-вторых - Ваше хоумбрю должно работать в user - режиме. Для этого в тексте программы, в самом её начале,
приводим модульинфо к следующему виду(второй аргумент должен быть 0) -

Цитата:

PSP_MODULE_INFO("Homko", 0, 1, 0);
Также, сразу после модульинфо прописываем доступный размер памяти(будет доступен через malloc), а то по умолчанию нам памяти
маловато будет =) 20 метров в самый раз думаю =)

Цитата:

PSP_HEAP_SIZE_KB(20480);
Ну вот собстна и всё. Компилим мейком или через PSPxIDE, кстати PSPxIDE компилит всё с использованием параметра kxploit,
однако в данном случае kxploit компилятором будет проигнорирован. Компилим, копируем получившийся eboot.pbp на стик,
запускаем и радуемся.


Вот. К сожалению нет ща под рукой ПСП чтобы проверить, а до этого я не компилил по 3.ХХ.
Проверю вечером, если что поправлю. Но в теории всё должно быть именно так.

Если кому интересно, то вот тема на ps2dev.org

*UPDATE по компиляции хомок для 3ХХ

Идём в папку pspdev/psp/sdk/lib
Находим там файлег build.mak, открываем его, смотрим в самом низу -

$(PACK_PBP) EBOOT.PBP $(PSP_EBOOT_SFO) $(PSP_EBOOT_ICON) \
$(PSP_EBOOT_ICON1) $(PSP_EBOOT_UNKPNG) $(PSP_EBOOT_PIC1) \
$(PSP_EBOOT_SND0) strip_$(FINAL_TARGET) $(PSP_EBOOT_PSAR)

Приставку strip_ перед $(FINAL_TARGET) удаляем и сохраняем файл.

Вот теперь ебуты будут собираться правильно, если этого не сделать, то полученные хомки будут вываливаться в XMB с формулировкой Unsupported prx type.

SееD 26.10.2007 12:57

то есть кернел режим недоступен? только юзер? это получается что, например, во флэш0 не залезешь?


Текущее время: 01:41. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc. Перевод: zCarot
PSPx Forum - Сообщество фанатов игровых консолей.