Sunday, 2024-12-22
FuSa Project
[ New messages · Members · Forum rules · Search · RSS ]
ПРОГРАММИРОВАНИЕ ДЛЯ PSP
Andy_maNDate: Tuesday, 2008-08-05, 11:48 PM | Message # 1
General - lieutenant
Group: Administrators
Messages: 427
Reputation: 26
Status: Offline
loading...
Всё постараемся описать по пунктам, и так поехали...

Что нужно:

1. Знание Английского языка - хотя бы технического
Если ваш английский хромает, то очень большая вероятность того, что программирование для PSP превратится для вас в танцы с бубном.
Но это всего лишь препятствие, и тех кто твёрд в своих намерениях, это не остановит.

2. Наличие опыта программирования на C/С++. Все программы для PSP пишутся именно на этом языке (или же на ассемблере для процессора MIPS). С ассемблером начинающему я бы не рекомендовал экспериментировать, лучше наберитесь опыта в языке высокого уровня.
Если вы пока не знакомы с C/С++ то рекомендую вам ознакомиться со следующей книгой:
Джесс Либерти - Освой C++ самостоятельно за 21 день
Все электронные книги рекомендую искать здесь http://www.ebdb.ru

3. Ну и наконец нам понадобится SDK. Как бы меня не осуждали, но я использую SDK под Windows и всем пользователем "винды" так же советую не переходить на Linux ради программирования для PSP, просто если вы с Linux-ом на "вы", то это будет сильно тормозить скорость разработки ваших программ.

Устанавливаем SDK:

Итак вы всё еще здесь smile
Давайте договоримся, что про Linux мы ничего не знаем и будем всё делать в Windows.

Для начала надо скачать сам SDK.
Рекомендую MINPSPW - это самый лучший SDK под Windows, который мне доводилось использовать.
Скачать его можно отсюда: http://sourceforge.net/projects/minpspw/
(на момент написания данного гайда, последняя версия 0.8.3 ~30MB)
Скачиваем версию с документацией!!! (если вы только не гений)

Установка не займёт много времени, просто запустили инсталлер и выбрали куда устанавливать.
Рекомендуется устанавливать в папку на корне диска, причём имя папки должно содержать только латинские символы (лучше не длиннее 8-ми символов)
Самый лучший вариант устанавливать по умолчанию в C:\pspsdk

Если вам нужны дополнительные библиотеки, то вы также можете их скачать по адресу: http://sourceforge.net/projects/minpspw/

Итак, SDK установлен и вы готовы скомпилировать ваш первый проект smile

"HELLO WORLD"

Давайте с самого начала договоримся, что мы установили SDK в C:\pspsdk.
Итак, идём в папку с примерами из SDK:
C:\pspsdk\psp\sdk\samples\controller\basic
Как вы видите мы выбрали пример использования контроллера, т.е. джойстика.
И так в этой папке нам надо создать файлы с помощью которых мы будем компилировать наш примерчик, стирать объектные файлы и копировать на PSP

Сделав это, мы сможем работать так же комфортно, как и с IDE, при этом никакой IDE нам не понадобится.

Итак, создаём файлы BUILD.BAT, CLEAR.BAT и COPY.BAT.

В файл BUILD.BAT добавляем следующие строки:

REM C:/pspsdk - это путь к вашему SDK
C:/pspsdk/bin/make
pause

Таким способом мы сможем компилировать двойным нажатием на BUILD.BAT
Просто, не правда ли? Всё равно, что нажать на BUILD в любом IDE smile
К тому же, вызывая напрямую наш MAKE из папки C:/pspsdk/bin/, у нас не возникнет конфликтов с другими установленными компиляторами.

Теперь создадим CLEAR.BAT

del *.o
del *.elf
del *.sfo
del *.pbp
del *.prx

Данный файл можно использовать для "зачистки", если вы заметите, что компилятор не хочет компилировать измененные исходники.

И наконец COPY.BAT

REM X - это буква PSP, а MY_APP_FOLDER - папка для вашей программки
copy /Y EBOOT.PBP X:\PSP\GAME\MY_APP_FOLDER

Данным файлом можно с лёгкостью скопировать скомпилированную программу прямиком на PSP

Вы так же можете создать файл MKNCPY.BAT, который сразу выполнит все операции.
Вот его содержимое:

CALL CLEAR.BAT
CALL BUILD.BAT
CALL COPY.BAT

Вот и всё, можно компилировать smile
Подключаем PSP, запускаем MKNCPY.BAT и вуаля всё готово!
Можно отключить PSP и посмотреть, что получилось smile

Cоветы:

Для редактирования исходных файлов использовать БЛОКНОТ не рекомендую, лучше вооружиться текстовым редактором с подсветкой синтаксиса.
В этом отношение рекомендую EmEditor - на мой взгляд, самый лучший вариант.

Те файлы, которые мы с вами создали, очень легко изменить для работы с другим проектом. Просто копируйте их в папку с проектом и меняйте MY_APP_FOLDER на нужное название.

Сайты по теме:
http://www.pspdev.org
http://www.psp-programming.com/
http://www.qj.net
http://www.maxconsole.org

И про MAKEFILE

TARGET = controller_basic
НАЗВАНИЕ ВАШЕГО ПРИЛОЖЕНИЯ (при компиляции EBOOT.PBP это название ни где ни мелькает)

OBJS = main.o
(файлы для компиляции, все файлы .c .cpp .S вашего проекта только с расшерением .o)

INCDIR =
Путь к папке с заголовками

CFLAGS = -O2 -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)

Стандартные параметры компиляции (о подробностях их использования можно узнать из справочной информации к компилятору)

LIBDIR =
Папка с библиотеками

LDFLAGS =
Дополнительные параметры для линковки (о подробностях их использования можно узнать из справочной информации к компилятору)

EXTRA_TARGETS = EBOOT.PBP
Используется для компиляции файла исполняемого файла EBOOT.PBP

PSP_EBOOT_TITLE = Basic controller sample
Название вашего приложения в XMB

PSPSDK=$(shell psp-config --pspsdk-path)
Путь к SDK - это строчка везде одинаковая

include $(PSPSDK)/lib/build.mak
Путь к скрипту компиляции (Для компиляции PRX файлов можно использовать build_prx.mak)

====================================================================

Начинающий, может столкнуться со следующей проблемой:

Библиотека вывода текста из PSPSDK не поддерживает КИРИЛИЦУ

Конечно можно использовать множество разных способов устранения данного недостатка, но я вам предлагаю самый лёгкий вариант smile
Для этого просто используйте, данную библиотеку, она уже пропатчена и тестировалась с СДК версии 0.8.3

 
BARIKDate: Tuesday, 2008-08-12, 0:07 AM | Message # 2
Private
Group: Betatesters
Messages: 16
Reputation: 0
Status: Offline
loading...
Очень хорошая вещь, а самое главное доступно написано, благодаря именно этому сообщению я начел шевелиться в прогамировании. smile


excuse me for my english, I russian
 
Andy_maNDate: Tuesday, 2008-08-12, 5:16 AM | Message # 3
General - lieutenant
Group: Administrators
Messages: 427
Reputation: 26
Status: Offline
loading...
Чтож, замечательно :) значит потраченное на написание данного гайда время не прошло даром, а это не может не радовать ^^
 
keeponjamminDate: Monday, 2008-08-18, 0:10 AM | Message # 4
-= Active Beta-testeR =-
Group: Betatesters
Messages: 356
Reputation: 14
Status: Offline
loading...
Я уже говорил, что английский разговор важен :P


www.illusionless.nl
 
lupusDate: Wednesday, 2008-08-20, 9:13 PM | Message # 5
Major
Group: Users
Messages: 87
Reputation: 1
Status: Offline
loading...
энди, респект за гайд, только жаль я си не знаю smile
слушай такой вопос: реально ли пропатчить уже откомпиленную хомку с целью поменять местами х/о с японского варианта на европейский, подобно тому, как ты шрифты патчил?

 
Andy_maNDate: Thursday, 2008-08-21, 2:29 PM | Message # 6
General - lieutenant
Group: Administrators
Messages: 427
Reputation: 26
Status: Offline
loading...
Quote (lupus)
слушай такой вопос: реально ли пропатчить уже откомпиленную хомку с целью поменять местами х/о с японского варианта на европейский, подобно тому, как ты шрифты патчил?

Это довольно легко, не сложнее чем хомки с 1.50 под 3.хх переделывать (не кернел) smile
А насчёт Си, читай ту книжку, что я порекомендовал, через неделю точно уже сможеш писать программы :р

 
BARIKDate: Thursday, 2008-08-21, 4:06 PM | Message # 7
Private
Group: Betatesters
Messages: 16
Reputation: 0
Status: Offline
loading...
Мои приветствия Andy_maN
вот я решил то начать с твоей порекомендованой книжке, и уже застопорился прямо на первом самом простом задании cry

Написание програмки чтоб она выводила на экран надпись хелло ворлд я использую компилятор DEV C++ и пробывал встроеный в BORLAND C++ BUILDER6 компилятор писал вот это:

#include <iostream.h>

int main()
{
cout << "Hello World!\n";
return 0;
}

Что не так, или я что то не так делаю ошибку показывает где тут ощибка?


excuse me for my english, I russian
 
lupusDate: Thursday, 2008-08-21, 5:32 PM | Message # 8
Major
Group: Users
Messages: 87
Reputation: 1
Status: Offline
loading...
Quote (Andy_maN)
Это довольно легко, не сложнее чем хомки с 1.50 под 3.хх переделывать (не кернел) А насчёт Си, читай ту книжку, что я порекомендовал, через неделю точно уже сможеш писать программы :р

я бы читал, да времени особо нет sad я врач а не кодер biggrin
я имею ввиду поправить в уже компиленной хомке, а не сырцы пересобрать, ведь не ко всему они есть sad

 
Andy_maNDate: Thursday, 2008-08-21, 5:59 PM | Message # 9
General - lieutenant
Group: Administrators
Messages: 427
Reputation: 26
Status: Offline
loading...
Quote (lupus)
я имею ввиду поправить в уже компиленной хомке, а не сырцы пересобрать, ведь не ко всему они есть

Я тоже это имел ввиду, т.к. исправление сорцов это вобще проще простого smile

Что касается потоков cout и cin:
В программирование для PSP они не используются, так что лучше привыкать к библиотеке stdio
хотя iostream вещь конечно интересная smile
В прикреплённом архиве находится проэкт для DEV-CPP с примером iostream (проверенный)
Во втором архиве полезный пример, иллюстрирующий принцип работы с stdio (проверенный)

Attachments: dev-cpp.hello_w.rar (0.9 Kb) · stdio.rar (1.2 Kb)
 
BARIKDate: Thursday, 2008-08-21, 7:41 PM | Message # 10
Private
Group: Betatesters
Messages: 16
Reputation: 0
Status: Offline
loading...
Да так получается всё wink но не мог бы ты пожалуйста для пока нуба в этом деле объяснить попроще я ведь нечего не понял почти что ты написал surprised Да кстати ну и как мне теперь учтиться по той книге если там не такие какие нужно примеры показаны, мне что то(какую нибудь часть) надо менять, чтоб они выполнялись?


excuse me for my english, I russian
 
Andy_maNDate: Thursday, 2008-08-21, 9:09 PM | Message # 11
General - lieutenant
Group: Administrators
Messages: 427
Reputation: 26
Status: Offline
loading...
Для обучения можешь ничего не менять, просто используй мой пример с iostream и добавляй в него новый материал
Потом. когда более менее разберешся, сам не заметишь как перейдёш на printf()

 
lex3aDate: Friday, 2008-11-07, 8:20 PM | Message # 12
Private
Group: Users
Messages: 12
Reputation: 0
Status: Offline
loading...
Гыгы *смех злого гения* )))раньше у мня стоял пспДевкит но он плохо компилил........))а это просто чудо.....теперь можно сделать хелоу ворлд.....только у мня идейка чтоб текст выводился из текстового документа,можно же ведь так сделать??????

Added (2008-11-07, 8:20 Pm)
---------------------------------------------

Quote
EXTRA_TARGETS = EBOOT.PBP
Используется для компиляции файла исполняемого файла EBOOT.PBP

PSP_EBOOT_TITLE = Basic controller sample
Название вашего приложения в XMB

Еще есть вот эти значения......
PSP_EBOOT_ICON = icon0.png такая маленькая иконка в XMB
PSP_EBOOT_ICON1 = тоже как фон.....ICON1.png можно использовать как видео icon1.pmf
PSP_EBOOT_PIC1 = Картинка фона в XMB название PIC1.png
PSP_EBOOT_SND0 = Звук приложения в XMB название snd0.at3

 
Andy_maNDate: Friday, 2008-11-07, 9:39 PM | Message # 13
General - lieutenant
Group: Administrators
Messages: 427
Reputation: 26
Status: Offline
loading...
Quote (lex3a)
Еще есть вот эти значения......
PSP_EBOOT_ICON = icon0.png такая маленькая иконка в XMB
PSP_EBOOT_ICON1 = тоже как фон.....ICON1.png можно использовать как видео icon1.pmf
PSP_EBOOT_PIC1 = Картинка фона в XMB название PIC1.png
PSP_EBOOT_SND0 = Звук приложения в XMB название snd0.at3

И это не предел :)
Достаточно открыть build.mak чтобы увидеть все :p

 
lex3aDate: Friday, 2008-11-07, 10:19 PM | Message # 14
Private
Group: Users
Messages: 12
Reputation: 0
Status: Offline
loading...
Quote (Andy_maN)
И это не предел smile
Достаточно открыть build.mak чтобы увидеть все tongue

Ого)
Можешь плиз сказать код чтоб текст приложения из текстового документа подгружался??

 
Andy_maNDate: Saturday, 2008-11-08, 0:21 AM | Message # 15
General - lieutenant
Group: Administrators
Messages: 427
Reputation: 26
Status: Offline
loading...
Quote (lex3a)
Можешь плиз сказать код чтоб текст приложения из текстового документа подгружался??

Ты имеешь ввиду вместо printf("hello_world");
вывести текст из файла?

Ну так это очень просто:

Code
SceUID file;
char buf[255];
//...//
file = sceIoOpen("ms0:/text.txt", PSP_O_RDONLY, 0777);
if (file >= 0) while (sceIoRead(file, buf, 255) > 0) printf("%s",buf);

Этот код распечатает весь файл ms0:/text.txt

 
Search:

Copyright MyCorp © 2024
Create a free website with uCoz