Не обратил внимание.. вечером посмотрю. А loadr не записывает стартовый адрес? Или когда в ком переделываешь - теряется местоположение в памяти?
Вид для печати
Не обратил внимание.. вечером посмотрю. А loadr не записывает стартовый адрес? Или когда в ком переделываешь - теряется местоположение в памяти?
Откопал в кладовой кассеты от вектора, думаю ничего интересного на них нет, чисто из спортивного интереса решил оцифровать...
Столкнулся с проблемой, в наличии только плеер-мыльница, много ошибок, в "реал" не грузится. Записал wav-ы, но морока в аудио-редакторах больших результатов не даёт...
Есть ли программки для анализа wav-а на предмет локализации "проблемных" мест, или непосредственного преобразования wav-а в файл данных?
KTSerg, можно выложить какой-нибудь нечитающийся файлик?
Я уже почти сделал основу для анализатора. Wav созданный утилитой rom2wav, распознаёт, данные вижу, осталось сделать их сохранение, и можно приступать к анализу "битых" wav-файлов...
А можно подробности?
1. Где найти run0?
2. какое расширение с какого адреса запускается? Напрмер, .com? всегда с 100h? Какие ещё варианты?
- - - Добавлено - - -
И в какое место в память грузится файл. Вот я сейчас для примера посмотрел один ром. с кассеты он начинает грузиться с первого прямоугольника. То есть, получается, он грузится с 0 адреса. и запускается, вероятно, с него же? А когда я его записываю loadr - в получившемся файле сохраняется информация, что он должен быть с 0? Я так понимаю - нет? и единственная возможность его запустить - использовать программу run0? Которая, как я понимаю, загрузит его именно с 0 адреса и запустит с 0?
1. RUN0 - должен быть где-то среди МикроДос-овских утилит. Выложу, то, что нашел у себя (сейчас не проверял).
2. Да, СОМ - стандартное расширение файла для МикроДос у Вектора (я так понимаю). С адреса 100h ещё ROM.
Если файл нужно грузить с нулевого адреса, ему присваивали расширения С00 (Ц ноль ноль), R0M (эр ноль эм), или c00, r0m.
Может ещё что-то есть, не помню.
Да, если с кассеты грузится с самого первого прямоугольника, значит его нужно запускать с адреса 0.Цитата:
И в какое место в память грузится файл. Вот я сейчас для примера посмотрел один ром. с кассеты он начинает грузиться с первого прямоугольника. То есть, получается, он грузится с 0 адреса. и запускается, вероятно, с него же? А когда я его записываю loadr - в получившемся файле сохраняется информация, что он должен быть с 0? Я так понимаю - нет? и единственная возможность его запустить - использовать программу run0? Которая, как я понимаю, загрузит его именно с 0 адреса и запустит с 0?
В самом файле адрес загрузки/запуска не хранится. Уже не помню, возможно загрузчик, типа loader, при чтении файла с кассеты, должен предупреждать, с какого адреса грузится читаемый файл.
В Вектор-овском МикроДос-е упрощённая система запуска файлов. С какого адреса программу загрузил, с такого и запустил. Для МикроДос-а стандартным адресом запуска файлов является 100h.
Кстати недавно вроде видел в описании какого-то Вектор-овского МикроДос-а, что в него добавлена команда, для запуска файла с адреса 0 (что за МикроДос - подробностей не помню).
Сейчас попробовал run0 - работает!. Спасибо. Теперь хоть, когда оцифровываешь - можно смотреть результаты работы :)
Натравил "Wav-анализатор" на не загружаемую оцифровку, он указал место где в блоке не совпадает контрольная сумма.
Посмотрел редактором, там падение амплитуды (громкости) практически до "тишины" и уход графика под "нулевой" уровень (в отрицательные значения). Продолжительность "искаженного" участка около 3-ёх байт.
Попробовал разными фильтрами, и прочим "восстановить громкость", но в результате ни анализатором ни "вручную" (самостоятельно с графика на экране) получить корректные данные не получилось, так контрольная сумма и не совпадает... :(
Вернулся к не исправленному wav-у, с него из графика (в ручную) легко получилось получить корректные данные...
Дело за малым - обучить этому (понимать искажения графика) анализатор... :)
По поводу "красивых" загрузок. https://yadi.sk/d/Y2x4vYokqhtYH вот такая игрушка.. я записал с кассеты АСПИД. Как её цифрануть на реальном векторе - не знаю. грузиться красиво.. но не загружается.. точнее, как то частично загружается. Как запустить в эмуляторе - пока тоже не пойму.. то ли плохо записал.. то ли ещё что
- - - Добавлено - - -
Хотя нет.. в VV он грузиться, вроде, с delay/speed 8 и point of zero 2
- - - Добавлено - - -
Нет.. всё таки - вроде загружается.. как я понял - загрузчик догружает то, что недогрузил, со второго прохода. Но играется она как то странно
странно - мне показалось - проблемы с управлением.
Кубиков как таковых не наблюдается :) Там загрузчик.. он, как я понял, грузиться куда-то вверх памяти, а потом грузит остальную часть
Он чуть ли не в экранную грузиться.. может быть такое? По крайней мере - картинка начального загрузчика нарушается
- - - Добавлено - - -
и да.. кубиков штук 6 у загрузчика примерно.. остальное - во внутреннем формате загрузчика
Фишка в том, что этот хитрый загрузчик располагается в экранной области ОЗУ, при этом для его запуска использует трюк с затиранием стека, тем самым подменяется адрес возврата из подпрограммы на стартовый адрес загрузчика. Можно считать это уязвимостью стандартного загрузчика как сейчас модно говорить путем переполнением стека )). Ну а дальше (когда доходит до команды RET) управление передается уже этому хитрому загрузчику который и грузит основную программу уже в своем формате с адреса 0100h.
Да, я так и понял, почитав соседнюю ветку ROM-формат: автозапуск, защита, секреты
Вот вопрос - чисто теоретически - можно без участия писи цифрануть такую игру? Загружаем её до мигания рус/лат. Потом УС-F4-ввод-блк
и в мониторе-отладчике сохраняем ее на кассету (кстати, а монитор отладчик умеет сохранять только в своём формате? в РОМ не умеет?). потом грузим микродос и считываем как обычно.. Так может получиться? Как то можно будет после старта монитора-отладчика выяснить адреса где наша загруженная программа есть? И адрес её старта соответственно?
Можно. Отладчик умеет сохранять в РОМ формате если не ошибаюсь команда "О". Стартовый адрес и так понятно 100h а вот конечный выяснить сложнее, надо полистать память и посмотреть где данный заканчиваются.
- - - Добавлено - - -
Хотя нет, наверное не получится, надо же сначала загрузить в верхние адреса монитор-отладчик, потом УС+F2+ВВОД+БЛК, а потом уже саму игру, и тут уже может не проканать, если монитор-отладчик потрется. хотя... надо пробовать.
я запаял загрузчик со встроенным бейсиком и отладчиком
Только что попробовал, не получилось... Отладчик портится.
Пробовал на другой игрушке с таким же загрузчиком:
поэтому и пишу - Ус+F4+ввод+блк - должен запуститься отладчик без затирания памяти
мда.действительно.. значит - такие только через эмуль?
- - - Добавлено - - -
или взламывать загрузчик..Так, чтобы запустить этот загрузчик из под монитора, чтобы он загрузил прогу и вышел опять в отладчик?
- - - Добавлено - - -
или написать прогу.. которая грузиться сразу куда-нибудь вверх.. как этот загрузчик, например, и которая умеет сохранять содержимое памяти в ром сама.. загружаешь игру, перезапускаешь комп без очистки памяти, грузишь нашу прогу - она сохраняет игру
Если только спец копировщик написать, который будет понимать нестандартный формат, и выгружать в этом формате добавляя в начало еще и этот хитрый загрузчик в РОМ формате. Я думаю что такой копировщик по крайней мере существовал, жаль что не сохранился для истории ((
сделал loadr этого начального загрузчика.. начало d900 длина 400h.. теперь надо IDA и поковырять.. Но я в асме вектора не силён :) в принципе теоретически мне представляется несложным дописать к этому копировщику в конце не запуск готовой программы, а запись её на носитель в готовом к употреблению виде :)
хмм. Да. действительно.. об этом я не подумал.. найти стартовый адрес не очень то и просто будет видимо..
Как уже известно, стандартный РОМ загрузчик вектора умеет грузить по любым адресам, поэтому есть способ - нужно подготовить три wav файла:
1. нулевой блок (чтоб востановить переход на отладчик);
2. монитор часть 1 по адресам 9400h-9FFFh;
3. монитор часть 2 по адресам E000h-FFFFh.
Далее после загрузки игры по очереди грузим наши блоки и запускаем отладчик ))
Должно сработать ))
Проще в ПЗУ вкладку сделать, возможность копировать всю ОЗУ на квазидиск, потом преобразовывать в файл, и изучай сколько душе угодно. Думаю такие варианты уже готовые были. Ну, это естественно для реала, для эмулятора достаточно одну кнопку нажать, и получить образ ОЗУ для "изучения" :)
- - - Добавлено - - -
Достаточно немного анализа, грузит ведь его стандартный загрузчик, который давно уже "разложен по полочкам", можно достаточно точно "предсказать" положение стека в момент когда его заполнит загружаемый блок. А зная содержимое этого загружаемого блока можно узнать - куда произойдёт "выход из подпрограммы".
- - - Добавлено - - -
Небольшой намёк, надо помнить, что штатный загрузчик, переносит полученный блок (32 байта) в память (в место назначения) не во время приёма его с магнитофона, а после анализа этого блока (проверка КС, проверка его номера). Сначала блок принимается прямо на экран (правее стека), а уже потом переносится в память, и в этот момент происходит подмена адресов возврата из подпрограммы (в нашем случае).
Вполне возможно.
...
Что-бы этот загрузчик "штатно" запустился, нужно что-бы он был расположен начиная с адреса D900h, но адресу 0038h - должен стоять "ret" (C9h), по адресу DEF4h - должно быть "FFh", стек нужно установить на DCEEh. И далее можно выполнить команду "RET" - и загрузчик от "VLADIMIR TRUSHKIN" вроде как начинает работать. Стартовый адрес у него получается DBE6h.
Всем привет!
Подскажите какой загрущик использовался? на TURBO COPY не похож вроде-бы. Хочу оцифровать на ПК пару кассет. VV не схавал...
https://drive.google.com/file/d/1kmc...ew?usp=sharing
crackintosh, а использовать тапир не пробовал? Закрузчик можно распознать через rom-формат, остальное как raw, может что-то получится... Только файл надо предварительно побить на части.
Пробовал. не помогло.
А что не так?
Вырезал первый блок из файла (так как это явно загрузчик), вставил его в тапир, потыкал настройки, и получил Векторовский ROM.
В нём в самом начале есть текст:
Дальше идёт программа в формате этого загрузчика.Цитата:
KMOON BUGS. V.1.1
(s)filippow e.w.
minakow b.a.1990
Дальше запись не смотрел.
Спасибо! Мой профук. Теперь вижу.
Фильтры: КИХ A
Перекос: Предпочитать короткий интервал
Гистерезис: Мал
Но почему-то анализ прерывается на начале (процентов 15-20 от всего файла) и полность в ROM его не вытащить.
В ROM-формате там только 256 байт, это загрузчик программы. Он превосходно вытаскивается.
Остальное сама программа, и она не в ROM-формате, а в собственном формате данного загрузчика.
Вот такая защита от копирования.
В записи, судя по всему 3 копии игрушки. идёт загрузчик, потом два блока данных.
У 3-ей копии почему-то только один блок данных.
Судя по всему у wav-ки действительно есть "перекос", который исправляется настройкой "КИХ А". Интересно, как вылечить от перекоса всю wav-ку, и сохранить её обратно в файл?
А что такое "КИХ А" и где про это "почитать"? У меня 90% кассет в такой записи?
Как их оцифровать без железного Вектора?
Делал так:
1. Вырезал из wav-ки модуль загрузчика.
2. Закинул вырезанный кусок в тапир (спасибище за него, ещё раз).
3. сохранил полученный ROM, переименовал полученный файл, указал расширение r0m.
4. Вырезал из wav-ки программу (блоки данных следующие за загрузчиком).
5. Запустил в эмуляторе ROM-загрузчик программы.
6. Нашел в эмуляторе воспроизведение wav, выбрал вырезанный кусок с программой.
7. смотрел как моргает бордюр во время загрузки программы.
Но из-за искажений инфа битая, программа грузится не корректно.
Узнать-бы что за коррекция "КИХ А" и "вылечить" wav-ки.
Либо подключить по другому и снова оцифровать, может получится без искажений.