PSPx форум

PSPx форум (https://www.pspx.ru/forum/index.php)
-   Программирование для PSP (https://www.pspx.ru/forum/forumdisplay.php?f=101)
-   -   Горячая линия по программированию (https://www.pspx.ru/forum/showthread.php?t=35747)

pspowner 04.03.2007 17:21

Горячая линия по программированию
 
Предлагаю в этой теме разрешать вопросы связанные с написанием прог.
Помогать друг другу так сказать :) Возможно также отписываться здесь о различных трюках и приёмах...

Вот у меня, кстати, есть несколько вопросов:

1) Как найти все файлы в папке?
2) Как в работающей программе найти путь с которого она была запущена?
3) Планирую прикрутить к своей модификации PSAR дампера защиту от замены копирайта. Делать я это собираюсь следующим образом - ну банально считать CRC и сравнивать с оригиналом. Кстати, по этому поводу см. вопрос № 2
Пугает мня следующее - если я объявляю переменную unsigned int CRC=0; а дальше плюсую туды значения считанные из ебута, то что произойдёт при перегрузке переменной CRC? Прога упадёт, или значение CRC сбросится в 0 и дальше всё будет нормально? Конечно для гарантии можно было-бы замутить асм-вставки типа -

Код:

addi $10, buff
shl $10,1

но этого не хотелось бы. Кстати, в комповых процессорах есть overflow flag во флаговом регистре, интересно есть ли аналог в МИПСе?

P.S. Ну естественно оригинальный CRC в файле будет храниться в измененном виде чтобы всякие вумники не смогли сами высчитать это значение, найти в ебуте и подправить.

Mortem 25.03.2007 04:26

pspowner
1. (2.) Скачал исходники gPSP (http://forums.maxconsole.net/showthread.php?t=27660) - тас есть файлики gui.* - там точно есть!

добавлено через 4 часа 1 минуту
О, вот ещё ссылку полезную нашёл.
File Browser
http://www.psp-programming.com/forum...ic,1333.0.html

l3VGV 12.07.2007 20:04

Граждане вопрос. есть функция звать
sceKernelTotalFreeMemSize()
на голову вся больная мрачно. показывает то правильно то неправильно. видимо считает память доступную ядру. подозреваю что юзать её могут тока соники в своих осёвых делах, те если например мой процесс нажрал памяти под кэш и высвободил её, функция не видит этого и считает что память обратна занята. отсюда вопрос:
какой функцие правильно определять кол-во свободной памяти?

ещё раз уж пришёл спрошу. есть ли какойто аналог баундс чекера но чтоб не для визуал студии а просто ему можно было кормить *.с файлы? желательно бесплатный -)

freecod 03.08.2007 06:17

Вложений: 1
Ага, вот я и здесь =)
Возник такой вопрос - из плагина (prx) можно рисовать текстуры поверх XMB?

добавлено через 1 час 29 минут
###
Возвращаясь к теме обработки кнопок пульта. Поковырявшись, выяснил что REMOTE - это псевдо клавиша, она "нажата" когда к PSP подключен пульт (0х30С0000). Сейчас бы декриптнутый prx стандартного плеера... Может кто нибудь его залить?

добавлено через 7 часов 20 минут
###
l3VGV: насчёт установки частоты процессора при загрузке - это я копаюсь в mp3 плагине, хочу привести его в человеческий вид :\
В аттаче исходник с комментами в косячных местах (main_thread, рядом с обработчиком кнопок). Архив rar.

pspowner 03.08.2007 06:53

Цитата:

Сообщение от freecod (Сообщение 486693)
Возвращаясь к теме обработки кнопок пульта. Поковырявшись, выяснил что REMOTE - это псевдо клавиша, она "нажата" когда к PSP подключен пульт (0х30С0000). Сейчас бы декриптнутый prx стандартного плеера... Может кто нибудь его залить?

А ты пробовал понажимать кнопки на пульте и посмотреть значения pad.Buttons? Просто интересно, я бы сам проверил, да пульт проипал (

l3VGV 03.08.2007 08:58

почитал посмотрел. сходу сказать затруднительно. нужно сделать пустое приложение и потестить, это всё вечером.
а оно точно работает на 300 и 150 если вызывать не в гл треде а попозже?
пс и имхо тут частоту трогать ненужно. для мр3 хватает и 266, даже если играть процом а не дсп. хотя конечно для чистоты совести расковыряем в чём трабл.

l3VGV 03.08.2007 18:16

Вложений: 1
На вот, попробуй...

freecod 04.08.2007 00:41

Пример работает, что неудивительно - это хомка, а глючит плагин. К тому же после загрузки консоли - всё меняется легко (так на комбинации кнопок висит смена). Виснет только при исп. scePowerSetClockFrequency(speed[speednum],speed[speednum],bus[speednum]), а связка
scePowerSetCpuClockFrequency(speed[speednum]);
scePowerSetBusClockFrequency(bus[speednum]);
просто не устанавливает частоту выше 222\111...

pspowner: А вот это 0х30С0000 и есть значение pad.Buttons при подключенном пульте. Если при этом нажимать кнопки пульта - никакой реакции. Ну они блин с этим пультом намутили... Я вот думаю - через этот слот подключаются куча других устройств - микрофон,... Может у них api специальная есть? Вроде sceGetPerefiry =)

l3VGV 04.08.2007 09:01

Когда я пробовал у меня и обычная прога зависала :) почитай там начало самое. оно помогает...

freecod 04.08.2007 13:31

Ну вроде в sdk настоятельно советуют использовать scePowerSetCpuClockFrequency вместо scePowerSetClockFrequency при установке частот ниже 222\111, из чего делаю вывод, что для частот выше 222 использовать именно её.
NOTE: Please use scePowerSetBusClockFrequency and scePowerSetCpuClockFrequency instead of this function for clock <= 222 and bus <= 111.
Программа нормально отработала, правда частоту не изменила :( осталось 222. Вот такие дела.
PS Кстати, релиз medialib близок? Ждёмс =)

l3VGV 04.08.2007 16:18

да не в функциях дело, конструктор к себе поставь и заработает скорее всево.
либу поихоньку делаю. как приделаю файловый буфер так будет ещё релизек. завтро вечером скорее всего.

freecod 13.08.2007 12:57

Кто-нибудь знает, как сделать симпатичные поп-апы в меню, играх; вроде таких, как в SCEP (в плагинах)?

freecod 27.08.2007 22:17

Ну да ладно. А не известно, где хранится дефолтный порядок иконок в XMB? Надоела эта "Камера", "Обновление" и "Настройки видео" на линии после каждой перезагрузки =\

viper-al 30.10.2007 11:06

Посетила меня седня светлая идея :), какая пока не скажу, чтоб не5 сглазить, но сразу столкнулся с глобальной проблемой:о данном вопросе я незнаю ровным счетом ничего(именно по этому вопросу, но не по програмированию в целом), вот и решил обратится за помощью.
Собственно интересуюсь по какому принципу были запущны на зыз дум и квэйк, как игра от пк была запущена на зыз?!!!Зарание спасибо!

pspowner 30.10.2007 12:09

Игры от ПК на PSP не запускаются в принципе, поскольку это разные платформы. Есть правда эмуляторы(DosBox, Bochs) которые эмулируют слабенькую ПК в PSP, но для таких игр как Doom и Quake1/2 это явно не годится.

Что касается портов, видимо ты именно их имел в виду, то да, есть такое дело. Берётся исходный код Doom или Quake, естественно на языке программирования высокого уровня(С/С++) и правится/затачивается, а потом и компилируется под PSP. Естественно, это уже будет не игра для ПК, это игра для PSP. Т.е. тут вопрос "как была запущена?" неправильный в корне. Не запусщена, а портирована(переделана) она была. Повторяю ещё раз - переделывались исходники, а не готовый бинарник(ехешник). Далее эти исходники компилировались и получался Doom для PSP, или Quake для PSP.

viper-al 30.10.2007 14:43

Спасибо огромное!!!! Теперь понял :) А то я никак немог врубится что к чему! Один только еще вопрос, а где они исходники брали? о_0 Разве это можно найти в сети?

pspowner 30.10.2007 14:52

Что-то есть.. В частности Квейка найти можно, на сайте ID выложены исходники почти всех квейков.

http://www.idsoftware.com/business/techdownloads/

l3VGV 30.10.2007 17:15

Раньше ИД при выпуске нового поколения движка релизили сырци версии -2. те при старте ку3 они выложили ку1. потом был ку2. от ку3 не видел.

viper-al 31.10.2007 07:55

А исходники игр от мидвэй, из серии анриал найти можно? А то представте какое будет счастье в анриал торнамент первый или в возвращение в напали загамать :)

pspowner 31.10.2007 08:30

Ну я же написал что почти всех)

Випер, если не можешь сам даже найти исходники, то о портировании, тем более таких серьёзных проектов, думать ИМХО рано.

Мечтать, пожалуйте в поток сознания, а здесь только по делу.

freecod 04.11.2007 11:38

Цитата:

Сообщение от l3VGV (Сообщение 552173)
Раньше ИД при выпуске нового поколения движка релизили сырци версии -2. те при старте ку3 они выложили ку1. потом был ку2. от ку3 не видел.

Против =\ Пару лет назад встречал сорсы Q3 от ID, они выложили их в сеть.
http://www.yandex.ru/yandsearch?text=исходники+Quake+3

lexaaa 14.11.2007 19:59

при компиляции букры вылетает такая ошибка

"make: *** No rule to make target `bkmemcpy.S', needed by `bookr.elf'. Stop."

сколько build.mak не листал так и не дошло чтож ему нехватает.

l3VGV 15.11.2007 12:17

Нехватает ему именно того что он написал. видимо какойто самописный модуль на асме О.о

pspowner 15.11.2007 12:21

Это не модуль на асме, это "Subst" насколько я понимаю. Может его надо сделать из bkmemcpy.exp через build-psp-exports, или просто выкинуть из мейкфайла...

А может и действительно модуль амовый какой...

lexaaa 15.11.2007 21:44

просто надо было мне в гугле поискать а не мучится два дня :)
http://forums.ps2dev.org/viewtopic.p...ef201eea56ded5

добавлено через 41 минуту
наконецто вышло откомпилить. только не понял как отключить удаление обьектников в начале компиляции. там как раз и стирается bkmemcpy.S вместе с "*.о" приходится вручную копировать пока компиляция не завершилась.

Ilsor 21.06.2008 09:36

И ещё вопрос от меня.
Я могу компилировать программы для PSP, но это только для Си программ. Попытка сделать Си++ вызывает ошибки линкера. Вот типичный пример:
Код:

Compiling: main.c
Linking console executable: Release\Test.elf
E:\From PSP\devkitPSP\psp\lib\libstdc++.a(vterminate.o): In function `__gnu_cxx::__verbose_terminate_handler()':
: undefined reference to `_impure_ptr'

Судя по материалам из инета - это проблема cygwin.dll. Но вот как её обойти, кто-нибудь знает? Кто-нибудь Си++ программы компилировал под PSP?

Mortem 06.03.2009 15:30

Если ещё актуально, то нужно добавить заменить в мейкфайле -lstdc на -lstdc++

l3VGV 06.03.2009 15:42

Это мы победили вроде.

Ilsor 07.03.2009 16:56

Цитата:

Если ещё актуально, то нужно добавить заменить в мейкфайле -lstdc на -lstdc++
Вся беда в том, что через make файл компилируется без проблем. Но стоит позволить Code Block самому создавать make-файлы, так сразу такая вот ошибка и вылезает.

l3VGV 10.11.2009 13:33

а там через стек параметры ходят или через регистры? есть мнение что через регистры

с++ код прекрасен как всегда. язык смайликов и точек.

l3VGV 10.11.2009 16:08

ну здоровые люди обычно 20 параметров посылают как указатель на структуру :)

передача параметров она не сдк регламинтируется а приянтой для платформы идеей, как на псп я уже забыл, но обычно если регистров много(читай больше чем в х86), то передают именно через регистры, ибо в разы быстрее. а многие архитектуры это напрямую провоцируют.

вызови отладчик на моменте входа в функцию, будет видно как они идут и чем грозит твоя хитрость. если уж совсем не в моготу и надо исхитриться то делай по примеру функций форматного ввода вывода. ещё можно передавать сначала количество параметров а потом укзатель на массив параметров. или массив указателей на параметры. как в main.

Psihsss 10.11.2009 19:32

Здрасть уважаемые фрумчане(или лучше сказать програмисты?)))
Захотелось вот поработать програмерром под зыз установил pspsdk и visual c++))написал привет мир))и все ступор( нормальных туториалов найти не как не могу (нашел парочку буржуйских но они через gygwin пишут) у меня цель написать 2д игру хотябы в один уровень(типо дум 2д)а там и до 3д добраться) дайте плиз ссыль на нормальный туториал на русском(или на английском только чтобнорьмально все описыволось)) язык C++ щас изучаю просто ввели в ступор кое какие мелочи(типа printf вместо cout) помагите добрые програмисты))

l3VGV 10.11.2009 19:38

В комплекте к сдк идёт куча экзамплов. читай их.

Psihsss 10.11.2009 20:01

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

Psihsss добавил 10-11-2009 в 19:47
а советы опытного програмиста можно?? какой движок для 2д игры взять?? а какой для 3д(толька не движок кваки, слышал что Unreal engine поддерживает зыз так ли это??)
и хоть какой нибудь пример можно?? чтоб разобраться в коде и понять как это работает?))

Psihsss добавил 10-11-2009 в 20:01
а какойнибудь отдельный туториал есть? экзамплы это конес=чно хорошо но хотелось бы большего(
заранее спс.

l3VGV 10.11.2009 20:29

большего лично я не видел.

Psihsss 11.11.2009 12:07

а как насчет движка для 2д аркады-шутера?? просто хотелось бы для начала сделать что нибудь похожее на дум2д))

DenDav 13.02.2010 17:39

Вот я хотел скомпилировать первый квейк для псп, но при компиляции пишут ошибку.
Цитата:

C:\PSP\Quake\psp-quake\Quake\psp>REM C:/pspsdk

C:\PSP\Quake\psp-quake\Quake\psp>C:/pspsdk/bin/make
Makefile:217: warning: overriding commands for target `obj/HARDWARE/EBOOT.PBP'
C:/pspsdk/psp/sdk/lib/build.mak:194: warning: ignoring old commands for target `
obj/HARDWARE/EBOOT.PBP'
clipping.cpp
Ошибка в синтаксисе команды.
make: *** [obj/HARDWARE/psp/clipping.o] Error 1

C:\PSP\Quake\psp-quake\Quake\psp>pause
Для продолжения нажмите любую клавишу . . .
Завершить выполнение пакетного файла [Y(да)/N(нет)]? n
Можете сказать, в чём тут проблемка?

ToTAL_SUiCiDE 07.09.2010 13:04

Помнится как то давно пытался установить Bochs на свою слимку. Тайммашин, кхплойт итд, короче потом сверкающими глазами смотрел на то как ошалевший от такого запуска DSLinux нервно пытался запустится.
Так вот. Сейчас прорыл тему на этом сайте и нашел исходники бокса для зызки под ядро 1.0.
Естественно хотелось бы собрать его под 5.00 ядро, конечно если это возможно. Тока вот моих хеловорлдовых познаний по программированию на псп явно не хватит. Так что прошу опытных пользователей помочь мне :scratch_one-s_head:

kalexi 05.03.2011 17:54

Чет не могу скачать либы! В чем может быть проблема?
Логи
Цитата:

Admin@microsof-f83dff ~
$ svn checkout svn://svn.pspdev.org/psp/trunk/zlib
svn: Can't connect to host 'svn.pspdev.org': Connection refused
kalexi добавил 05.03.2011 в 17:54
Так, либы скачал появляется слдующая проблема:

Цитата:

psp-g++ -I. -IC:/pspdev/psp/sdk/include -O2 -G0 -Wall -I. -IC:/pspdev/psp/sdk/in
clude -O2 -G0 -Wall -fno-exceptions -fno-rtti -c -o main.o main.cpp
psp-gcc -I. -IC:/pspdev/psp/sdk/include -O2 -G0 -Wall -c -o graphics.o graphic
s.c
psp-gcc -I. -IC:/pspdev/psp/sdk/include -O2 -G0 -Wall -L. -LC:/pspdev/psp/sdk/l
ib main.o graphics.o framebuffer.o -lpspdebug -lpspdisplay -lpspge -lpspctrl
-lpspsdk -lc -lpspnet -lpspnet_inet -lpspnet_apctl -lpspnet_resolver -lpsputilit
y -lpspuser -lpspkernel -o controller_basic.elf
graphics.o: In function `loadImage':
graphics.c:(.text+0x128): undefined reference to `png_create_read_struct'
graphics.c:(.text+0x148): undefined reference to `png_set_error_fn'
graphics.c:(.text+0x150): undefined reference to `png_create_info_struct'
graphics.c:(.text+0x164): undefined reference to `png_init_io'
graphics.c:(.text+0x170): undefined reference to `png_set_sig_bytes'
graphics.c:(.text+0x17c): undefined reference to `png_read_info'
graphics.c:(.text+0x1a4): undefined reference to `png_get_IHDR'
graphics.c:(.text+0x1e0): undefined reference to `png_destroy_read_struct'
graphics.c:(.text+0x20c): undefined reference to `png_set_strip_16'
graphics.c:(.text+0x214): undefined reference to `png_set_packing'
graphics.c:(.text+0x248): undefined reference to `png_get_valid'
graphics.c:(.text+0x260): undefined reference to `png_set_filler'
graphics.c:(.text+0x2b8): undefined reference to `png_read_end'
graphics.c:(.text+0x2c8): undefined reference to `png_destroy_read_struct'
graphics.c:(.text+0x2e0): undefined reference to `png_set_tRNS_to_alpha'
graphics.c:(.text+0x2f8): undefined reference to `png_read_row'
graphics.c:(.text+0x360): undefined reference to `png_set_palette_to_rgb'
graphics.c:(.text+0x370): undefined reference to `png_set_gray_1_2_4_to_8'
graphics.o: In function `saveImage':
graphics.c:(.text+0xb08): undefined reference to `png_create_write_struct'
graphics.c:(.text+0xb18): undefined reference to `png_create_info_struct'
graphics.c:(.text+0xb2c): undefined reference to `png_init_io'
graphics.c:(.text+0xb5c): undefined reference to `png_set_IHDR'
graphics.c:(.text+0xb68): undefined reference to `png_write_info'
graphics.c:(.text+0xc1c): undefined reference to `png_write_row'
graphics.c:(.text+0xc38): undefined reference to `png_write_end'
graphics.c:(.text+0xc44): undefined reference to `png_destroy_write_struct'
graphics.c:(.text+0xc88): undefined reference to `png_destroy_write_struct'
graphics.o: In function `flipScreen':
graphics.c:(.text+0xce0): undefined reference to `sceGuSwapBuffers'
graphics.o: In function `guStart':
graphics.c:(.text+0xe6c): undefined reference to `sceGuStart'
graphics.o: In function `initGraphics':
graphics.c:(.text+0xe80): undefined reference to `sceGuInit'
graphics.c:(.text+0xe9c): undefined reference to `sceGuDrawBuffer'
graphics.c:(.text+0xeb0): undefined reference to `sceGuDispBuffer'
graphics.c:(.text+0xeb8): undefined reference to `sceGuClear'
graphics.c:(.text+0xec4): undefined reference to `sceGuDepthBuffer'
graphics.c:(.text+0xed0): undefined reference to `sceGuOffset'
graphics.c:(.text+0xee4): undefined reference to `sceGuViewport'
graphics.c:(.text+0xef0): undefined reference to `sceGuDepthRange'
graphics.c:(.text+0xf04): undefined reference to `sceGuScissor'
graphics.c:(.text+0xf0c): undefined reference to `sceGuEnable'
graphics.c:(.text+0xf1c): undefined reference to `sceGuAlphaFunc'
graphics.c:(.text+0xf24): undefined reference to `sceGuEnable'
graphics.c:(.text+0xf2c): undefined reference to `sceGuDepthFunc'
graphics.c:(.text+0xf34): undefined reference to `sceGuEnable'
graphics.c:(.text+0xf3c): undefined reference to `sceGuFrontFace'
graphics.c:(.text+0xf44): undefined reference to `sceGuShadeModel'
graphics.c:(.text+0xf4c): undefined reference to `sceGuEnable'
graphics.c:(.text+0xf54): undefined reference to `sceGuEnable'
graphics.c:(.text+0xf5c): undefined reference to `sceGuEnable'
graphics.c:(.text+0xf70): undefined reference to `sceGuTexMode'
graphics.c:(.text+0xf7c): undefined reference to `sceGuTexFunc'
graphics.c:(.text+0xf88): undefined reference to `sceGuTexFilter'
graphics.c:(.text+0xf90): undefined reference to `sceGuAmbientColor'
graphics.c:(.text+0xf98): undefined reference to `sceGuEnable'
graphics.c:(.text+0xfb0): undefined reference to `sceGuBlendFunc'
graphics.c:(.text+0xfb8): undefined reference to `sceGuFinish'
graphics.c:(.text+0xfc4): undefined reference to `sceGuSync'
graphics.c:(.text+0xfd4): undefined reference to `sceGuDisplay'
graphics.o: In function `clearScreen':
graphics.c:(.text+0x101c): undefined reference to `sceGuClearDepth'
graphics.c:(.text+0x1024): undefined reference to `sceGuClear'
graphics.c:(.text+0x102c): undefined reference to `sceGuFinish'
graphics.c:(.text+0x1040): undefined reference to `sceGuSync'
graphics.o: In function `blitAlphaImageToScreen':
graphics.c:(.text+0x10ec): undefined reference to `sceGuTexImage'
graphics.c:(.text+0x1110): undefined reference to `sceGuTexScale'
graphics.c:(.text+0x1120): undefined reference to `sceGuFinish'
graphics.c:(.text+0x1158): undefined reference to `sceGuSync'
graphics.c:(.text+0x118c): undefined reference to `sceGuGetMemory'
graphics.c:(.text+0x120c): undefined reference to `sceGuDrawArray'
graphics.c:(.text+0x1220): undefined reference to `sceGuFinish'
graphics.c:(.text+0x1258): undefined reference to `sceGuSync'
graphics.o: In function `blitImageToScreen':
graphics.c:(.text+0x1320): undefined reference to `sceGuCopyImage'
graphics.c:(.text+0x1328): undefined reference to `sceGuFinish'
graphics.c:(.text+0x135c): undefined reference to `sceGuSync'
collect2: ld returned 1 exit status
make: *** [controller_basic.elf] Error 1
Мейкфайл:
Цитата:

TARGET = controller_basic
OBJS = main.o graphics.o framebuffer.o

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

LIBDIR =
LDFLAGS =

EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Eboot Title

PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak

frostegater 05.03.2011 18:09

kalexi, ну значит ошибка в файле controller_basic.elf или при его компиляции. Ты что компилишь хоть? А да и еще: покидай все хедеры в инклуд папку компиля


Текущее время: 07:30. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
PSPx Forum - Сообщество фанатов игровых консолей.