
Сообщение от
JeRrS
Народ, пытаюсь тут восстановить еще один битый релиз от felix'a, остался вопрос по последнему блоку длиною в 1800 байт. Я ради эксперимента подставил первый попавшийся на котором игра стартанула, но понятное дело нужно восстановить под саму игру. Я насколько понял эти 1800 байт это обычный непожатый набор байтов где-то после адреса 23296. Правда первые 30 байт в этом блоке явно какие-то "свои"
То что получилось:
https://transfiles.ru/5ebk4
Там ничего ценного ниже 0x5cd0 0x61a8, вроде, нет, всё начинается оттуда и игра может все нужные области памяти проинициализировать заново, если её запустить со штатной точки 0x7b00. То есть, кузнец последний блок вообще не нужен.
Единственная тонкость -- там заставка предполагает, что на экране осталась картинка. Правильно было бы загрузчик изменить, последний блок вообще выкинуть и вместо 5FD5: CALL 6039 : CALL 6172 : JP 4000 вставить LD SP, FFE8 : JP 7B00 (да и убрать зависимость от uncontended RAM), но... загрузчик там как-то запакован/зашифрован... Можно, конечно, загрузчик расшифрованый взять и перезаписать в Бейсик, но у меня до этого руки не дойдут пока 
Тупой вариант -- заменить последний блок на 6 байт LD SP, FFE8 : JP 7B00, но тогда придётся смотреть на полупустой экран пока титры идут.
Вариант похитрее, в последнем блоке добавить код, чтобы пропускать заставку, что-то вроде
asm
Код:
DEVICE ZXSPECTRUM48
ORG 0x4000
LD SP, 0xFFE8
LD HL, 0x7B3F
LD (HL), 0xc3
LD HL, 0x7cc2
LD (0x7B40), HL
JP 0x7B00
SAVE3DOS "t.t.s.2",0x4000,$-0x4000
[свернуть]
aka
Код:
31 E8 FF 21 3F 7B 36 C3 21 C2 7C 22 40 7B C3 00 7B
ну, и, соответственно, поправить заголовки, контрольные суммы и прочее. А, да, смысла в TZX там нет никакого, всё можно в TAP перепаковать. Если получится, попозже сделаю.
Что-то неожиданно появилось время и зачесались руки, переделал загрузчик, стараясь сохранять историческую ценность:
- выкинул «защиту», оптимизировал использование памяти, там была куча явного мусора -- размер уменьшился с 983 до 550.
- соответственно, выкинул последний блок нафиг, ибо он там не нужен (еще -1821)
- убрал зависимость от наших клонов с uncontended memory «внизу», теперь работает на оригинальном железе (путём переноса кода загрузки «вверх», там навалом места)
- сделал выход из загрузки блока напрямую, в оригинале была явная описка и дергался просто RET (выход из SA-BYTES, явная ерунда, явно хотели SA/LD-RET), с другой стороны, SA/LD-RET выкинет в Бейсик, если держать BREAK
- сделал Бейсик загрузчик перемещаемым, теперь запускается везде, и с TR-DOS, и без, и даже на моём любимом +3 
Оригинальная упаковка и оригинальный загрузчик сохранены, по сути переделана Бейсик-обвязка. Если кто умеет включать оригинальную «защиту» (там просто три или четыре слоя запутывания/obfuscation), исходники прилагаются, можно попытаться сделать совсем как в оригинале.
Yandex Disk | Mega старые ссылки убраны, см. ниже
P.S. Надеюсь, с яндекса скачается без проблем. Если не сработает -- подскажите, куда ещё можно. Mega, она не моя, но именно поэтому живая, даже если я туда заходить не буду, шанс, что протухнет, есть, конечно, но невелик.
Upd: 2025 11 08
Ой, факир был... Ну, неудивительно, праздники же 
Но, на самом деле, там, скорее всего, нужен только маленький кусочек 0x60E0-0x61A7 и, может быть, какая-то мелочь «ввeрху». В общем, так как оригинал восстановили, я сделал полностью свой вариант на загрузчике от felix
Всё различие в сжатии основного блока zx0'м, ну, и вот что там описано выше.
Я дошёл до бабки, послал её и упёрся в стену, дальше, вроде, пути нет -- ничего не сломалось.
Yandex Disk | Mega