помогите. я залез в code blocks. как мне скомпилировать (хотя бы несчатную мою прогу) для psp?
Добавлено спустя 4 минуты 19 секунд:
конечо уже писали:Итак, в этом топике будет небольшой рассказ о том, как скомпилировать и запустить первую программу на своей приставке. Сразу предупреждение: статья мегатехнического плана, почти все содержание касается утомительной, но быстрой настройки компилятора, а в результате вы получите лишь банальный "Hello World".Все начинали с простого.
Нам необходимо:
-логика
-прямые руки
-компьютер
-прошитая псп
Гарантий что с приставкой ничего не будет не гарантирую (вдруг руки из зада растут)
Используемый язык программирования — Си, я буду использовать бесплатную IDE Code::Blocks под Windows XP. Пользователи других компиляторов или ОС могут попробовать настроить IDE сами, благо, настройки у всех похожи; я же использовал то, для чего нашел мануал ;)
Для начала, скачаем набор компиляторов, линкеров и библиотек для PSP под названием DevKitPSP. Распакуйте его куда-нибудь, я его распаковал в корень диска E: (теперь у меня есть папка E:\devkitpsp\).
Теперь откройте Code::Blocks. В меню выберите SettingsCompiler and Debugger, как Selected Compiler в открывшемся окошке выберите GNU GCC (он должен стоять по умолчанию), скопируйте его, назвав, например, DevKitPSP, и настройте его:
Вкладка Search DirectoriesCompiler (удалите все, что там есть, и нажимайте Add для добавления каждого из путей):
E:\devkitPSP\include
E:\devkitPSP\psp\include
E:\devkitPSP\psp\sdk\include
Linker:
E:\devkitPSP\lib
E:\devkitPSP\psp\lib
E:\devkitPSP\psp\sdk\lib
Вкладка Toolchain Executables:
Compiler's installation directory: E:\devkitPSP . Там есть примечание, что в этой папке должна быть подпапка bin, проверьте.
C-compiler: psp-gcc.exe
C++-compiler: psp-g++.exe
Linker for dynamic libs: psp-g++.exe
Linker for static libs: psp-ar.exe
Еще три поля я оставил пустыми.
Теперь можно жать OK, и переходить к созданию нового проекта (FileNewProject..., слева в окошке жмем Projects и выбираем Empty). Заполняем Project Title (не играет роли, пусть будет PSPHelloWorld), не забываем поставить папку для сохранения проекта (я вон в первый раз забыл, и получил кучу глюков и ошибок); компилятор, разумеется, ставим свежесозданный нами.
Наш проект девственно пуст, создаем фаил (FileNewFile..., на название наплевать, я выбрал main.c) — не забудьте в мастере создания фаила выбрать как язык Си и поставить галочки "Add to current project", "Debug" и "Release" (почему они не стоят по умолчанию?).
В созданный фаил копируем код (ключ доступа - хабрахабр).
Теперь последние штрихи к настройке. Мы уже настроили то, с помощью чего будем компилировать, но не настроили, как и что у нас должно выходить. Поэтому жмем правой кнопкой на название проекта справа, выбираем Properties, а там — Build targets. Снимаем галочку "Auto-generate filename extension", и правим в Output filename расширение "exe" на "elf". Выполняем тоже самое для конфигурации Release, жмем Ok.
Жмем правой кнопкой на название проекта опять, выбираем Build Options и, на вкладке Linker Options, вписываем в Other linker options:
-lpspdebug -lpspdisplay -lpspge -lpspctrl -lpspsdk -lpsplibc -lpspnet_inet -lpspnet_apctl -lpspnet_resolver -lpsputility -lpspuser -lpspkernel
. Повторяем для Release.
Вроде всё (надеюсь, это последняя статья скучного технического плана). Теперь собираем проект (BuildBuild или знакомое всем Ctrl-F9) — если вдруг появились ошибки, то думаем, что же сделали не так, а потом спрашиваем в комментариях (может, я забыл чего).
Чтобы не настраивать потом заново, стоит сохранить проект как шаблон (FileSave Project as user-template...).
Итак, у нас есть elf-фаил нашей программы. Перед тем, как закидывать его на PSP, надо преобразовать его в EBOOT.PBP (название придумал не я, честно). Для этого у меня стоит такой bat-ник:
"E:\devkitPSP\bin\mksfo.exe" %1/bin/Debug/%1 %1/bin/Debug/%1.sfo
"E:\devkitPSP\bin\psp-fixup-imports.exe" %1/bin/Debug/%1.elf
"E:\devkitPSP\bin\psp-strip.exe" %1/bin/Debug/%1.elf -o %1/bin/Debug/stripped.elf
"E:\devkitPSP\bin\pack-pbp.exe" %1/bin/Debug/EBOOT.PBP %1/bin/Debug/%1.sfo NULL NULL NULL NULL NULL %1/bin/Debug/stripped.elf NULL
Он располагается у меня в директории pspprj, в которой я создаю по папке для каждого проекта. Используется он так: make_eboot.bat HelloWorld . Если у вас другая организация папок, или вы просто хотите его переписать или запускать каждую программу вручную — просто запускайте по строчке, не забывая заменять %1 на названия или пути к фаилам. В результате у вас получится фаил EBOOT.PBP, его надо будет закинуть в папку /PSP/GAME150/HelloWorld (или другое название)/, а все остальное можно спокойно удалить. Теперь проверяйте (выход — по кнопке Home).
P.S. Надеюсь у вас все работает! Лично у меня работало!
Источник
Добавлено спустя 11 минут 8 секунд:
ах да Код
Добавлено спустя 4 минуты 34 секунды:
блин ссыль на код устарела там уже не то wassat а файла у меня уже нету black_eye
Добавлено спустя 4 минуты 40 секунд:
набор компиляторов, линкеров и библиотек для PSP под названием DevKitPSPссылочка
Добавлено спустя 1 минуту 23 секунды:
вот код
#include
#include
PSP_MODULE_INFO("Hello World", 0, 1, 1);
int ExitCallback(int Arg1, int Arg2, void *Common)
{
sceKernelExitGame();
return 0;
}
int CallbackThread(SceSize Args, void *Argp)
{
int CallbackId;
CallbackId = sceKernelCreateCallback("Exit Callback", ExitCallback, NULL);
sceKernelRegisterExitCallback(CallbackId);
sceKernelSleepThreadCB();
return 0;
}
int SetupCallbacks(void)
{
int ThreadId = 0;
ThreadId = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, 0, 0);
if (ThreadId >= 0)
{
sceKernelStartThread(ThreadId, 0, 0);
}
return ThreadId;
}
int main(int argc, char ** argv)
{
pspDebugScreenInit();
SetupCallbacks();
while(1)
{
pspDebugScreenPrintf ("Hello World");
sceDisplayWaitVblankStart();
}
sceKernelSleepThread();
return 0;
но я просто хочу скомпилировать свою прогу а не писать hello world.