Есть ли возможность делать snapshot на реале, например на Скорпионе или Пентагоне ?
Вид для печати
Есть ли возможность делать snapshot на реале, например на Скорпионе или Пентагоне ?
Кнопкой магик
А на скорпе можно выгрузить всю меморю ну и регистры записать и руками сделать снап.
Я такими делами занимался как-то, но оказалось что это очень дурной подход вообще...
Гораздо интересней задача запускать снапки на реале.
Насколько мне известно - до сих пор толком не реализована.
А вот магнитофонные некоторые гамы - по сути и есть эти снапшоты.
С мафона можно запускать такое дело, да...
Буржуяки юзят всякие там микродрайвы - им гадам хорошо.
На скорпионе с проф пзу версии 4.01 вполне играбельные снапшоты получаются, таким образом кассету на флопик перевёл, ну это если игра больше 128к не занимает.
Multiface назывется. "Волшебная кнопка" для beta disc interface имеет ряд недочетов, и не подходит для большинства программ под 128К.
unsnap это не оно?
"конвертор снапшотов в форматах .z80, .sna в набор hobeta файлов. в результате должна получиться рабочая дисковая версия"
http://thex.untergrund.net/tools/
Тр-досная кнопка MAGIC - это не решение проблемы. Ибо она делает рабочий годный снапшот лишь в 50% случаев. КПД 50%. В топку сразу.
Людям, которые делали пзу для скорпиона это жутко не понравилось, и они сделали некий аналог кнопки MAGIC. Это победа товарищи! Это торжество разума! Ведь юзая этот "скорпионовский магик" мы получаем КПД не жалкие 50% а целых 55%! Ура! А если серьезно - то туда же, в топку.
В divIDE можно прошить EXSDOS 0.8.6, тогда к нашим услугам функции "сохранить снапшот" и "загрузить снапшот". Но мне не понравилось то, что когда я в свой +2B втыкаю divIDE, заряженную EXSDOS'ом, то у меня некоторые тр-досные игрушки не запускаются, т.е. совместимость падает. И вообще divIDE это что-то не совсем из эпохи спектрума, это что-то новодельное, недостаточно "тёпло-ламповое".
Самый годный вариант это Multiface3 (M3). КПД 100%. Но комп нужен +2AB/+3. И достать этот M3 проблематично, но над этой проблемой работает MV1971, проблема в процессе решения.
А кстати, во всяких ваших новодельных пентевах, атээмах, фениксах и пр. есть что-то подобное? Есть 100% работающая функция снапшота?
Quest, а вообще, если бы ты умел пользоваться поиском, то не стал бы создавать тему, а нашёл бы что-то типа http://zx-pk.ru/showthread.php?t=23103 :) :) :)
советские люди оказались настолько ленивы, что не только не сумели придумать какую-либо рабочу альтернативу ужасной тр-досной кнопке MAGIC, но даже не удосужились скопировать например Multiface3. А ведь как здорово было бы взять за основу M3 и научить его сохранять/загружать снапшот на BDI-128 (тр-дос). Это можно было сделать влёгкую, ведь например M1 из коробки умел это делать, правда он делал это на BDI-48. Надо было только внести поправки на M3 и на BDI-128.
В пентеве с конфигурацией от TS-Labs есть возможность запускать snapshot, но и не более того.
Для baseconf есть ROM от AloneCoder позволяющий по NMI вывалиться в STS-Monitor или сменить образ дискеты во время работы программы. Правда мне попадалась такая прошивка сделанная лишь на базе версии 53b, в данный момент устаревшей.
Думаю, дело в другом. Каждый спеккер знал об ужасах, причиненных магиком играм благодаря кракерам. И всячеси отторгал даже идею об этом.
Про сейвы никто особо не думал. Ну, почему-то не стало это проблемой, требующей решения.
Магик многие использовали для взлома защит. Т.е. воспользовался кнопкой, посмотрел, как работает и что делает, и дальше уже сам, ручками.
Как-то так. И мы такое, в свою очередь, тоже практиковали.
---------- Post added at 08:44 ---------- Previous post was at 08:24 ----------
Идем дальше - для работспособности снапа нужно всего 27 байт - раскидал значения по регистрам - и все! Это немного. Но, кроме организации места в ПЗУ для это процедуры требуется еще место! МНОГО места!!! Страшный и ужасный ТР-Дос не позволит загружать что-либо БЕЗ СИСТЕМНЫХ ПЕРЕМЕННЫХ. А мы загружаем всю-всю память, ВСЕ страницы!!! Чесно говоря даже некуда вгрузить 27 байт!!! А куда???
Вот я и мыслю, что нормальная рабочая штука подобного рода получится, если будет целое альтернативное/теневое пзу со вшитым загрузчиком, сохраняльщиком, подпрограммой распихивания значений и мало-мальски бутом для нахождения этих файлов на диске. Напомню - на ленте это просто. Дал три параметра - IX, DE и A - и вперед! В ПЗУ все save/load'ы есть. А в ТР-Досе - не фига!..
Ну и плюс - внимание! - дополнительная страница! Туда мы будем грузить пресловутые 27 байт!!!
Единственный выход из этого гемора - просто доп.страница в памяти свыше 128к. Грузишь туда эту всю е#нину, потом игру, кнопка магик - и вуа-ля! - ты выпал в коммандер, в котором клац - сохранил, или клац - загрузил чего надо. Просто и
со вкусом.
А дел-то - написать чудо-коммандер или переделать существующий ;)
Ну и ПЗУ чуть подправить, чтоб оно по магику в эту страницу вываливалось. Но там, видимо, тоже чем-то жертвовать прийдется - не два байта все же...
Бл.... А СТЕК ГДЕ СОХРАНЯТЬ???????????
Хрень это все какая-то... :( :( :(
А загрузка как организована в скорповом мониторе? Так, как я приблизительно описал? Или средствами обычного тр-доса - просто данные берутся из доп.страницы?
Сколько проблем, ужас. А как тогда Multiface3 работает? Он ведь не только на ленту сохраняет, но и на диск системы +3DOS. А нехватка памяти решается памятью на самом мультифейсе и не надо ни в какие страницы лезть и в пзу тоже не надо лезть. Если М3 более чем успешно сохраняет снапшоты на +3DOS, то что ему помешает столь же успешно сохранять их на TR-DOS?
---------- Post added at 13:23 ---------- Previous post was at 13:18 ----------
не сотни, тысячи )))
Можно даже не спрашивать. M3 что-нибудь портит? Нет. Значит все игры работают. Скорп.монитор что-нибудь портит? Еще как портит, значит и игры работать не будут. Но если сильно не веришь, то возьми с вирта например Last Ninja Remix (думаю и Last Ninja 2 сойдет) и попробуй сохранить снапшот во время игры, а потом загрузить его. Самое интересное, что игра вроде бы запустится, то есть там будут происходить действия, но мы их не увидим, ибо мы будем любоваться на черный квадрат малевича.
кстати, дабы magic правильно скидывался, нужно ещё одну кнопку приделать - wait на ногу проца.
ну и диод на второй экран тоже вещь!
Я облажался. В Скорпе есть свой драйвер дисковых операций. Это TR-DOS его использует. В общем, монитор не использует TR-DOS при сохренении снапшота.М3 дергает NMI процессора, это автоматически вызывает запись адреса возврата в стек. Так что на вопрос "M3 что-нибудь портит?" ответ: Да.А что, собственно, кроме стека работающей программы (как и М3). Не знаю как работает М3, но подозреваю, что его NMI еще и включает его собственное ОЗУ, в которое сразу можно перенести стек, скорпу же надо сохранить пару регистров чтобы включить свою системную страницы прежде, чем отправить туда стек. Так что про тысячи игр - маловероятно.
LNR ща попробую, интересно на чем там лажается Скорп.
Расшифруй??!?!? Зачем оно надо и что происходит?
Это прекрасно, если все работает так, как ты говоришь. А как происходит переключение между М3 и Спектрумом?
Т.е. при нажатии чего либо, оно должно как-то это перехватить и включить устройство. Эта процедура должна быть в ZX-ПЗУ или как?
Ну и еще - если М3 все это чин-чинарем делает, то нужно а) сварганить его аналог; б) полностью переписать процедуру загрузки/выгрузки в егойном ПЗУ. А тут уже нужно как минимум два шарящих энтузиаста, с которыми сейчас, увы, проблема... :(
---------- Post added at 09:49 ---------- Previous post was at 09:45 ----------
Кстати, вот Alex Rider и ответил на мой вопрос - ранее недоглядел. Как в этой ситуации запомнить те два байта, что лежали в стеке? А они ОЧЕНЬ важны, между прочим!..
---------- Post added at 09:56 ---------- Previous post was at 09:49 ----------
Возможно, можно исправить ПЗУ Спектрума? Чтоб оно по RESET, скажем, ничего не портя, вываливалось в этот самый М3 или его аналог и там уже шаманило - ну типа запрос: 1) таки RESET, 2) save snapshot, 3) load snapshot
Похоже, лажает эмулятор на чтении текущего значения 7ffd. Сейчас нет времени разобраться. Надо бы на реале проверить.
Мне видится, что никак.У Z80, кстати, есть Soft Reset, который просто сбрасывает PC в 0. Беда в том, что теперь не понятно их какой точки пришел сброс, ну и, соответственно, куда отдавать управление в игре после восстановления из снапшота.
---------- Post added at 11:17 ---------- Previous post was at 11:16 ----------
Вот их бы тоже проверить на М3.
думаешь, если приделать wait на ногу проца - это серьезно увеличит "работоспособность" магика? Как-то не верится, уж больно много он всего портит, никакой wait не спасет.Ребята, мои познания в архитектуре спекка очень скромны, я не могу с вами спорить, вы же интелектом меня задавите )) Давайте рассуждать проще: вы мне показываете хотя бы одну игру, которая не работает после M3 (М3 прекрасно эмулируется в спектакуляторе и в других эмулях он есть), после этого все разговоры о том что он что-то там портит. Потому как если он даже что-то портит, но игра при этом полностью рабочая и без глюков - то пусть себе портит на здоровье :)
Еще мысль - аппаратно никак нельзя придумать, чтобы, когда приходит прерывание, оно, скажем, сначала лезет в доп.устройство, а там, в ОЗУ/ПЗУ, стоит, к примеру перемещение по вектору из регистра I. А если нужно - клац, и там появляются нужные процедуры save/load магика.
Это вопрос, типа...
вот это уже другое дело. Просто я брал самое крутецкое супер профессианальное пзу скорпиона, подсовывал его унреалу и так тестил. В спектакуляторе тоже тестил. На реале не тестил, реала нет такого. но мне почему-то кажется, что реал тоже будет лажать. Этот скорпионовский снапшотер кардинально ничем не лучше трдосного магика.
Ikari warriors/viktory road на M3 щас протестю.
Ты прав 100% в следующем - нам не нужно игру сохранять в этом виде (снап) для потомков. Нам нужно ее до конца доиграть просто. А тут уже чем-то можно и пожертвовать. Ну, типа, если диззи-рамка немного попортится - хрен на нее! ;)
И по этому поводу еще одна мысль (можно или нельзя это аппаратно реализовать - я уж не знаю) - по нажатию кнопки запоминается два байт стека в первых двух байтах экрана, а в стек суется адрес возврата. И дальше уже пошло-поехало по вышеописанным методам. Не будут работать пару-тройку игр, где адреса 16384 и 16385 используются бог весть для чего.
---------- Post added at 10:32 ---------- Previous post was at 10:25 ----------
Кста, а если использовать адреса 22528 и 22529 - вообще ништяк!!! Они точно ни для чего не нужны. Будут 2 аттрибута в уголке моргать себе...
Только на софтовых Z80. Железный Z80 при приходе прерывания всегда пишет адрес возврата в стек.
Да нет, он кардинально лучше. Тем, что портит только несколько байт в стеке, а MAGIC колбасит ОЗУ дай боже. Еще актуальное для давних времен и реальных дискет - MAGIC не проверяет ошибки чтения-записи в принципе и может запороть дискету запросто. Скорповый монитор работает нормально, причем, и со СМУК тоже.
Кстати, при сохранении LNR Скорпом под эмулем есть еще одна странность: он пишет всю 256К-память, хотя игра 48-я и верхняя память чистая. Что-то в эмуле не так...Указатель стека живет внутри Z80, внешняя схема его прочитать не может. Опять же, soft core, но сколько проблем принесет можификация никто не знает и заморачиваться не будет. Мне что-то даже с сигналом BUSRQ и DMA ничего хорошего в голову не приходит. Если только BUSRQ + NMI...
Небольшой поток сознания, на тему: "Как я вижу идеальный снапшот на реале"
Как я вижу идеальный снапшот на реале
Нажатие кнопки "Магик" переводит устройство в состояние 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) из Магик памяти, переходим в обычный режим, следующий код команды будет читаться из простой памяти. Произойдёт прерывание (если оно включено :) ), и все пойдёт как по маслу.
[свернуть]
Упоминавшиеся в теме 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 - это бордер. Но может это как-то обойти можно, и в большинстве игр даже бордер не портится.