| Разработка и ромхакинг > Ромхакинг |
| Извлечение BASIC-программ для ZX Spectrum из файлов .sna |
| (1/1) |
| Arigato:
ZX Spectrum 48K - BASIC Как-то давно писал небольшую утилиту, которая позволяет открыть файл из эмулятора ZX Spectrum в формате .sna, извлечь из него программу на BASIC и сохранить ее в текстовый файл или скопировать в буфер обмена. Выложу ее тут, чтобы не потерялась, может кому пригодится. Прилагаются и исходники программы на Delphi (папка source). Заодно схема для подсветки синтаксиса ZX Spectrum Basic в редакторе Nonepad++. Для установки запустите Notepad++, меню "Синтаксисы" - "Пользовательский синтаксис" - "Задать свой синтаксис...", нажать кнопку "Импорт" и выбрать файл zx_basic.xml Все файлы с расширением .bas будут открываться с установленной подсветкой. |
| Lunar Laser:
Приветствую, вопрос есть к тебе. В программах, писанных на Бейсике для ZX Spectrum, используются 22 строки вместо 24-рёх. Их защищали от взлома по BREAK командой POKE 23659, 0 (системная переменная DF_SZ), заодно получая 24 строки. Похоже, из наиболее известных, так защищён басичный "Подкидной Дурак" от Медноногова. Можно эту неприятность как-то поправить в эмуляторе и получить доступ к исходному коду таких программ? |
| blackoff:
а sna это разве не копия памяти как по магич кнопке , там уже память может быть заменена другими ресурсами после запуска... |
| Arigato:
--- Цитата: Lunar Laser от 22 Май 2023, 18:49:53 ---Можно эту неприятность как-то поправить в эмуляторе и получить доступ к исходному коду таких программ? --- Конец цитаты --- Достаточно поменять значение системной переменной 23659 с 0 на 2, после чего BREAK сработает. Например, в эмуляторе ZXMAK2 это меню Tools - Debugger, далее надо найти адрес 23659 (в hex: 5C6B). Не очень удобный там интерфейс, листаем адреса вниз клавишей PageDown, встаем в нужную ячейку: Нажимаем Enter и вводим нужное значение: Теперь в эмуляторе срабатывает комбинация Ctrl + Space (это и есть кнопка BREAK в Спектруме). Командой LIST (кнопка K на клавиатуре) можно вывести листинг Бейски-программы. Но может быть установлена защита цветами, из-за чего получим ошибку листинга: Тогда стрелкой вниз опускаем курсор на первую строку с программой или выполняем команду LIST с номером строки, чтобы на нее перепрыгнуть (вроде если в программе есть строка 0, то стрелкой вниз с нее не уйти, хотя может и ошибаюсь, давно Спектрумом не занимался): |
| blackoff:
--- Цитата: Arigato от 23 Май 2023, 12:53:20 --- Но может быть установлена защита цветами, из-за чего получим ошибку листинга --- Конец цитаты --- после 1 REM может идти машинный код ... |
| Arigato:
Да, в Диктаторе вроде бы там как раз машинный код и спрятан (всякие визуальные и звуковые эффекты). Одновременно работает как элемент защиты программы на BASIC от чтения. Хотя защита ну очень тупая, обходится самыми простыми методами... |
| blackoff:
проще из тap ,наверно ,или что там еще есть ,отдельными файлами ,если есть внутри извлекать ,sna это уже запущенная игра с отработанным кодом... некоторые игры память используемую бейсиком затирают под свои нужды после запуска игры ... Добавлено позже: --- Цитата: Arigato от 23 Май 2023, 15:16:13 ---обходится самыми простыми методами... --- Конец цитаты --- я вроде XORил чтоб не прочитать было ,но все ломалось ,прикольно было ... |
| Lunar Laser:
--- Цитата: Arigato от 23 Май 2023, 12:53:20 ---Командой LIST (кнопка K на клавиатуре) можно вывести листинг Бейски-программы. Но может быть установлена защита цветами, из-за чего получим ошибку листинга: --- Конец цитаты --- Ух, а русифицирована она, смотрю, не с помощью UDG, а системный шрифт переопределён. Я так не умею. :D o_0 Добавлено позже: --- Цитата: Arigato от 23 Май 2023, 15:16:13 ---Хотя защита ну очень тупая, обходится самыми простыми методами... --- Конец цитаты --- Какими? |
| Arigato:
--- Цитата: Lunar Laser от 23 Май 2023, 17:47:26 ---Ух, а русифицирована она, смотрю, не с помощью UDG, а системный шрифт переопределён. --- Конец цитаты --- Это несложно, даже редактор символов был в Art Studio. Зато можно использовать не только верхний регистр, а и нижний. --- Цитата: Lunar Laser от 23 Май 2023, 17:47:26 ---Какими? --- Конец цитаты --- Ну так я же написал: LIST и номер строки дальше, чем расположено все это безобразие. Вывод начинается с указанной строки, и ошибки цвета и прочие манипуляции с атрибутами на вывод уже не влияют. |
| Навигация |
| Главная страница сообщений |