svofski, так указание типа ПК в командной строке или копирование emu80.run не помогает?
Остальная вся структура папок сохранена? Установка (копирование файлов в ~/emu80) прошла без ошибок?
Вид для печати
svofski, так указание типа ПК в командной строке или копирование emu80.run не помогает?
Остальная вся структура папок сохранена? Установка (копирование файлов в ~/emu80) прошла без ошибок?
Я не учел, что надо обязательно сделать make install. Теперь получилось запустить, с -a запустился Апогей.
Makefile.lite поправленный для make install
Скрытый текст
Код:#!/usr/bin/make -f
SRCDIR = src
INSTALLDIR= ~/emu80
CC = c++
CFLAGS = -g -O0 -c -Wall -std=c++11 `sdl2-config --cflags` -DPAL_SDL -DPAL_LITE
LDFLAGS = `sdl2-config --libs`
SRC = $(SRCDIR)/*.cpp
SRCSDL = $(SRCDIR)/sdl/*.cpp
SRCLITE = $(SRCDIR)/lite/*.cpp
SOURCES_LITE = $(shell echo $(SRC)) $(shell echo $(SRCSDL)) $(shell echo $(SRCLITE))
OBJECTS_LITE = $(SOURCES_LITE:.cpp=.o)
all: Emu80lite
Emu80lite: $(OBJECTS_LITE)
$(CC) $(LDFLAGS) $(OBJECTS_LITE) -o $@
.cpp.o:
$(CC) $(CFLAGS) $< -o $@
clean:
rm -f $(OBJECTS)
rm -f $(OBJECTS_LITE)
rm -f Emu80
rm -f Emu80lite
install: Emu80lite
mkdir -p $(INSTALLDIR)
cp Emu80lite $(INSTALLDIR)
cp -r dist/* $(INSTALLDIR)
cp COPYING.txt $(INSTALLDIR)
cp whatsnew.txt $(INSTALLDIR)
cp doc/* $(INSTALLDIR)
[свернуть]
Ну что ж, радует, что lite-версия запустилась и работает :)
Значит, дело все-таки в wxWidgets или его совместной работе с SDL...
Как работает, кстати? Проблем с картинкой, звуком нет? (На Апогее можно сделать R,C <ВК>, G <ВК> и позапускать что-нибудь с ROM-диска).
С музыкой на первый вслух все отлично.
Гигаскрин ожидаемо: фуллскрин очень хорошо, если нет эпилепсии и учитывая обстоятельства, смыргивает изредка, но в целом отлично. В окне ой. Наверное есть параметр не использовать vsync, когда в окне?
Когда камера настроена на 25 fps, выглядит вообще как будто много цветов:
https://youtu.be/MGtcHpClMFs
Но на самом деле все мерцает. И когда в видео видно смыргивание, на экране смыргивает совсем сильно. В общем я думаю это точно так же, как и на 100% лцд мониторов на 60Гц на любой системе.
Пойду-ка соберу на расбери-пи, она у меня к ЭЛТ 50 Гц подключена, правда чб.
Ну да, это из-за небольшого несовпадения 60 Гц в Апогее и 60 Гц на мониторе.
Есть параметр emulation.frameRate в emu80.conf, там можно выставить принудительно частоту обновления экрана вместо привязки к vsync. Но параметр общий, будет работать как в оконном, так и в полноэкранном режимах. Под Windows и под Linux проблем в окне нет, vsync работает точно так же - видимо, есть какие-то нюансы с SDL под macos? Либо это специфика самой macos?
Для того же эффекта можно еще window.fieldsMixing = mix в apogey.conf раскомментировать. Будет так же, как в эмуляторе uart.
Подозреваю, что быстродействия может не хватить :( Но попробовать можно :)
- - - Добавлено - - -
На 50 Гц хуже будет - в этих режимах Апогей на частоту 60 Гц программируется...
- - - Добавлено - - -
А видео в предыдущем сообщении сделано в 30 fps...
Видимо это специфика макоса или SDL под нее. По крайней мере у меня получается все то же самое.
Для Raspberry Pi 3:
Где-то на грани. Мельтешение то частое, то быстрое, звук то еще как-то, то совсем хрипит. Видно, что ему _очень_ тяжело. При этом загрузка всего 100% одного ядра и температура 58 градусов.Код:CFLAGS += -mcpu=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard
Понятно, что под рпи3 надо оптимизировать. Есть Neon, есть 4 ядра.
- - - Добавлено - - -
25, но ютуба знает лучше, как нам надо.
УФ!
Pyk, вот! https://github.com/vpyk/emu80v4/pull/1
Для распи главное, чтобы 64-битных делений было поменьше. Одно вот это изменение и теперь все влезает в 50% одного ядра.
Пойду попробую запущу ЭЛТ на 60 Гц, раз так.
- - - Добавлено - - -
Да, на 60 Гц Гигаскрин хорошо, хотя не могу сказать, что это как-то принципиально лучше, чем на LCD. И все равно он смыргивает где-то раз в секунду.
Хорошо бы это изменение по ускорению EMU80 внести и в базовую версию EMU80 для IBM PC.Цитата:
Сообщение от svofski[/b
Потому, что, уж извините за правду, эмулятор EMU80 тормозит на одноядерном PC с тактом 2.4 ГГЦ (загрузка CPU 100%). Тормозит не по экрану, с этим всё нормально. А имеет неприятный дефект, - пропускает нажатия на клавиши. Если при эмуляции ОРИОНА и СПЕЦИАЛИСТА это ещё терпимо (хотя при быстром вводе символы пропускаются, чего никогда не бывает на реале), то при эмуляции РК86 вводить с клавиатуры просто неудобно, надо нажать и удерживать клавишу нажатой примерно пол секунды. Пользоваться таким эмулятором РК86 неудобно, хотя и приходится, если надо прогнать ПО для дисковода. В играх отсутствие реакции на короткие нажатия клавиш, тоже вероятно ухудшит качество игры.
Нельзя ли сделать упрощённую версию именно для РК86, где не будут эмулироваться всякие ненужные для большинства программ свойства ВГ75. Скорее всего, что именно эмуляция этих свойств тормозит, ведь в РК86 текстовый экран, т.е заведомо более быстрый, чем экран у СПЕЦИАЛИСТА и ОРИОНА. Вообще бы не было проблем, если бы из Windows, как и в MSDOS можно было бы установить текстовый режим VGA (загрузив фонт как в РК86), что ускорило бы визуализацию в 50 раз.
Заметим, что все даже самые современные иностранные эмуляторы прекрасно работают даже на самых первых ПЕНТИУМ-ах, что имеют в 50 раз меньшее быстродействие. Для сравнения эмулятор EMU от b2m загружает процессор всего на ~10% и ввод с клавиатуры там беp потерь.
Недавно пока делал CP/M для СПЕЦИАЛИСТА, чтобы сберечь нервы, приходилось использовать EMU, эмулируя дисковод в RAM-диске, и только для проверки работы дисковода требовался именно EMU80, т.к в EMU нужный контроллер дисковода не эмулируется.
Вылет в отладчик по встрече Z80 команды при эмуляции КР580 - полезная вещь. Это позволило за 15 минут очистить от Z80-команд программу, в то время как при трассировке вручную эта работа заняла бы несколько недель.Цитата:
Сообщение от Pyk
Сброс по АЛЬТ+F11 должен работать и в окне отладчика. Иначе трассируя программу и останавливаясь в точках контроля, где для останова поставлена команда HALT, никак не выйти из отладчика, чтобы сделать сброс в основном окне программы. Закрываешь окно отладчика, и снова вылетаешь в отладчик по очередному HALT в программе, т.е никак не вернуться в окно программы, чтобы нажать там АЛЬТ-F11.
nzeemin, предупреждения clang отработаю. К счастью, среди них не оказалось ничего критического, даже ошибка с битовой операцией, вероятно, не проявляется ни в одной реальной программе.
svofski, спасибо, pull request посмотрю вечером. Насчет гигаскрин-режима: можно посмотреть режим, на который программируется там ВГ-75. Если получится подстроить его на частоту, более близкую к 60 Гц, то "смыргивать" будет реже (кстати, гигаскрин-режим есть еще в заставке к игре lines).
barsik, не факт, что этот патч поможет на процессорах x86. Эмулятор, конечно, не самый быстрый, простор для оптимизации есть, но все-таки он обычно нормально работает и на процессорах с меньшей тактовой частотой, чем 2,4 ГГц. В очередной раз прошу информацию о вашем ПК, чтобы попробовать понять причину тормозов.
А для сброса пока можно переключиться из отладчика в основное окно, нажать Alt-F11 и опять вернуться в окно отладчика. Информация в окне отладчика обновится при следующем шаге.
Это симптом загрузки 100%.
Я построил было Emu80lite для винды со своим патчем. Но в последний момент вспомнил, что у вас XP. Просите Pyk-a сделать тестовый 32-битный билд.
- - - Добавлено - - -
Pyk, профайлер еще намекает на то, что еще есть 64-битные деления и что Crt8275Renderer::primaryRenderFrame() можно было бы улучшить. Типа там можно const Symbol & вместо копирования Symbol, инкременты умножить заранее итд. Но на фоне ВИ53 я не смог даже разглядеть непосредственных эффектов от этих изменений, и не факт, что локальная копия объекта не работает быстрее из-за кеша итд, поэтому я не стал копать в ту сторону.