Програмуємо для psp частина i, настройка компілятора, програмуємо для psp, статті,

Давайте домовимося відразу: я дотримуюся паттерну "вивчення навчанням", тобто вчу, одночасно вивчаючи, обганяючи читачів на 2-3 "кроку" вперед. Однак це не означає, що я нічого не знаю і все, що кажу - звичайні копіпаст: я намагаюся розібратися в темі, перш ніж писати про неї. Тому сміливо задавайте питання, цим ви принесете користь і собі, і мені: на питання, відповідь на які я не знаю, я буду його шукати, усвідомлювати і розповідати вам.

Будемо припускати як даність, що у вас є приставка Sony PSP, перепрошитого до останньої версії - 3.90 M33-3 (так звана custom firmware, неофіційна прошивка). Про те, як перепрошивати, вже розповідали багато. і зупинятися на цьому я не буду. Так само будемо вважати, що в цегла ваш вставлена ​​флешка, на якій є хоча б 50 Кб вільного місця, і ви маєте до них доступ (наприклад, через саму PSP).

Скажу відразу: я майже впевнений, що нічого поганого з вашої приставкою не станеться, якщо ви будете досить обережні, але ніяких гарантій дати, на жаль, не можу.

Використовувана мова програмування - Сі, я буду використовувати безкоштовну IDE Code :: Blocks під Windows XP. Користувачі інших компіляторів або ОС можуть спробувати налаштувати IDE самі, благо, настройки у всіх схожі; я ж використовував те, для чого знайшов мануал;)

Для початку, скачати набір компіляторів, лінкерів і бібліотек для PSP під назвою DevKitPSP. Розпакуйте його куди-небудь, я його розпакував в корінь диска E: (тепер у мене є папка E: devkitpsp).

Тепер відкрийте Code :: Blocks. У меню виберіть Settings → Compiler and Debugger, як Selected Compiler в віконці виберіть GNU GCC (він повинен стояти за замовчуванням), скопіюйте його, назвавши, наприклад, DevKitPSP, і налаштуйте його:

E: devkitPSPinclude
E: devkitPSPpspinclude
E: devkitPSPpspsdkinclude

E: devkitPSPlib
E: devkitPSPpsplib
E: devkitPSPpspsdklib

Вкладка 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, і переходити до створення нового проекту (File → New → Project. Зліва в віконці тиснемо Projects і вибираємо Empty). Заповнюємо Project Title (не грає ролі, нехай буде PSPHelloWorld), не забуваємо поставити папку для збереження проекту (я геть в перший раз забув, і отримав купу глюків і помилок); компілятор, зрозуміло, ставимо свіжостворений нами.

Наш проект невинно порожній, створюємо фаил (File → New → File. На назву наплювати, я вибрав 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.

Щоб не налаштовувати потім заново, варто зберегти проект як шаблон (File → Save Project as user-template.).

Отже, у нас є elf-фаил нашої програми. Перед тим, як закидати його на PSP, треба перетворити його в EBOOT.PBP (назва придумав не я, чесно). Для цього у мене стоїть такий bat-ник:

"E: devkitPSPbinmksfo.exe"% 1 / bin / Debug /% 1% 1 / bin / Debug /% 1.sfo
"E: devkitPSPbinpsp-fixup-imports.exe"% 1 / bin / Debug /% 1.elf
"E: devkitPSPbinpsp-strip.exe"% 1 / bin / Debug /% 1.elf -o% 1 / bin / Debug / stripped.elf
"E: devkitPSPbinpack-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. Вирізав весь "гумор", який спочатку вписував. Завжди самого дратували тупі жарти в такого роду постах, а в тому, що мої жарти не тупі, я бути впевнений не можу :)

Схожі статті