Решил сделать цикл уроков по программированию!
Соответственно первый урок, как обычно, программа Hello world(привет мир).О том как настроить компилятор вы можете почитать
Все сделали?...тогда приступим!
В своих уроках я буду поступать так я вам показываю строчку и обьясняю её, а вы в свою очередь вставляете все строчки по порядку:).Создаём в програмке файл main.cpp
#include <pspkernel.h>
#include <pspdebug.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;
}
{
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
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/ наслаждаемся первой программой под псп.
Все вопросы и пожелания в комментарии!
На этом первый урок завершен!
Продолжение следует!
Комментариев нет:
Отправить комментарий