PC-01 Lviv

It is currently 09 May 2024, 15:28

Forum Games WEB Tape Loader Twitter RSS

All times are UTC+03:00




Post new topic  Reply to topic  [ 215 posts ]  Go to page Previous 15 6 7 8 915 Next
Author Message
PostPosted: 05 Jul 2013, 11:05 
Offline

Joined: 20 Apr 2012, 16:00
Posts: 372
Location: Конотоп
Zelya, спасибо за информацию... хотя я это уже всё понял!... :-)
Вот только реализация пусть пока еще подождет! :-) Освежу мозги после предыдущей попытки!.. :-) ..или после летней жары :-)
Я было Марату отписал такое...
Quote:
....
Вымучился с примером который genTone основательно!
Результатов «Ноль»! Как я ТЕБЯ понимаю!...:-)
Решил, что пошел «не тем» путем...
буду попробовать такой путь: процедура звука, по мере проигрывания одного буфера,
сама запрашивает подготовленный буфер, когда нужно!
Запрашивает ИМЕННО процедура звука!... Вспомнил, что я когда-то от кого-то такое слышал!...
А не так как мы думаем: «подготовил буфер, и отправил на вывод звука».
Причем, буфер должен подготавливаться во время выполнения (эмуляции команд Кр-580)
т. е. в procedure i8080_do_opcodes(nb_cycles : integer); «по крупинкам»
подготавливается буфер который в любой момент (любым размером) может «затребовать»
процедура вывода звука. Всё это нужно учесть. Вот пока пришёл к таким выводам!
Пишу это тебе за тем... что верю, что у тебя ума побольше :-)
и возможно реализуешь это быстрее чем Я !
Будут результаты пожалуйста напиши!
...


Top
   
PostPosted: 05 Jul 2013, 11:19 
Offline

Joined: 20 Apr 2012, 16:00
Posts: 372
Location: Конотоп
И еще .... :-)
В примере выложенном мной (genTone) нет тресков и “провалов” звука..
и всё это потому что есть процедура mm_wom_done которая «срабатывает» после окончания проигрывания (любого) буфера и СРАЗУ ЖЕ переключает на проигрывание другого буфера...
...но в примере эти два буфера одинаковые (т. е. Копия друг-друга) поэтому быстро «перепилить» под эмуль, мне например, не удалось... Попытаюсь еще раз... :-) но позже :-) когда с силами соберусь :-)
Code:
procedure TForm1.mm_wom_done (var Msg: tMessage);
begin
// 'Done'

   if fPlay = false then begin
     waveOutWrite(waveOut, @outHdr[0], sizeof(outHdr));
   fPlay:=true;
   end else begin
   waveOutWrite(waveOut, @outHdr[1], sizeof(outHdr));
   fPlay:=false;
   end;

end;


Top
   
PostPosted: 23 Jul 2013, 05:47 
Offline
User avatar

Joined: 13 Feb 2012, 15:32
Posts: 341
Location: Россия
Quote:
Немного запара у меня со временем. Но тут звучал вопрос о звуке в эмуляторе. Тут я не гуру, напишу как сделал в онлайновом. Правда, уверен, это далеко не лучший способ.
И так, в процессе выполнения инструкций, процессор имеет счетчик тиков. Мы высчитывем пропорцию тики/миллисекунды для нужного битрейта. Т.е, например мы генерим 50000 тиков 50 раз в секунду (цифры, п. Для 44100 герцового звука будем иметь пропорцию, типа 50000*50/44100 = 56 (грубое округление, чтобы было понятно). Приблизительно 56 тиков на один звуковой сигнал. После каждого изменения бита спикера, я откладываю в массив время в тиках, когда это случилось. И по прошествию 1/50 секунды, на основе этих данных я формирую новый байтовый массив из двух разных значений, (0, 255) (можно поэксперементировать с другими, чтобы звучание лучше было). Где каждый байт это один такт финального звука. Грубо говоря, если мы на 112 тике поменяли значение порта с нолика на 1, а на 224 обратно, то массив будет такой:
Первый массив: (112,224)
Второй массив: (0,0,255,255,0,0,0,0....)
Вот этот второй массив и нужно выводить на звуковуху. Каким образом - это уже подскажут мануалы Делфи. Важно учесть два момента:
Момент превый, сохраняйте оффсеты. За 1/50 секундны вряд ли у вас получится посчитать звук для всех 50000 тиков. Например, выйдейт 49970. Т.е. 30 тиков -смещение для следующего цикла обработки. Если это не учесть будет треск.
Второй момент, возможны проблемы синхронизации. Например, пердыдущий массив еще не доигрался, а новый уже добавился. В таком случае, проверяйте сколько недоигранных сэмплов осталось и либо выкидывайте ноты либо пересчитывайте проборцию, нота/тик
Quote:
Zelya, спасибо за информацию... хотя я это уже всё понял!... :-)
Вот только реализация пусть пока еще подождет! :-) Освежу мозги после предыдущей попытки!.. :-) ..или после летней жары :-)
Я было Марату отписал такое...
Quote:
....
Вымучился с примером который genTone основательно!
Результатов «Ноль»! Как я ТЕБЯ понимаю!...:-)
Решил, что пошел «не тем» путем...
буду попробовать такой путь: процедура звука, по мере проигрывания одного буфера,
сама запрашивает подготовленный буфер, когда нужно!
Запрашивает ИМЕННО процедура звука!... Вспомнил, что я когда-то от кого-то такое слышал!...
А не так как мы думаем: «подготовил буфер, и отправил на вывод звука».
Причем, буфер должен подготавливаться во время выполнения (эмуляции команд Кр-580)
т. е. в procedure i8080_do_opcodes(nb_cycles : integer); «по крупинкам»
подготавливается буфер который в любой момент (любым размером) может «затребовать»
процедура вывода звука. Всё это нужно учесть. Вот пока пришёл к таким выводам!
Пишу это тебе за тем... что верю, что у тебя ума побольше :-)
и возможно реализуешь это быстрее чем Я !
Будут результаты пожалуйста напиши!
...
Доброго времени суток !!!!
Спасибо за подсказки ......
объединив всю имеющую информация, сбабахал , более или менее нормальный звук ....
дописал возможность сохранять SAV


Last edited by MARAT_BEST on 30 Jul 2013, 07:23, edited 2 times in total.

Top
   
PostPosted: 23 Jul 2013, 12:50 
Offline
User avatar

Joined: 13 Feb 2012, 15:32
Posts: 341
Location: Россия
Блин в сборку вкралась бага :( , звук немного фонит ... завтра перевыложу

ПЕРЕВЫЛОЖИЛ
звук не АЙС конечно .. но все же он уже есть
:)


Top
   
PostPosted: 30 Jul 2013, 07:23 
Offline
User avatar

Joined: 13 Feb 2012, 15:32
Posts: 341
Location: Россия
Доброго времени суток !!!
обновление версии эмуля
1. добавил авто запуск эмуля (и файла в нем ) если в системе поставить автоматическую ассоциацию с LVT (windows)
2. сделал что то на подобие Picture to LVT
3. теперь все по своим папочкам
FilesSAV - записаные sav
PicToLVT - картинки
ScreenAVI - видео
ScreenShots - скриншоты
3. куча мелких исправлений .....


Last edited by MARAT_BEST on 30 Aug 2013, 07:04, edited 1 time in total.

Top
   
PostPosted: 02 Aug 2013, 05:27 
Offline

Joined: 11 Apr 2013, 16:13
Posts: 27
Location: Латвия
Quote:
2. сделал что то на подобие Picture to LVT
Вот за это отдельное спасибо! Давно я искал такую софтину, чтоб bmp в lvt конвертила. Было бы здорово увидеть реализацию этой функции в виде отдельной программы типа BMP2SCR. Такая прога была бы весьма полезна при разработке новых игр...


Top
   
PostPosted: 02 Aug 2013, 14:32 
Offline
User avatar

Joined: 13 Feb 2012, 15:32
Posts: 341
Location: Россия
Quote:
Quote:
2. сделал что то на подобие Picture to LVT
Вот за это отдельное спасибо! Давно я искал такую софтину, чтоб bmp в lvt конвертила. Было бы здорово увидеть реализацию этой функции в виде отдельной программы типа BMP2SCR. Такая прога была бы весьма полезна при разработке новых игр...
допишу немного , выложу отдельным запускным файлом :roll:


Top
   
PostPosted: 30 Aug 2013, 07:06 
Offline
User avatar

Joined: 13 Feb 2012, 15:32
Posts: 341
Location: Россия
Немного допиливаю эмулятор !!!
заработал клавиатурный джойстик :) в игры приятнее играть стало в разы !!!
куча мелких багов убито


Last edited by MARAT_BEST on 04 Sep 2013, 04:17, edited 1 time in total.

Top
   
PostPosted: 01 Sep 2013, 14:15 
Offline
Site Admin
User avatar

Joined: 24 Jul 2008, 12:05
Posts: 1070
Только что потестил эумль на PII - 266. Хоть немного и подтормаживает, но терпимо. Хотелось бы иметь возможность уменьшить экран до 256х256.


Top
   
PostPosted: 04 Sep 2013, 04:08 
Offline
User avatar

Joined: 13 Feb 2012, 15:32
Posts: 341
Location: Россия
Quote:
Только что потестил эумль на PII - 266. Хоть немного и подтормаживает, но терпимо. Хотелось бы иметь возможность уменьшить экран до 256х256.
Доброго времени суток !!!
по порядку:
данный эмулятор будет тормозить на старых машинах , так как используется windows GDI
256x256 сделал (это опять же растянутое изображение)
У меня в эмуле два способа вывода на экран один это "один в один" и растянутое изображение,
так с точки зрения компутера самый быстрый без растяжения, потому как не задействованы ресурсы(очень ресурсоемкое растяжение). При отключении всех эффектов Размытие, ЧБ, FullScreen должна быть максимальная скорость отрисовки...
В эмуляторе Калашникова , он использует DirectX если я не ошибаюсь, в этом его прелесть и скорость ....
У меня в планах тоже переделать с использованием DirectX, но пока както так ...

По поводу скорости эмуляции , сделал специально бегунок с помощью которого можно регулировать скорость.
Планирую сделать авторегуляцию в зависимости от мощности компьютера. А вообще иногда даже в играх приятно когда скорость немного выше ......

Клавиши РУС ЛАТ запилил на CTRL соответственно правый и левый
Допилил вставку из буфера.

Кто нить про джойстик скажет что нибудь, как работает ?


Last edited by MARAT_BEST on 05 Sep 2013, 08:50, edited 1 time in total.

Top
   
PostPosted: 04 Sep 2013, 04:21 
Offline
User avatar

Joined: 13 Feb 2012, 15:32
Posts: 341
Location: Россия
Кстати когда допиливал клаву, обнаружил в книге очепятку что ли
"ПЕРСОНАЛЬНАЯ ЭВМ ПК-01 "ЛЬВОВ" РУКОВОДСТВО ПРОГРАММИСТУ"
два раза буква П
должна быть Р


Attachments:
клава.JPG
клава.JPG [ 62.19 KiB | Viewed 1743 times ]
Top
   
PostPosted: 04 Sep 2013, 10:30 
Offline
Site Admin
User avatar

Joined: 24 Jul 2008, 12:05
Posts: 1070
Оказывается SASEmulator глючит не единоразово. Не знаю с чем связано, но он крайне капризно реагирует на какие-то ресурсы, так как иногда работает быстрее, чем LVOVulator, но иногда просто ужасно тормозит.
MARAT_BEST
Quote:
По поводу скорости эмуляции , сделал специально бегунок с помощью которого можно регулировать скорость.
Это полезная фича. Но если говорить о слабых машинах, то куда полезнее фреймскип.
Quote:
Кстати когда допиливал клаву, обнаружил в книге очепятку что ли
Ага :) Но во другой редакции "Руководства" размещена правильная латыница, забавно.


Top
   
PostPosted: 04 Sep 2013, 11:04 
Offline
User avatar

Joined: 13 Feb 2012, 15:32
Posts: 341
Location: Россия
Quote:
Оказывается SASEmulator глючит не единоразово. Не знаю с чем связано, но он крайне капризно реагирует на какие-то ресурсы, так как иногда работает быстрее, чем LVOVulator, но иногда просто ужасно тормозит.
MARAT_BEST
Quote:
По поводу скорости эмуляции , сделал специально бегунок с помощью которого можно регулировать скорость.
Это полезная фича. Но если говорить о слабых машинах, то куда полезнее фреймскип.
Quote:
Кстати когда допиливал клаву, обнаружил в книге очепятку что ли
Ага :) Но во другой редакции "Руководства" размещена правильная латыница, забавно.
Сейчас вся эмуляция выведена на таймер, стандартный , который глючит и очень зависит от ресурсов машины, по этому подумываю про Directx
можно конечно и фреймскипить ... думаю глючность возрастет (это я про то что кто то писал типа спрайты попадают и т.д при отрисовке экрана)
по поводу второй таблицы видел , там правильно , на латинице ....
сейчас хочу добавить Знакогонератор , чтобы менять можно было шрифты, так кодировка вообще веселая типа КОИ7 только своеобразная сперва Ю,А,Б,Ц,Д.... всевредине Я...в конце Ч (русский шрифт) :)


Top
   
PostPosted: 04 Sep 2013, 11:10 
Offline
Site Admin
User avatar

Joined: 24 Jul 2008, 12:05
Posts: 1070
MARAT_BEST
Quote:
это я про то что кто то писал типа спрайты попадают и т.д при отрисовке экрана
Это да. Это могут быть проблемы.
Quote:
по этому подумываю про Directx
Надеюсь без наворотов? Хотелось бы, чтоб работало на Win 98, а может даже и Win 95
Quote:
кодировка вообще веселая типа КОИ7 только своеобразная сперва Ю,А,Б,Ц,Д.... всевредине Я...в конце Ч (русский шрифт)
Самый что ни на есть правильный КОИ7 (тот что H2 - двуязычный)
http://ru.wikipedia.org/wiki/%D0%9A%D0%9E%D0%98-7


Top
   
PostPosted: 04 Sep 2013, 11:20 
Offline
User avatar

Joined: 13 Feb 2012, 15:32
Posts: 341
Location: Россия
Quote:
MARAT_BEST
Quote:
по этому подумываю про Directx
Надеюсь без наворотов? Хотелось бы, чтоб работало на Win 98, а может даже и Win 95
только графика, звук и таймер. насколько я помню в win95 он появился как раз (Directx)
Quote:
Самый что ни на есть правильный КОИ7 (тот что H2 - двуязычный)
http://ru.wikipedia.org/wiki/%D0%9A%D0%9E%D0%98-7
оно самое !


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 215 posts ]  Go to page Previous 15 6 7 8 915 Next

Forum Games WEB Tape Loader Twitter RSS

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
cron
Powered by phpBB® Forum Software © phpBB Limited