Таймером я ещё хочу заняться позже, как с SDK лучше разберусь. Т.к. то, что он сейчас возвращает очень как-то слабо похоже на миллисекунды... Точнее иногда это миллисекунды, но порой его пробивает... В общем таймер у меня в листе исправлений записан.
Сегодня выложу последний релиз с твоими изменениями на сайте. Спасибо.
И буду сегодня пытаться откомпилить то, что в блокнотике накодил в отпуске! ^__^
добавлено через 6 часов 12 минут
Кстати, нет желания подключить к SDK ещё и TinyXML и Lua? (:
В принципе обе библиотеки есть в версиях для PSP, только откомпилить нужно да закинуть в общий архив.
Могу даже простые примеры, в рамках MGF, написать по работе с этими либами. Очень бы здорого было.
Последний раз редактировалось Mortem; 22.05.2007 в 02:27.
Причина: добавил, подумав
TinyXML закину обязательно, а LUA на слуху, но чесно говоря вживую не видел еще этож вроде не библиотека к SDK, а приложение - интерпретатор. Короче надо посмотреть.
Не, это либа, реализующая скриптовый компилятор. Собственно LuaPlayer и написан с использованием этой либы. Т.е. как минимум должны быть исходы, оптимизированные под PSP. К тому же вроде как исходы LuaPlayer доступны...
добавлено через 2 минуты
Жду вот пока скачается последний SDK - хочу сразу пример со звуком накатить в новой версии.
Плясал с бубном вокруг таймера - фигня какая-то. Пробовал несколько вариантов с форума ps2dev - без толку. Сейчас вот качаю разные исходники - пытаюсь высмотреть, как оно там работает. Глядишь когда скачается новый SDK - заборю эту проблему. (:
Последний раз редактировалось Mortem; 22.05.2007 в 12:41.
Причина: добавил, подумав
Вот что нарыл: TinyXML это не либа, а просто опенсорсные исходники под любой C/C++ компайлер, я выкладывал их: https://www.pspx.ru/forum/showpost.ph...64&postcount=2
А вот чтото типа примера использования (сам еще не проверял):
добавлено через 2 минуты
А LUA это и правда парсер LUA скрипта, на ps2dev есть библиотека, седня залью в SDK и выложу, в принципе, можешь не качать, я седня уже обновлю
Последний раз редактировалось wSlava; 22.05.2007 в 14:22.
Причина: добавил, подумав
А нельзя помимо полного SDK вести его версию и выкладывать ещё и аддон? А то по 50 метров качать каждый раз напряжно. (: У меня анлим, но мееедленный. ):
Хотя в этот раз всего 13 метров скачалось, так что подожду новую версию.
Аддон - это в принципе сама библиотека, только ее нужно с SVN-сервера pspdev выкачать, после инсталяции она себя разносит по подкаталогам SDK. В принципе, большинсто инсталируется просто (но из консоли ) , траблы у меня были с zlib,png и mikmod, а freetype к примеру, я так и не смог поставить, так как нужно эмулятор линукса под винду ставить, ваще жесть. Сейчас, в принципе уже в SDK все что нужно включил, следующие обновления - если уж только специфическое что нибудь будет нужно.
Последний раз редактировалось wSlava; 22.05.2007 в 16:07.
В принципе Lua же должно хватить, чтобы делать полноценные сложные проекты. Так что можно приостановить развитие самого SDK, и сосредоточится на IDE и играх.
У меня вот уже анимированный человечек по экрану бегает. С управлением почти определился:
Analog - перемещение курсора, нацеливание.
X, O, П, V - перемещение.
LShift - стрельба.
RShift - перезарядка, хотя скорее всего автоматом будет.
Текстуру человечка стыбрил из оригинального Кримсона. (:
очередной SDK. Вставил lua (подпапочка lua, там же примерчик есть в sample), ужал в 7z на удивление до 30 мегов по сравнению с rar ... http://ifolder.ru/2098910
Еще в аттачменте чуть поправил mgfaudio, сделал, чтоб WAV в отдельном потоке проигрывался
Последний раз редактировалось wSlava; 22.05.2007 в 22:52.
Не, количество одновременно проигрываемых WAV вот MikMod_SetNumVoices(-1, 10); - я 10 поставил, но можно до 64 аппаратных и 192 - программно микшируемых каналов, то есть всего 256 одновременно.
Я имел в виду, что раньше чтоб очередной сэмпл озвучить, я в MGF в Update
ставил вызов MikMod_Update(), а теперь я оформил в виде отдельного потока (sceKernelCreateThread) с циклом
int AudioChannelThread(int args, void *argp)
{
while (WAV_Inited)
{
MikMod_Update();
sceKernelDelayThread(1);
}
return (0);
}
это я сделал, так как при вызове через Update шли тормоза ...
Кстати, пока больше не изменяй MGFAUDIO - я хочу отформатировать под общий стандарт. В принципе могу отдельно выложить отформатированный код, либо дождись, когда всё выложу.
добавлено через 14 минут
Т.е. Update теперь не нужно вызывать? Или нужно для mp3?
добавлено через 20 минут
А, исправил ещё серьёзные косяки с анимацией спрайта. И у шрифтов починил форматирование по правому краю.
Последний раз редактировалось Mortem; 22.05.2007 в 23:56.
Причина: добавил, подумав
Написал пример по работе со звуком. mp3-файл проигрался нормально, а вот с WAV возникли проблемы. Из 4 файлов примера только 2 хоть что-то играют, да и то, совсем не то, что в семпле, просто нойз какой-то. Может там какой-то особый формат нужен? Битрейт? Моно? Может я чего пропустил?
Ссылка на пример с приложенными файлами: http://elmortem.mirgames.ru/download/psp/mgf_ex7.rar
В принципе у меня всё готово (на сервак закачал), как только с WAV'чиками разберёмся - рилизну.
Последний раз редактировалось Mortem; 24.05.2007 в 00:57.
Причина: так, дописал всякого...
формат нужен MONO WAVE без сжатия (еще называют RIFF), я конвертил в принципе все ок, еще wav брал с библиотеки звуков (их полно в инете). Сейчас с багом разбираюсь, когда одновременно и WAV и MP3 играют, почему то если MP3 играет, после воспроизведения WAV (даже нескольких подрят) переключение на другую MP3 приводит к подвисанию, проблему нашел, это когда MP3_INIT проходит, разбираюсь...
P.S. Аську в личку скинул
добавлено через 14 часов 34 минуты
Починил аудио ! Долбануться можно, оказывается, когда несколько потоков создается посредством sceKernelCreateThread, то экспериментально я установил что sceKernelDelayThread(int delay), то бишь пауза сколько то микросекунд рассинхронизирует потоки (то бишь все виснет напрочь), и в таком случае нужно юзать sceKernelDelayThreadCB(int delay) ! Ща еще поделаю, уже завтра с утра выложу
Последний раз редактировалось wSlava; 26.05.2007 в 01:33.
Причина: добавил, подумав
Выкладываю новую версию mgfaudio, отформатированный под mgf
Вот некоторые изменения:
1)Исправил баг в mp3player.c, связанный с потоками
2)Wav - при добавлении в плейлист загружаются в память и потом при указании имени проигрываются, так в разы быстрее
Небольшое описание :
Есть 3 подхода к использованию mgf_audio:
1) Можно просто проиграть любой файл:
MGFAUDIO *player=new MGFAUDIO();
player->PlayFile("super.mp3")
2) Можно с помощью Add добавить любые файлы (сейчас это MP3 и Wav) в плейлист, а затем с помощью Play(),Next(), Prev(),Pause(),Stop() ... проигрывать плейлист:
а затем в нужном месте snd->Play(SND_SCORE), причем Wav файлы проигрываются независимо друг от друга, то есть микшируются, сейчас поставил до 20 одновременно, если snd->Play вызывает mp3, то текущий проигрыеваемый mp3 остановится и запустится выбранный, и это не
влияет на Wav.
Еще ввел признак окончания проигрывания StopType:
MGF_HAND_STOP - это когда вручную вызывается Stop()
MGF_END_PLAYLIST - когда заканчивается плейлист
MGF_END_PLAYFILE - (сейчас только для MP3) когда заканчивается проигрывание по PlayFile()
Для атоматического воспроизведения по плейлисту следующей мелодии
нужно поставить AutoNext=true, для обработки данного события
нужно вызывать Update() (временно, далее будет автоматически)
Для очищения плейлиста используется функция Clear() (не нужно при удалении объекта)
Последний раз редактировалось wSlava; 26.05.2007 в 13:11.