Ты крут) Ни в одной программе на Специалисте не видел обращения к памяти посредством OUT. Иначе бы они просто не работали в моем эмуляторе.
- - - Добавлено - - -
И, кстати, финальная версия получилась довольно шустрая, хотя и в цвете.
Вид для печати
Ты крут) Ни в одной программе на Специалисте не видел обращения к памяти посредством OUT. Иначе бы они просто не работали в моем эмуляторе.
- - - Добавлено - - -
И, кстати, финальная версия получилась довольно шустрая, хотя и в цвете.
Да ладно, это придумали программисты древности. Возможно в специалистовских программах есть примеры использования out не для цвета, а, например, для звука или для клавиатуры (кажется я что-то такое припоминаю, но не уверен).
- - - Добавлено - - -
Спасибо, я старался :)
- - - Добавлено - - -
На всякий случай все же напишу про скорость. Когда много спрайтов - тормозит очень жестко, но тут принципиально проблему решит только быстрый процессор. Не то что совсем нельзя ускорить, но ускорить в разы точно не получится.
Невероятно, даже переливы цвета при таком быстродействии тебе удалось сделать! Огромное спасибо за проделанную работу! Результат просто фантастический! Скорость игры, как правильно заметили, стала выше. Правда, и её неравномертность сейчас более заметна. Но, тем не менее, игра сохранила свою играбельность. Теперь это однозначно абсолютно самая красивая, технически продвинутая и вообще самая-самая игра для ПК Специалист. Ах, если бы такой шедевр появился бы на этой платформе в 1987 году...
Градации яркости - это такая мелочь, их отсутствие даже не заметно. До идеала не хватает разве что таблицы рекордов и фирменной ZORBA с переназначением клавиш... Но, как я понимаю, на это нет ни памяти, ни желания. Но кто знает? Ты, помнится, и цвет не хотел делать - говорил, что памяти и желания нет ;)
Вчера уже в последний момент доделал многоцветный выхлоп ракеты/гранаты и телепортацию по спековскому образцу и не успел разобраться и убрать лишнюю теперь векторовскую эмуляцию этой штуки. Разобрался, убрал и сейчас выстрел ракеты/гранаты и телепортация стали в 2 раза быстрее, что вполне заметно и очень здорово.
Сделал "интеллектуальную" тормозилку, гораздо более корректную чем в версиях для спека и вектора. Она учитывает и маленькие и средние спрайты на экране, каждый тип со своим весом и лишнего не тормозит. Максимальная скорость уменьшилась, но уменьшилось и плавание скорости.
Очень надеюсь, что это финальная версия. На редактирование клавиатуры и таблицу рекордов не замахиваюсь, но если найдутся ошибки - постараюсь исправить.
По поводу эксолона для специалиста в 1987. Точную дату выхода оригинала не знаю, но обзор в CRASH датирован августом 1987. Публикация описания и схемы специалиста в моделисте-конструкторе в начале 1987. Т.е. чисто теоретически очень толковый и мотивированный программист, имеющий доступ к спеку, к новейшим играм и к специалисту мог за полгода успеть портировать, но как мы знаем, этого не произошло. И это была бы черно-белая версия.
В 1988 - 4(5) цветная, причем если делать как я, то с мусором на экране. Тут дело даже не только в объеме памяти под буфер атрибутов, он и в памяти есть в "спековской" раскладке, но важна организация и выбранный мною вариант еще и сильно упрощает и ускоряет доступ. Т.е. специально под 4(5) цвет я бы скорее всего не стал делать, в лучшем случае версию с одноцветными/"прозрачными" спрайтами.
А восьмицветная версия была возможна не раньше второй половины 1990.
а `скафандр` в этой версии берётся так-же ?
Вопрос наверно с подвохом, но способ взятия скафандра стандартный - в кабинке при нажатии клавиши вверх.
подвоха нет (просто раньше не все знали про скафандр)
ещё вспомнил что в обзоре на игру был скриншот со спрайтами которых нет в финальной версии,
пока искал (и не нашёл) наткнулся на статью про создание игры
https://ia800307.us.archive.org/Book...65142&rotate=0
оказывается вся графика делалась в ArtStudio, но на AtariST
Теперь я знаю, что авторское название "зеленых подбрасывателей" - пневматические молоты.
Если кому интересны технические детали - максимальный FPS (без тормозилки) был бы 35, с текущей тормозилкой - 20 FPS. Я про нее (тормозилку) написал достаточно пафосно, но в сухом остатке то, что она лучше предыдущих вариантов, хотя и не идеальна. Но лучше.
- - - Добавлено - - -
Для желающих увидеть какой-то определенный уровень, но жалеющих на это время. Ставим в отладчике бряк на 1FF2. Когда будет переход в следующую зону (немного мрачно получилось) нас выкинет в отладчик и можем ввести желаемый номер в регистр A.
- - - Добавлено - - -
Для сравнения цифры по максимальному FPS спековской версии: с тормозилкой 29 FPS, без - 54-55 FPS.
нашёл скриншот с непонятным существом (и это уже обсуждали на форуме)
https://ia600904.us.archive.org/Book...11866&rotate=0
ещё и про жанр написано - scrolling shoot`em up
В черно-белой версии максимальный FPS без торможения был бы 41-42, с (векторовской) тормозилкой - 21-22 FPS.
- - - Добавлено - - -
Про спековскую версию думаю все знают, а в векторовской и специалистовской странных желтых фигур нет.
- - - Добавлено - - -
Максимальные скорости наверно не так интересны, вот цифры для загруженной (но не самой суровой) зоны 113
Спектрум - 13 FPS
Специалист - около 7 FPS
По тактам не сильно уступает, основной проигрыш за счет разницы в тактовых частотах
ivagor, , в лучшем случае версию с одноцветными/"прозрачными" спрайтами.
эт как ? -)
Это как в версии для MX и в первой цветной версии для стандартного специалиста (которую я удалил).
В emu и emu80 визуал отображается правильно, там эталонная картинка как должно быть.
- - - Добавлено - - -
Могу предположить, в чем может быть проблема. Большинство процедур пишет в порт цвета по out 0FEh, но две (главный герой в покое и мерцающие атрибуты) по stax d (в DE при этом 0FFE2h). Если ты не сделал неполную дешифрацию (чтобы любое обращение в область F800-FFFF попадало в системную ВВ55), то это может быть источником проблемы.
- - - Добавлено - - -
В этих процедурах запись в порт по out 0FEh
- - - Добавлено - - -
И больше похоже на проблему не с записью в порт цвета, а с чтением из памяти, из буфера цвета. Буфер цвета в верхней части экрана.
Нет, не это. У меня дешифрация такая же.
- - - Добавлено - - -
И это поддерживается, благодаря чему в принципе появился цвет.
- - - Добавлено - - -
А тут еще менее вероятно, т.к. это часть обычной памяти.
Скорее всего глюк в эмуляции 8080, т.к. я ее побыстренькому переделывал из Z80, и что-то возможно не сделал.
Однако ч/б версия твоя работала идеально.
Если качал предыдущие цветные версии, то попробуй Exolon8c.zip или Exolon8c_ColorSprites.zip, там были большие отличия от последнего варианта. Или выложи эмулятор, я попробую позапускать разные варианты эксолонов, может тестик какой-то накропаю.
На этой версии такой же глюк.
Разница еще в том, что в последней версии, где OUT (FE),A, игра может вылететь в стартовое меню (причем, явно не штатно), когда активно идешь, прыгаешь и стреляешь. Особенно это легко получается на втором экране.
Стал смотреть, что на это влияет. Оказалось, что OUT (FE),0x01. Если запретить вывод единицы в порт, то не вылетает. Очень странно, т.к. это всего лишь одна из линий клавиатуры.
- - - Добавлено - - -
Уточнил, когда вылетает.
Надо держать одновременно клавишу вправо и вверх, и при этом должны лететь кусочки взрыва. Тогда с большой вероятностью вылетит.
Сначала эмуляцию ВВ55 стоит поправить, запись единицы в этот бит никак не могла привести к вылету на реале.
Маленько попробовал и с клавиатурой вылезают проблемы при стандартном опросе (не в эксолоне). Предполагаю, что не обнуляются порты при задании режима, как и в предыдущих версиях EmuStudio.
Еще заметил, что при стрельбе (нажатии пробела) ненадолго мелькают сверху атрибуты, которые соответствуют мерцающим тайлам. Этот тоже очень удивительно, как будто временно не срабатывает задание черного цвета.
Могу только предложить глянуть исходник emu80, как там сделана системная ВВ55.
ВВ55 у меня сэмулирована в экспериментальном аналоговом виде. Это описано в топике про эмулятор.
Возможно, что-то там и не доэмулировано.
Проблемы с опросом клавиатуры могут быть в том, что у меня эмулируются некоторые 'эксклюзивные' комбинации клавиш, для того, чтобы во всяких бейсиках и подобных можно было набирать текст точно так же, как и в стандартной раскладке на PC.
Т.е., например, если ты нажал SS + '7', отпустятся все другие нажатые клавиши, и нажмется SS + '6', для того, чтобы знак '&' был на '7', а не на '6'. Ну и подобные.
Сам по себе вывод 0x01 в порт клавиатуры к глюкам не приводит. Это одна из составляющих глюков, без которой глюк не воспроизводится.
Выяснил вот чего. Когда от летящих обьектов портится цвет фона, атрибуты в скрытой части экранной области при этом не портятся. Т.е. видимо, непорядок в функции, которая по этим атрибутам восстанавливает цвет фона.
Можешь кинуть кусок кода, который это делает?
Поэкспериментировал с первой (публичной) цветной версией (Exolon8c.zip). Окраска окружающей среды в EmuStudio при разлетании осколков нормализуется, если добавить в процедуру вывода спрайтов 8x8 задание режима работы ВВ55. В обычных версиях у меня режим задается только в процедуре опроса клавиатуры, да и то это лишнее - задавать его каждый раз, при том что он не меняется. А в EmuStudio он каким-то образом где-то меняется. Я вставил второе задание режима в процедуру вывода спрайтов 8x8, но корень проблемы не там, а где-то в другом месте, т.к., например выстрелы ракетницы/"гранатницы" главгероя не перекрашивают все вокруг, хотя используется та же процедура.
Надо искать, где сбивается режим ВВ55, тебе это проще сделать, чем мне. Повторюсь, у меня он задается только при опросе клавиатуры (mvi a,91h\ sta FFE3h)
Сам по себе подоход ("аналоговый", цифровой, гибридный и т.д.) не гарантирует правильности работы, т.к. при реализации самого замечательно и правильного подхода могут быть допущены ошибки. Критерий правильности - работоспособность программ, которые работали на реале. Эксолон к ним не относится, но, если говорить про клавиатуру, есть примеры других программ, с которыми проблема с клавиатурой в EmuStudio. Но тут, конечно, тебе решать, что именно ты эмулируешь (может старую версию ВВ55, которая возможно так и работала, я не знаю).
Что касается странных рестартов, то тут без исправления ВВ55 можно долго копать.
Запись в регистр режима идет в следующих местах:
В обычном режиме здесь примерно раз в кадр:
В момент выстрела пушки, множественная запись числа 0x0A здесь:Код:7980 3E 91 LD A,$91
7982 32 E3 FF LD ($FFE3),A
А в момент разлетания кусочков взрыва множественная запись 0x0A, 0x0B здесь:Код:7A1D F6 0A OR $0A
7A1F 32 E3 FF LD ($FFE3),A
- - - Добавлено - - -Код:0008 F6 0A OR $0A
000A 32 E3 FF LD ($FFE3),A
000D C9 RET
Я так понимаю, что 0x0A, 0x0B - это ты генерируешь звук.
Режим задается словом MS (старший бит слова =1) только в одном месте (7980). А два других случая - это слово BSR (старший бит слова =0), оно режим не меняет (по крайней мере не должно при правильной реализации ВВ55), меняет только бит 5 порта C.
Да, все так. Нашел ошибку.
У меня считалось, что любой вывод в регистр 0x03 меняет режим ВВ55.
Сделал, что при оперировании битами режим сохраняется, и все заработало!
- - - Добавлено - - -
Обновил свой эмулятор и добавил в архив exolon, если ты не против.
Я не против, спасибо за высокую оценку, только я еще одну версию неспешно пилю. Ускоряю, что могу, в основном спрайты, и небольшие успехи есть. Принципиальных изменений (редактирования клавиш и таблицы рекордов) не будет. Место для этих фич есть, нужно несколько больше 1.5 Кб и можно разместить в экране сбоку, но я совсем не хочу этим заниматься.
ivagor, off есть еще одна давняя давняя
Цитата:
тема - эмулятор спектрума с вектора, адаптировать для ориона 128 с ZCardII
оффтоп
zx_, вроде это уже обсуждали. Такой эмулятор - это аппаратно-программная вещь, и аппаратной части для специалиста нет.
Да и для ориона с z80 card соответствующей аппаратной части тоже нет, если это был оффтоп про него.[свернуть]
офф
- - - Добавлено - - -
ivagor,
кишиневская плата для Вектора утеряна в веках прошлого, схему не восстановить похоже
а орион жив
Кто ни будь пробовал на живом Специалисте запускать Exolon ?
У меня монохромная версия запускается на Линевском, на Восточном экспрессе мелькает хаотично заполненный стартовый экран и вылетает в Монитор и монохромная и цветная версии :(
Планирую скоро выложить сборник доработанных версий, одна из доработок - улучшение совместимости с разными клонами.
Сборник доработанных и улучшенных версий эксолона для разных вариантов/модификаций специалиста.
1. Черно-белая - объединенная (с автодетектом) для стандарта или SP580, отдельная версия для EUREKи.
2. 4(5) цветов (в текущих версиях emu80 будут посторонние звуки, в emu - без посторонних звуков)
3. 8 цветов (в текущих версиях emu80 будут посторонние звуки, в emu - без посторонних звуков)
4. 16 цветов - для MX (в emu80 цвета больше похожи на спектрум, в emu не похожи, кто лучше соответствует реалу - я не знаю).
1. Все версии работают быстрее предыдущих.
Ч/б работает раза в полотора быстрее цветных, но в "ненагруженном" состоянии это не заметно, т.к. тормозилка выравнивает всех примерно к 20 FPS. Зато это заметно, когда на экране куча спрайтов.
Для MX и SP580 (при наличии таймера) используется таймерная тормозилка, которая обеспечивают максимальную возможную точность и стабильность скорости и даже сохраняет постоянную скорость при изменении частоты процессора (если частота таймера не изменяется). Коррекцию музыкальных/FX процедур не делаю, поэтому высота звуков при изменении частоты процессора изменится.
"Обычная" (не таймерная) тормозилка тоже улучшена и заметно корректнее и точнее оригинальной.
2. Улучшена совместимость с разными вариантами, клонами и модификациями специалиста.
Не используются никакие процедуры пзу или шрифты; убрал все outы; убрал две остававшиеся команды di; 4c, 8c и MX(2) версии при старте переключают MX2 в соответствующий режим.
3. В версии для EUREKи высота нот в музыкальной процедуре приближена к оригиналу.
4. Цвет всех сообщений (очевидно только в цветных версиях) сделан как в оригинале (в 16-цветной версии для MX в emu80; в emu оттенки немного отличаются) или максимально приближен к оригиналу (в 8-цветной версии).
5. Все версии при стартовой распаковке не мусорят на экране.
6. Не видимый взглядом момент - в цветных версиях (кроме 4(5) цветной) теперь можно очень легко перейти к использованию всей памяти по бокам экрана (2 Кб с каждой стороны) для любых целей.
Что еще можно сделать:
1. Максимум по скорости не достигнут, особенно большие резервы в MX, там очень много свободной памяти.
Еще можно попонтоваться - детектить процессор (8080/8085/z80, других вроде в специалисты не ставили) и заменять некоторые процедуры на оптимизированные под данный проц.
2. Можно добавить редактирование клавиатуры и таблицу рекордов. В 8- и 16-цветных версиях это можно сделать без мусора на экране.
В EmuStudio 0.15j работают версии для обычных специалистов (и даже для MX, но, конечно, без цвета), только без звука и не забывайте вручную переключать режимы цветности.
Чтобы нарушить традицию и прервать череду улучшений и доработок, пойду от противного и напишу, что обязательно сделаю еще лучше и быстрее.
Upd 06.06.2020:
1. В версии для MX/MX2 добавил детект наличия таймера и если таймера нет, то переключаемся на стандартную тормозилку.
2. В 4- и 8-цветных версиях изменил оформление сообщения GAME OVER.
Upd 09.06.2020:
В 4-цветной версии доработал вывод спрайта главного героя.
Вот этого жду больше всего, так как по всему остальному, на мой взгляд, идеал почти достигнут! :)
CGA-шный Exolon прикольно выглядит! Это 4-х цветная версия, запущенная на 8-ми цветном эмуляторе:
https://pic.maxiol.com/images2/15908...257.exolon.png
Но иногда проскальзывает синий цвет! Баг?
https://pic.maxiol.com/images2/15908...57.exolon2.png
А вот надпись GAME OVER выглядит, мягко говоря, не очень:
https://pic.maxiol.com/images2/15908...7.gameover.png https://pic.maxiol.com/images2/15908...ameoverbig.png
Алгоритм такого написания понятен, я сам по тому же принципу выводил спектрумовские картинки в конверторе, но здесь я бы писал буквы полностью белым цветом на чёрном фоне.
Ну я решил по максимуму использовать 4(5) цветный режим. Сначала еще голубые объекты сделал синими, но смотрелось в сочетаниях не очень, в итоге оставил в этой версии синий только в спрайтах.
Спорный момент, идеального варианта для 4 и 8 цветов нет. В ч/б просто белые буквы на черном фоне, в 16 - как в оригинале, а в 4 и 8 решил так сделать. "Художественные поиски" в данном случае связаны с красным фоновым прямоугольником, просто белые буквы на черном фоне на мой взгляд смотрелись в таком обрамлении хуже, но и получившийся вариант не идеален. Для 4/8 цветов тут в любом случае будет компромисс.
- - - Добавлено - - -
Да, и может стоит сменить правую цветную картинку из эмулятора в первом посте? Она и в 8 цветной версии выглядит не совсем так (ствол пушки желтый), а в MX совсем не так (есть градации).
Ну не знаю... Для меня ничего спорного нет, и вывод, как смотрится лучше, однозначен:
https://pic.maxiol.com/images2/15908...7.gameover.png https://pic.maxiol.com/images2/15909...7.gameover.png
Заменил там вообще все скриншоты из игры и добавил новые.