Важная информация

User Tag List

Страница 4 из 9 ПерваяПервая 12345678 ... ПоследняяПоследняя
Показано с 31 по 40 из 87

Тема: Snapshot

  1. #31
    Guru Аватар для Slider
    Регистрация
    06.06.2006
    Адрес
    г. Черкассы, Украина
    Сообщений
    5,276
    Спасибо Благодарностей отдано 
    490
    Спасибо Благодарностей получено 
    1,241
    Поблагодарили
    323 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    У Z80, кстати, есть Soft Reset, который просто сбрасывает PC в 0. Беда в том, что теперь не понятно их какой точки пришел сброс, ну и, соответственно, куда отдавать управление в игре после восстановления из снапшота
    Короче, жопа. Или знаем куда ставить PC, но теряем 2 байта стека, или не знаем и тогда запуститься не сможем
    Полная вата!.. А вы говорите - магик, магик...
    Ave ZX!

  2. #31
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #32
    Guru Аватар для ZX_NOVOSIB
    Регистрация
    24.12.2006
    Адрес
    р.п. Маслянино, Новосибирская обл.
    Сообщений
    5,547
    Спасибо Благодарностей отдано 
    233
    Спасибо Благодарностей получено 
    258
    Поблагодарили
    178 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от drbars Посмотреть сообщение
    кстати, дабы magic правильно скидывался, нужно ещё одну кнопку приделать - wait на ногу проца.

    ну и диод на второй экран тоже вещь!
    думаешь, если приделать wait на ногу проца - это серьезно увеличит "работоспособность" магика? Как-то не верится, уж больно много он всего портит, никакой wait не спасет.
    Цитата Сообщение от Alex Rider Посмотреть сообщение
    М3 дергает NMI процессора, это автоматически вызывает запись адреса возврата в стек. Так что на вопрос "M3 что-нибудь портит?" ответ: Да.
    Цитата Сообщение от Slider Посмотреть сообщение
    Кстати, вот Alex Rider и ответил на мой вопрос - ранее недоглядел. Как в этой ситуации запомнить те два байта, что лежали в стеке? А они ОЧЕНЬ важны, между прочим!
    Ребята, мои познания в архитектуре спекка очень скромны, я не могу с вами спорить, вы же интелектом меня задавите )) Давайте рассуждать проще: вы мне показываете хотя бы одну игру, которая не работает после M3 (М3 прекрасно эмулируется в спектакуляторе и в других эмулях он есть), после этого все разговоры о том что он что-то там портит. Потому как если он даже что-то портит, но игра при этом полностью рабочая и без глюков - то пусть себе портит на здоровье
    Куплю корпус и материнку от Spectrum +2/+3

  4. #33
    Guru Аватар для Slider
    Регистрация
    06.06.2006
    Адрес
    г. Черкассы, Украина
    Сообщений
    5,276
    Спасибо Благодарностей отдано 
    490
    Спасибо Благодарностей получено 
    1,241
    Поблагодарили
    323 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Еще мысль - аппаратно никак нельзя придумать, чтобы, когда приходит прерывание, оно, скажем, сначала лезет в доп.устройство, а там, в ОЗУ/ПЗУ, стоит, к примеру перемещение по вектору из регистра I. А если нужно - клац, и там появляются нужные процедуры save/load магика.
    Это вопрос, типа...
    Ave ZX!

  5. #34
    Guru Аватар для ZX_NOVOSIB
    Регистрация
    24.12.2006
    Адрес
    р.п. Маслянино, Новосибирская обл.
    Сообщений
    5,547
    Спасибо Благодарностей отдано 
    233
    Спасибо Благодарностей получено 
    258
    Поблагодарили
    178 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    Похоже, лажает эмулятор на чтении текущего значения 7ffd. Сейчас нет времени разобраться. Надо бы на реале проверить.
    вот это уже другое дело. Просто я брал самое крутецкое супер профессианальное пзу скорпиона, подсовывал его унреалу и так тестил. В спектакуляторе тоже тестил. На реале не тестил, реала нет такого. но мне почему-то кажется, что реал тоже будет лажать. Этот скорпионовский снапшотер кардинально ничем не лучше трдосного магика.

    Ikari warriors/viktory road на M3 щас протестю.
    Куплю корпус и материнку от Spectrum +2/+3

  6. #35
    Guru Аватар для Slider
    Регистрация
    06.06.2006
    Адрес
    г. Черкассы, Украина
    Сообщений
    5,276
    Спасибо Благодарностей отдано 
    490
    Спасибо Благодарностей получено 
    1,241
    Поблагодарили
    323 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZX_NOVOSIB Посмотреть сообщение
    Потому как если он даже что-то портит, но игра при этом полностью рабочая и без глюков - то пусть себе портит на здоровье
    Ты прав 100% в следующем - нам не нужно игру сохранять в этом виде (снап) для потомков. Нам нужно ее до конца доиграть просто. А тут уже чем-то можно и пожертвовать. Ну, типа, если диззи-рамка немного попортится - хрен на нее!
    И по этому поводу еще одна мысль (можно или нельзя это аппаратно реализовать - я уж не знаю) - по нажатию кнопки запоминается два байт стека в первых двух байтах экрана, а в стек суется адрес возврата. И дальше уже пошло-поехало по вышеописанным методам. Не будут работать пару-тройку игр, где адреса 16384 и 16385 используются бог весть для чего.

    ---------- Post added at 10:32 ---------- Previous post was at 10:25 ----------

    Кста, а если использовать адреса 22528 и 22529 - вообще ништяк!!! Они точно ни для чего не нужны. Будут 2 аттрибута в уголке моргать себе...
    Последний раз редактировалось Slider; 16.01.2015 в 11:31.
    Ave ZX!

  7. #36
    Super Moderator Аватар для Alex Rider
    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,908
    Спасибо Благодарностей отдано 
    29
    Спасибо Благодарностей получено 
    89
    Поблагодарили
    31 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Slider Посмотреть сообщение
    Еще мысль - аппаратно никак нельзя придумать, чтобы, когда приходит прерывание
    Только на софтовых Z80. Железный Z80 при приходе прерывания всегда пишет адрес возврата в стек.
    Цитата Сообщение от ZX_NOVOSIB Посмотреть сообщение
    Этот скорпионовский снапшотер кардинально ничем не лучше трдосного магика.
    Да нет, он кардинально лучше. Тем, что портит только несколько байт в стеке, а MAGIC колбасит ОЗУ дай боже. Еще актуальное для давних времен и реальных дискет - MAGIC не проверяет ошибки чтения-записи в принципе и может запороть дискету запросто. Скорповый монитор работает нормально, причем, и со СМУК тоже.
    Кстати, при сохранении LNR Скорпом под эмулем есть еще одна странность: он пишет всю 256К-память, хотя игра 48-я и верхняя память чистая. Что-то в эмуле не так...
    Цитата Сообщение от Slider Посмотреть сообщение
    по нажатию кнопки запоминается два байт стека в первых двух байтах экрана, а в стек суется адрес возврата.
    Указатель стека живет внутри Z80, внешняя схема его прочитать не может. Опять же, soft core, но сколько проблем принесет можификация никто не знает и заморачиваться не будет. Мне что-то даже с сигналом BUSRQ и DMA ничего хорошего в голову не приходит. Если только BUSRQ + NMI...

  8. #37
    Guru Аватар для SoftLight
    Регистрация
    28.02.2005
    Адрес
    Москва
    Сообщений
    2,082
    Спасибо Благодарностей отдано 
    737
    Спасибо Благодарностей получено 
    451
    Поблагодарили
    250 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    Кстати, при сохранении LNR Скорпом под эмулем есть еще одна странность: он пишет всю 256К-память, хотя игра 48-я и верхняя память чистая. Что-то в эмуле не так...
    В ZXMAK2 не пробовали?

  9. #38
    Super Moderator Аватар для Alex Rider
    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,908
    Спасибо Благодарностей отдано 
    29
    Спасибо Благодарностей получено 
    89
    Поблагодарили
    31 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SoftLight Посмотреть сообщение
    В ZXMAK2 не пробовали?
    Странно... Поведение то же самое. Значит, все же ошибка в ProfROM. Или эмуляция ProfROM в ZXMAK написана по мотивам Unreal. Надо покопать.

  10. #39
    Veteran
    Регистрация
    26.11.2013
    Адрес
    г. Новосибирск
    Сообщений
    1,042
    Спасибо Благодарностей отдано 
    934
    Спасибо Благодарностей получено 
    227
    Поблагодарили
    122 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    Red face

    Небольшой поток сознания, на тему: "Как я вижу идеальный снапшот на реале"

    Как я вижу идеальный снапшот на реале


    Нажатие кнопки "Магик" переводит устройство в состояние MAGIK_WAIT_II. (ждём маскируемое прерывания для "магика")
    В этом состоянии, когда приходит время для маскируемого прерывания, вместо него происходит переход в состояние IN_MAGIK, и одновременно немаскируемое прерывание.
    В состоянии IN_MAGIK Первые 8Кбайт адресного пространства заняты "Магик-ПЗУ" остальные 40Кбайт "Магик-ОЗУ". Маскированное прерывание приходит раньше на определённое число тактов. Открываются специальные МАГИК-порты:
    1. управления банками памяти (какую банку памяти (и "Магик" и "НЕмагик") ОЗУ включаем в адресное пространство (#C000..#FFFF))

    2. Чтение состояния. (Какой был бордер, Какие банки памяти куда включены, какой регистр муз. сопроцессора выбран и как давно запущена "одиночная волна", какой режим прерывания (IM 2, IM1 ?, DI или EI), и прочее в том-же духе, что можно только писать, но нельзя прочитать штатными средствами. Получается, факты записи(обычной программы) должны фиксироваться устройством в своей памяти. Возможно это не порт, а просто пишется в МАГИК-память, скажем начиная с адреса #2000.

    3. Запись перехода в состояние MAGIC_WAIT_RET

    Обработчик маскируемого прерывания сохраняет в стеке(который с большой долей вероятности указывает в ОЗУ, а не в ПЗУ )
    регистры (первым PC, само собой), при этом не портится ни один байт простого ОЗУ.

    Всё сохраняет на диск в виде файла. Возможно показывает меню, возможно читает клавиатуру, и в зависимости от нажатой клавиши записывает в определённый файл, читает из определённого файла, читает пользовательскую "Магик"-программу, из определённого файла, в ОЗУ по адресу #2100. Выполняет пользовательскую "Магик"-программу.

    Затем инициируется выход записью в спец-порт. Переходим в состояние MAGIC_WAIT_RET. Восстанавливаем значение регистров, SP, на вершину стека не забываем поставить адрес возврата. В момент, когда началось нормальное маскированное прерывание выполняем RET. (расчитать по тактам)
    Сразу после RET, когда в PC запишется (SP) из Магик памяти, переходим в обычный режим, следующий код команды будет читаться из простой памяти. Произойдёт прерывание (если оно включено ), и все пойдёт как по маслу.
    [свернуть]

  11. #40
    Guru Аватар для ZX_NOVOSIB
    Регистрация
    24.12.2006
    Адрес
    р.п. Маслянино, Новосибирская обл.
    Сообщений
    5,547
    Спасибо Благодарностей отдано 
    233
    Спасибо Благодарностей получено 
    258
    Поблагодарили
    178 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Упоминавшиеся в теме Ikari warriors и victory road я протестил на спектакуляторе. Результаты такие: если в качестве носителя выбираем диск +3, то проблем вообще никаких, всё идеально, лишь бордер вместо черного становится синим, но в M3 помимо снапшотов уйма других функций, может с их помощью можно бордер вернуть на место (?).

    Если выбираем ленту, то есть небольшой глюк, но это не относится к конкретным играм или к мультифейсу, скорей всего это глюк эмуляции. Заключается он в следующем: если попытаться грузить полученный образ на обычной скорости, то ближе к концу происходит какая-то рассинхронизация, "лента теряется" и привет. Если грузить в режиме турбо, то всё, как и с диском, работает идеально. Скорей всего паузы при записи не корректно эмулируются или что-то еще.

    В аттаче 2 образа диска. И ленточный образ, тот самый который только на трубо грузится. Запускать так. На спектакуляторе: модель выбираем +3. В опциях включаем мультифейс, в настройках мультифейса ставим 128-ой. После ресета жмем ALT+M, жмем D (dos), затем L (load), вводим имя файла (IKM3 - для икари, VIC - для виктори роад), ентер.

    Для ленты, жмем ALT+M (типа активировали М3, такая хрень токо в спекуляторе, в других эмулях если М3 есть, то он есть и не надо каждый раз после ресета его инициализировать), жмем R. Теперь жмем либо лоадер (в дисководе +3 не должно быть диска) либо load"". Грузится как обычная программа, но только в режиме турбо-загрузки почему-то. Можно грузить и на +2A - работает.

    Таким образом максимум что портит M3 - это бордер. Но может это как-то обойти можно, и в большинстве игр даже бордер не портится.
    Вложения Вложения
    • Тип файла: zip M3.zip (85.6 Кб, Просмотров: 45)
    Последний раз редактировалось ZX_NOVOSIB; 16.01.2015 в 13:45.
    Куплю корпус и материнку от Spectrum +2/+3

Страница 4 из 9 ПерваяПервая 12345678 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •