User Tag List

Страница 5 из 9 ПерваяПервая 123456789 ПоследняяПоследняя
Показано с 41 по 50 из 96

Тема: Вопрос про сохранения

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

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

    Регистрация
    07.10.2006
    Сообщений
    1,731
    Спасибо Благодарностей отдано 
    257
    Спасибо Благодарностей получено 
    275
    Поблагодарили
    167 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZX_NOVOSIB Посмотреть сообщение
    несколько байт портятся даже когда игра на паузе? Или пауза всё спасает? Если бы портилось при паузе, тогда это заметно было бы - порча графики, шрифтов, зависание, сброс и т.п., чего на мультифейсе не наблюдается.
    Дело в том, что они портятся ниже регистра SP на момент немаскируемого прерывания, это в нормальной ситуации место использованных временных данных, так что их изменение ничего не меняет. Стек растет вниз, байты памяти перезаписываются с уменьшением SP, это штатное поведение. Но иногда команды работы со стеком используется для изощренных программистских приемов, не предполагающих записи в стек на определённых участках кода (перенос графики, чтение из таблиц). И вот тут порча даже двух байтов может привести к непредсказуемым результатам, от порчи графики до зависания со спецэффектами и сброса. А портятся они потому, что при вызове процедуры немаскированного прерывания (NMI) на стек всегда автоматически кладется адрес возврата в прерванную программу (а часто ещё и 2-4 байта содержимого регистровых пар, но это уже самой процедурой обработки NMI).

    Пауза спасает потому, что обычно выполняется простой процедурой без манипуляций со стеком. Но если бы автор задался целью обезопасить программу от взлома/сохранений на момент паузы, сделать это также очень просто.

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

  3. #2

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

    По умолчанию

    Цитата Сообщение от krt17 Посмотреть сообщение
    Они портятся всегда, просто то что они портят абсолютно не важно. Видимо пора вас в курс дела ввести, испорченные байты на стеке есть всегда, но во время паузы (ее опрос как правило в основном цикле и стек в обычной рабочей области) или перед прерыванием они просто не важны так как перезапишуться познее. Проблема возникает когда из стека читаются данные или он допустим на таблице ретов именно в такие моменты происходит порча полезных данных.
    Цитата Сообщение от weiv Посмотреть сообщение
    Дело в том, что они портятся ниже регистра SP на момент немаскируемого прерывания, это в нормальной ситуации место использованных временных данных, так что их изменение ничего не меняет. Стек растет вниз, байты памяти перезаписываются с уменьшением SP, это штатное поведение. Но иногда команды работы со стеком используется для изощренных программистских приемов, не предполагающих записи в стек на определённых участках кода (перенос графики, чтение из таблиц). И вот тут порча даже двух байтов может привести к непредсказуемым результатам, от порчи графики до зависания со спецэффектами и сброса. А портятся они потому, что при вызове процедуры немаскированного прерывания (NMI) на стек всегда автоматически кладется адрес возврата в прерванную программу (а часто ещё и 2-4 байта содержимого регистровых пар, но это уже самой процедурой обработки NMI).
    Это всё понятно. Не понятно, почему ЛастНинзя на обычном, непродвинутом спектруме с мультифейсом не портится, а на супер-пупер продвинутом скорпионе с супер мега профессиональным ромом портится. Игра одна и та же, NMI одно и то же. В чем же дело? Скажите суровую правду. Неужели суровая правда в том, что русские тупее англичан? ((
    У русских не то что не хватило ума с нуля придумать способ "совладать со стеком и NMI", но даже не хватило ума на то, чтобы тупо скопировать решение с мультифейса? ((

    - - - Добавлено - - -

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    и насколько оно после фикса сможет потягаться в безглючности с распеаренным мультифейсом?
    Тягаться в безглючности с мультифейсом? Неплохо было бы конечно.. Но в романтик-робот работали не рукожопы, а настоящие романтики. А вот в скорпионе работали романтики? Я чо-то не уверен.
    ___________

  4. #3

    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    14,315
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    203
    Спасибо Благодарностей получено 
    1,477
    Поблагодарили
    963 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZX_NOVOSIB Посмотреть сообщение
    Не понятно, почему ЛастНинзя на обычном, непродвинутом спектруме с мультифейсом не портится, а на супер-пупер продвинутом скорпионе с супер мега профессиональным ромом портится
    ты проверял LastNinja на реале (скорп) или под эмулем ?

  5. #4

    Регистрация
    02.07.2006
    Адрес
    Новосибирск
    Сообщений
    2,257
    Спасибо Благодарностей отдано 
    537
    Спасибо Благодарностей получено 
    262
    Поблагодарили
    156 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZX_NOVOSIB Посмотреть сообщение
    Но в романтик-робот работали не рукожопы, а настоящие романтики. А вот в скорпионе работали романтики? Я чо-то не уверен.
    Ага-ага, кое-где я такое уже читал:
    Компьютеры можно создавать по-разному. Можно отсиживать "от звонка до звонка", разрабатывая какой-нибудь модуль и почти не ведать, что делают десятки или даже сотни таких же унылых, как ты сам, интеллектуальных работяг, за соседними столами. Единственное, что движет тобой — уложиться в срок, указанный боссом и выдать рабочий продукт, который будет делать своё бескрылое дело и не более того. Дисциплина и исполнительность — прежде всего. Муравьиная психология — вы когда-нибудь видели муравейник в форме чайной розы или четырехмерного гиперкуба?
    В правильно заданном вопросе содержится половина ответа

  6. #5

    Регистрация
    07.10.2006
    Сообщений
    1,731
    Спасибо Благодарностей отдано 
    257
    Спасибо Благодарностей получено 
    275
    Поблагодарили
    167 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZX_NOVOSIB Посмотреть сообщение
    Это всё понятно. Не понятно, почему ЛастНинзя на обычном, непродвинутом спектруме с мультифейсом не портится, а на супер-пупер продвинутом скорпионе с супер мега профессиональным ромом портится. Игра одна и та же, NMI одно и то же. В чем же дело?
    Видимо, код сохранения/чтения состояния программы в мультифейсе корректнее - меньше затирает памяти, учитывает больше нюансов. Я глянул код процедуры NMI Скорпиона - там сразу в стек программы пушится 10 байтов, плюс два байта адреса возврата - итого 12 байтов ОЗУ портится. Возможно, это и есть причина меньшей совместимости по сравнению с мультифейсом, который портит 6 байтов.

    Скажите суровую правду. Неужели суровая правда в том, что русские тупее англичан? ((
    У русских не то что не хватило ума с нуля придумать способ "совладать со стеком и NMI", но даже не хватило ума на то, чтобы тупо скопировать решение с мультифейса? ((
    Суровая правда в том, что одни делают, а другие возмущаются, что первые делают плохо. Всегда можно сделать лучше, люди делают, как умеют. Тот же мультифейс можно было сделать ещё более совместимым, ценой усложнения аппаратной части.

  7. #6

    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    14,315
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    203
    Спасибо Благодарностей получено 
    1,477
    Поблагодарили
    963 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    блин, так эмуль (скорее всего) может и не знать про чтение порта #7ffd через порты AYшки.
    вот и врубает теневой экран в LastNinja

  8. #7

    Регистрация
    27.03.2005
    Адрес
    CПб
    Сообщений
    711
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Чтение #7FFD нигде не используется. ПрофПЗУ включает экран по 3-му биту #5B5C.

  9. #8

    Регистрация
    15.07.2009
    Адрес
    Череповец
    Сообщений
    1,803
    Спасибо Благодарностей отдано 
    178
    Спасибо Благодарностей получено 
    65
    Поблагодарили
    50 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Хотя в оригинальном скорпионе это чтение и разведено, в моём новодельном оно не разведено, а раз программно оно не поддержано, то вряд ли будет отличаться сильно от эмуля.
    И да, отдать тыщу рублей за перепайку 1 QFP-атмеги без гарантии результата я пока не готов, не самая важная трата в данный момент для меня. Был бы дип - тупо бы выкусил ножки и сам запаял.
    ZX-Evo Rev. C4 (Double-config) / VDAC2 / NeoGS / ZX-Multisound / NemoIDE / ZiFi
    Scorpion ZS 256 Turbo+ (Light) / GMX / ZXM-GS / TSFM / SMUC / ZXKM / Gotek

  10. #9

    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    14,315
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    203
    Спасибо Благодарностей получено 
    1,477
    Поблагодарили
    963 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию LastNinja2remix - ZS256

    проверил на реале,нажав NMI во время паузы.
    выход в игру нормальный,но спрайты явно портятся.
    блин, там похоже классический сброс дампа с порчей пары? ячеек
    (типа 23552)
    Последний раз редактировалось goodboy; 08.07.2017 в 15:13.

  11. #10

    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    14,315
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    203
    Спасибо Благодарностей получено 
    1,477
    Поблагодарили
    963 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    проверил (под эмулем) скорп+ПрофROM.
    LasnNinja корректно сохраняется/работает.
    а в криворукости TRdos`ного мэджика скорпионовцы точно не виноваты.
    и стесняюсь спросить - на какой носитель сохраняется дамп с мультифейса ?

Страница 5 из 9 ПерваяПервая 123456789 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Вопрос про ПЗУ
    от Asd1995sse в разделе Память
    Ответов: 20
    Последнее: 08.09.2013, 15:36
  2. Ответов: 5
    Последнее: 22.03.2011, 13:00
  3. Вопрос про память
    от POIND в разделе Память
    Ответов: 104
    Последнее: 03.01.2006, 14:15

Ваши права

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