среда, 20 июля 2011 г.

Урок первый - привет мир!


Решил сделать цикл уроков по программированию! 
Соответственно первый урок, как обычно, программа Hello world(привет мир).О том как настроить компилятор вы можете почитать 
Все сделали?...тогда приступим!

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


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

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

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



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

#define printf    pspDebugScreenPrintf


Обычный дефайн, заменяем в процессе компиляции printf  на pspDebugScreenPrintf


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(); //Инициализируем экран для вывода текста
    printf ("Hello world!!!n");//Стандартная фраза
    sceKernelDelayThread (1000*1000); //Насколько мы задержали текущий поток! (10сек)
        sceKernelExitGame();        //Завершаем работу программы.
    return 0;              //Ретурн)
}



Далее cоздаем makefile->
Пишем:

TARGET=Hello_World
OBJS=main.o
INCDIR =
CFLAGS=-G0  -O2
CXXFLAGS=$(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS=$(CFLAGS)
BUILD_PRX=1
LIBDIR=
LDFLAGS=
LIBS=
EXTRA_TARGETS=EBOOT.PBP
PSP_EBOOT_TITLE=HW
PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak


Жмем на молоток(ура готово), кидаем на psp в папку psp/game/ наслаждаемся первой программой под псп.
Все вопросы и пожелания в комментарии!
 
На этом первый урок завершен!

Продолжение следует!


Комментариев нет:

Отправить комментарий