Просмотр полной версии : Xpeccy
Страницы :
1
[
2]
3
4
5
6
7
8
9
10
11
12
SAM style
01.09.2010, 21:48
Update
Сдвинул экран чуть правее, но увеличил не бордюр, а синхру перед ним. RAGE стал намного ровнее.
+ прикрутил TurboSound (от NedoPC)
Q-Master
02.09.2010, 09:31
Гы. Запустил кошек мегадемо. Дополз до последней части. Все арбайтен. Жрет 10-15% на моем кваде, НО! 8) Закрыл окно, демка как ни в чем не бывало продолжает работать. 8)
SAM style
02.09.2010, 10:31
Гы. Запустил кошек мегадемо. Дополз до последней части. Все арбайтен. Жрет 10-15% на моем кваде, НО! 8) Закрыл окно, демка как ни в чем не бывало продолжает работать. 8)7-13% на коре дуба (E7300). А вот с работой после закрытия - очень даже интересно... Как оно происходит?
1 Окно остаётся на экране
2 Из основного вываливается SDL-окно, основное закрывается (различать можно по заголовку)
3 Всё закрывается, а музыка всё ещё идёт
Q-Master
03.09.2010, 08:36
7-13% на коре дуба (E7300). А вот с работой после закрытия - очень даже интересно... Как оно происходит?
1 Окно остаётся на экране
2 Из основного вываливается SDL-окно, основное закрывается (различать можно по заголовку)
3 Всё закрывается, а музыка всё ещё идёт
Ну у меня на х86, как ты помнишь. 8) А после закрытия окна все работает по 3му варианту. CTRL+C в консоль где запущен эмуль помогает решить вопрос.
SAM style
20.10.2010, 17:47
Good news everyone! Трещащий мозг осилил чтение UDI и FDI и, как следствие, CRC у ВГ93.
Mad Killer/PG
20.10.2010, 18:52
Ты это,заходи на андроид сразу,если что)
из невышедшего мульта -жил был Андроид,по мотивам украинского жив був Пес]]
SAM style
26.10.2010, 14:07
До зелёного робота мне как до луны задом. Я его даже не видел.
Update, кстати. Пофиксил загрузку и сделал запись UDI
Ты это,заходи на андроид сразу,если что)
А там разве можно писать на C++ ? :)
Mad Killer/PG
27.10.2010, 14:12
Не знаю если честно,просто хорошего эмулятора на мой китайский айпад нет,это плохо для спектрумиста.
Поэтому и обращаюсь ко всем пишущим эмули людям,андроид крепко стоит на ногах,и есть шанс отличится.
Mad Killer/PG
27.10.2010, 17:35
Он в хорошей бете у меня подвис жестоко пришлось грохать,причём показывает в окне 320 на 240 ,он в хорошей бете ,имхо.
Вот Анрыл на ВинМобайле просто супер был,хочется похожего чего-то.Чтоб в полный экран мулировалсо пентагонище и всё ...
у меня стабильно работает, ни одного зависона.
реклама только раздражает немного.
Mad Killer/PG
27.10.2010, 18:31
Какой у тебя апарат,и какой андроид или виртуальный?
Samsung Spica I5700, прошивка не родная, но основана на 2.1
Mad Killer/PG
27.10.2010, 19:42
У меня на планшете Андроид 1.5,хотя вряд ли в этом причина...
ну причина точно не в этом, андроид просто бы не дал установить 2.1 приложение на 1.5.
возможно, китайцы намутили чего.
немного разбавлю оффтопик: SAM style, ты спрашивал что делает тест, которым мы загоняемся в теме про zemu.
отвечаю: прогоняет каждый тип комманд с различными параметрами, и считает некое подобие crc регистра af, затем сравнивает с табличным значением, и на основании этого пишет ok или fail.
эталонные значения получены путём прогонки этого же теста на реальном zx spectrum (с процессором nec, это, оказывается, имеет значение).
SAM style
27.10.2010, 23:16
Хорошо бы в одном месте собрать полную информацию по действию команд на флаги с примечаниями о различиях на разных процах (NEC/ZILOG/ВМ1). Потому как про 3 и 5 биты вообще мало где упоминается.
Хорошо бы в одном месте собрать полную информацию по действию команд на флаги с примечаниями о различиях на разных процах (NEC/ZILOG/ВМ1). Потому как про 3 и 5 биты вообще мало где упоминается.
про флаги и комманды (в том числе и недокументированные) я скачивал какие-то доки отсюда: http://www.z80.info/
доки очень хорошие, но там про 3 и 5 нету.
в целом - если во флагах конкретно не указано какие значение принимают биты 3 и 5 (ну 0 там или 1), то тогда туда копируется биты 11 и 13 из регистра memptr (он 16-ти битный).
про memptr проводил исследование boo_boo (ну, в общем то, и до него проводили, но он это всё довёл до конца и систематизировал) у нас на форуме, я приаттачил доки.
----
zilog и nec отличаются как раз какими-то мелкими фишечками в memptr. выбери какой-либо один и фикси под него.
ВМ1 вроде слизывали с zilog-а, но там бага есть, что DI:HALT не работает.
или это на ВМ3 DI:HALT не работал? не помню, давно дело было.
если кому надо (мне не надо :), я с байтом в котором дихальт не работал в детстве наигрался), инфа про ВМ3:
http://groups.google.com/group/fido7.zx.spectrum/browse_thread/thread/81392f5773f99ac3/058400237279d681?lnk=gst&q=%D0%B2%D0%BC3#058400237279d681
http://groups.google.com/group/fido7.zx.spectrum/browse_thread/thread/d6fcf7ba4d83c1e3/b853a96c0c8a2691?lnk=gst&q=%D0%B2%D0%BC3#b853a96c0c8a2691
http://groups.google.com/group/fido7.real.speccy/browse_thread/thread/18f500e1aa1974a9/6b38ed1aceb36213?lnk=gst&q=1858%D0%92%D0%9C3#6b38ed1aceb36213
mastermind
28.10.2010, 09:37
Вообще имхо, вместо того чтоб в очередной раз с нуля делать эмуляцию z80 лучше допиливать z80ex. А если хочется детально покопаться, потратьте лучше усилия на то чтоб сделать z80-backend для LLVM (http://llvm.org/) :)
Q-Master
28.10.2010, 12:06
А там разве можно писать на C++ ? :)
Можно. Там есть такая штука как NDK. К тому-же ты неужто думаешь, что аффтар zxDroid (у которого внутри fuse) переписал этот самый FUSE на жабу? 8)
SAM style
03.11.2010, 11:37
Update
Загрузка .z80 (в т.ч из rzx) и небольшая коррекция эмуляции CPU
Q-Master
04.11.2010, 17:59
А чего ты не хочешь сорцы на github какой-нить выкласть?
SAM style
04.12.2010, 21:36
update
SAM style
06.12.2010, 16:23
Где бы что почитать про то, какой магией формируется звук на GS?
Есть у нас 6-разрядная громкость и 8-разрядные данные для каждого из 4 каналов. Что и как с этим всем делается в ЦАПах (К572ПА1)?
---------- Post added at 17:23 ---------- Previous post was at 17:19 ----------
ЗЫ: GS вроде как готов, но звук на выходе такой, что кровь из ушей идёт. Вроде, мелодия угадывается, но... Хотя, любителям индастриала понравится :)
Где бы что почитать про то, какой магией формируется звук на GS?
Тут (http://www.scorpion.ru/spectrum/hard/plata_gs.htm) не смотрел? Там чего-то про звук есть в файлеке, внизу.
SAM style
06.12.2010, 17:55
Тут (http://www.scorpion.ru/spectrum/hard/plata_gs.htm) не смотрел? Там чего-то про звук есть в файлеке, внизу.Не, этот текст я уже видел. Там в основном про связь спека с GS и его тех.характеристики.
Всё что я собрал - схемы (основная часть, ЦАПы, доп.память), рисунок монтажки, вот этот же текст, краткое описание внутренних портов и респределения памяти самого GS. Постигнуть дзэн мне мешает незнание, как работают микрухи в ЦАПе - как аналитически из входных данных получить уровень сигнала на выходе.
me пока посматривает в сторону libmodplug.
volume * level / 64 не работает?
SAM style
06.12.2010, 18:51
Не работает. Буду пересматривать всё ещё раз. Может, ещё где накосячил.
Не работает. Буду пересматривать всё ещё раз. Может, ещё где накосячил.
Небось опять с типами данных "наэкономил", передавая все как byte. Вот и переполнение при умножении и "хрипящий" звук в результате.
SAM style
06.12.2010, 20:56
Небось опять с типами данных "наэкономил", передавая все как byte. Вот и переполнение при умножении и "хрипящий" звук в результате.Первой попыткой вынуть звук с GS-а было это
unsigned char GS::getvol() {
if (~flags & GS_ENABLE) return 0;
return ((ch1 * vol1 + ch2 * vol2 + ch3 * vol3 + ch4 * vol4) >> 8);
}
Первой попыткой вынуть звук с GS-а было это
Дай угадаю:
...
byte ch1, ch2, ch3, ch4;
byte vol1, vol2, vol3, vol4;
...
? :)
SAM style
06.12.2010, 21:23
Угу, но... переделал в int - ничего не изменилось. Так что не в этом.
Угу, но... переделал в int - ничего не изменилось. Так что не в этом.
А ты обнуляешь старшие биты регистров громкости? А то может плеер туда пихает значения больше 63 и получаешь банальное переполнение.
SAM style
06.12.2010, 22:57
Плеер может, и пихает туда что-то больше 63, но по схеме старшие 2 разряда вообще не учитываются. И у меня при записи в порты громкости делается gs->vol1 = val & 0x3f;
Бугага, но я нашёл корявку - данные в каналы пишутся при чтении из памяти #6000-#7FFF, я почему-то при записи сделал. Короче, на днях будет вам GS
---------- Post added at 23:57 ---------- Previous post was at 22:48 ----------
Ну, как на днях... update
Требуемо взять где-нибудь ПЗУ от GS'а (32K), положить его к остальным, в конфигурации в секции [ROMSETS] где-нибудь написать gs = FILENAME. Оно появится в списке ПЗУ в настройках на вкладке Machine
SAM style
06.01.2011, 17:27
Посленовогодний update
SAM style
14.01.2011, 15:17
Слегка update. Настраиваемое стерео на AY и GS.
кстати, почитал тут про bugz:
Проги, монополизирующие /dev/dsp, естественно, мешают работе oss в эмуле.
имхо это проблема кривой настройки дистриба линукса, а не эмуля.
dmix спасёт отца русской демократии (даже рута не надо, достаточно прописать пару строчек в ~/.asoundrc)
и ещё подумал: если уж используешь SDL, так почему бы не сделать звук через SDL? там, конечно, геммора много, но зато везде работает (даже под виндой).
и ещё подумал: если уж используешь SDL, так почему бы не сделать звук через SDL? там, конечно, геммора много, но зато везде работает (даже под виндой).
По моему личному опыту, вывод через SDL очень тормозной. Так что стоит юзать его лишь как опциональный вариант.
я сейчас юзаю zemu только с SDL звуком.
да, конечно, звук отстаёт от происходящего на экране где-то на 1/5 секунды, но больше ничего не тормозит (загрузка процессора особо не увеличивается).
ну и собственно я ж не призываю отказаться от других вариантов :)
под виндой, кстати, достаточно просто нативно вывести звук, и почти не отстаёт (в отличие от oss или alsa, где много зависит от прямых настроек системы).
SAM style
14.01.2011, 16:22
Мне почему-то не удалось SDLsound заставить понимать задаваемую длину буфера - он всё время ставил обратно свою, длинее. На этом месте я застрял и пока бросил это дело.
Мне почему-то не удалось SDLsound заставить понимать задаваемую длину буфера - он всё время ставил обратно свою, длинее.
Она должна быть равна степени двойки
SAM style
14.01.2011, 16:44
Тогда ещё маленький вопрос. Заданный SDL_AudioSpec::callback вызывается автоматом, когда все отправленные в поток данные проиграны или через определенные промежутки исходя из формата, битрейта и длины буфера?
Тогда ещё маленький вопрос. Заданный SDL_AudioSpec::callback вызывается автоматом, когда все отправленные в поток данные проиграны или через определенные промежутки исходя из формата, битрейта и длины буфера?
Судя по спеку:
This should be set to a function that will be called when the audio device is ready for more data.
в первом случае.
Я юзаю SDL так: есть кольцевой буффер, в несколько раз больше буфера SDL. в него пишет звук эмуль.
Из этого же буфера идут данные в SDL callback.
Если эмуль хочет добавить звука, но буфер уже закончился, то тогда эмуль ждёт, пока не будет достаточно места (внутри цикла вызывается SDL_Sleep, чтоб не отжирало 100% проца).
Если SDL хочет проиграть звук, а данных в буфере нет, то увы, надо играть пустоту (это значит что эмуль не успевает).
---------- Post added at 22:01 ---------- Previous post was at 21:15 ----------
В Gnome и Xfce не генерируются события SDL для клавиатуры больше 1 раза. Почему - загадка. Печаль, печаль...
У меня в Xfce4 клавиатура норм работает.
Попробуй на тех Gnome и Xfce где не работает клава, запустить zEmu.
----
Что нашёл пока смотрел (пробовал бинарник, ибо чтоб скомпилить у меня не стоит тулзов нужных):
* Если нет доступа к /dev/dsp, то вешается намертво (снимал через kill -KILL). повторить так - создать нового юзера, но не включать его в группу для звука, запустить эмуль из под этого юзера.
* Звук почему-то в одной колонке. Что OSS, что ALSA.
* Звук NULL вообще не слышно :) sarcasm
* Такое ошущение что работает быстрее чем надо.
SAM style
14.01.2011, 23:21
- Про зависон на oss я в курсе. Повторить можно и так - запустить что-нибудь, ужрающее /dev/dsp, потом - эмуль.
- У меня звук в обе колонки. Что дома, что на работе. Микшер в системе посмотри - может, в один бок скручен?
- ога, ога :)
- таймер на 20мс, внутри отрабатывается эмуляция до следующего INT. Вроде, всё правильно сделал.
PS: С клавиатурой есть ещё проблема - иногда в событиях SDL выскакивают ложные "отжатия": в 128-м меню зажми вверх или вниз и посмотри как указатель будет неровно двигаться.
PPS: Про неработающую клаву мне пожаловался rasmer, у него тогда убунта была. Я поставил на ноут дебиан с гномом - словил такое, в опенбоксе - нет, в xfce4 - есть. Причём иногда оно таки работало. Поставил себе знак вопроса, отложил до лучших времён.
Про зависон на oss я в курсе.
так пофикси :)
У меня звук в обе колонки. Что дома, что на работе. Микшер в системе посмотри - может, в один бок скручен?
мистика - в других прогах (включая zemu) - нормально.
таймер на 20мс, внутри отрабатывается эмуляция до следующего INT. Вроде, всё правильно сделал.
надо по звуку синхронизироваться, а по таймеру только если звука нет.
SAM style
15.01.2011, 00:07
Специально сходил в винду, запустил unreal 0.37.3, скачал Zemu (зачем ему ruby-full?) и послушал начало rage. Мой быстрее unreala, zemu - наоборот, медленней.
Синхронизация по звуку: как это в SDL малой кровью сделать, понятно - callback будет вместо таймера. А вот как в oss/alsa, учитывая, что у меня всё-таки нагорожено в Qt и всё крутится в QApplication::exec() как бы без моего участия?
Голубая мечта переписать всё заново имеется...
PS: На таймер грешить не надо. Тестовая прога - делается QTimer на 20мс, по его сигналу вызывается слот обьекта, внутри которого отсчитывается число срабатываний и на энное выдаётся сигнал к завершению QApplication. На минутном (3000 срабатываний) прогоне:
real 1m0.037s
user 0m2.264s
sys 0m0.568s
А вот как в oss/alsa
Можешь посмотреть в моем *****эмуляторе:) Там как раз эти две системы поддержаны.
у меня всё-таки нагорожено в Qt и всё крутится в QApplication::exec()
Вот это, кстати, мега-ошибка- на нижнем уровне нельзя закладываться на какие-либо фреймворки.
SAM style
15.01.2011, 19:11
Итак, я не поленился и нашёл секундомер. Испытуемые - текущая версия Xpeccy (linux), Zemu (linux) и Unreal 0.37.3 (win32). Метод испытания - время от начала RAGE до конца мультиколорной части, когда музыка затыкается. Результаты:
Xpeccy - 3:06
Zemu - 3:11
Unreal - 3:06
Погрешность не более секунды. Так что там про скорость-то было? Хотя, для объективности надо бы и на реале без турбо замерить, только нет его...
ну значит у меня глаз замылился :)
а на реалах мерять гиблое дело, там кварцы ставили какие не попадя.
---------- Post added at 17:28 ---------- Previous post was at 16:15 ----------
поправил zemu. теперь из-за тебя мне к новому звуку привыкать надо :)
SAM style
18.01.2011, 10:39
update
Выправил баг с открытием занятого/отсутствующего устройства в OSS. В консоль плюнется ошибка, выход сбросится в NULL
уряяя! :)
SAM style
18.01.2011, 19:03
Хм... Вот только что сделал разные пресеты геометрии экрана и сравнил воспоминания с прогоном RAGE на скорпионе и с WAIT'ом. Впечатления двуякие. С одной стороны, в мультиколоре явно видно, что времени ему не хватает - всё тормозит, но так и было. С другой стороны, в воспоминаниях бордюрные эфекты ни разу не перекашивались - то ли у меня был безWAITовый зелёный скорп (а такие бывают?) то ли WAIT'овость у меня сейчас криво реализована...
SAM style
20.01.2011, 17:31
update
SAM style
23.01.2011, 13:02
update
SAM style
28.01.2011, 15:03
update
На тяжёлом софте не юзал и глюков пока не видел, но спектрофоны сейчас читаю :) Спасибо за эмуль :)
Хорошо-б на весь экран растягивать со сглаживанием пикселей. Или я где-то нужную кнопку управления не нашёл?
SAM style
29.01.2011, 19:33
Хорошо-б на весь экран растягивать со сглаживанием пикселей. Или я где-то нужную кнопку управления не нашёл?Не, всё правильно - фуллскрина там пока нет. Был, но при переходе с GL на SDL принудительно отвалился. Хорошо, что напомнил - надо снова заняться им.
2-й XZ-Format - нормально не работает. (может и не только он, но на нём я споткнулся) :v2_dizzy_coder:
В разных конфигурациях.
При открытии любой статьи - зависон. :v2_dizzy_fisher:
SAM style
31.01.2011, 23:44
Да, есть. ВГ93 зацикливается на загрузке данных с диска. Буду искать причину.
---------- Post added 01.02.2011 at 00:44 ---------- Previous post was 31.01.2011 at 23:33 ----------
update
Видимо, придётся обратно пересматривать ВГ93
SAM style
09.02.2011, 22:59
update
SAM style
10.02.2011, 13:34
PS: дико извиняюсь за ненужную зависимость от SDL_gfx. К вечеру исправлю.
SAM style
25.02.2011, 15:23
update
Сборка переведена на cmake. Пока только постигаю его, так что надеюсь на рационализаторские предложения.
NovaStorm
25.02.2011, 16:54
После make на Gentoo ~x86:
[ 43%] Building CXX object CMakeFiles/xpeccy.dir/src/main.cpp.o
/home/nova/xpeccy/src/main.cpp: В функции ‘int main(int, char**)’:
/home/nova/xpeccy/src/main.cpp:135:36: ошибка: нет декларации ‘mkdir’ в этой области видимости
make[2]: *** [CMakeFiles/xpeccy.dir/src/main.cpp.o] Ошибка 1
make[1]: *** [CMakeFiles/xpeccy.dir/all] Ошибка 2
make: *** [all] Ошибка 2
--
Дописал в main.cpp
#include <sys/stat.h>
#include <sys/types.h>
и оно собралось с парой ворнингов
/home/nova/xpeccy/src/debuger.cpp: В функции-члене ‘DasmRow DebugWin::getdisasm()’:
/home/nova/xpeccy/src/debuger.cpp:279:115: предупреждение: операция над ‘((DebugWin*)this)->DebugWin::adr’ может дать неопределенный результат
/home/nova/xpeccy/src/debuger.cpp:280:111: предупреждение: операция над ‘((DebugWin*)this)->DebugWin::adr’ может дать неопределенный результат
--
Собралось и запустилось, давно эмуля не видел, по первому взгляду на новую версию - понравился, хотя в дебаггере(а я первым делом ломанулся именно туда) хотелось бы список хоткеев.
SAM style
25.02.2011, 17:29
include добавил. Видимо, в дебиане заголовки по-другому органиованы.
Дебагер тут отстойный. Когда соберусь, буду его переделывать. Хоткеи в первом посте.
NovaStorm
25.02.2011, 22:27
include добавил. Видимо, в дебиане заголовки по-другому органиованы.
Странно это, вроде уж стандартные заголовочники должны везде одинаково лежать-то.
Дебагер тут отстойный. Когда соберусь, буду его переделывать. Хоткеи в первом посте.
Хоткеи прошляпил, да =\
А у дебаггера, как и эмуля потенциал ого-го. В дебаггере кроме Alt+регистр можно было бы добавить просто переход на произвольный адрес.
SAM style
25.02.2011, 22:35
В дебаггере кроме Alt+регистр можно было бы добавить просто переход на произвольный адрес.Вообще, регистры и дамп памяти можно редактировать - наводишь указатель, жмешь enter. В дизасме редактируется только адрес.
Q-Master
28.02.2011, 09:21
SAM style:
Ну коли на цмэйк перешел, заливай проект уже на github какой-нить...
SAM style
28.02.2011, 10:42
Эммм... "Гит для чайников" где можно почитать? :)
Или куда можно залить без кучи мозгодвижений?
Q-Master
01.03.2011, 09:52
Эммм... "Гит для чайников" где можно почитать? :)
Или куда можно залить без кучи мозгодвижений?
Ну по поводу почитать это вот тут: http://blog.nsws.ru/rabota-s-git-dlya-nachinayushhix.html, а залить на github.com. Ну и если ты под линухами, то поставь gitg. Оно pull делать походу еще не научилось, зато всякие там коммиты, бранчи, тэги и заливку в основной репозиторий делает на 1,2.
Ну и на вопросы по поводу git что знаю отвечу.
SAM style
01.03.2011, 22:28
Текст годный, начал кое-что понимать. Создал реп на гитхабе - git://github.com/samstyle/Xpeccy.git
Завтра импортирую ключ с работы и, думаю, уже перееду.
Am i doing it right?
Заливаются только добавленные и закоммиченные файлы, т.е всякий мусор от компиляции, если его не добавить, на сервер не попадает?
Заливаются только добавленные и закоммиченные файлы
угу. но всё равно рекомендую добавить всякую фигню в .gitignore
чтоб потом можно было сделать "git commit -a" и одним махом добавить всё что нужно в коммит и не добавлять всего чего не нужно.
Q-Master
02.03.2011, 10:25
От малацца! пример моего .gitignore, подредактируешь под себя:
*.pyo
*.pyc
*.layout
*.log
*.[oa]
moc_*.cpp
ui_*.h
*/build/
Ну потом почитаешь про этот файл. Там довольно разнообразные исключения из заливки можно делать.
SAM style
11.04.2011, 01:21
update десу...
SAM style
02.05.2011, 12:47
На github'е доступна версия с (вроде) работающим IDE по Nemo/NemoA8. Требуем кто-нибудь, кто это дело потестирует и укажет мне на ошибки.
-- added
PS: Нашел более подробную спецификацию на ATA. То, что написано выше относится только к базовым операциям (инициализация, идентификация, чтение и запись секторов).
SAM style
06.05.2011, 14:29
update
HDD (Nemo/NemoA8, потом будет SMUC) в тестовом состоянии.
SAM style
25.09.2011, 00:43
BUMP
В последних версиях (почти за весь сентябрь) могли возникнуть проблемы с настройками и файлами конфигурации. Так вот, из основного:
Все, что касается вывода звука переехало в секцию [SOUND] config.conf. Остальное, что касается AY/YM/TS/GS, осталось в [SOUND] конфигурации профиля ZX.
Весь список ромсетов тоже переехал в [ROMSETS] config.conf. Ромсет для текущей машины, GS и точка сброса теперь в переименованой секции [ROMSET] профиля.
Переезд настроек медлено продолжается.
А на закуску - начиная с build 20110924 (0.4.995) можно редактировать, создавать и удалять ромсеты прямо из окна опций.
SAM style
08.10.2011, 17:31
Слегка update
Появилось окошко мофона и поддержка хобет
? В Gnome и Xfce не генерируются события SDL для клавиатуры больше 1 раза. Проявляется рандомно, не у всех и поэтому под вопросом.
проявилось
Debian Sid, Xfce 4.8.0
Xpeccy последний с гита (b708a521cb9)
И еще окошки открытия/сохранения файлов почему-то задизабленные полностью
SAM style
10.10.2011, 08:02
На днях поставлю на ноут сида с крысой, буду думать.
Задизабленные окошки появляются, если после их создания уничтожено/пересоздано родительское окно (MainWin), что странно, т.к во первых оно создается до остальных в emulInit(), во вторых до самого конца не трогается.
Еще собрал на другой машине с x86 (первая amd64 была), оба бага в наличии
Debian Squeeze, Gnome 2.30.2
SAM style
11.10.2011, 14:21
Это только на gtk-based DE/WM проявляется(gnome, xfce). У меня ни в кедах такого не было, ни сейчас на опенбоксе.
А теперь вопрос к тому, кто знает: где мне найти ПрофПЗУ Скорпиона объемом 128 или 256К, или информацию про переключение окон в ПрофПЗУ-512К. Всё, что я нашёл, описывает только 4 окна по 4 банки (16 страниц по 16К - это 256К).
Работающее ПрофПЗУ и SMUC, похоже, ознаменует переход на версию 0.5 :)
SAM style
11.10.2011, 20:20
128К профПЗУ нашел (v3.9f). Вроде даже работает, даже обе проги с ром-диска грузятся. Но наружу вылезают недостатки эмуляции bdi :(
512K профПЗУ (4.01) тоже работает, но определяется как 256К (оно и понятно, методом доступа к слоям ПЗУ выше 3го не обладаю)
---
Заметка по залипающей клаве в gnome/xfce: проблема возникает именно при встроеном в X11EmbedContainer SDL-окне. Если его не запихивать в контейнер, ничего не залипает. Но без контейнера я не знаю как управлять модальностью остальных окон (настройка, файловые диалоги) - в общем случае главное окно легко вытаскивается поверх них, хотя такого быть не должно.
SAM style
13.10.2011, 16:58
update
SMUC пофиксился и расширился. Есть порты версии/подверсии, системный порт работает только на чтение (b7, как я понял, показывает незанятость текщего HDD). При запуске профПЗУ 4.01 HDD определяется, читается его паспорт, при заходе в МОА-сервис пункт Hard Disk Utility активен, но потом ВСЁ НАФИГ ВИСНЕТ.
SAM style
26.10.2011, 22:59
update
Сделал в окне настроек копирование файлов с диска на ленту и обратно. Пока в тестовом режиме. Если у кого есть желание, погоняйте на баги.
SAM style
12.11.2011, 20:34
update
Мигрировал на libz80ex. Кроме мелочей всё обошлось хорошо. Единственное, что непонятно - почему команды DDCB/FDCB дизасм определяет как 5-байтовые, когда их там 4 (DD,CB,e,opcode). На это поставилась заглушка, урезающая их до 4 байт. И пока что исчез счетчик тактов внизу дебугера.
Попутно нашлись ошибки загрузки/сохранения снапшотов: в загрузке .z80 вместо H считывался C, а в сохранении .sna вместо HX сохранялся LY.
NovaStorm
12.11.2011, 22:59
update
Мигрировал на libz80ex.
Оно и видно. Откуда её вытягивать?
Xpeccy/src/spectrum.h:6:19: фатальная ошибка: z80ex.h: Нет такого файла или каталога
И по поводу винды, в чём лучше пробовать собирать? MinGW(+msys?) или cygwin надо?
PS: debu_g_er.cpp
захардкоденые пути к z80ex.
SAM style
12.11.2011, 23:48
В debian/ubuntu libz80ex есть в репах. Либо исходники - https://github.com/mkoloberdin/z80ex. Если удастся собрать под винду, да еще и заставить работать, поставлю памятник. Раньше со скрипом собиралось с Qt+mingw.
Если удастся собрать под винду, да еще и заставить работать, поставлю памятник. Раньше со скрипом собиралось с Qt+mingw.
А в чем проблема поддержать ту же MSVC?
SAM style
13.11.2011, 00:33
А в чем проблема поддержать ту же MSVC?
Слабая отмазка - бывание меня в виндовсе примерно раз в месяц.
Неслабая - как ни старался, ни с waveout, ни с directsound у меня ничего не вышло. После ввода sdl-sound еще не пытался собирать в win. Плюс используется QX11EmbedContainer, чего кроме как в иксах в Qt нет.
А в остальном - соберется, если еще раз по исходникам пройтись на предмет специфичных для linux/windows вещей. Конкретно к mingw привязки нет, может и с Qt+vs пойдет - не пробовал.
Слабая отмазка - бывание меня в виндовсе примерно раз в месяц.
Неслабая - как ни старался, ни с waveout, ни с directsound у меня ничего не вышло. После ввода sdl-sound еще не пытался собирать в win. Плюс используется QX11EmbedContainer, чего кроме как в иксах в Qt нет.
А в остальном - соберется, если еще раз по исходникам пройтись на предмет специфичных для linux/windows вещей. Конкретно к mingw привязки нет, может и с Qt+vs пойдет - не пробовал.
Я для таких целей держу виртуалку с виндой на линуксе и виртуалку с линуксом на винде:)
waveout довольно прост в работе. dsound сам еще не пробовал, сказать не могу. sdl, ясное дело одинаков везде, но обладает некоторыми тормозами в силу своей кроссплатформенности (плюс отсутствие доступа к системному микшеру).
А для чего тебе такие специфичные виджеты нужны? Я его описание глянул- разве что как front-end для mplayer'a его можно юзать:)
Если что, могу подкинуть скрипты сборки QT под win32/win64/mingw/lin32/lin64/dingux. Навозился с этим по самое не балуйся, теперь быстро это получается.
SAM style
13.11.2011, 15:30
В контейнер пихается sdl-окно. Причины я уже говорил - невозможно (или это я так думаю?) просто так держать qt-окна (файловый диалог, вопросы, итп) поверх не-qt окна (если главное будет sdl-окном). Т.е чисто эстетическая сторона. Но есть плюс - если его вытащить, в gnome/xfce перестанет залипать клавиатура.
На винду в виртуалке я уже водрузил VS2008express и Qt-sdk под неё.
В контейнер пихается sdl-окно. Причины я уже говорил - невозможно (или это я так думаю?) просто так держать qt-окна (файловый диалог, вопросы, итп) поверх не-qt окна (если главное будет sdl-окном).
Я по этой причине не стал смешивать фреймворки и делал все на SDL. Работа на QT была достаточно тормознутая, а про OpenGL я еще не знал. Если ты рендеришь все в буфер и SDL используешь чисто для вывода на поверхность, то по идее проблем с переходом чисто на QT быть не должно.
На винду в виртуалке я уже водрузил VS2008express и Qt-sdk под неё.
А я вот обжегся с готовыми сборками (собираются с неизвестными опциями и могут конфликтовать с другим кодом), потому пилю все сам. Плюсы- вырезаю все мне ненужное (на самом деле не все, но если начинать углубляться в опции, то получаются кривые сборки- не все сочетания опций протестированы).
SAM style
13.11.2011, 23:39
update
Назад к корням. Помнится, год назад у меня была отрисовка на Qt, и там было ужасное тормозилово, из-за чего я сначала перешел на GL, потом на SDL. Сейчас сделал QWidget с натягиванием на него отрисованого QImage. Стало на 30% быстрее, чем с SDL...
Выяснилось, что нифига там не SDL_sound, а SDL_audio.
Отвалился фуллскрин. Да он толком и не работал...
В винду ещё не пробовал. Короче, гоняйте на баги. :)
NovaStorm
14.11.2011, 08:20
О! Чисто Qt - это интересно и правильно. По поводу 30%, это на каком движке? raster или иксы?
SAM style
14.11.2011, 09:36
Мда, всё сильно относительно. Дома стало есть меньше, на работе, наоборот, больше - чуть ли не всё ядро съедает.
NovaStorm
14.11.2011, 10:09
Могут ведь влиять и иксы и видео дрова и композитинг, в некрофильском дебиане надо ещё и на флаги сборки Qt смотреть. Они raster движок могли и не включить.
Но мне думается, что скорости хватить должно в любом случае.
SAM style
14.11.2011, 10:41
Pentium4, 2 ядра, 3ГГц, ram 2Гб, видео встроеное на intel82945g/gz с собранными дровами 2.9, debian testing, openbox, xcompmgr для композита. Вот на этом ochen ploho! Сделал просто каркас - натягивание QImage на окно 640*480 - и оно сожрало 30% ядра.
Конечно, это из-за относительно слабого видео, но... Нееее, надо искать другие пути. С SDL кривовато-непереносимо, OpenGL тоже на слабых видяхах утромозится.
PS: дома тот же debian, только i5, 4Гб памяти и видео Nvidia-GT240 с дровами из репов.
Конечно, это из-за относительно слабого видео, но... Нееее, надо искать другие пути. С SDL кривовато-непереносимо, OpenGL тоже на слабых видяхах утромозится.
Попробуй QGLWidget. Плюс ничто не мешает поддержать его и обычную отрисовку с QWidget+QImage. И переключаться между ними хоть в рантайме.
NovaStorm
14.11.2011, 12:33
с собранными дровами 2.9
Хм, а в дженте актуальные уже 2.15/2.16 стейбл/тестинг.
И ещё раз повторюсь - смотри наличие raster, разница в разы.
SAM style
14.11.2011, 20:04
Мой эмулятор г-но, я ничего не понимаю в эмуляторах...
После потуг заставить его работать быстрее, я отменил последний коммит. Таки SDL лучше и ровнее других справляется с отображением. Ложить я хотел на переносимость - на винде есть Unreal, и если чего-то не хватает, пусть пилят его. Другое дело, что весь эмуль является комом наперегонки тормозящих друг друга частей, которые неплохо бы переписать.
Raster в Qt, естественно, не оказалось.
Мой эмулятор г-но, я ничего не понимаю в эмуляторах...
После потуг заставить его работать быстрее, я отменил последний коммит. Таки SDL лучше и ровнее других справляется с отображением. Ложить я хотел на переносимость - на винде есть Unreal, и если чего-то не хватает, пусть пилят его. Другое дело, что весь эмуль является комом наперегонки тормозящих друг друга частей, которые неплохо бы переписать.
Raster в Qt, естественно, не оказалось.
Как у тебя устроен конвеер рендера? Экран рисуется в памяти или используются функции "рисования пикселов" на устройстве?
SAM style
14.11.2011, 20:37
В памяти массив из индексов цветов. Сильно тормозит не вывод картинки на экран и даже не её формирование в памяти - если это всё отключить, выигрыш получится процентов 5-7.
В памяти массив из индексов цветов. Сильно тормозит не вывод картинки на экран и даже не её формирование в памяти - если это всё отключить, выигрыш получится процентов 5-7.
Что именно тормозит? Это субъективные ощущения или результат профилирования?
SAM style
14.11.2011, 21:14
Сейчас - субъективно. Профилером я его гонял где-то год назад, но он выдал слишком много функций, я не осилил их все распарсить.
У меня всё больше желания сесть и переписать почти всё. Самые последние введения (GS и HDD) считаю более-менее удачными по реализации.
Сейчас - субъективно. Профилером я его гонял где-то год назад, но он выдал слишком много функций, я не осилил их все распарсить.
А там все смотреть и не надо:) Надо первый десяток только.
У меня всё больше желания сесть и переписать почти всё. Самые последние введения (GS и HDD) считаю более-менее удачными по реализации.
Главное с места в карьер не бросаться, а то можно завязнуть по самое не балуйся. Самое оптимальное- вносить небольшие изменения и тут же их проверять. Если внес много изменений и выясняется, что начал не с того края- в параллельном дереве вносишь нужные фиксы и продолжаешь. Так и сам будешь результат видеть и другим показать сможешь:)
NovaStorm
15.11.2011, 09:04
http://ru.wikipedia.org/wiki/Философия_UNIX
4. Предпочитайте переносимость эффективности.
=)
Может быть и правда пришло время для рефакторинга?
Может быть и правда пришло время для рефакторинга?
Немного оффтоп. Вбитые в голову программированием на ассемблере постулаты обеспечения эффективности не работают, а то и жутко мешают при программировании на ЯВУ. Я это ощутил на своей шкуре, когда вносил изменения под яростные верещания "Это неэффективно! Это требует много памяти и процессорного времени!" внутреннего ассемблерщика-спектрумиста. Да, у программы в два раза вырос объем исходных текстов. Но! Если говорить словарем того же хакера-ассемблерщика- скомпилированный код уменьшился, памяти стало жрать меньше, работать стало быстрее. И сопровождаемость увеличилась. Но это сильно ломает сознание. К этому надо либо идти, отбросив все сомнения, либо проверяя каждый шаг на практике:)
ram_scan
15.11.2011, 11:01
Немного оффтоп. Вбитые в голову программированием на ассемблере постулаты обеспечения эффективности не работают, а то и жутко мешают при программировании на ЯВУ.
Категорически не согласен. Вы просто не знаете как работает и как думает ваш компилятор.
Категорически не согласен. Вы просто не знаете как работает и как думает ваш компилятор.
А это нужно знать?;) Мне достаточно знать, как давать компилятору подсказки и то, что он сгенерит код лучше, чем я.
SAM style
15.11.2011, 12:06
Мой мозг, конечно, уже испорчен ассемблером, но даже без этого сейчас эмуль выглядит как шатающаяся конструкция из спичек, из которой в разные стороны торчит всякий хлам. Что-то находится не на своём месте, что-то на самом деле не нужно. За почти 3 года там столько скопилось...
Быть может, после перетряхивания кода и высвободится столько ресурсов, что можно будет сделать натягивания картинки на Qt-шный виджет. Сейчас меня сильно коробит тот факт, что P4 на 3ГГц с эмулем уже еле справляется.
Мой мозг, конечно, уже испорчен ассемблером, но даже без этого сейчас эмуль выглядит как шатающаяся конструкция из спичек, из которой в разные стороны торчит всякий хлам. Что-то находится не на своём месте, что-то на самом деле не нужно. За почти 3 года там столько скопилось...
Фигня война.
Начни с малого.
1) Раздели сорцы на части. Отдели GUI от Core.
2) Объекты передавай по константной ссылке, с сырыми указателями старайся не работать.
void splitline(std::string line, std::string* pnam, std::string* pval);
Вполне можно заменить на
std::pair<std::string, std::string> split_config_line(const std::string& line);
3) Смотри на предмет сторонних библиотек. В том же boost, например, есть много всего, что обычно приходится велосипедить. Та же работа со строками.
4) Аккуратнее обращайся с памятью. Видел кучу new, но нет delete. Причем даже в местах работы с Qt, где такое допустимо, необходимые условия (присоединение к родителю) не соблюдаются. Это все утечки. Плюс опять же, есть smart pointers (например стандартный std::auto_ptr), позволяющие избавиться от этой головной боли.
NovaStorm
15.11.2011, 13:19
Поддержу пожалуй Vitamin'а, хотя у самого и к STL неприязнь, и, тем более, к бусту - не осилил пока =(
Ну и наверное нелишним будет в свете "Видел кучу new, но нет delete" натравить на эмуль Valgrind, как раз новая версия недавно вышла.
Q-Master
16.11.2011, 00:05
Ненадо auto_ptr. Оно сильно плохо с потоками дружит.
2 SAM style: солью сорцы и попробую у себя на ppc g5 ща.
---------- Post added 16.11.2011 at 00:05 ---------- Previous post was 15.11.2011 at 22:19 ----------
Нихрена не запускается. На все попытки орет что "Can't found current romset" не смотря на то что все что надо, там где надо присутствует. За коим-то хреном пытается создать директорию roms в хомяцком .config.
содержимое конфиг директории:
~/.config/samstyle/xpeccy$ ls -R
.:
config.conf config.conf_ roms xpeccy.conf
./roms:
1982.rom glukpen.rom pentagon.rom scorpion.rom trdos503.rom trdos610e.rom
SAM style
16.11.2011, 08:03
Еще бы посмотреть содержимое [ROMSETS] и [ROMSET] в *.conf. Если последний раз запускалось давно, придется руками секции переносить:
Например, config.conf
[ROMSETS]
name = Pentagon
basic128 = pentagon.rom
basic48 = pentagon.rom:1
trdos = trdos503.romИ xpeccy.conf
[ROMSET]
gs = gs104.rom
current = Pentagon
reset = basic128
Ненадо auto_ptr. Оно сильно плохо с потоками дружит.
В каком месте? Конечно, если использовать однопоточную версию libstdc++ в многопоточном окружении, проблем не оберешься и без этого.
Конечно, лучше юзать shared_ptr. Но это либо boost тянуть надо, либо на новый стандарт переходить.
Q-Master
16.11.2011, 22:44
Еще бы посмотреть содержимое [ROMSETS] и [ROMSET] в *.conf. Если последний раз запускалось давно, придется руками секции переносить:
Например, config.conf
[ROMSETS]
name = Pentagon
basic128 = pentagon.rom
basic48 = pentagon.rom:1
trdos = trdos503.romИ xpeccy.conf
[ROMSET]
gs = gs104.rom
current = Pentagon
reset = basic128
Ага. Запустил. Вижу черный квадрат малевича с загрузкой проца в приблизительно 30-32%. Видать ты сломал все что относится к big/little endian
SAM style
17.11.2011, 01:02
Ага. Запустил. Вижу черный квадрат малевича с загрузкой проца в приблизительно 30-32%. Видать ты сломал все что относится к big/little endianВсё, что было с порядком байт, находилось сугубо в z80.h, которого теперь нет - оно заменено на libz80ex. Так что проблема, судя по всему, в последней. Она у тебя самосборная или из готового пакета?
Q-Master
17.11.2011, 20:50
Всё, что было с порядком байт, находилось сугубо в z80.h, которого теперь нет - оно заменено на libz80ex. Так что проблема, судя по всему, в последней. Она у тебя самосборная или из готового пакета?
Из пакета. Должна работать, т.к. если судить по дебаггеру она там где-то блондится в ПЗУ, но на экране малевич. В случае косячного ПЗУ на экране косячный матрас.
SAM style
18.11.2011, 00:17
У меня вообще ничего эндиановского не осталось. Проверь либу на правильность - как inc c меняет всю пару bc. Если увеличивается на 256 - это оно, а если на 1 - хммм?..
NovaStorm
18.11.2011, 08:18
Дело небось не в эмуляции z80, а просто в перекидывании экрана.
SAM style
18.11.2011, 10:32
К моему формированию экрана тоже претензий по порядку байт нет - слой SDL 8-битный. Хотя, и это можно проверить - подождать несколько секунд, когда должно появиться 128-е меню и зажать вверх. Если начало трещать - работает, но не показывается. Если не начало - не работает.
Для информации - в git отпочковалась ветка testing, где сейчас обкатывается новая процедурина прорисовки экрана. Прирост скорости есть.
ram_scan
24.11.2011, 09:18
А это нужно знать?;) Мне достаточно знать, как давать компилятору подсказки и то, что он сгенерит код лучше, чем я.
Вот от этого мы и имеем ресурсожорких монстров которые на трехгигагерцовых пнях ворочаются медленнее чем в свое время на сотом пне летали. Компилятор не может сгенерировать код лучше программиста. Он может сгенерировать код лучше среднестатистического программиста. В большинстве случаев. И то не всегда. Поэтому если хотите получить хороший код - помогите компилятору.
Вон взять Шалаевский эмулятор. С той поры кроме нескольких недокументированных фичей и точных времянок не появилось в эмуляторах принципиально ничего нового. Толка тогда на 120-м пне оно летало со свистом, а сейчас на двухгигагерцовом каждый второй эмулятор лагает.
Потому-что "я синтаксически корректный код ему скормил, пускай оптимизирует".
Чтобы генерировать эффективный код нужно иметь представление как компилятор думает и во что примерно он скомпилирует ту или иную конструкцию. Тогда еще когда вы пишете код можно выбрать наиболее эффективную, даже если алгоритм чуть изменить придется для этого. Это называется "уметь эффективно пользоваться инструментом"
Потому-что где-то правильнее для какого-то конкретного компилятора сделать switch-case, а где-то if вложенный. Где-то надо цикл руками развернуть, а где-то компилятор сам справится. Где-то явное приведение типа в условии надо сделать, потому-что автоматическое приведение порождает функционально тот-же, но избыточный код, навроде test eax,1, and eax,eax, jz somewhat. Где-то в явном виде сделать табличный вызов функции, где-то отказаться от ООП чтобы не иметь оверхеда на цепочке inherited вызовов которые фактически nullsub-ами являются но программисту выяснять это лениво и он тупо inherited вызов делает, хуже то мол всяко не станет. Да прагму написать какую-нть иногда полезно бывает. Выравниванием поуправлять.
Я тут давеча код один ковырял. В некоторых местах оверхеда до 90% насчитал. Полмегабайта кода который реально не делае ничего, кроме передачи друг другу управления и возвращения единственного нулевого статуса. Просто потому-что две библиотеки писали разные люди которым было лень и некогда разбираться в другдружьем коде, а третий воспользовался библиотеками первых двух и тоже поленился разбираться, да еще отнаследовался не от того что надо а от того что на глаза попало. В итоге дикий оферхэд как по производительности так и по памяти (две сотни абстрактных методов еще, против десятка которые реально используются и переопределены). Это только один inherited вызов. Вложенность наследования - чуть более сотни. Единственный пустой метод. А там еще есть конструктор и деструктор как минимум. И все виртуальное. Нахрена ?
И никакой компилятор вместо программиста в таком головняке никогда не разберется. Потому-что искусственного интеллекта у него нет. А когда появится то и программист станет не нужен.
Вот от этого мы и имеем ресурсожорких монстров которые на трехгигагерцовых пнях ворочаются медленнее чем в свое время на сотом пне летали.
А еще раньше трава зеленее была и небо голубее.
Компилятор не может сгенерировать код лучше программиста. Он может сгенерировать код лучше среднестатистического программиста. В большинстве случаев. И то не всегда.
Компилятор- это всего лишь инструмент. Правильное применение снимает головную боль, неправильное- добавляет.
Поэтому если хотите получить хороший код - помогите компилятору.
Я про это и говорил.
Вон взять Шалаевский эмулятор. С той поры кроме нескольких недокументированных фичей и точных времянок не появилось в эмуляторах принципиально ничего нового. Толка тогда на 120-м пне оно летало со свистом, а сейчас на двухгигагерцовом каждый второй эмулятор лагает.
И где он теперь этот эмулятор Шалаева? Почему он не развивается? Может потому, что написан был для оптимизации по скорости под имеющееся на то время оборудование. Что привело к
а) абсолютной неподдерживаемости
б) абсолютной некроссплатформенности
в) далеко не оптимальной работе на современных платформах, ибо правила выполнения даже машинных кодов поменялись, а пересборка ассемблерного кода (в отличие от ЯВУ) бессмысленна
Потому-что "я синтаксически корректный код ему скормил, пускай оптимизирует".
Компилятор не сможет за тебя выбрать правильный алгоритм. Если ты фигачишь сортировку пузырьком, то хоть ты лопни или утони в ассемблерных вставках (лично видел такое), получишь на выходе тормозное *****. А правильный алгоритм даже на неоптимальном компиляторе будет работать быстрее.
Чтобы генерировать эффективный код нужно иметь представление как компилятор думает и во что примерно он скомпилирует ту или иную конструкцию. Тогда еще когда вы пишете код можно выбрать наиболее эффективную, даже если алгоритм чуть изменить придется для этого. Это называется "уметь эффективно пользоваться инструментом"
Потому-что где-то правильнее для какого-то конкретного компилятора сделать switch-case, а где-то if вложенный. Где-то надо цикл руками развернуть, а где-то компилятор сам справится. Где-то явное приведение типа в условии надо сделать, потому-что автоматическое приведение порождает функционально тот-же, но избыточный код, навроде test eax,1, and eax,eax, jz somewhat.
Существуют платформы, отличные от x86 (Всегда ваш, Капитан Очевидность).
Или ты можешь изглаголить универсальные рецепты по оптимизации под все возможные платформы?
Где-то в явном виде сделать табличный вызов функции, где-то отказаться от ООП чтобы не иметь оверхеда на цепочке inherited вызовов которые фактически nullsub-ами являются но программисту выяснять это лениво и он тупо inherited вызов делает, хуже то мол всяко не станет. Да прагму написать какую-нть иногда полезно бывает. Выравниванием поуправлять.
"Написать код, понятный компьютеру может каждый. Написать код, понятный человеку- далеко не каждый".
Я тут давеча код один ковырял. В некоторых местах оверхеда до 90% насчитал. Полмегабайта кода который реально не делае ничего, кроме передачи друг другу управления и возвращения единственного нулевого статуса. Просто потому-что две библиотеки писали разные люди которым было лень и некогда разбираться в другдружьем коде, а третий воспользовался библиотеками первых двух и тоже поленился разбираться, да еще отнаследовался не от того что надо а от того что на глаза попало. В итоге дикий оферхэд как по производительности так и по памяти (две сотни абстрактных методов еще, против десятка которые реально используются и переопределены). Это только один inherited вызов. Вложенность наследования - чуть более сотни. Единственный пустой метод. А там еще есть конструктор и деструктор как минимум. И все виртуальное. Нахрена ?
Ну дык, умеючи и член сломать можно. Наследование- это сильная связь, агрегирование- слабая. Надо использовать агрегирование чтобы легко переделывать программу при необходимости. В моем коде размер типичной иерархии наследования- 2 уровня (абстрактный интерфейс и один или множество наследников). 3 и более уровней (приходится иногда писать) становятся в очередь на рефакторинг.
Я вот тоже видел программу, "оптимизированную по скорости", и располагающуюся в одном(!) файле размером в 600кб(!). Внутри километровые функции по тысяче строк. Сопровождению не поддается.
Или еще пример (из моей программерской жизни). Необходимо описать атрибуты некой сущности. Как поступает обычный программист- пишет структуру и возвращает ее заполненную из некой функции. Я тоже так сделал. И начал ловить дикие тормоза. Переделал все в ООП-стиле (интерфейс с методами доступа) и получил более чем трехкратный прирост скорости. О причинах этого прироста предлагаю догадаться самостоятельно.
NovaStorm
24.11.2011, 11:04
А разве Шалаевский потактово эмулировал? С бордюром, лучом, и прочим?
А разве Шалаевский потактово эмулировал? С бордюром, лучом, и прочим?
Ага. И AY там круто на FM-синтезаторе сделан. И LDIR одной командой выполнялся.
Плагинная система- это да, круто, без вопросов.
NovaStorm
24.11.2011, 12:57
Гм, да. Сам же когда-то на нём мультиколоры смотрел.
>>И LDIR одной командой выполнялся.
Как это? А если прерывание?
Как это? А если прерывание?
Значит не судьба:)
Запусти тест из интро Iris Megademo. Там именно так тест тактов делается.
NovaStorm
24.11.2011, 13:53
>Там именно так тест тактов делается.
Классная идея =)
Q-Master
24.11.2011, 22:02
Главная фраза что есть процессоры по архитектуре отличные от х86. 8)
Компилятор не может сгенерировать код лучше программиста.
Советую почитать интеловскую документацию на 4й пень. Про конвейеры и непоследовательное выполнение команд, как работают предсказание переходов и кэш и т.д.
Компилятор в 99% случаев генерирует код НАМНОГО лучше, чем может написать программист. Просто потому, что человек не в состоянии за всеми теми хитростями уследить.
А тормозит современный софт не потому, что программисты криворуки, а потому, что слишком много уровней абстракции понаверчено ради ускорения разработки.
Компилятор в 99% случаев генерирует код НАМНОГО лучше, чем может написать программист. Просто потому, что человек не в состоянии за всеми теми хитростями уследить.
полностью согласен, хотел бы я посмотреть на того человека который способен писать оптимимальный код под особенности современных процов :)
А тормозит современный софт не потому, что программисты криворуки, а потому, что слишком много уровней абстракции понаверчено ради ускорения разработки.
скорее для упрощения кода, современные системы настолько сложны что их было бы просто невозможно создать не используя абстракцию.
Кстати по поводу числа уровней в иерархии объектов, читал что ктото проводил исследование в этом вопросе и было выведено оптимальное значение - 5-7 уровеней наследования. При большем числе уровней затраты на поддержку такой структуры становятся неоправданно высокими.
Недавно наткнулся на эмулятор спектрума на дотнете, стало интересно как реализован движок, полез смотреть и ужаснулся. Это была первая дотнет программа где я увидел метод на тысячи строк кода! :eek:
Рефлектор просто не справлялся с таким кодом! Попытка открыть метод эмуляции инструкции Z80 приводила к подвисанию на минуту. И это на i5 760 @ 3.2 ГГц! :D
Я был глубоко поражен, насколько глубокое упорным и терпеливым нужно быть чтобы писать и отлаживать такой код... Меня коробит от одной мысли о том как колбасило студию при редактировании такого кода. Суть сводилась к тому что вся эмуляция Z80 была в одном методе, представляющий собой много вложенных switch'ей. На этом исследование этого эмулятора я прекратил, т.к. понял что понять мне его не суждено :v2_dizzy_messed:
Скорость кстати была не на высоте, визуально заметно ниже чем ZXMAK2. И это несмотря на десяток мест, где я пожертвовал производительностью в угоду удобству простоте :)
NovaStorm
27.11.2011, 15:27
хотел бы я посмотреть на того человека который способен писать оптимимальный код под особенности современных процов :)
См. список авторов ffmpeg, xvid, x264, snow и прочей мультимедии. Там это в порядке вещей.
SAM style
27.11.2011, 18:36
Good news, everyone. Я, наконец, снова собрал xpeccy под win32. Правда, опять же с mingw - при сборке в qtcreator'е с 2008й студией оно начинало ругаться даже на родные заголовки (winnt.h, например).
Архив со всеми dll-ками (6.9Мб) - http://rghost.ru/32238821
Звука, как водится, нет - даже через sdl не заработал...
PS: А вы тут оффтопа развели...
См. список авторов ffmpeg, xvid, x264, snow и прочей мультимедии. Там это в порядке вещей.
См. время создания этих библиотек. А также нашумевший прецендент, когда переписанный на С алгоритм шифрования работал быстрее ассемблерного аналога.
при сборке в qtcreator'е с 2008й студией оно начинало ругаться даже на родные заголовки (winnt.h, например).
Надо установить переменные окружения. Ищи батник vcvars или чтото в этом роде в папках со студией.
Звука, как водится, нет - даже через sdl не заработал...
А в чем проблема? У меня через mingw прекрасно работает виндовый и sdl вывод звука.
SAM style
28.11.2011, 00:44
Надо установить переменные окружения. Ищи батник vcvars или чтото в этом роде в папках со студией.Он их находит, но ругается на содержимое - сразу высыпается до сотни warning'ов. И, я так понял, что-то с именем BDI у него уже где-то есть...
А в чем проблема? У меня через mingw прекрасно работает виндовый и sdl вывод звука.Win7 через SDL звук не играл, вместо щелчка при нажатии кнопки словно буфер зацикливало - начинало трещать. В WinXP в виртуалке звук даже не открывался - эмуль падал.
Если честно, особо со звуком не сидел, на сегодня целью было просто собрать и запустить.
Он их находит, но ругается на содержимое - сразу высыпается до сотни warning'ов. И, я так понял, что-то с именем BDI у него уже где-то есть.
У меня ничего не нашлось. Кинь лог сборки.
Win7 через SDL звук не играл, вместо щелчка при нажатии кнопки словно буфер зацикливало - начинало трещать. В WinXP в виртуалке звук даже не открывался - эмуль падал.
Я надыбал gdb для mingw:) Так что теперь отладка падений- плевое дело:)
SDL только что проверил- прекрасно работает на 64 битной семерке.
SAM style
28.11.2011, 14:04
Лог сборки с VC2008.
Вроде, сделал всё правильно - командная строка с окружением студии, перехожу в xpeccy/build, cmake .. (без ошибок), nmake. Последний выплюнул в stdout то, что в логе. Был один момент - stdint.h не нашелся, я его сам сделал typedef'ами с [un]signed {char|short|int} на [u]int{8|16|32}_t
А, ещё окружение:
echo %PATH%
C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE;
C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN;
C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools;
C:\WINDOWS\Microsoft.NET\Framework\v3.5;
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;
C:\Program Files\Microsoft Visual Studio 9.0\VC\VCPackages;
C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin;
C:\WINDOWS\system32;
C:\WINDOWS;
C:\WINDOWS\System32\Wbem;
D:\Qt\QtSDK\Desktop\Qt\4.7.4\msvc2008\bin\;
C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\;
F:\developement\lib\
echo %INCLUDE%
C:\Program Files\Microsoft Visual Studio 9.0\VC\INCLUDE;
C:\Program Files\Microsoft SDKs\Windows\v6.0A\include;
F:\developement\include\;
F:\developement\include\SDL\
mingw меня больше любит - даже не пищит при сборке.
А что это за пути такие странные?
C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\winnt.h
PlatformSDK обычно ставиться прямо в
C:\Program Files\Microsoft Visual Studio 9.0\VC\PlatformSDK
Скорее всего, от этого и ошибка.
Ворнинг C4820 можно задизаблить.
C4244- не надо. у тебя очень много потенциальных ошибок с этим связано. Используй static_cast если уверен, что надо приводить тип. (C-style cast не используй не в коем случае!)
C4514- можно заигнорить
C4819- позор джунглям:)
SAM style
28.11.2011, 15:32
C4819- позор джунглям:)Знаю, знаю. Это там с незапамятных времен, всплыло только сейчас. Я уже комменты на кириллице не делаю.
А что это за пути такие странные?Это добавляется, когда консоль с VC-шными переменными открываю. VS2008Express с мелкософтового сайта, через 30 дней грозится перестать работать.
Это добавляется, когда консоль с VC-шными переменными открываю. VS2008Express с мелкософтового сайта, через 30 дней грозится перестать работать.
Подозреваю, что это у тебя WinMobile SDK установлен.
SAM style
10.12.2011, 17:46
Update
Много чего переписано, жручесть снизилась (по кр. мере на рабочем компе с 27-29% упала до 20-21%, а с отключеным GS и того меньше), пропали некоторые глюки и, возможно, появились новые. :)
Вроде бы, он начал играть RZX, хотя только первый input-блок. По документации, в RZX может быть несколько снапшотов и блоков данных. Расхождения могут быть, если rzx записан не на том железе или ПЗУ (если оно пользуется), на котором проигрывается (В Dizzy underground, например, музыка трещит).
Предложения по улучшению проигрывания rzx принимаются.
Ещё на диск A можно загрузить любой файл длиной не более #FF00 - в файловом диалоге есть пункт "Raw file to disk A".
PS: Чисто для справки - встроенные в rzx снапшоты распаковываются в /tmp/lain.tmp. Обычно это .z80
SAM style
11.12.2011, 13:47
Minor update
Поправлено:
- Сброс луча в начало кадра при обновлении параметров окна (смещение бордюра после ОК из-за этого)
- Путь сохранения снапшота из RZX в Windows
- Само сохранение этого снапшота в Windows (не использовался принудительно бинарный формат, поэтому внутри оказывались лишние байты).
- Игнорирование параметра reset, если в конфиге соответствующая строка не была последней в секции.
SAM style
04.01.2012, 16:16
Update
- Автоматическое добавление boot.B при загрузке scl/trd/udi/fdi, если диск распознан как trdos-овский и boot.B там нет. Сам файл с бутом должен быть хобетовым boot.$B и лежать в директории конфигов (~/.config/samstyle/xpeccy/ в Linux и .\config\ в Windows)
- Почти разобрался с SDL-звуком в Windows. Работает приемлемо, но всё равно иногда заикается. WaveOut тоже добавлен, но его пригодность почти нулевая (не понимаю, отчего он так булькает)
- Параметр QTDRAWING при выполнении cmake отвечает за вывод картинки. Если он =0, используется SDL, иначе Qt. В случае с Qt мощей надо больше и фуллскрина нет.
- Немного переписано, на функциональность и скорость не влияет
SAM style
06.01.2012, 21:13
Update
- В вкладке BDI окна настроек появилась возможность сохранить выбранные в каталоге файлы наружу: как хобеты или как есть (raw). Действует и кнопками справа от каталога, и из контекстного меню таблицы. Если длина файла в секторах и в байтах соответствуют друг другу, размер raw-файла будет равен размеру исходного в байтах, иначе - в секторах * 256.
- Слегка поправлено копирование файла с диска на ленту - точка останова теперь не ставится сама по себе.
- Успешное копирование файлов между диском-лентой заканчивается окошком с сообщением, а то раньше молча всё делалось.
Doctor Max
23.01.2012, 12:20
Вот бы сохранение видео сделать......
SAM style
23.01.2012, 13:51
Вот бы сохранение видео сделать......Это уже давно в долгосрочных планах, но вплотную не занимался, только немного поигрался с libavcodec.
Либо я что-то не так делаю, либо одно из двух...
-- Found ALSA: /usr/lib64/libasound.so
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
SDL_INCLUDE_DIR
used as include directory in directory /root/Xpeccy
-- Configuring incomplete, errors occurred!
Сделано по вашей инструкции. Я так понимаю, что SDL не ищется (а он у меня есть). Ладно, пальцами указал.
И второе - требует z80ex, которого нет в дереве. Я понимаю, что это вроде как не ваше, но собирать всё в кучу лень. Нельзя ли добавить, чтобы после гита можно было собрать и юзать?
SAM style
24.01.2012, 08:05
Либо я что-то не так делаю, либо одно из двух...
0. Не сиди под рутом
1. Раз нет SDL_INCLUDE_DIR, значит не находит dev-файлы от SDL.
2. z80ex не моё, но тоже лежит на github'е - http://github.com/mkoloberdin/z80ex
2а. И только что узрел недоделку - z80ex будет искаться в /usr/lib или /usr/local/lib, но не в /usr/lib64 и иже с ним.
Под рутом уже привык - это просто сервак, там без рута все равно ничего не проадминить :cool:
С SDL разобрался - он был у меня кривой, с ним вообще ничего не собиралось.
Насчет 2а - там все пучком. Линукс тоже при загрузке 64-битный ищет либы в /lib а не /lib64. У меня там симлинк с /lib на /lib64 стоит, и, полагаю, на других версиях тоже должен быть.
А вот недоработка есть тогда в другом. Если z80ex используется не внутри сорцов, а внешний, то наверно на этапе создания Makefile должна быть проверка. А то пошел мейк, и тут узнаешь, что не хватает какого-то хидера...
SAM style
24.01.2012, 10:28
Если z80ex используется не внутри сорцов, а внешний, то наверно на этапе создания Makefile должна быть проверка. А то пошел мейк, и тут узнаешь, что не хватает какого-то хидера...
Согласен, сделаю. Разберусь с джойстиком (по сути уже работает, только настройки к нему прикрутить надо), заодно CmakeLists.txt поправлю на предмет z80ex
? В Gnome и Xfce не генерируются события SDL для клавиатуры больше 1 раза. Проявляется рандомно, не у всех и поэтому под вопросом.
При нажатии на любую клавишу она начинает дублироваться и больше ни на что не реагирует. При входе в меню (F1) все элементы недоступны (тоже вешается).
mike@netbook:/usr/local$ xpeccy
Using SDL ver 1.2.14
Using z80ex ver 1.19
Using SDL surface
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=11.10
DISTRIB_CODENAME=oneiric
DISTRIB_DESCRIPTION="Ubuntu 11.10"
SAM style
07.02.2012, 07:52
Есть вариант пересобрать эмуль с выводом картинки на Qt:
cmake -DQTDRAWING=1 .
Мощей нужно побольше, но проблема с вводом в Gnome и Xfce решается.
Спасибо, помогло :)
---------- Post added at 15:04 ---------- Previous post was at 14:35 ----------
А где программа хранит конфиг?
---------- Post added at 15:25 ---------- Previous post was at 15:04 ----------
конфиги нашел. Не входит в TRDOS. Сбрасывается в 128 меню. Пробовал ПЗУ и единым файлом и разными.
---------- Post added at 15:26 ---------- Previous post was at 15:25 ----------
Когда принудительно выбираешь DOS - черный экран.
---------- Post added at 15:28 ---------- Previous post was at 15:26 ----------
разобрался...
---------- Post added at 15:47 ---------- Previous post was at 15:28 ----------
Тормозит.
SAM style
07.02.2012, 17:46
small update
Немного переделана работа с клавиатурой и добавлена возможность сменить сопоставление клавиш PC и ZX клавиатур: в config.conf секция [GENERAL], парметр keys указывает имя файла, в котором прописаны сопоставления. Карты клавиатур и пример - в файле keymap. Сам файл должен лежать в директории с конфигами.
LW,LA,RW,RA,MENU (Win,Alt,Menu) - эти клавиши не биндятся
Биндинг кнопок действует поверх дефолтного, т.е если устраивает в дефолтной раскладке - нет нужды биндить заново.
И да, тормозит. Можно отключить GS, чтобы на него мощи не тратились. Можно поставить не-иксовые дрова на видео, иногда помогает.
SAM style
09.02.2012, 22:06
update
- Появились ловушки для ПЗУ-шной процедурины загрузки с ленты. Можно сделать мнгновенную загрузку (даже пилота не будет) и задействовать автостарт-стоп ленты. VERIFY с быстрой загрузкой запорется - сработает как LOAD.
- Медлено продвигается джойстик (warning! в тестовом режиме) - помимо бинда осей/кнопок на направления и огонь кемпстона, через файл настроек можно забиндить и клавиши. Джойстик работает только с SDL - у Qt, похоже, нет соответсвующего класса.
SAM style
23.05.2012, 17:44
Небольшое подведение итогов за весну. Ничего особо крупного нет. Собственно эмулирующая часть переведена на C с последующим долгим убиванием глюков и порождением новых.
Выправлено пожрание памяти каждой загрузкой RZX (надеюсь)
Поведение плеера ленты более внятное. При записи в список добавляются блоки, при загрузке по F3 список обновляется, обновление галок делается по сигналам от мофона, а не постоянно...
Иная реализация точек останова. Пока работает только детект чтения опкода, на будущее есть возможность прерывания по чтению-записи в ячейку.
Глюк-репорты и фичреквесты принимаются, постараюсь рассмотреть.
SAM style
25.05.2012, 12:43
Добавлено железо Spectrum +2a. Кажется, всё правильно сделал - меню вылезает, все пункты работают, с ленты грузится (только ловушки не работают - адреса другие) Заодно пофиксен баг, из-за которого лента вообще не сохранялась, даже когда это было возможно
ПЗУ для +2а приложено. Распаковать к остальным и в опциях создать новый ромсет с одиночным файлом (file).
+3 пока под вопросом - учитывая сколько у меня гадостей было со "знакомым" ВГ93, осиливать 765-fdc как-то страшно.
Q-Master
25.05.2012, 21:10
Тебе поможет: lib765 и libdsk. Еще есть libgdos. Все 3 юзаются в fuse-emulator.
SAM style
25.05.2012, 22:29
Тебе поможет: lib765 и libdsk. Еще есть libgdos. Все 3 юзаются в fuse-emulator.
Благодарствую, первые 2 нашел, вооружился мануалом (http://cpcwiki.eu/index.php/765_FDC), пойду разбираться
inozemcew
27.05.2012, 01:12
Скачал. Собрал. Все замечательно... Запустил - чорный квадрат на белом бордере, хотя все работает. Два дня долбался, пока понял, что это второй экран, который ошибочно выставляется в режиме 48к.
SAM style
27.05.2012, 01:58
При создании структуры Video ставится основной экран(Video::curscr = 0). Возможно, действовал 16c - этот режим как раз не инициализируется (тут баг). Но оба должны устанавливаться в стандартные при сбросе.
inozemcew
27.05.2012, 20:59
SAM style,
Возможно, действовал 16c -
А вот тут не скажу.. может и так
Проблема проявляется, только если Machine = zx48k, остальные работают правильно, даже если присутствует только 1982.rom
SAM style
28.05.2012, 00:51
Да, я тоже выяснил - баг кроется именно в железе 48К. В понедельник покопаюсь, выясню почему.
---
А точнее - в памяти 48К. Маска номера банки была 0, но работать оно всё равно пыталось в банках 5,2,0. Раньше этого не было заметно, т.к. банки 5 и 2 стояли постоянно, с введением +2 возникла необходимость восстанавливать их при сбросе. Установка банок происходит с наложением маски, и во всех 3 страницах получался банк 0. Исправлено, вечером отправлю в гит.
SAM style
28.05.2012, 19:58
Так-с. Баг с 48й памятью исправлен. Железо: +2a переименован в просто +2, добавлен +3. ПЗУ, выложенное выше, подходит для обоих. +3 отличается от +2 наличием портов 2FFD и 3FFD для связи с контроллером дискокрутов. Задействованы исходники lib765 без libdsk. +3 определяет наличие дисководов А: и B:, но пока что не работает с ними. Во вкладке Storage->Disk можно выбрать интерфейс к fdc - Beta-disk/+3DOS/ничего. (хотя работает оно не так, как планировалось)
ram_scan
31.05.2012, 11:06
Собрал под OpenSuse 11.3 i586. Имеется глюк, если при изменении border size фактический размер экрана изменяется, а виртуальный - нет, и изображение перекашивает по диагонали.
После перезапуска эмулятор инитится некорректно и перекос остается, то есть корректно работает только при border size 100%
Собирал под QT.
SAM style
31.05.2012, 17:56
Про перекос в курсе. Это из-за несовпадения размера окна и размера образа изображения в памяти. Что странно - эти значения берутся из одной и той же переменной. При 50% тоже косит?
update
Возможность загрузить диск *.dsk (только extended, mfm, dd) в дискокрут. Так хоть можно его посмотреть посекторно посредством ВГ93.
ram_scan
02.06.2012, 09:02
Про перекос в курсе. Это из-за несовпадения размера окна и размера образа изображения в памяти. Что странно - эти значения берутся из одной и той же переменной. При 50% тоже косит?
update
В понедельник на работе гляну, дома собирать не хочу, больно дофига евелоперских пакетов там по зависимостям едет.
На одинарном и двойном размере экрана перекос имеет место быть, а бордер сайз 50% гляну на работе уже. Мож в исходнике свежим глазом увижу чего. Мне думается что 50% будет работать правильно и грабля в целочисленном делении где-то.
SAM style
02.06.2012, 09:54
libxpeccy/video.c, vidUpdate(Video*) - вот тут вычисляются размеры
vsze - видимые размеры (с откусаным бордюром, масштаб x1)
wsze - размеры окна (из предыдущих, уже с учетом масштаба)
ram_scan
04.06.2012, 05:45
Гланул. 50% бордер сайз работаэ правильно.
ram_scan
04.06.2012, 05:51
libxpeccy/video.c, vidUpdate(Video*) - вот тут вычисляются размеры
vsze - видимые размеры (с откусаным бордюром, масштаб x1)
wsze - размеры окна (из предыдущих, уже с учетом масштаба)
В этом коде я с разбегу криминала не вижу. Видимо потому-что не разбирался детально в логике. Косяк именно в обработке размера бордера.
35876
SAM style
06.06.2012, 17:45
update При попытке проиграть пустую ленту с быстрой загрузкой всё падало Незаметные изменения в алгоритмах работы ВГ93 - оно стало немного быстрееА вообще, направления работы сейчас 2 - осилить uPD765 и SMUC. Оба осложняются тем, что я эти девайсы в жизни не видел, не трогал и не пользовал.
SAM style
07.06.2012, 15:16
good news everyone В начальной стадии запахал uPD765. Погонял на нескольких *.dsk с WoS'а - каталог выводится, и даже игры грузятся.
Если встретится что-то неработающее - просьба сообщить, т.к. работа FDC эмулируется не полностью - нет мультисекторного и мультитрекового чтения, пропуска "удаленных" секторов, чтения дорожки, сканирования, запись заглушена "write protect"-ом, фаза результатов не везде полноценная
---
Ещё дико интересует, почему на WoS-е двусторонние диски +3 представлены как 2 отдельных файла dsk (side 1, side 2), ведь формат позволяет хранить обе стороны в одном файле.
SAM style
20.06.2012, 16:14
С помощью темной стороны Силы и старого доброго мата получился update (build 20120620) Мышекликательное добавление и удаление профилей железа (опции->xpeccy->profiles). Не-латинские буквы в имени профиля не допускаются. По умолчанию новая железяка представляет из себя ZX48K без обвеса. Для настройки надо выбрать в меню эмуля этот профиль и зайти в опции. Сообщения о багах в этом пункте приветствуются, ибо в процессе было наловлено их целая куча При открытии rzx через командную строку, т.е. на старте эмулятора, окошко плеера оставалось в неактивном режиме. Мультисекторное и мультитрековое чтение секторов, чтение удаленных секторов для uPD765 (не проверялось). Чуть изменен бокс выбора объёма памяти. Недопустимые для данного железа объёмы уже не показываются.
SAM style
03.07.2012, 00:34
Я, конечно, подозреваю, что мой эмулятор пользуют только полтора человека, один из которых - я сам, но всё же...
Через неделю ухожу в отпуск и буду признателен, если у меня появится хотя бы небольшой список TODO от пользователей, дабы было чем время занять. От себя: разобраться с остальными устройствами smuc, кроме самого hdd доделать до конца uPD765 (запись и сканирование) придумать новый отладчик узнать, почему после изменений в ВГ93 перестал работать BestView
[bETA]mEN
03.07.2012, 02:03
Я, конечно, подозреваю, что мой эмулятор пользуют только полтора человека, один из которых - я сам, но всё же...
Xpeccy - эмуль на основе QT4/SDL под линукс.
всё логично.
Я, конечно, подозреваю, что мой эмулятор пользуют только полтора человека, один из которых - я сам
А может, создать тред xpeccy на WoS? Тамошнее коммьюнити обсуждает запуск Spectaculator'а под wine/vbox - думаю, найдутся те пользователи, кому интересен нативный эмулятор, без костылей.
'Does the author hate Linux users?' - строчка из тамошнего треда (http://www.worldofspectrum.org/forums/showthread.php?t=39945) ;)
SAM style
03.07.2012, 07:48
mEN;520951']всё логично.Он и под Windows с mingw собирается хорошо, только звук плохой.
SAM style
03.07.2012, 08:11
ну почемуу же, можешь еще 0,25 прибавить. Пользуюсь версией Xpeccy 0.4998 (pre-0.5) под винду от прошлого году. Собери свежую( у мну не получилось:(, может и баг-репорты пойявяЦЦо)
или под MAC собери - потестим :))
http://rghost.ru/39000048 - вот последний под Win32, только exe, без требуемых библиотек
Под мак... у меня есть разве что хакинтош 10.3 и 10.4.
Нужны прямые и самые свежие ссылки на бинарники в каком-нибудь одном месте (хоть на странице в github).
SAM style
03.07.2012, 11:02
Скос на некоторых процентах бордюра - проблема известная, только причина не ясна. Надо попробовать округлять размеры до 8 пикселей, либо сделать как в unreal'е - несколько фиксированных значений.
Геометрию экрана можно перекроить как душе угодно. В разумных пределах, конечно. Gui-шной настраивалки пока нет, в config.conf в секцию [VIDEO] добавляется строка такого вида:
layout = Pentagon:448:320:138:80:64:32:64:0Pentagon - название
448 точек в строке (224 такта)
320 строк
138 невидимые точки слева + бордюр (т.е от фронта HSync до экрана)
80 невидимые точки сверху + бордюр
64 невидимые точки слева
32 невидимые линии сверху
64 длина INT
0 строка, в начале которой INT возникает
все размеры в пикселях. 2 пикселя = 1 такт CPU на 3.5MHz. Насчет последних двух чисел надо ещё посмотреть, так ли корректно работают как хотелось.
SAM style
03.07.2012, 14:30
layout = Pentagon:448:320:138:80:64:32:64:0Это лишь определяет одну из геометрий, но не ставит её текущей. Таких строк с разными параметрами может быть несколько. Для конкретной машины геометрия выбирается в настройках, вкладка Video, бокс Geometry.
SAM style
03.07.2012, 18:25
Я немного ошибся
:64:32: - это не размеры бордюра, а невидимые точки и строки, съедаемые обратным ходом луча.
Для твоего примера
448:320:136:80:80:16:64:0
16 невидимых + (80 - 16 = 64 бордюр сверху) + 192 экран + 48 бордюр снизу = 320 строк
80 невидимых + (136 - 80 = 56 бордюр слева) + 256 экран + 56 бордюр справа = 448 точек в строке
бордюр снизу и справа нигде не прописывается, остатки после экрана до конца строки/кадра автоматом считаются бордюром
SAM style
03.07.2012, 21:07
Съехало на 2 спектрумовских пикселя (4 тут из-за двойного размера). Судя по этому - http://www.worldofspectrum.org/rusfaq/index.html - должно быть 136. Где-то вылез лишний 1 такт?
SAM style
04.07.2012, 09:31
zebest, где эту таблицу достать для тестов?
---------- Post added at 09:31 ---------- Previous post was at 09:18 ----------
Проблема со скосом, похоже, решена. Хватило округления до четного числа пикселей.
ram_scan
04.07.2012, 10:12
Он и под Windows с mingw собирается хорошо, только звук плохой.
Он и под пингвином звуком пошаливает под альсой. Когда в одно жало работает - нормально, а когда вместе с deadbeef микшируется то дергается.
SAM style
04.07.2012, 11:33
В дефолте у меня 138 точек слева до экрана. Конечно, это костыль, чтобы сдвига на эти 2 пикселя не было, но он как бы работает...
Вобщем, причину буду искать.
---------- Post added at 11:33 ---------- Previous post was at 11:11 ----------
Шикаааарно. В командах in/out реальное чтение/запись происходит за такт до конца команды - вот вам и 2 точки. Теперь наступает головоломалка на тему "через какое место я это сделаю?"
Шикаааарно. В командах in/out реальное чтение/запись происходит за такт до конца команды - вот вам и 2 точки. Теперь наступает головоломалка на тему "через какое место я это сделаю?"
Почему за такт? Вроде за 3 (через 8 после начала).
SAM style
04.07.2012, 16:13
Почему за такт? Вроде за 3 (через 8 после начала).Хотя да, это только IN...
Мне сейчас видится всё так: за 3 такта до конца z80 сигнализирует, что байт отправлен в порт. Некоторое время требуется во-первых, дешифратору портов, а во-вторых устройству (регистру TM9 в случае с портом 254), чтобы принять данные. Есть сомнения, что на этих 2 узлах набегает задержка ещё в 2 такта, но всё же... Далее - бордюр обновляестся каждую точку/такт?
SAM style
05.07.2012, 12:22
Между делом, во вчерашней сборке: Устранен скос (прошелся от 50 до 60% бордюра, было прямо) В опциях на вкладке xpeccy->help показываются хоткеи Каталог по умолчанию в файловом диалоге для windows - это каталог с эмулем Сделана попытка подвинуть бордюр в нормальное положение.
ну не знаю, че ты к этим двум точкам причепивси... ОказываеЦЦо все нормально работает с числом 138 !
layout = Pentagon:448:320:138:80:80:16:64:0
это правильная строка. просто вчера я число пробовал менять в файле config.conf
не перегружая эмууля, а он видимо только раз конфу читает, а не кажный раз.
во-общем со 138 - все ровно. Нашел твою дефолтную строку
vidSetLayout(vid,448,320,138,80,64,32,0,64,0);
в ней как бы на один параметр больше или мне так кажеЦЦо???
ну и
Между делом, во вчерашней сборке:
между делом посмотреть не можем, т.к. не входим в то огромнойе сообщество в количестве полтора человек, которые могут это откомпилить, да еще и под windows :(
SAM style
05.07.2012, 14:34
ну не знаю, че ты к этим двум точкам причепивси... ОказываеЦЦо все нормально работает с числом 138 !
layout = Pentagon:448:320:138:80:80:16:64:0
это правильная строка. просто вчера я число пробовал менять в файле config.conf
не перегружая эмууля, а он видимо только раз конфу читает, а не кажный раз.
во-общем со 138 - все ровно. Нашел твою дефолтную строку
vidSetLayout(vid,448,320,138,80,64,32,0,64,0);
в ней как бы на один параметр больше или мне так кажеЦЦо???
ну и
между делом посмотреть не можем, т.к. не входим в то огромнойе сообщество в количестве полтора человек, которые могут это откомпилить, да еще и под windows :(
136 или 138 - это влияет на положение основного экрана относительно начала строки. По всем картинкам должно быть 136, но при этом экран с бордюром расходятся на 2 точки. Чтобы нейтрализовать эту фигню, я поставил 138 в default. Сейчас пытаюсь вернуть то, что должно быть, но при этом рисовать бордюр на 2 точки левее.
Лишний параметр в vidSetLayout - это задел на будущее, должен определять положение INT в строке (сейчас - строго в начале).
Сборка под Windows будет к выходным, сразу с drag'n'drop-ом.
added
Хотя, частично bad news. Дроп работает только на полностью Qt-шном окне. В SDL событие дропа замечено в документации на 2.0, но отсутствует начисто в 1.2.
SAM style
05.07.2012, 23:44
Win32, build 20120705 - http://rghost.ru/39059167 Drag'n'drop. Работает только с отрисовкой в Qt (под windows она по умолчанию). Можно кидать несколько файлов сразу - на текущую машину погрузятся снапшоты, лента, диск А: (образы или hobet'ы) или rzx В заголовке показывается "fast", если эмуль работает на полной скорости Исправлены кавычки на апострофе в сборке с Qt И bad news - русские буквы в путях под windows не распарсиваются
SAM style
06.07.2012, 08:04
Полоски в тесте, видимо, лечатся. Выскакивают они только на экране. Скорее всего, это связано с тем, что на реале атрибут для знакоместа читается заранее, за 4 точки до самого знакоместа. У меня это не сэмулировано - и пиксели, и атрибут читаются прямо перед отрисовкой.
+добавлен баг: в режиме паузы скриншоты не делаются. Точнее, он будет сделан только после распаузивания.
И bad news - русские буквы в путях под windows не распарсиваются
Попробуй
std::locale::global(std::locale(""));
в самом начале main.
SAM style
10.07.2012, 20:15
update Не-латинские буквы под Windows побеждены почти полностью. Не понимает только в путях, переданых через командную строку. Через F3 и дроп съел даже японские и русские символы сразу Оторвал Qt-шные коды клавиш от раскладки - в русской раскладке буквы не работали Значок чтения-записи диска показывается и при использовании Qt
build 20120710, win32 - http://rghost.ru/39139184
SAM style
10.07.2012, 23:24
ну там наверное и пробелы не понимает. а если в кавычках передавать, как положено???Да не, тут разница в том, что F3 и дроп дают мне пути в QString, а с командной строки они приходят аргументами в char, причём, кажется, у cmd.exe есть привычка работать в старой досовской кодировке (ibm866).
ram_scan
11.07.2012, 06:10
Да не, тут разница в том, что F3 и дроп дают мне пути в QString, а с командной строки они приходят аргументами в char, причём, кажется, у cmd.exe есть привычка работать в старой досовской кодировке (ibm866).
Дак ить так всегда и было в винде. В гуевых программах либо UTF-8 либо cp1251, в консольных cp866 (для русской винды).
Собственно мне думается что правильно спросить kernel32.GetOEMCP(), kernel32.GetACP() и конвертить при разборе командной строки это щасте из одной кодировки в другую. Фигово что фича виндофс-специфичная, надо на условную компиляцию морочиться.
SAM style
14.07.2012, 23:36
Склоняюсь к мысли, что Ъ-пентагоновские тайминги экрана - http://sblive.narod.ru/ZX-Spectrum/Pentagon128k/Pentagon128k.htm. Для конфига layout = Pentagon:448:320:128:80:64:32:64:0
Пока копался, сделал, чтобы OUT (критично в RAGE) и запись в память (оказалось, критично для теста Рощина) делались в нужные моменты. Полосы прямые, радуга в rage не убегает... Видимо, скоро будет update.
SAM style
15.07.2012, 12:10
update Обновил тайминги в default. Теперь они такие, как показано выше. Чтение атрибута знакоместа происходит за 4 точки до самого знакоместа (это косяк! наоборот должно быть) Прорисовка во время out и записи в память теперь точнее Исправлен баг со сбивающимся ромсетом при использовании нескольких профилей.
Win32 build - http://rghost.ru/39219623
SAM style
15.07.2012, 13:33
Rage финал очень косячно работает :(((
ну и trd-файлы автоматом открываются или только у меня - нет??
Используешь геометрию default или ту, что была с 136(138)?
Что есть "автоматом открываются"?
дефолт использую. там не в геометрии косяк. Там гораздо все красивше и ужаснее.
ну может скрин сделаю.
Что есть "автоматом открываются"?
ну если в образе есть boot и его перетянуть на эмууль, он не запускается. Это нормально???
хорошо запускаются только sna-пшоты....
SAM style
15.07.2012, 13:54
ну если в образе есть boot и его перетянуть на эмууль, он не запускается. Это нормально???
хорошо запускаются только sna-пшоты....
Запускаться и не должен, в ряде ситуаций это даже вредно. Просто загрузка образа. Если boot.B в образе не найден, из каталога config попытается добавиться boot.$B (хобетовый файл с бутом), но всё равно не самозапустится.
У меня финал rage выглядит так (jpeg-овые артефакты не в счет):
SAM style
15.07.2012, 23:13
А можно заполучить эту особую версию? Надо самому воспроизвести, а то по фотке причина плохо определяется.
zebest, это в демке дело. Надо запускать в режиме Пентагон 128. Там страницы через OUT (#FD),A с установленным 6-м битом переключаются . На Пентагоне 512/1024 такое не работает.
SAM style
16.07.2012, 00:50
Ну понятно... Банки щелкаются через OUT (#FD),A, в 128К старшие биты A используются только для дешифрации, а в 512К они же влияют на включаемую банку. В итоге то, что должно быть в 7й банке, оказывается в другой. Отсюда и мерцание при смене экранов.
PS:опередил...
SAM style
16.07.2012, 01:08
Ну теперь-то понятно... Просто на других эмуулях такого не замечал, как нить проверю эту демку на тех, где есть поддержка 512/1024 .
а если в исходниках поправить сделать полную дешифрацию??? или это сложно и оно того не стОит???
Сколько помню себя на спеке, всегда были противоречия между любителями OUT (#FD),A и владельцами "не такого" железа. В эмуляторе дешифрацию точно не подправить. А в программах придется каждые такие 2 байта менять на 5 (ld bc,xxFD; out (c),a), а то и на 7 (если надо push/pop bc). Не очень тривиальная задача.
Q-Master
16.07.2012, 20:51
Забавно, но я так и не смог заставить последнюю версию запуститься. Показывает что угодно но не то что надо. Возможно я как-то не так его собрал. Делал просто cmake .. && make && sudo make install
SAM style
17.07.2012, 10:15
Забавно, но я так и не смог заставить последнюю версию запуститься. Показывает что угодно но не то что надо. Возможно я как-то не так его собрал. Делал просто cmake .. && make && sudo make installСкриншоты этого "что угодно" можно? Мы с прошлого раза так и не определили, где может быть косяк - у меня или в z80ex, т.к. до перехода на z80ex у тебя оно ещё работало.
Q-Master
17.07.2012, 20:50
Скриншоты этого "что угодно" можно? Мы с прошлого раза так и не определили, где может быть косяк - у меня или в z80ex, т.к. до перехода на z80ex у тебя оно ещё работало.
Скриншотить реально нечего. Там черный экран. PC почему-то не в 0-х областях а в конце памяти торчит и в нулевые адреса не возвращается даже после переполнения.
Ага. Понятно. jnz 04d9 в реале переходит на d904. Какие-то проблемы с ендианностью. Только вот неясно у кого, у тебя или у z80ex. Zemu на ней-же работает как часы.
Работала программа, но тут пришел индикатор ендианности и все испортил :-D
SAM style
17.07.2012, 23:46
Скриншотить реально нечего. Там черный экран. PC почему-то не в 0-х областях а в конце памяти торчит и в нулевые адреса не возвращается даже после переполнения.
Ага. Понятно. jnz 04d9 в реале переходит на d904. Какие-то проблемы с ендианностью. Только вот неясно у кого, у тебя или у z80ex. Zemu на ней-же работает как часы.Это z80ex. Я использую его снаружи (подключаются .so, .dll), тогда как в zemu по умолчанию он вкомпилен внутрь.
Когда z80ex собирается, выдаёт такую строку "Check if the system is big endian - little endian" (у меня). Так что, может, есть смысл его вручную собрать...
Q-Master
18.07.2012, 23:20
Да. Похоже действительно косяк со сборкой z80ex. Ща напишу мэйнтейнерам.
SAM style
23.07.2012, 19:22
update Нямка - в режиме дебугера картинка, отрисованая в прошлом фрейме затеняется, новая рисуется поверх и ярче. Можно отследить ход луча (add: и уже косяк - в режиме 2x затеняется только половина экрана) Починено падение при копировании файлов с диска на ленту Устранена утечка памяти при загрузке *.tap (на самом деле их в других местах ещё несколько) Слегка переделал главный цикл эмуляции, теперь он ориентрируется на VSync, а не на INT Возвернут старый способ чтения данных ВГ93, т.к. нашёл минимум 2 проги, которые используют потерю данных.
win32 build - http://rghost.ru/39372791
SAM style
30.07.2012, 19:07
update Выправлено затемнение в режиме отладки К опциям cmake добавилась вторая: при -DZ80EX_BUILD=internal z80ex версии 1.19 будет вкомпилена в бинарник.При любом другом значении, кроме internal, будут слинкованы внешние библиотеки.По последнему пункту в тред кастуется Q-Master с большим эээ...эндианом. Попробуй так - будет оно работать или нет?
win32 build 20120730: http://rghost.ru/39482776
NovaStorm
30.07.2012, 19:25
xpeccy_20120730_win32.zip (1.5 МБ)
Файл удален.
Ну что такое? =(
SAM style
30.07.2012, 19:28
Ну что такое? =(
Быстро ты... Ссылка обновлена - по первой был баг.
SAM style
30.07.2012, 22:06
При загрузке любых sna при старте эмулятора почти всегда глючит - экран заливается черным. С дропом или загрузкой по F3 проходит нормально.
Этот sna 48К - работает. Можешь выложить неработающий?
SAM style
30.07.2012, 23:16
Косяк найден. Теперь главный вопрос - что там должно быть?
PS: с поправкой, что справа - пентагоновская геометрия, это не "классическая".
SAM style
30.07.2012, 23:30
ну в принципе первая картинко.. Ну и вторая то жи - если жать Q&A :)
давай некосячную версию - скажу как правильно :)
Косяк возникал именно в снапшотах 48К, когда SP был выше #BFFF. PC бралось со стека ещё до того, как верхние 16К были заполнены.
Если двигать Q-A, экран начинает полосоваться, но неравномерно - ощущение такое, что в строке должно быть другое число тактов (240?)
Некосячная win32 - http://rghost.ru/39487399
SAM style
30.07.2012, 23:50
ну что можно сказать :)) Уже лучше, но 48-й режим у тебя так же (не) работает :)
В принципе и неважно, это только буржуям важно с ихней медленной памятию:)
нее, в нормальных эмулях 48к - там должно быть все красиво - 4 линии в знакоместе одного цвета, и 4 другого. Скорее всего неравномерность связана с этой самой contended-памятью. На твоей картинке в Предохранителе правильно показывает, а у тебя тайминги совсем не 48го режима...
Вот кстати да, у меня вся память - общая, нет "быстрой" и "медленной".
SAM style
31.07.2012, 00:10
К слову, без особой кучи телодвижений могу организовать медленную память - или только на 48К, или галкой в опциях.
SAM style
31.07.2012, 14:51
Сведения о том, как оно тормозит, разнятся от источника к источнику. На WOS'е написано одно, в архиве этого форума Conan пишет другое... Причем у меня правильно не работает ни то, ни другое... Пичалька.
туут
http://scratchpad.wikia.com/wiki/Contended_memory
тут
http://www.worldofspectrum.org/faq/reference/48kreference.htm
и тут
http://www.zxshed.co.uk/sinclairfaq/index.php5?title=Contended_memory
смотрел?
Тогда - забей, кроме как буржуям - это никомуу не нужно:) Пусть это они под пентагон подстраиваюЦЦа...
SAM style
31.07.2012, 17:41
туут
http://scratchpad.wikia.com/wiki/Contended_memory
тут
http://www.worldofspectrum.org/faq/reference/48kreference.htm
и тут
http://www.zxshed.co.uk/sinclairfaq/index.php5?title=Contended_memory
смотрел?
Тогда - забей, кроме как буржуям - это никомуу не нужно:) Пусть это они под пентагон подстраиваюЦЦа...
Да, по всем 3 ссылкам был. Может, потом как-нибудь разберусь...
+2 и +3 у нас тоже по большому счету никому не нужно, а я пилю понемногу.
Q-Master
31.07.2012, 21:45
update Выправлено затемнение в режиме отладки К опциям cmake добавилась вторая: при -DZ80EX_BUILD=internal z80ex версии 1.19 будет вкомпилена в бинарник.При любом другом значении, кроме internal, будут слинкованы внешние библиотеки.По последнему пункту в тред кастуется Q-Master с большим эээ...эндианом. Попробуй так - будет оно работать или нет?
Я скастовался, но не работает. Ошибается определение эндианности в цмэйке. Надо чинить. libz80ex собирается с -DWORDS_LITTLE_ENDIAN. Ага. С -DBIG_ENDIAN=1 все собралось как надо, но я что-то затупливаю с ромсетами. Чего-бы я там ни выбирал то попадаю в васик48 и все. rand usr 15616 возвращает все в тот-же васик48. Адресация что-то один фиг косячная.
SAM style
31.07.2012, 21:52
Я скастовался, но не работает. Ошибается определение эндианности в цмэйке. Надо чинить. libz80ex собирается с -DWORDS_LITTLE_ENDIAN
Мой косяк. Не целиком перенес секцию из CmakeList z80ex в свой. На github залита поправленая, плюс пара вещей, которые я успел сделать - при отладке на экране могли оставаться темные полосы; и в дебугер вернут счетчик тактов.
--
Свали *.rom в ~/.config/samstyle/xpeccy/roms. Потом в настройках можно будет подобавлять ромсетов и нашпиговать их содержимым (2 клика по таблице с частями ПЗУ). И ещё там есть выбор, куда делается reset.
--
Для того, чтобы работал трдос, надо: чтобы его rom был указан в 3й странице ПЗУ; файл этого rom-а присутствовал где надо; и чтобы в Storage->disk->interface в настройках был Beta-disk.
Q-Master
01.08.2012, 20:49
о, чтобы работал трдос, надо: чтобы его rom был указан в 3й странице ПЗУ; файл этого rom-а присутствовал где надо; и чтобы в Storage->disk->interface в настройках был Beta-disk.
Ну что я могу сказать. Есть какая-то убер-проблема. Почему-то при переключении ПЗУ в тр-дос (в shadow вообще не ребутится не смотря на то что все есть) z80 начинает обрабатываться в little-endian. В 48 васике big-endian. Zemu арбайт нормально.
SAM style
01.08.2012, 23:19
Какой-то шит хаппенс. Попробую в QEMU сделать виртуалку с PPC, сам хочу на это посмотреть.
Виртуалку слишком тяжко запускать. Попробуй rootfs от ppc линукса + scratchbox2. Тогда qemu будет эмулировать работу только для одного приложения, а не для целой машины. Я так ARM тестировал.
ram_scan
03.08.2012, 21:56
У меня чисто пожелание, добавить сборку с внутряной z80ex по дефолту в cmake который в git лежит. Я то конечно в любом соусе применив любой напильник собрать могу, но вот если человек чуть более чайник, то будут сложности.
А кроме того не во всех дистрах эта либа идет (например в той-же сусе ее из коробки нет), поэтому даже если бинарный репозитарий наладить то чухаться с зависимостями придется и все равно ее подкладывать. Гораздо гораздее чтобы в один клик и особо за собой ничего экзотического не тянуло.
ЗЫЖ а еще очень не хватает справки по горячим клавишам. Или она есть но я ее наощупь не нашел.
ЗЗЫЖ собралось и заработало под opensuse 11.4 в 32бита без танцев с саблями. Над какой-то старой версией я помню танцевал, потому-что невнятно оно говорило что именно по зависимостям хотело. То есть раньше что-то хотело но наличие не проверяло и спотыкалось уже на компиляции. Сейчас нормально.
SAM style
03.08.2012, 23:18
ЗЫЖ а еще очень не хватает справки по горячим клавишам. Или она есть но я ее наощупь не нашел.Options->Xpeccy->Help - это список клавиш эмулятора.
Встроенную z80ex по дефолту реализую.
С полпинка (почти) оно бы поставилось с пакета, уже скомпиленное. Debreate мне deb собрал, но устанавливать его не получилось - ругается на postinstall script, хотя он пустой (если не считать #!/bin/bash). В сборке rpm ещё меньше историй успеха - исторически сложилось, что я на deb-ориентированных системах.
Эх, отпуск кончается...
SAM style
05.08.2012, 11:49
update Счетчик тактов вернулся в дебугер Выправлено затемнение только половины экрана при начале нового кадра в режиме отладки z80ex по умолчанию встроен. Сборка с -DZ80EX_BUILD="external" будет использовать внешние либы LINUX: по умолчанию отрисовка идёт на виджете Qt. Для отрисовки на SDL надо собирать с -DDRAWING="SDL". Старый -DQTRAWING уже не действует
build 20120805 win32 - http://rghost.ru/39581606, используется встроенный z80ex
Q-Master
05.08.2012, 15:12
update Счетчик тактов вернулся в дебугер Выправлено затемнение только половины экрана при начале нового кадра в режиме отладки z80ex по умолчанию встроен. Сборка с -DZ80EX_BUILD="external" будет использовать внешние либы LINUX: по умолчанию отрисовка идёт на виджете Qt. Для отрисовки на SDL надо собирать с -DDRAWING="SDL". Старый -DQTRAWING уже не действует
build 20120805 win32 - http://rghost.ru/39581606, используется встроенный z80ex
Отчерт:
1) если сделать cat pentagon.rom glukpen.rom trdos503.rom >fullpen.rom и подсунуть этот файл как единственный - все начинает работать.
2) Жрет больше 20% цпу на моем кваде. При миксе 44100 вообще начинает тормозить звук.
3) Попробовал запустить алонекодеровскую бордер-дему с цц12 про кота - вообще на экране нифика кроме скролла и тени кота не видно. каша.
SAM style
05.08.2012, 15:42
Сильно жруч, да :(. С отрисовкой по SDL кушает меньше, чем по Qt. А если отключить ему GS, будет ещё меньше (второй Z80 все-таки эмулить приходится).
С rom-ами и по отдельности должно работать с таким раскладом:
basic128 = pentagon.rom
basic48 = pentagon.rom:1
shadow = glukpen.rom
trdos = trdos503.rom
У меня так настроено и работает
Q-Master
05.08.2012, 22:49
эта дема отлично работает в другом:)) хорошем эмууляторе, (не в анриле!), где реализован автоматический режим flick\noflick, но это так , к слову...
Ну нофлик это еще не панацея. Теоретически с моргаловом жутким оно должно показывать что-то вразумительное, но почему-то такого не происходит. Подозреваю что есть какая-то проблема с таймингами.
Ну нофлик это еще не панацея.
в данном случАе - панацея. увы и ах. в анриле с отключенным noflick - такая же точно картинкО. Неверущие могут проверить. Также noflick оченно улучшает просмотр гигаскринов...
SAM style
05.08.2012, 23:22
Ну нофлик это еще не панацея. Теоретически с моргаловом жутким оно должно показывать что-то вразумительное, но почему-то такого не происходит. Подозреваю что есть какая-то проблема с таймингами.Судя по Rage, с таймингами у меня полный Pentagon128. Посмотрел в Unreal 0.32, у него с котом то же, что у меня. Неплохо бы поинтересноваться у Алко, для чего это писалось.
Рвание гигаскринов у меня может быть связано с отсутствием синхронизации с VSync монитора.
Возможно, на реальном ТВ пиксели не гасятся сразу, возникает эффект мини-нофлика, и кот выглядит как надо.
SAM style
05.08.2012, 23:35
опцию Setting-Video-noflic включал???
На реале таких нофликов нет. Это чисто эмуляторная примочка.
кто бы спорил. Но если гигаскрин мерцает по любомуу, тем более на реале, я предпочитаю его смотреть с эмууляторной примочкой, чем без неё. Не??
upd - кстати, на реале вполне смотрибельно, есичО...
http://savepic.net/3233215m.jpg (http://savepic.net/3233215.htm)
Q-Master
06.08.2012, 21:48
Неплохо бы поинтересноваться у Алко, для чего это писалось.
Ну вот на это я тебе сходу могу ответить: писалось это под пентагон эволюшн, а на бухальте пыталось запуститься с этого-же недоспектрума. Получилось чуть менее чем пшик и казали с эмуля. 8)
SAM style
09.08.2012, 16:55
update Появился нофлик. Полный. Цвета прошлого и текущего кадра смешиваются 50 на 50. Забил этим всю палитру (256 цветов), из-за этого пропал серый цвет в отладочном режиме. Понятно, что чуть менее чем половина цветов дублируется, но выхода пока не придумал. Попробую с альфа-каналом поэкспериментировать.
build 20120809 win32 - http://rghost.ru/39677094
Q-Master
09.08.2012, 21:09
update Появился нофлик. Полный. Цвета прошлого и текущего кадра смешиваются 50 на 50. Забил этим всю палитру (256 цветов), из-за этого пропал серый цвет в отладочном режиме. Понятно, что чуть менее чем половина цветов дублируется, но выхода пока не придумал. Попробую с альфа-каналом поэкспериментировать.
Вот смотри как получилось.
Как-то все расползлось.
SAM style
09.08.2012, 23:29
Вот смотри как получилось.
Как-то все расползлось.
На одном непонятно как написаном коте мир не сошелся. В следующий раз поставлю смешение цветов 60/40, посмотрим. То, что у меня более-менее ровно для пентагона, я сужу по мультиколору и бордюрному скроллу в rage.
Кстати, замечен нажитый баг с ожиданием индексного импульса от диска. Запись и чтение дорожки до следующего обновления не работают.
---------- Post added at 23:29 ---------- Previous post was at 21:47 ----------
Впрочем, косячина есть...
ld bc,#00fe
ld de,#0400
out (c),d
out (c),e
ld a,4
out (c),a
Если эти полосы прорисованы по бордюру, черная полоса у меня длиной 44 точки, в unreal'е - 36. По объёму команд в тактах всё нормально, косит где-то в отрисовке.
SAM style
10.08.2012, 00:34
Now it works better. На гитхабе поправленая версия.
Оказалось, z80ex_op_tstate даёт текущий такт без учёта префиксов.
build 20120810 win32 - http://rghost.ru/39706718
Zorki-4k
10.08.2012, 15:37
Собрал только что сабж. Вроде работает.
Пожелание: добавить в первый пост инфу что папка с ромами переехала, а то я пол дня искал ~/.samstyle/samulator/roms.
ram_scan
13.08.2012, 20:30
Кстати, если уж эмулятор ставится не в /home то может есть смысл ромы класть в /usr/share ?
SAM style
13.08.2012, 21:43
Кстати, если уж эмулятор ставится не в /home то может есть смысл ромы класть в /usr/share ?Вшитый ром только один, остальные пользователь сам добавляет. В хомяке удобнее тем, что без лишних движений можно добавить-удалить-переименовать. Хотя не очень удобно, если в системе более одного пользователя, но и тут можно симлинком обойтись.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot