|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#16
|
|||
|
|||
Цитата:
>woweook< |
Этот пользователь сказал Спасибо Pyro за это полезное сообщение: | ||
sas9568635 (05.09.2013)
|
#17
|
|||
|
|||
Форма.Таймер. В таймере выполняются процедуры. Необходимо сделать так что-бы после того как тайиер END(ВНЕ ТАЙМЕРА) вызывалась процедура. Как это сделать?
|
#18
|
|||
|
|||
С тех пор как я создал эту тему прошло немало времени и своё «детище» я уже выпустил «в свет». Желающие могут скачать здесь:
SAS emulator 1.2 Beta (от 04.08.2013) (Размер:1.047 Mb) Скачать: http://file.oboz.ua/download.php?fid=394807 Если программа пожалуется на отсутствие qtintf.dll Скачайте его здесь http://file.oboz.ua/download.php?fid=337370 и распакуйте из qtintf.7z в основной каталого эмулятора (там где SASEmulator.exe). Хотя у меня она работает без него. =============================================== У пользователя есть возможность переназначить соответствия клавиш вашей клавиатуры к клавиатуре ПК-01 «Львов» эмулятора. Сводится это к созданию и настройке файла SASEmulator.key в каталоге эмулятора. Подробности описывать не буду. При желании рассмотрите черновик-архив Keyboard.7z. Файл Keyboard.dpr который может быть редактирован, скомпилирован и запущен для создания SASEmulator.key. Скачать здесь: http://file.oboz.ua/download.php?fid=337372 Хотелось бы услышать критику и пожелания. А так же у меня просьба протестировать на разных компах (слабых и мощных, старых и новых) (и на разных системах) на выявления торможения и других глюков. Не «за горами» выйдет новая версия программы (не пропустите “мимо глаз” моё предыдущее сообщение вопрос о таймере :-) ) |
#19
|
||||
|
||||
"По таймеру", но "вне таймера"... В голову приходит только PostMessage с соответствующей обработкой (гуглить WM_USER).
А переход в Open-Source не планируешь? Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
Этот пользователь сказал Спасибо PhoeniX за это полезное сообщение: | ||
sas9568635 (05.09.2013)
|
#20
|
|||
|
|||
Вот таймер 1 который временами дает глюки...
Цитата:
RDTSCfirstStart — флаг первого запуска, необращай внимания GetTestRDTSC_ - измерянное кол-во таков RDTSC в 1 сек RDTSCbak- бывшее состояние RDTSC RDTSC1fps — колво тактов RDTSC в 1/50 секунду при FPS=50 RDTSC — текущее RDTSC Цитата:
А вот в первом, врядле так оно. Поетому я хочу в 1 таймере вынести выполнение за пределы таймера т.*е. чтобы они выполнялись по end-таймеру.... Правильно ли я мыслю?.... даст ли это чего?.. |
#21
|
||||
|
||||
На многопроцессорных (многоядерных) машинах вместо RDTC лучше и безопасней использовать QueryPerformanceCounter/QueryPerformanceFrequency, иначе возможны глюки.
Про таймеры ничего не понял из объяснения. |
Этот пользователь сказал Спасибо Freeman за это полезное сообщение: | ||
sas9568635 (05.09.2013)
|
#22
|
|||
|
|||
Уважаемые форумчане! Обращаюсь к тем кто скачивал и запускал (пользуется) моим эмулятором ( http://sas.forumbb.ru/click.php?http...php?fid=394807 ). Очень прошу Вас написать о его торможении. Имеется ли оно?... Часто ли?... Может как-то знаете или поняли как избавляться от него?.. Стоит ли мне думать о том как от него в эмуляторе избавится??!!.. (если оно есть конечно). :-)
У меня лично — всё в порядке! Но это если в памяти «висит» Дельфи 7. Как это зависимо ума не приложу. :-) Напишите пожалуйста при каких случаях у Вас всё хорошо (или плохо). С уважением, SAS, автор SAS emulator. |
#23
|
||||
|
||||
Не понял, в чем должно выражаться торможение? Никогда не играл на "Львове", сразу предупреждаю.
Скачал, запустил. Загрузил игру Columns -- идет очень быстро даже на 0-м уровне, загрузил Almaz -- человечек движется на одну клетку в выбранном направлении, потом замирает. Охранник при этом исправно скачет во всех направлениях, -- он явно парень не тормоз. Вчера, когда только скачал программу, но не запускал, подумал, что мог бы взять код на обзор (code review) под NDA. Сегодня же, запустив эмулятор, понял, что это будет слишком уныло. Тем не менее, готов выслушать автора в личке. |
Этот пользователь сказал Спасибо Freeman за это полезное сообщение: | ||
sas9568635 (06.09.2013)
|
#24
|
|||
|
|||
Freeman, тебе отпишу позже.
Приношу извинения за то что не пояснил что подразумевается под «торможение»... Привожу тест для его определения. Надеюсь от подобного теста Вы получите удовольствие. :-) Запустите SASEmulator1.2Beta Выберите в Комбобокс игру: «Аэрокобра(1)» либо откройте её имя файла:Аэрокобра1.LVT При необходимости проверьте (либо установите) FPS=50, Freq/fps=68000 Установите графический режим 768х512 Меню:Tools\Graphic Mode\768x512 На экране заставка Aerocobara. Нажмите пробел. На экране: «Ваша задача — забрать....» Подготовьте часы так чтобы было видно секунды (на компе). При нажатии пробела одновременно запомните время минуты и секунды. Происходит «синяя» очистка экрана и далее пошла игра. Пройдите всеми правдами и не правдами :-) Первый уровень до момента окончания (синяя очистка, перед STAGE 02) снимите показания времени. При нормальной работе эмулятора без торможения, время прохождения 1-го уровня должно быть в пределах 47-51 секундах. У меня было 48сек(50сек). Чем ближе к 47 — тем лучше. :-) При торможении время прохождения увеличивается. У меня было 78 сек. При изменени граф.режима на 512х512 и торможении, время = 58 сек. При торможении и увеличении граф.режима более чем 512х512, явно заметно изменение скорости игры по сравнению с более маленькими разрешениями (256х256). При нормальной работе — такого явно заметно быть не должно!... и время прохождения 1-го уровня (на любых граф. Режимах) остается в тех же пределах т.*е. (в пределах 47-51 секундах) Заранее благодарен за внимание к моему эмулятору и за проведенный тест. Цитата:
Цитата:
Последний раз редактировалось M.A.D.M.A.N., 06.09.2013 в 17:48. |
#25
|
||||
|
||||
запустил, посмотрел, вроде все работает, но как-то медленновато.
не желаете исходники открыть? — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение: | ||
sas9568635 (06.09.2013)
|
#26
|
|||
|
|||
Цитата:
Цитата:
Цитата:
Код:
Var VRAM : array [0..16383] of byte; // видео память VRAMCardinal: array [0..4095] of Cardinal absolute VRAM; //буфер для быстрой прорисовки VRAMDirty : array [0..16383] of Byte; //буфер для быстрой прорисовки VRAMDirtyCardinal: array [0..4095] of Cardinal absolute VRAMDirty; //буфер для быстрой прорисовки procedure TMainFormEmu.DrawScreen; Var sClientWidth:Word; sClientHeight:Word;car,{позиция по кардиналу} Byte_,{позиция по байту} ByteSM{байт смещения}:word; smpx1,smpx2,smpx3,smpx4:word;// смещение для пикселов begin {$R-} IF PortC1Dirty<>Ports[$C1] then begin// ПОЛНАЯ ПЕРЕРИСОВКА PortC1Dirty:=Ports[$C1]; fChangeVRAM:=false; Byte_:=0; While Byte_<16384 do begin{***********} sClientWidth:= (Byte_ mod 64)*4; sClientHeight:=(Byte_ div 64)*1; smpx1:=sClientWidth;smpx2:=smpx1+1; smpx3:=smpx2+1; smpx4:=smpx3+1; gamecanvas.Canvas.Pixels[smpx1,sClientHeight]:=SuperColor[ports[$C1],VRAM[Byte_],1]; gamecanvas.Canvas.Pixels[smpx2,sClientHeight]:=SuperColor[ports[$C1],VRAM[Byte_],2]; gamecanvas.Canvas.Pixels[smpx3,sClientHeight]:=SuperColor[ports[$C1],VRAM[Byte_],3]; gamecanvas.Canvas.Pixels[smpx4,sClientHeight]:=SuperColor[ports[$C1],VRAM[Byte_],4]; Byte_:=Byte_+1; end;{***********} for car := 0 to 4095 do VRAMDirtyCardinal[car]:= VRAMCardinal[car]; // быстрое копирование массивов fChangeBitmap:=True; end// ПОЛНАЯ ПЕРЕРИСОВКА Else Begin // ЧАСТИЧНАЯ ПЕРЕРИСОВКА car:=0;fChangeVRAM:=false; while (car<=4095) do begin if (VRAMCardinal[car]<>VRAMDirtyCardinal[car]) then Begin//сравниваем значения , а есть ли изменения ByteSM:=0; while (ByteSM<=3) do begin Byte_:=(car*4)+ByteSM; Begin{***********} if (VRAM[Byte_]<>VRAMDirty[Byte_]) then //сравниваем значения , а есть ли изменения begin sClientWidth:= (Byte_ mod 64)*4; sClientHeight:=(Byte_ div 64)*1; smpx1:=sClientWidth;smpx2:=smpx1+1; smpx3:=smpx2+1; smpx4:=smpx3+1; gamecanvas.Canvas.Pixels[smpx1,sClientHeight]:=SuperColor[ports[$C1],VRAM[Byte_],1]; gamecanvas.Canvas.Pixels[smpx2,sClientHeight]:=SuperColor[ports[$C1],VRAM[Byte_],2]; gamecanvas.Canvas.Pixels[smpx3,sClientHeight]:=SuperColor[ports[$C1],VRAM[Byte_],3]; gamecanvas.Canvas.Pixels[smpx4,sClientHeight]:=SuperColor[ports[$C1],VRAM[Byte_],4]; VRAMDirty[Byte_]:= VRAM[Byte_]; fChangeBitmap:=True; end;{***********} end; ByteSM:=ByteSM+1; end;// while (ByteSM<=3) do begin VRAMDirtyCardinal[car]:= VRAMCardinal[car]; end; // if (VRAMCar[ic]<>VRAMDirtyCar[ic]) car:=car+1; end;//while (ic<=4096) do begin end;// ЧАСТИЧНАЯ ПЕРЕРИСОВКА if fChangeBitmap then // если были изменения экрана Begin MainFormEmu.Canvas.StretchDraw(rect(0,ToolBar1Height,MainFormEmuClientWidth,MainFormEmuClientHeight),gamecanvas); fChangeBitmap:=False; end; {$R+} end; Последний раз редактировалось sas9568635, 06.09.2013 в 19:14. |
#27
|
||||
|
||||
Цитата:
Я занимаюсь разработкой компилятора, на форуме даже была где-то тема. Сейчас попал в творческий кризис, ищу вдохновение. Показалось, что контакт с энтузиастом по схожей тематике был бы обоюдно полезен. С утра повикипедил немного про КР580. Он и в "Микроше" стоял, оказывается. Помню, как облизывался тогда, но денег на эту игрушку тупо не было. А так хоть бы в эмуляторе ознакомился... Цитата:
Цитата:
|
Этот пользователь сказал Спасибо Freeman за это полезное сообщение: | ||
sas9568635 (06.09.2013)
|
#28
|
||||
|
||||
Артефакты вот
А открывать исходники, я имел ввиду для того, чтобы заинтересованный народ мог оптимизировать код, если у вас в этом потребность возникнет. И да, делал на курсовую (почти полностью перепилил CPU (это порт бокса на дельфи)) эмуль кампутера с возможностью управления процессором (проект забросил, не интересно стало, а так, эмуль проца использовал для эмуляции всякого кода в своих программах). — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию Последний раз редактировалось M.A.D.M.A.N., 06.09.2013 в 20:25. |
Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение: | ||
sas9568635 (06.09.2013)
|
#29
|
||||
|
||||
Упс, прошу прощения, это ракета
А показалось, будто артефакт. Эх, блин, детство вспомнил, глядя на ваши игрушки)) — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию Последний раз редактировалось M.A.D.M.A.N., 06.09.2013 в 21:08. |
Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение: | ||
sas9568635 (06.09.2013)
|
#30
|
|||
|
|||
Цитата:
Да игрушки то в общем-то не мои :-) Мой эмулятор! :-):-):-) Автор Аэрокобры для ПК-01 - Чистяков, там в игре написано :-):-):-) |