1 Отредактировано jeeno77 (19-11-2025 12:42)

Тема: Конвертер DSK/AIM/NIB/RAW/HFE

Народ, всем привет!

Очень нужна помощь каждого из вас. К сообщению прикреплены HFE-файлы, имеющие кое-какие различия. Прошу по возможности проверить работоспособность на ваших Агатиках-9. Если игры загружаются, то чирканите мне в личку плз: телеграм @jeeno_laretti

Почему я прошу мне помочь?
Образ диска AIM хранит в потоке данных кое-какую информацию. По началу я считал это трюком от копирования, но после огромного количества потраченного времени и проведённых экспериментов со структурой этого образа понял, что всё не однозначно.

Простая конвертация плоских данных в mfm-поток с расстановкой десинков перед маркерами индексов и секторов позволяет загрузиться с диска, увидеть меню, поползать по его пунктам, попереключать экраны стрелками влево вправо, но загрузить игру не получается. Мой Агат-9 падает в панику и начинает судорожно дрыгать экраном.

Какие эксперименты с образом AIM я провёл?
Написал код, который анализирует структуру треков и визуализирует её. Собственно ничего необычного я не увидел, кроме чередования секторов в кольце и структы GAP между индексом и сектором. Однако решил проделать следующее...
Я выдернул содержимое секторов в каждом треке и разложил их по порядку, тем самым получил DSK. Загружаться этот образ отказывается, в эмулятор сразу начинается дерготня на экране, стоит только появится первой картинке. Почему так? Изучаю вопрос и... всё дело оказалось лишь в номере тома. Эмулятор скорее всего при разворачивании DSK подставляет дефолтный FE, а в AIM в каждом секторе FF. Хорошо. Собираю обратно уже свой AIM со стандартной для Агата разметкой треков, расположением секторов в последовательном порядке, но меткой тома FF., не забывая о расстановке команд десинков. И вуаля!!! Эмулятор переварил этот новоиспечённый AIM и игры запускаются. Ну что? Попробую новенький AIM превратить в mfm-поток и запихать в HFE... Загрузка идёт, менюшка работает, выбор игры... и результат такой же: дрожь экрана и всё.

Эксперимент с обратным преобразованием. А вдруг что-то идёт не по плану и mfm-поток оказывается испорчен? Беру HFE, выдёргиваю из него mfm-поток, преобразую в плоские данные и вижу снова свой AIM, в точности до байта (не забывая про обратное преобразование десинков в команды AIM конечно же). Проделываю то же самое с исходным образом... совпадение в точности до байта.

У меня есть мнение (но хотелось бы найти ему подтверждение или опровержение), что виновник неработоспособности не образ AIM, не mfm-поток, не HFE-файл, и наверное даже не Gotek. Проблема кроется.... драматическая пауза .... барабанная дробь ... внимание!!!

Сам 'АГАТ-9'

Да, дамы и господа. Я пришёл к такому мнению.
Помогите мне пожалуйста, кто сколько сможет ))))

Добавлю: активно использую эмулятор Олега Одинцова

Post's attachments

Attachment icon M&S_10.zip 992.85 kb, 57 downloads since 2025-11-19 

2

Re: Конвертер DSK/AIM/NIB/RAW/HFE

https://forum.agatcomp.ru//misc.php?action=pun_attachment&item=1362

Post's attachments

Attachment icon compare.png 78.97 kb, 72 downloads since 2025-11-19 

3

Re: Конвертер DSK/AIM/NIB/RAW/HFE

А не работает вообще любая игра? А то G.I.Joe ждет подключенный пульт. Возможно, без пульта там какие-то случайные действия при запуске выполняются.

Еще одна мысль: может, какая-то недоломанная защита? Я помню, на диске ОС ЛС был такой прикол: там типа защищенный от копирования загрузчик, но защита снята: RWTS и байты в адресных метках секторов заменены на стандартные. Однако при запуске ОС ЛС выполняется кусок кода, который патчит RWTS, так что защита восстанавливается. А потом эта защита не дает ничего загрузить, потому что она ждет нестандартные адресные метки.

4

Re: Конвертер DSK/AIM/NIB/RAW/HFE

В этом образе особо никакой защиты нет. Главное, чтобы поле VOL во всех секторах было равно FF.  В эмуляторе нормально работает даже полностью переформатированный и собранный с нуля AIM без каких либо нестандартных вставок и меток в структуре. Т.е. если я создаю чистый диск, затем беру только содержимое секторов, копирую их на порядковые места на чистом диске, в поле VOL пишу FF, то получаю полностью рабочую копию, только со стандартной для Агата разметкой диска. Ну и конечно же сверяю CRC в поле сектора с подсчитанной суммой при копировании, все контрольные суммы совпадают.

5 Отредактировано Voldemar0 (04-12-2025 07:48)

Re: Конвертер DSK/AIM/NIB/RAW/HFE

Изначально всё агатовское было в DSK и тем прогам, у которых нет защит, его хватало.
Потом был введён формат IM, когда мы столкнулись с прогами, которые защищены через номера томов и ещё ряд признаков, которые можно было как-то вписать в стандартный формат.
Потом нам пришлось перейти для некоторых прог на AIM, потому что были проги, которые использовали совсем свой формат записи (например, одни большой сектор на всю дорожку, разделённый на сегменты, между которыми втыкались случайного размера GAP без sync) или сильно модифицированный формат, вроде sync внутри поля данных.

Если какой-то софт мы распространяем как AIM, значит там что-то достаточно серьёзное.
Мы принципиально не ломаем защиты, чтобы прога оставалась в оригинальном состоянии.
Мы лишь добиваемся того, чтобы в AIM она чувствовала себя как на родном диске.

Из твоего первого сообщения видно, что ты сейчас возишся с байтами, но есть защиты, которые, например, проверяют сырой размер дорожки. Поскольку он всегда разный при записи на физический носитель (из-за неидельно точной скорости привода), то уже это вносит вопрос о том, насколько ты можешь точно повторить запись оригинального диска. Если же ты используешь не физический дисковод, то тут тоже надо разбираться как у тебя устроена конвертация потока байт и, особенно, синхронизации в битовый поток.

Люди, привыкшие к вг93 и её формату, считают что на Агате тоже использовался отдельный синхросимвол, но это не так. У агата есть битовая цепочка, заметно короче байта, которая синхронизует контроллер.  Идея та же что в вг93, но ее синтез во время записи и её анализ во время чтение происходят сильно по другому.

Т.е. есть шанс, что поток данных, который выдаёт контроллер процессору при работе с эмулятором флопа и HFE не похож на то, что должно быть и то, что записано в AIM именно в точке синхронизации (а, скорее всего, до детектирования этой точки). Формально, байты до синхро и один байт после синхро являются мусором, но есть защиты, которые их учитывают.

Я не могу проверить твои образы, потому что сам использую только реальные дисководы, у меня нет эмуляторов флопика.

Если даш ссылку на исходный AIM или сам AIM, я могу попробовать найти описание применённой в нём защиты.


> с расстановкой десинков перед маркерами индексов

А зачем перед маркером индексов синки ?
Одно с другим вообще никак не связано на Агате.