User Tag List

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

Тема: Snapshot

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,941
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    137
    Поблагодарили
    48 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    Там не совсем обычный TR-DOS
    Я облажался. В Скорпе есть свой драйвер дисковых операций. Это TR-DOS его использует. В общем, монитор не использует TR-DOS при сохренении снапшота.
    Цитата Сообщение от ZX_NOVOSIB Посмотреть сообщение
    Можно даже не спрашивать. M3 что-нибудь портит? Нет.
    М3 дергает NMI процессора, это автоматически вызывает запись адреса возврата в стек. Так что на вопрос "M3 что-нибудь портит?" ответ: Да.
    Цитата Сообщение от ZX_NOVOSIB Посмотреть сообщение
    Скорп.монитор что-нибудь портит?
    А что, собственно, кроме стека работающей программы (как и М3). Не знаю как работает М3, но подозреваю, что его NMI еще и включает его собственное ОЗУ, в которое сразу можно перенести стек, скорпу же надо сохранить пару регистров чтобы включить свою системную страницы прежде, чем отправить туда стек. Так что про тысячи игр - маловероятно.
    LNR ща попробую, интересно на чем там лажается Скорп.

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

  3. #2

    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,941
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    137
    Поблагодарили
    48 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    LNR ща попробую, интересно на чем там лажается Скорп.
    Похоже, лажает эмулятор на чтении текущего значения 7ffd. Сейчас нет времени разобраться. Надо бы на реале проверить.
    Цитата Сообщение от Slider Посмотреть сообщение
    Как в этой ситуации запомнить те два байта, что лежали в стеке? А они ОЧЕНЬ важны, между прочим!..
    Мне видится, что никак.
    Цитата Сообщение от Slider Посмотреть сообщение
    Возможно, можно исправить ПЗУ Спектрума? Чтоб оно по RESET, скажем, ничего не портя, вываливалось в этот самый М3 или его аналог и там уже шаманило - ну типа запрос: 1) таки RESET, 2) save snapshot, 3) load snapshot
    У Z80, кстати, есть Soft Reset, который просто сбрасывает PC в 0. Беда в том, что теперь не понятно их какой точки пришел сброс, ну и, соответственно, куда отдавать управление в игре после восстановления из снапшота.

    ---------- Post added at 11:17 ---------- Previous post was at 11:16 ----------

    Цитата Сообщение от jerri Посмотреть сообщение
    Ikari warriors/viktory road (обработка спрайтов через стек, обработка структур используя SP совместно с регистром DE), игры от Special FX (порча графики и данных) и тп
    вероятность снятия нормального магика - 1 к 10
    Вот их бы тоже проверить на М3.

  4. #3

    Регистрация
    06.06.2006
    Адрес
    г. Черкассы, Украина
    Сообщений
    5,623
    Спасибо Благодарностей отдано 
    678
    Спасибо Благодарностей получено 
    1,709
    Поблагодарили
    466 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  5. #4

    Регистрация
    24.12.2006
    Адрес
    р.п. Маслянино, Новосибирская обл.
    Сообщений
    5,605
    Спасибо Благодарностей отдано 
    254
    Спасибо Благодарностей получено 
    269
    Поблагодарили
    188 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

    Ikari warriors/viktory road на M3 щас протестю.
    ___________

  6. #5

    Регистрация
    06.06.2006
    Адрес
    г. Черкассы, Украина
    Сообщений
    5,623
    Спасибо Благодарностей отдано 
    678
    Спасибо Благодарностей получено 
    1,709
    Поблагодарили
    466 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  7. #6

    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,941
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    137
    Поблагодарили
    48 сообщений
    Mentioned
    5 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. #7

    Регистрация
    28.02.2005
    Адрес
    Москва
    Сообщений
    2,259
    Спасибо Благодарностей отдано 
    1,007
    Спасибо Благодарностей получено 
    631
    Поблагодарили
    339 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  9. #8

    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,941
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    137
    Поблагодарили
    48 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  10. #9

    Регистрация
    30.01.2006
    Сообщений
    1,921
    Спасибо Благодарностей отдано 
    73
    Спасибо Благодарностей получено 
    119
    Поблагодарили
    80 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    Странно... Поведение то же самое. Значит, все же ошибка в ProfROM. Или эмуляция ProfROM в ZXMAK написана по мотивам Unreal. Надо покопать.
    ZXMAK2 сохраняет 48к только если память залочена так, что программа уже не может получить доступ к остальной памяти. На скорпионе это невозможно, поэтому программа всегда может получить доступ к остальной памяти, а значит нужно все сохранять. Иначе неполный снэпшот будет и его работа будет зависеть от содержимого памяти.
    ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
    ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet

  11. #10

    Регистрация
    26.11.2013
    Адрес
    г. Новосибирск
    Сообщений
    1,105
    Спасибо Благодарностей отдано 
    1,354
    Спасибо Благодарностей получено 
    323
    Поблагодарили
    152 сообщений
    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) из Магик памяти, переходим в обычный режим, следующий код команды будет читаться из простой памяти. Произойдёт прерывание (если оно включено ), и все пойдёт как по маслу.
    [свернуть]

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

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

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

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

Ваши права

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