barsuk прав.
Целым архив залить всё равно не удалось, но это видимо связано с политикой провайдера или клуба, где я сижу (хотя скачивать "большие" файлы могу без проблем).
Закачал и DJGPP и menuetlibc.
http://ftp.kolibrios.org/users/Asper/
Порт FCE Ultra - NES (Dendy)
в общем теперь так... что с твоей версией(c местного ftp).. что с моей(с зеркала официального ftp), как я понял разницы нету(всмысле итог один и тот же, но размер файлов разный)...
распоковал djgpp и menuetlibc....
прописал все переменные среды(DJGPP, MENUETDEV - поставил c:\DJGPP\menuetos\ и в Path добавил пути к menuetos\include\, menuetos\linuxtools\, DJGPP\bin\)...
распоковал FCEU_v0.1a_src.7z...
получил кучу *.c, *.h, *.o и других файлов...
у тебя там лежит уже скомпилированный fce(размер 263104)... рабочий...
и fce.kex(размер 74292, сжатый kpack)... тоже рабочий...
проверяю через KlbrInWin.exe, на "Matrix v0.06, The by Wojciech Andralojc (PD).nes" и "Tetramino v0.30 by Damian Yerrick (PD).nes"....
Опыт 1:
снес откомпилированные(но оставил *.o файлы)...
сразу попытался собрать fce через MK.bat...
получаю fce(размер 252352)... хм.. проверяю... рабочий.. =)...
Опыт 2:
снес fce и все *.o файлы... даже в подпапках.. =)...
запускаю MKBase.bat... fce.o, m6502.o, mapper.o компилируються нормально.... вываливается ошибка на компиляции video.c..
варнинги я как понял совсем не причер.. смотрю причину ерроров.. =)..
так... чтото с переменной PSS... она определяется в version.h...
залез туда... вижу:
хм... видимо pss не определяеться.... т.е. PSS_STYLE не проходит...
тут два вариант придумал... либо изменить в version.h вместо выше написанного...
либо
вставить в первую строчку в файл Makefile.base строчку:
строчку взял из Makefile.menuet... кстати.. этот файл нигде не участвует.. ну и ладно.. =))..
я рекомендую второй вариант... =)... благо с первым вариантов fce будет компилироваться и собираться... но работать не будет.. =)..
...
чтож... пытаюсь снова скомпилировать.. получаю
видимо не хватает файлика nest.o... иду в drivers\menuet\...
выполняю команду make.... получаю ошибки(пока пишу две главные.. остальные может изчезнут)...
хм... вижу что видимо стоят жесткие пути... иду исправлять.. =)...
как не страно.. правильные(т.е. относительные пути для настроеной системы) были закоментированы... убираю полные пути... убираю коментарии.. опять make...
nest.o собирается... хоть make и выдает вроде(пишу так, ибо я с майком крайне мало работал.. и плохо разбираюсь в ошибках) ошибку:
теперь MKBase.bat проходит нормально.. =).. буду запускать MK.bat..
новая ошибка... не находит m.о... хотя он нормально собирается еще в MKBase.bat... это как я понял mapper'ы...
смотрю в MK.bat... вижу
строчка сборки запускаемого файла... как я понял.. =)... чтож... нужный файл m.o лежит в папке mappers\.. чтоже.. исправляю MK.bat... добавляю гденить сверху строчку
...
и о чудо... файл полностью собирается... получается fce размером 252352 байт... не верю глазам.. =)... такой же как и у тебя.. =)... контрольная сумма не совпадает только...
запускаю KlbrInWin.exe... вбиваю путь... нажимаю enter... и УРА... работает.. =)...
вот мой путь к сборки твоей прогой... надеюсь тут ты подчерпнешь моменты чтобы исправить у себя, для наименьшей затраты для сборки программы...
з.ы. компилировал и собирал программу три дня.. =)... не полные конечно.... первое с чем столкнулся - это найти средство сборки.. =).. потом помучался с version.h... и сильно и долго мучался с готовой но не рабочей программой.. =)... благо из двух вариантов(описанныйх выше) с version.h, я выбрал первый.. =)... а вот про нехватку нужных флагов для компилятора - я не догадывался.. поэтому и не мог собрать рабочую программу... решил написать опус о своих старанию сюда.. и о нерабочей программе(т.е. явно неправильной сборки)... но пока писал - проверял разные варианты.. и нарвался на правильный.. =)...
надеюсь комунить сей рассказ понравиться.... а может и не понравиться... я получил опыт пока собирал проект... благо привык нажать одну кнопку.. и получить готовую прогу.. конечно для меня многое не понятно.... но все равно... =)... спасибо...
распоковал djgpp и menuetlibc....
прописал все переменные среды(DJGPP, MENUETDEV - поставил c:\DJGPP\menuetos\ и в Path добавил пути к menuetos\include\, menuetos\linuxtools\, DJGPP\bin\)...
распоковал FCEU_v0.1a_src.7z...
получил кучу *.c, *.h, *.o и других файлов...
у тебя там лежит уже скомпилированный fce(размер 263104)... рабочий...
и fce.kex(размер 74292, сжатый kpack)... тоже рабочий...
проверяю через KlbrInWin.exe, на "Matrix v0.06, The by Wojciech Andralojc (PD).nes" и "Tetramino v0.30 by Damian Yerrick (PD).nes"....
Опыт 1:
снес откомпилированные(но оставил *.o файлы)...
сразу попытался собрать fce через MK.bat...
получаю fce(размер 252352)... хм.. проверяю... рабочий.. =)...
Опыт 2:
снес fce и все *.o файлы... даже в подпапках.. =)...
запускаю MKBase.bat... fce.o, m6502.o, mapper.o компилируються нормально.... вываливается ошибка на компиляции video.c..
Code: Select all
gcc -Wall -c -o video.o video.c
video.c: In function 'InitVirtualVideo':
video.c:39: warning: assignment makes pointer from integer without a cast
video.c: In function 'writepcx':
video.c:65: error: expected ')' before 'PSS'
video.c:65: warning: too few arguments for format
video.c:73: warning: pointer targets in passing argument 1 of 'sprintf' differ i
n signedness
video.c:111: warning: pointer targets in passing argument 1 of 'sprintf' differ
in signedness
make.exe: *** [video.o] Error 1
так... чтото с переменной PSS... она определяется в version.h...
залез туда... вижу:
Code: Select all
...
#if PSS_STYLE==2
#define PSS "\\"
#define PS '\\'
#elif PSS_STYLE==1
#define PSS "/"
#define PS '/'
#elif PSS_STYLE==3
#define PSS "\\"
#define PS '\\'
#endif
...
тут два вариант придумал... либо изменить в version.h вместо выше написанного...
Code: Select all
...
#define PSS "/"
#define PS '/'
...
вставить в первую строчку в файл Makefile.base строчку:
Code: Select all
TFLAGS = -O2 -fomit-frame-pointer -DC80x86 -DLSB_FIRST -DVGA -DPSS_STYLE=1 -DDRIVER_DIR="\"menuet\""
я рекомендую второй вариант... =)... благо с первым вариантов fce будет компилироваться и собираться... но работать не будет.. =)..
...
чтож... пытаюсь снова скомпилировать.. получаю
Code: Select all
c:\DJGPP\bin\ld.exe: nest.o: No such file: No such file or directory (ENOENT)
выполняю команду make.... получаю ошибки(пока пишу две главные.. остальные может изчезнут)...
Code: Select all
nest.c:1:70: error: D:/OS/menuetos/include/menuet/os.h: No such file or directory (ENOENT)
vgavblank.h:2:50: error: D:/OS/menuetos/include/SDL/SDL_timer.h: No such file or directory (ENOENT)
как не страно.. правильные(т.е. относительные пути для настроеной системы) были закоментированы... убираю полные пути... убираю коментарии.. опять make...
nest.o собирается... хоть make и выдает вроде(пишу так, ибо я с майком крайне мало работал.. и плохо разбираюсь в ошибках) ошибку:
Code: Select all
nest.o:nest.c:(.text+0x40f): undefined reference to `_DriverInterface'
nest.o:nest.c:(.text+0x7b1): undefined reference to `_LoadGame'
nest.o:nest.c:(.text+0x7bd): undefined reference to `_InitMachine'
nest.o:nest.c:(.text+0x7c6): undefined reference to `_TrashMachine'
nest.o:nest.c:(.text+0x7d6): undefined reference to `_Run6502'
nest.o:nest.c:(.text+0x7db): undefined reference to `_TrashFCE'
nest.o:nest.c:(.text+0x7e0): undefined reference to `_TrashMachine'
nest.o:nest.c:(.text+0x837): undefined reference to `_fceumain'
nest.o:nest.c:(.text+0x986): undefined reference to `_SDL_Delay'
make.exe: *** [nest] Error 1
новая ошибка... не находит m.о... хотя он нормально собирается еще в MKBase.bat... это как я понял mapper'ы...
смотрю в MK.bat... вижу
Code: Select all
mld fce fce.o mapper.o m6502.o video.o general.o endian.o svga.o sound.o nsf.o fds.o gg.o ines.o state.o nest.o m.o LibmSDL.a
Code: Select all
copy mappers\m.o m.o
и о чудо... файл полностью собирается... получается fce размером 252352 байт... не верю глазам.. =)... такой же как и у тебя.. =)... контрольная сумма не совпадает только...
запускаю KlbrInWin.exe... вбиваю путь... нажимаю enter... и УРА... работает.. =)...
вот мой путь к сборки твоей прогой... надеюсь тут ты подчерпнешь моменты чтобы исправить у себя, для наименьшей затраты для сборки программы...
з.ы. компилировал и собирал программу три дня.. =)... не полные конечно.... первое с чем столкнулся - это найти средство сборки.. =).. потом помучался с version.h... и сильно и долго мучался с готовой но не рабочей программой.. =)... благо из двух вариантов(описанныйх выше) с version.h, я выбрал первый.. =)... а вот про нехватку нужных флагов для компилятора - я не догадывался.. поэтому и не мог собрать рабочую программу... решил написать опус о своих старанию сюда.. и о нерабочей программе(т.е. явно неправильной сборки)... но пока писал - проверял разные варианты.. и нарвался на правильный.. =)...
надеюсь комунить сей рассказ понравиться.... а может и не понравиться... я получил опыт пока собирал проект... благо привык нажать одну кнопку.. и получить готовую прогу.. конечно для меня многое не понятно.... но все равно... =)... спасибо...
Молодец! Сам догадался, значит не так уж ты и не очень в Си. А я вот тут http://asper.ucoz.ru/load/0-0-0-2-20 уже исходник с исправленным Makefile.base и MK.bat закачал с намерением написать какие надо внести изменения в эти файлы в FCEU_v0.1a_src.7z.
Размеры fce разные, потому что в архиве вариант скомпилированный с libc от Ярека, ты же скомпилировал с libc от Diamond'а.
поначалу я его использовал когда компилировал всё строчкой make -f Makefile.base, но потом решил, что лучше отдельно собирать базовый код и отдельно код относящийся к Колибри.
верно.
У меня почему-то с относительными путями эти файлы не находятся, но на всякий случай (и для общего понимания дела) я их оставил в комментарии.
Эти undefined reference это функции определенные в других частях программы и не видимые в этом модуле.
Мне было лень писать extern'ы и я просто забил на них, т.к. программа все равно собирается. Я подумал, что если у кого-то лени поменьше и есть желание то он всегда сможет исправить это самостоятельно.
А я вот ещё вчера вечером самостоятельно исправил и надеялся тебе помочь
это ещё ничего у меня ушло на это около месяца, учитывая то, что я до этого писал на Си (и С++) только для компиляторов фирмы Borland и ничего не знал о мэйкфайлах и встроенном ассемблере gcc, поэтому
мне понятно .
Возникнут вопросы обращайся, всегда готов помочь. Спасибо и тебе, главным образом за желание разобраться в сборке программы.
Вообще я бы хотел добавить ещё звук к эмулятору, но т.к. на мою аудиокарту пока нет драйвера, то и тестировать мне неначём. Поэтому если у кого-нибудь возникнет такое же желание и будет поддерживаемая Колибри аудиокарта...
s1n wrote:получаю fce(размер 252352)... хм.. проверяю... рабочий.. =)...
Размеры fce разные, потому что в архиве вариант скомпилированный с libc от Ярека, ты же скомпилировал с libc от Diamond'а.
s1n wrote: Makefile.menuet... кстати.. этот файл нигде не участвует.. ну и ладно.. =))..
поначалу я его использовал когда компилировал всё строчкой make -f Makefile.base, но потом решил, что лучше отдельно собирать базовый код и отдельно код относящийся к Колибри.
s1n wrote:благо с первым вариантов fce будет компилироваться и собираться... но работать не будет.. =)..
верно.
s1n wrote:хм... вижу что видимо стоят жесткие пути... иду исправлять.. =)...
как не страно.. правильные(т.е. относительные пути для настроеной системы) были закоментированы...
У меня почему-то с относительными путями эти файлы не находятся, но на всякий случай (и для общего понимания дела) я их оставил в комментарии.
s1n wrote:nest.o собирается... хоть make и выдает вроде(пишу так, ибо я с майком крайне мало работал.. и плохо разбираюсь в ошибках) ошибку:
Эти undefined reference это функции определенные в других частях программы и не видимые в этом модуле.
Мне было лень писать extern'ы и я просто забил на них, т.к. программа все равно собирается. Я подумал, что если у кого-то лени поменьше и есть желание то он всегда сможет исправить это самостоятельно.
s1n wrote:вот мой путь к сборки твоей прогой... надеюсь тут ты подчерпнешь моменты чтобы исправить у себя, для наименьшей затраты для сборки программы...
А я вот ещё вчера вечером самостоятельно исправил и надеялся тебе помочь
s1n wrote:з.ы. компилировал и собирал программу три дня.. =)...
это ещё ничего у меня ушло на это около месяца, учитывая то, что я до этого писал на Си (и С++) только для компиляторов фирмы Borland и ничего не знал о мэйкфайлах и встроенном ассемблере gcc, поэтому
s1n wrote:благо привык нажать одну кнопку
мне понятно .
s1n wrote:конечно для меня многое не понятно.... но все равно... =)... спасибо...
Возникнут вопросы обращайся, всегда готов помочь. Спасибо и тебе, главным образом за желание разобраться в сборке программы.
Вообще я бы хотел добавить ещё звук к эмулятору, но т.к. на мою аудиокарту пока нет драйвера, то и тестировать мне неначём. Поэтому если у кого-нибудь возникнет такое же желание и будет поддерживаемая Колибри аудиокарта...
решил поковырять FCEUv0.2src.7z.....
в MK.bat прописал полный путь к libmSDL.a...
но у тебя в папке уже есть он... так что можно либо грохнуть libmSDL.a, либо изменить путь... примерно так..
и Makefile.win не собирается.. =).. но там не стал заморачиваться... мне он не очень нужен...
и еще... зачем ты оставляешь в архиве с сорсами *.o и fce???
з.ы. а ты changelog не ведешь??? просто интеерсно что ты добавил в новой версии... что убрал... readme твоего не видно в сорсах.. =)
з.ы.2. добавил страничку на wiki (http://wiki.kolibrios.org/Applications/ru/FCEU)...
в MK.bat прописал полный путь к libmSDL.a...
Code: Select all
mld nest drivers/menuet/nest.o D:/OS/menuetos/lib/libmSDL.a
Code: Select all
mld nest drivers/menuet/nest.o libmSDL.a
и еще... зачем ты оставляешь в архиве с сорсами *.o и fce???
з.ы. а ты changelog не ведешь??? просто интеерсно что ты добавил в новой версии... что убрал... readme твоего не видно в сорсах.. =)
з.ы.2. добавил страничку на wiki (http://wiki.kolibrios.org/Applications/ru/FCEU)...
Исправил MK.bat. Выкинул всё лишнее. Ссылка та же.
Он идет вместе с бинарником, там же и readme.
За страничку на wiki спасибо.
Я там немножко ошибся. Можешь исправить:
на
4. Заходишь в папку menuetos из пункта 3.
changelog не ведешь???
Он идет вместе с бинарником, там же и readme.
За страничку на wiki спасибо.
Я там немножко ошибся. Можешь исправить:
4. Заходишь в папку menuetos из пункта 2.
на
4. Заходишь в папку menuetos из пункта 3.
fix it.. =)...
за сорсы обновленые спасибо.. буду вникать...
за сорсы обновленые спасибо.. буду вникать...
Недели через две будет новая версия, а пока Just for fun, пара старых версий с глючным выводом графики.
http://narod.ru/disk/9897453000/FCEU_GluVers.7z.html
http://narod.ru/disk/9897453000/FCEU_GluVers.7z.html
Версия порта 0.3.
Версия эмулятора 0.96.
- добавлено 33 новых маппера( 48, 51, 52, 57, 61, 72, 74, 77, 82, 83, 88, 92, 96, 114, 115-117, 140, 144, 152-156, 189, 227, 232, 234, 235, 242, 248-250 )
- добавлены новые эмулируемые устройства ( power pads, game pads, zapper, arkanoid, shadow, Family BASIC Keyboard )
- выбор виртуального джойстика
- ускоренный вывод графики
- вывод fps
- сообщения теперь выводятся на доску отладки
- см. файл "ChangeLog.txt" чтобы просмотреть весь список изменений
_____________________________________________________________________________________________________________________________________________
Port version 0.3.
Emulator version 0.96.
- 33 new mappers were add ( 48, 51, 52, 57, 61, 72, 74, 77, 82, 83, 88, 92, 96, 114, 115-117, 140, 144, 152-156, 189, 227, 232, 234, 235, 242, 248-250 )
- new emulated devices were add ( power pads, game pads, zapper, arkanoid, shadow, Family BASIC Keyboard )
- select virtual joysticks
- faster graphics output
- fps output
- messages now output to the debug board
- see file "ChangeLog.txt" for full list of changes
Версия эмулятора 0.96.
- добавлено 33 новых маппера( 48, 51, 52, 57, 61, 72, 74, 77, 82, 83, 88, 92, 96, 114, 115-117, 140, 144, 152-156, 189, 227, 232, 234, 235, 242, 248-250 )
- добавлены новые эмулируемые устройства ( power pads, game pads, zapper, arkanoid, shadow, Family BASIC Keyboard )
- выбор виртуального джойстика
- ускоренный вывод графики
- вывод fps
- сообщения теперь выводятся на доску отладки
- см. файл "ChangeLog.txt" чтобы просмотреть весь список изменений
_____________________________________________________________________________________________________________________________________________
Port version 0.3.
Emulator version 0.96.
- 33 new mappers were add ( 48, 51, 52, 57, 61, 72, 74, 77, 82, 83, 88, 92, 96, 114, 115-117, 140, 144, 152-156, 189, 227, 232, 234, 235, 242, 248-250 )
- new emulated devices were add ( power pads, game pads, zapper, arkanoid, shadow, Family BASIC Keyboard )
- select virtual joysticks
- faster graphics output
- fps output
- messages now output to the debug board
- see file "ChangeLog.txt" for full list of changes
- Attachments
-
-
FCEU_v0.3.7z (141.86 KiB)Downloaded 593 times
-
hidnplayr
Duck hunt, Ski Or die! games would work now.
Duck hunt, Ski Or die! games would work now.
спасибо за обновления..
Пожалуйста.
Работаю сейчас над звуком, тестирую в Qemu на SoundBlaster. Плохо, что нет статьи по работе со звуковыми драйверами (Infinity, Sound, SB16), из-за этого много времени уходит на копание в коде драйверов и понимание логики работы звуковой подсистемы Колибри.
Может быть кто-нибудь мог бы взяться за написание такой статьи, а то кроме ac97snd и doom написанных Serge до сих пор не одно приложение не работает со звуком.
Работаю сейчас над звуком, тестирую в Qemu на SoundBlaster. Плохо, что нет статьи по работе со звуковыми драйверами (Infinity, Sound, SB16), из-за этого много времени уходит на копание в коде драйверов и понимание логики работы звуковой подсистемы Колибри.
Может быть кто-нибудь мог бы взяться за написание такой статьи, а то кроме ac97snd и doom написанных Serge до сих пор не одно приложение не работает со звуком.
dosbox тоже работает со звуком.
API для работы со звуком с интерфейсом для Си и реализацией на Fasm есть на svn в папке programs/develop/sdk/trunk/sound и в SDK. Копаться в драйверах необязательно.
API для работы со звуком с интерфейсом для Си и реализацией на Fasm есть на svn в папке programs/develop/sdk/trunk/sound и в SDK. Копаться в драйверах необязательно.
Ушёл к умным, знающим и культурным людям.
Действительно работает, хотя в Qemu насладиться звуком dosbox и не получается.
SDK я конечно же смотрел, sound.lib с DJGPP не работает (видимо писалась под какой-то другой компилятор языка C с другим количеством подчеркиваний, не стал разбираться), но это не проблема все эти функции я переписал в отдельный модуль FCEU. Дело в том, что в эти функции мы передаем хэндлер буфера типа указатель на STREAM, как я понял, а у меня уже есть заполненный буфер в FCEU, содержимое которого мне просто нужно скопировать в буфер из которого и читаются сэмплы. Со звуком я раньше никогда не работал, так что может где-то что-то и напутал, но имеющийся, например, порт FCE Ultra под DOS, именно так и поступает выводя звук на SB16 аудиокарту.
Цитата из файла porting.txt (документация по портированию FCE Ultra, поставляется вместе с исходниками):
void FCEUD_Update(uint8 *XBuf, int32 *Buffer, int Count);
Called by FCE Ultra on every emulated frame. This function should
perform the following three things(in any order):
1.
Update the data pointed to by the pointers passed to
FCEUI_SetInput() and FCEUI_SetInputFC().
2.
Copy contents of XBuf over to video memory(or whatever needs to be
done to make the contents of XBuf visible on screen).
Each line is 256 pixels(and bytes) in width, and there can be 240
lines. The pitch for each line is 272 bytes.
XBuf will be 0 if the symbol FRAMESKIP is defined and this frame
was skipped.
3.
Write the contents of "Buffer" to the sound device. "Count" is the
number of samples to write. Only the lower 16-bits of each
sample are used, so each 32-bit sample in "Buffer" can be converted to
signed 16-bit by dropping the upper 16 bits.
When sound was disabled for the frame, "Count" will be 0.
Конец цитаты.
Если работать напрямую с драйвером SB16, то другие аудиокарты конечно же не станут выводить звук, а то и что похуже случится. Если же работать с Infinity (что и в принципе и необходимо), то не вполне понятно как состыковать буфер, предоставляемый FCEUD_Update и STREAM.
SDK я конечно же смотрел, sound.lib с DJGPP не работает (видимо писалась под какой-то другой компилятор языка C с другим количеством подчеркиваний, не стал разбираться), но это не проблема все эти функции я переписал в отдельный модуль FCEU. Дело в том, что в эти функции мы передаем хэндлер буфера типа указатель на STREAM, как я понял, а у меня уже есть заполненный буфер в FCEU, содержимое которого мне просто нужно скопировать в буфер из которого и читаются сэмплы. Со звуком я раньше никогда не работал, так что может где-то что-то и напутал, но имеющийся, например, порт FCE Ultra под DOS, именно так и поступает выводя звук на SB16 аудиокарту.
Цитата из файла porting.txt (документация по портированию FCE Ultra, поставляется вместе с исходниками):
void FCEUD_Update(uint8 *XBuf, int32 *Buffer, int Count);
Called by FCE Ultra on every emulated frame. This function should
perform the following three things(in any order):
1.
Update the data pointed to by the pointers passed to
FCEUI_SetInput() and FCEUI_SetInputFC().
2.
Copy contents of XBuf over to video memory(or whatever needs to be
done to make the contents of XBuf visible on screen).
Each line is 256 pixels(and bytes) in width, and there can be 240
lines. The pitch for each line is 272 bytes.
XBuf will be 0 if the symbol FRAMESKIP is defined and this frame
was skipped.
3.
Write the contents of "Buffer" to the sound device. "Count" is the
number of samples to write. Only the lower 16-bits of each
sample are used, so each 32-bit sample in "Buffer" can be converted to
signed 16-bit by dropping the upper 16 bits.
When sound was disabled for the frame, "Count" will be 0.
Конец цитаты.
Если работать напрямую с драйвером SB16, то другие аудиокарты конечно же не станут выводить звук, а то и что похуже случится. Если же работать с Infinity (что и в принципе и необходимо), то не вполне понятно как состыковать буфер, предоставляемый FCEUD_Update и STREAM.
Со звуком более - менее разобрался. Как оказалось создавать STREAM вручную не надо. Первым делом необходимо создать буфер через функцию CreateBuffer, которая создает буфер нужного формата и самостоятельно заполняет поля STREAM, после чего возвращает на него указатель через параметр. Существует несколько видов буферов: PCM_STATIC, PCM_RING, PCM_OUT и т.д. Некоторые функции драйвера Infinity предназначены для работы только с определенными видами буферов.
Вобщем создаю буфер так:
звук вывожу в функции FCEUD_Update(uint8 *XBuf, int32 *Buffer, int Count); через WaveOut(SndBuf,Buf,Count);
Звук есть, но пока что лишь отдаленно напоминает то, что должно быть на самом деле. Продолжаю работать над этим.[/color]
Вобщем создаю буфер так:
Code: Select all
if (CreateBuffer(PCM_1_8_44, 0, &SndBuf)) //Create stream buffer
{
__kolibri__debug_str("create buffer return error\n\r");
return 0;
}
Звук есть, но пока что лишь отдаленно напоминает то, что должно быть на самом деле. Продолжаю работать над этим.[/color]
Asper
WaveOut() ,блокирует поток пока не прокачает все данные во внутренний буфер. И там большой лаг от вызова функции до вывода на чип (макс. 0.17с). лучше выводить звук через кольцевой буфер PCM_RING. Посмотри в исходниках Doom svn/programs/games/doom/trunk/s_sound.c S_Init() запускает в отдельном процессе sound_proc() и та выполняет всю работу по микшированию и выводу звука.
WaveOut() ,блокирует поток пока не прокачает все данные во внутренний буфер. И там большой лаг от вызова функции до вывода на чип (макс. 0.17с). лучше выводить звук через кольцевой буфер PCM_RING. Посмотри в исходниках Doom svn/programs/games/doom/trunk/s_sound.c S_Init() запускает в отдельном процессе sound_proc() и та выполняет всю работу по микшированию и выводу звука.
Who is online
Users browsing this forum: No registered users and 2 guests