PSPinfo.RU > Программы > Уроки программирования. Урок первый!

Уроки программирования. Урок первый!


07.09.08. Разместил: .:Witcher:.
Всем привет!!!

Вот я начинаю выкладывать уроки программирования на psp.

Естественно это не так легко если вы не знаете C++.

Но думаю что всего вы научитесь :)

Я постараюсь выкладывать как намного больше уроков :)
Сразу хочу извинится за ошибки. :)
Ну что, начнём?

Уверен что 99,9% пользователей не знают C++, но уж больно сильно хотят программировать на psp:)) Уверен что читать книжки они тоже не хотят:). Именно для таких пользователей я и буду писать уроки:)

Для начала нам надо установить все нужные программы и библиотеки.Насчёт программ я скажу что их достаточно много, но для начала мы будем использовать самую простую, а потом перейдём на более сложнее.

И так, начнём:)
Качаем нашу программу в которой мы будем работать: скачать. (пароль pspinfo.ru)
Программы не совсем стабильная, зато хорошая для начинающих:-)


Так же нам надо будет sdk, мне нравится pspdev, не знаю даже чем, наверно потому что я с неё начинал, и продолжаю в ней работать:) Скачать её можно сдесь. (пароль pspinfo.ru)

Также качаем библиотеку что бы отображалась русская кодировка тут
Распокованый фал кидаем в C:Pspsdkpspsdklib

Думаю можно начинать:)
Распаковываем архив с нашей программой, установки она не требует, так что кидаем её куда вам удобней:). Лично у меня она стоит в c:/программы/pspinfoide/

Далее распаковываем архив с sdk, давайте договоримся что он будет хранится в c:/pspsdk, так нам будет удобней:)
Терь надо поправить некоторые файлы что бы далее прога компилировала уж в prx, одним словом что бы пахало на 3.xx или 4.xx:)

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

<br />
$(PACK_PBP) EBOOT.PBP $(PSP_EBOOT_SFO) $(PSP_EBOOT_ICON) <br />
$(PSP_EBOOT_ICON1) $(PSP_EBOOT_UNKPNG) $(PSP_EBOOT_PIC1) <br />
$(PSP_EBOOT_SND0) [color=#FF0000]strip_$(FINAL_TARGET)[/color] $(PSP_EBOOT_PSAR)

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

Потом нужно в папке pspsdkbin переименовать mkdir.exe на mkdir2.exe, затем открыть файл pspsdkpspsdklibbuild.mak в любом текстовом редакторе и заменить все mkdir на mkdir2. Это связано с тем, что mkdir есть в Windows и перекрывает mkdir, входящую в SDK.

Ну вот уже и пол дела сделано:) Теперь запускаем нашу программу c:/программы/pspinfoide/pspinfoIDE.exe, так же советую сделать ярлык на рабочем столе:
Уроки программирования. Урок первый!


Теперь можно приступить и к настройке программы:
жмём проект > опции, и выставляем как на скрине:
Уроки программирования. Урок первый!


Вроде прога настроена:)

Приступаем к программирование, давайте сразу договоримся, я вам показую строчку и обьясняю её, а вы в свою очередь вставляете все строчки по порядку:). Делать будем мы как всегда привет мир lol
Создаём в програмке файл main.cpp



[quote]#include &lt;pspkernel.h><br />
#include &lt;pspdebug.h>[/quote]

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

<br />
PSP_MODULE_INFO("HW", 0, 1, 0);<br />
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER);<br />

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

#define printf    pspDebugScreenPrintf

Эта строчка показывает что если мы будем использывать printf, будет выполнятся pspDebugScreenPrintf, которая отображает то что вы хотите. Очень удобная команда, так что пользоватся буде ей:)

int exit_callback(int arg1, int arg2, void *common)<br />
{<br />
    sceKernelExitGame();<br />
<br />
    return 0;<br />
}<br />
<br />
int CallbackThread(SceSize args, void *argp)<br />
{<br />
    int cbid;<br />
<br />
    cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);<br />
    sceKernelRegisterExitCallback(cbid);<br />
<br />
    sceKernelSleepThreadCB();<br />
<br />
    return 0;<br />
}<br />
<br />
int SetupCallbacks(void)<br />
{<br />
    int thid = 0;<br />
<br />
    thid = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, 0, 0);<br />
    if(thid >= 0)<br />
    {<br />
        sceKernelStartThread(thid, 0, 0);<br />
    }<br />
<br />
    return thid;<br />

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

<br />
int main(void)<br />
{<br />
    SetupCallbacks(); //Устанавливаем колбеки<br />
    pspDebugScreenInit(); //Инициализируем экран для вывода текста<br />
    printf ("Привет мир!!!n");      //вот эта та команда printf, если бы мы выше не написали #define..., то нам бы пришлось писать pspDebugScreenPrintf<br />
    sceKernelDelayThread (1000*1000); //устонавливаем время работы программы (10сек)<br />
        sceKernelExitGame();        //Завершаем работу программы.<br />
    return 0;              //Ну эт уже обезатильно:)<br />
}<br />



Далее тыкаем проект > мастер makefile
Далее выбираем произвольный
И вписуем:
TARGET=Hello_World<br />
OBJS=main.o<br />
INCDIR =<br />
CFLAGS=-G0  -O2<br />
CXXFLAGS=$(CFLAGS) -fno-exceptions -fno-rtti<br />
ASFLAGS=$(CFLAGS)<br />
BUILD_PRX=1<br />
LIBDIR=<br />
LDFLAGS=<br />
LIBS=<br />
EXTRA_TARGETS=EBOOT.PBP<br />
PSP_EBOOT_TITLE=HW<br />
PSPSDK=$(shell psp-config --pspsdk-path)<br />
include $(PSPSDK)/lib/build.mak


Вот терь жмём компиляция. ИИИИИИИИИИИИ готово, кидаем на psp в папку psp/game/




Что такое makefile??
Правило, а так же инфа программе как надо компилировать файл


Все вопросы спрашуёте в коментах:). Если вам не понравилась моя статья, то прошу не писать плохие коменты:)
Кнопка спасибо чуть ниже smile
Спасибо за внимание laughing


Вернуться назад