Довольно много вопросов о том как и с чего начать программирование для 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".
Сейчас мы не будем разбирать все строчки кода появившегося на экране. Эта программа написана
полностью правильно, так что для проверки работы нам надо просто её откомпилировать.
Идём в пункт "Проект->Компиляция". Если мы всё сделали правильно, то увидим в окошке вывода -
По этой ссылке не качается, вернее доходит до 31% и еррор Дал на пробу ссылку товарищу, на что получил ответ: "И так и сяк пробовал... 8 лет качаю всякое, но такого ни разу не видел о_О" Перезалейте плизз (желательно на letitbit.net, или ftp какой-нибудь, или к вам), а то моя "кропотливая сборка" СДК, весом под 700 Мб не пережила смерти харда, заново всё делать вручную ой как не хочестся... Спасибо.
Ну прежде чем заняться непосредственно созданием прог, я советую завести папку pspdev\Projects\
где вы будете хранить всё своё хозяйство =)
Писать мы будем конечно же, следуя традиции, программу "Hello, world!".
Итак, создали папку с проектами (pspdev\Projects\), создаём там папку "HW",
запускаем PSPxIDE.
Для начала идём в пункт "Файл->Новый" и получаем чистый лист. Сохраним его (Файл->Сохранить как...).
Выбираем нашу папку для программы (pspdev\Projects\HW) Имя файла вбиваем "main"(именно так и никак иначе)
и давим кнопку сохранить.
Далее идём в пункт "Проект->Мастер Makefile" и приводим появившуюся формочку к следующему виду -
Давайте пока не будем разбирать что там и как, просто сделайте как на картинке и всё. =)
Сделали? Давите "ОК".
Ну всё =) Начинаем писать собственно программу.
#include <pspkernel.h>
#include <pspdebug.h>
Это два необходимых нам хедера, копипастим этот код в свою программу.
pspkernel.h - очень нужный хедер, без него вобще ничего работать не будет.
pspdebug.h - хедер для вывода на экран отладочной инфы, именно его методы будем использовать для
вывода на экран.
Это тоже вписываем в программу и не задумываемся =) Последние две цифры модульинфы - версия вашей проги, второй аргумент указывает
что прога грузится в юзермод. Вторая строчка по сути дублирует первую, но туда ещё можно вписать и другие параметры, но мы их не рассматриваем здесь.
#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, запускаем и наслаждаемся =)
Вот так. Даю несколько полезных ссылок для дальнейшиз изысканий.
Если с Си/Си++ совсем плохо, сходите в лавку с компьютерной литературой и купите какой-нибудь
худо бедно учебник(типа для начинающих), или погуглите на предмет подобной литературы.
Вот что нашёл почти сразу - http://www.lib.ru/CTOTOR/
Удачи
(C) pspowner for pspx.ru
Возможно, TO BE CONTINUE...
Последний раз редактировалось pspowner; 26.10.2007 в 13:22.
Сразу хочу извиниться за оффтоп...
У меня возникла проблем, прошу помощи. Только не надо советовать читать мануал и давать прочие не относящиеся к делу советы.
Проблема такова, при попытке скомпилировать любой проект у меня возникает ошибка следующего характера:
Перепробовал всё что мог. Помогите. Заранее спасибо.
Так, есть подозрение что у тебя левый cygwin1.dll. Потому что качал девкит другой сборки? Или у тебя ещё 1 есть?
В общем с самого начала я делал сборку сам. То есть скачал отдельно PSPDev который идёт с инсталятором, установил его. Затем распаковал архив с PSPxIDE и сделал всё по инструкции. Тогда у меня ничего не запустилось, да и как то не было времени разьираться.
Сейчас, прочитав последние сообщения скачал Вашу подборку т.е. уже подготовленный PSPDev и PSPxIDE 2.1.6. Всё установил, всё раскидал. В папке Windows проверил файлик "гугвин". его там как и должно не оказалось. Но вот при попытке запука компилятора вылазит сообщение... Чего я только уже не перепробовал...
Сечас вот на пареллельной ОСи запустить попробую.
В общем в ходе опытов, выяснилось что проблема именно в компе. Попробовал запускать не на ноутбуке, а на домашней банке, выслушал пару матов, но проект скомпилировать тем не менее смог...
Если вдруг кто-то узнает в чем состоит проблема, скажите плиз.
Последний раз редактировалось Lord_Maloy; 23.10.2007 в 20:48.
В общем с самого начала я делал сборку сам. То есть скачал отдельно PSPDev который идёт с инсталятором, установил его. Затем распаковал архив с PSPxIDE и сделал всё по инструкции. Тогда у меня ничего не запустилось, да и как то не было времени разьираться.
Сейчас, прочитав последние сообщения скачал Вашу подборку т.е. уже подготовленный PSPDev и PSPxIDE 2.1.6. Всё установил, всё раскидал. В папке Windows проверил файлик "гугвин". его там как и должно не оказалось. Но вот при попытке запука компилятора вылазит сообщение... Чего я только уже не перепробовал...
Сечас вот на пареллельной ОСи запустить попробую.
В общем в ходе опытов, выяснилось что проблема именно в компе. Попробовал запускать не на ноутбуке, а на домашней банке, выслушал пару матов, но проект скомпилировать тем не менее смог...
Если вдруг кто-то узнает в чем состоит проблема, скажите плиз.
Очень странно, вот по тем сборкам которые указал, я устанавливал 3 раза - два раза дома и один раз на работе. Всё пашет на ура... матов не наблюдаю.
Сам Cygwin я ни разу не ставил, возможно дело в этом...
Последний раз редактировалось pspowner; 23.10.2007 в 21:06.
Lord_Maloy
у меня такая=же проблема была pspowner прав - дело 100% в версии Cygwin - найди все cygwin1.dll и удали их кроме того что в ...\pspdev\bin лежит (у меня например проблема была в том что использовалась cygwin1.dll от psp video converter)
добавлено через 12 минут Lord_Maloy
И еще ты точно переменные среды настроил?
Последний раз редактировалось ALgraFx; 23.10.2007 в 22:09.
Причина: добавил, подумав
[quote=ALgraFx;547383]Lord_Maloy
у меня такая=же проблема была pspowner прав - дело 100% в версии Cygwin - найди все cygwin1.dll и удали их кроме того что в ...\pspdev\bin лежит (у меня например проблема была в том что использовалась cygwin1.dll от psp video converter)[quote]
Спасибо, в общем подумал тут. Где обычно Windows смотрит свои dll, и вот оно... C:\Windows\System32, удалил оттуда гугвин и всё стало ОК.
Спасибо всем.
Если речь о PSPxIDE, то в пункте Проект->Мастер Makefile надо написать "Название в XMB". Далее, в пункте Проект->XMB Media включить картинки на заставку/фон и музыку.
попробовал сделать, как описано - все нормально компилится, но возникла проблема на 8гигстике - не запускается хоумбрюшка, черный экран, после вкл-выкл идет перезагрузка, причем и с другими хоумками такая беда, единственное идет PSPWrite. А на 4 гиг все нормально. У меня 3.40ОЕ.