KRAKOUT. Packed Screen. Packed Block by HRUST
Вид для печати
KRAKOUT. Packed Screen. Packed Block by HRUST
обновил Down To Earth packed by HRUST. loading 23 seconds
JeRrS, поругаю тебя наверно. Но поругаю конструктивно. Переделаю твой загрузчик, сделаю из него загрузчик-заготовку, будешь его подгружать командой MERGE к отловскому загрузчику, менять название игры и сохранять с нужным именем.
а почему у тебя в лоадере CLEAR стоит 39999? Недоглядел? Там должен стоять CLEAR который нужен для распакованного кодового блока игры, чаще всего он бывает что-то в районе 24000 - 26000, но никак не 39999. Конечно и так работает, но всё же.
В аттаче лоадер-заготовка (только 11 и 12 строки), его можно "мерджировать" к отловскому лоадеру. Потом останется только вызвать на редактуру 10 строку, убрать из неё рандомице, вставить в начало border not pi: paper not pi: и убедится, что после clear val "xxxxx" стоит 4 двоеточия. Потом вызвать 12 строку и вставить вместо "KRAKOUT" имя очередной игрушки. Ну и сохранить в TAP с LINE 1 напрмер. Твой лоадер работает точно так же как и работал, все "красивости" сохранены, но он стал меньше на 94 байта! (там было дофига лишних операторов и т.п.) По меркам спектрума 94 байта это ж целое состояние. Имеется ввиду, не заготовка на 94 меньше, а полный лоадер, с 10-ой отловской строкой.
Загрузчик из TAP в WAV лучше перегонять прогой winTZX. Ибо та прога которой ты перегоняешь делает слишком тихий WAV, гораздо тише чем то, что делает отла, в аудиоредакторе это хорошо видно. На реалах могут быть проблемы из-за этого перепада громкости. В этой winTZX сначала надо жать на значок портфеля (загрузка), а потом на WAV и всё.
хуже что я распинаюсь, а jerrs упрямо фигачит чьи-то кряки, а не фирменный оригинал.
Я правильно понял, что с помощью OTLA не ускорить загрузку бейсиковой проги и вопрошалки о покесах бейсиковые также не прикрутить?
Ну во первых не слишком то он и "фигачит" ) Уж лучше бы и впрям фигачил )) И что ты конкретно имеешь в виду под "чьим-то кряком"? Krakout что ли? Если да, то как ты определил, что jerrs взял чей-то кряк, а не оригинал?
Как это? Берем бейсик файл, отрезаем и выкидываем заголовок, оставшемуся блоку приделываем новый заголовок? С какими параметрами? Как вычислить эти параметры? Потом этот бейсик замаскированный под коды скармливаем отле, но какой USR указывать для этого блока? Или всё это вообще не так делается?
Вот если есть способ с бейсиком грузить, то тогда я пожалуй все мною кряченные игры в OTLA загоню, там вопрошалки о вечных жизнях на бейсике сделаны (в код переделывать лень).
Исходники хруста 1.3 существуют в открытом доступе? Неплохо было бы научить его автоматически выставлять черный бордюр перед началом распаковки. А то слишком муторно каждый раз приклеивать эти два байта. А еще их к картинке надо приклеивать.. :(
---------- Post added at 00:30 ---------- Previous post was at 00:28 ----------
много игр? Можно список? ) Разберемся поди как с бейсиком грузить.
Почти всё что было: http://spectrum4ever.org/fulltape.ph...237&by=cracker
самый простой вариант поставив в бейсике pause 0 (после загрузки картинки и кода) сохранить z80 в эмуле и скормить otla полученный SnapShot.
---------- Post added at 23:12 ---------- Previous post was at 23:09 ----------
достаточно беглого взгляда на параметры разжатого блока
---------- Post added at 23:14 ---------- Previous post was at 23:12 ----------
скорее всего отгружаем кусок памяти (переменные+программа) потом стартуем её передав управление в ПЗУ.как-то так.
надо вспоминать подробности.в PanamaJoe игровое меню точно на-бейсике.
снапшот это не спортивно. Луче вспомни подробности как передать управление в пзу и как высчитать адреса нужных областей (переменные+прога) :)
ниже Буратино, его можно считать фирменным? Или это кряк? Брал с ВоС, tzx, но защиты никакой. Блок 34378, 31158 Start 65515
JeRrS, а слабо сделать такой Progress'ивный загрузчик как в аттаче? :)
Приключения Буратино. 26 секунд.
депакер отправляет в 0 текущее значение стека если пользователь сам выставляет его после распаковки.
длина команды LD (#0000),SP 4байта. как раз хватает на
LD A,#XX
OUT (#FE),A
(сначала я хотел выставлять нужный цвет бордюра после загрузки блока сразу в лоадере, но там применяется самомодифицирующий код, вернее его часть берётся из каждого заголовка). хотя кое-какие мысли по устранению этого момента есть.
ZX_NOVOSIB, Нее, такое мне не под силу :)
сложный для моего понимания пост. Если я правильно понял, то в хрусте есть какая-то опция, которой мы не пользуемся, и ты подумал, что вместо неё можно всунуть установление черного бордюра? Если это будет происходить до распаковки, то ништяк.
Но может проще на скорую руку слобать утилиту, которая будет брать любой блок и подставлять к нему в начало 2 байта (проверно, в нашем случае хватает, не обязательно 4), удалять исходный блок, сохранять новый блок (с пониженным на 2 байта стартовым адресом и увеличенной на 2 длиной) Ведь так будет более универсально, можно будет с разными пакерами эксперементировать, да и один хрен к заставке тоже надо 2 байта приклеивать.да ладно, не прибедняйся ) Ты не хуже меня шаришь и в бейсике и тем более в асме.
я тебе уже писал, что всё делается (надеюсь и JeRrS так делает) по тому стандарту, который был задан вами с zst с самого начала. Т.е. 11025 bps (цифра 4 в otla), т.е. минимальная скорость. А что, что-то не так с Буратинкой? )
попробуй изменённый вариант.
в своём бейсике выставляй стек, печатай что угодно на экране,грузи ModyfiedLoader и стартуй его с адреса 65530. потом приклеивай к нему ТурбоБлоки. если заработает код лоадера можно перенести в бейсик (после REM)
........................
блин, не учёл что для каждой скорости загрузки - свой лоадер.
изменил/проверил - теперь вроде функционирует.
как вариант турбо.wav можно добавлять к своему лоадеру не удаляя оригинальный бейсик (лоадер его просто пропустит незагружая)
на скоро проверил с Буратино. Не работает. Даже турбовый пилот-тон не ловится, просто тупо всегда черный бордюр и всё, никакой реакции ни на что.
---------- Post added at 16:32 ---------- Previous post was at 16:28 ----------
хм. еще раз попробовал. пилот-тон ловится, но после него полосы не бегут, и ничего не грузится.
Да, вроде работает, и бордюр черный, это хорошо )
Но откуда загрузчик будет узнавать сколько мы блоков будем грузить? Хотя как правило всего 2. И откуда он узнает адрес USR для запуска? Или эта инфа в самих турбоблоках содержится?
Если его в рем-строку засунуть, то он будет с адреса 23760, а какая точка входа будет? Вроде же код загрузчика жестко привязан к своему местоположению в памяти, я пробовал его сдвигать - не работал. Пришлось в загрузчиках даже 4 двоеточия вставлять, чтобы адрес не менялся.
вся инфа о блоках содержится в заголовках
(они есть только на слух ты их не-определишь)
расположение лоадера и адрес его запуска ты знаешь,
пересылай его откуда тебе удобно.
че-то я не пойму нифига. Я хочу этот твой модифицированный загрузчик вставить в рем строку. Допустим я делаю 168 символов после REM, с адреса 23760. Вгружаю туда загрузчик. Точка входа допустим 23922 - не работает. Ради интереса я загрузил лоадер в рем начиная не с 23760, а как в оригинале 23781 и usr 23781 - тоже не работает. Дык как лоадер в рем запихать?
---------- Post added at 01:23 ---------- Previous post was at 01:19 ----------
или в рем помимо лоадера надо вставить программку, которая бы пересылала лоадер с 23 тыщ на 65 тыщ?..
проверяйте на реалах :v2_dizzy_ironic:
на эмуляторах вроде работает.
(подручный портативный плейер wav не-понимает, а mp3 с игрой чудовищно искажает)
про LDIR прочитал, понял, что оригинальный загрузчик пересылает 256 байт (в реальности 168) с 23794 на 65368. Мда, а я 4 двоеточия вставлял, хотя можно было просто адрес изменить ))
В otla есть параметр Exec. За что он отвечает? На скрине, который ты выкладывал, ты устанавливал его только для картинки, причем он совпадал с стартовым адресом. А для самой игры он не ставится, и имеет значение 0. Что это, и почему для картинки его надо ставить, а для игры нет? Инфа об этом параметре тоже в турбо-блоках содержится?
---------- Post added at 21:18 ---------- Previous post was at 21:17 ----------
в обычном не шумит, ведь на реале работает. А вот спекулятор его не переваривает почему-то, выдает с шумами.
ща проверил на эмуле реалспектрум, там ситуация другая, загрузчик нормально грузится, картинка грузится и показывается, а дальше ничего.. тишина и ничего не грузится. Вприниципе главное что на реале работает, но всё равно интересно, почему такой глючный (с точки зрения эмуляторов) получился WAV. А сама игра вроде как одна из лучших для спека, в детстве у меня её не было, надо будет потом как-нибудь пройти её, правда нормального описания на русском к ней нет, так, бред какой-то.
http://savepic.ru/7453783.png
---------- Post added at 19:12 ---------- Previous post was at 19:00 ----------
я склеивал блоки в audacity, а потом конвертил 16->8 (для лучшего сжатия),
возможно это сыграло свою роль.
goodboy, да, с такими настройками реалспек грузит.
Делаю тут игру, она после распаковки начинается с 24064, если в загрузчике выставить CLEAR 24063, то бейсик ругается, слишком низкий адрес, даже если убрать всё лишнее, ведь в загрузчике в рем строке 181 байт (168 кодовый лоадер + 13 байт переброска лоадера).
Может можно CLEAR в бейсике не ставить, а приклеить перед сжатым блоком игры LD SP,24063? Такое прокатит или нет? В хрусте есть опция "установить новый стек после распаковки", но ведь нам нужен стек в 24063 до распаковки? Или что.. Вообще не понятно, в описании к хрусту сказано, что стек плавает во время распаковки, нафига тогда в бейсик-загрузчике стек выставлять, если хруст его потом один хрен заставляет плавать. :v2_confu:
ZX_NOVOSIB, ld sp,24064 надо делать перед загрузкой
при распаковке хруст через стек берутся данные потому он и гуляет
а выставлять надо чтобы блок загрузился нормально - малоли где бейсик стек бросит
zx_novosib, постарайся понять как я сжал robin of the wood
http://savepic.ru/7442351.png
goodboy,Скрытый текст
честно сказать я не очень хорошо понимаю что такое стек, вернее я понимаю, но не понимаю зачем его ставить именно на адрес первого байта распакованного блока. Зачем RAMTOP устанавливают, я более менее понимаю, чтобы не было конфликта кодового блока и бейсика (однако и здесь есть непонятки, ну допустим блок затрет часть бейсика, ну и фиг с ним с этим бейсиком, если в него возврата не планируется, если он уже сделал своё дело. Однако появляются глюки, если например распаковать хрустом и автостартануть блок, если при этом распакованный блок наедет на конец бейсика, короче почему в этом случае появляются глюки я не понимаю.)
А игра кстати, работает, без лишних телодвижений, в бейсик-загрузчике CLEAR нельзя выставить, ну хрен с ним, без него всё идеально работает. Я даже игру всю прошёл, чтобы убедиться, что глюков нет, она короткая.[свернуть]а в чём там подвох был? Мне сложно будет понять решение проблемы, если я самой проблемы не понял )) В бейсик-загрузчике Робина у тебя стоит CLEAR 24575. Получается что CLEAR надо ставить на единицу меньше адреса загрузки сжатого блока? А я почему-то думал, что на единицу меньше уже разжатого блока. В этом была моя ошибка?Цитата:
постарайся понять как я сжал robin of the wood
Когда в хрусте я выставляю параметры, то NEW SP надо выставлять на адрес первого байта распакованного блока, так? (я на этот параметр вообще не обращал внимание, думал, я ж уже выставил CLEAR в бейсике, нафига мне что-то еще делать.)
всё наоборот, данные которые выставляются/снимаются на стеке портят кодовый блок. если прерывания разрешены (режим im0/1) то постоянно выполняется подпрограмма в ПЗУ с #0038. при этом на стек сначала выставляется адрес с которого потом продолжится выполнение основной программы.
окей. Представим гипотетическую ситуацию: бейсик программа занимает много места, например до адреса 26000. Она грузит блок упакованный хрустом, блок с 40000. Блок хочет распаковатся начиная с адреса 24000 (и автостартануть, возврат в бейсик не планируется). Как выйти из ситуации? В бейсике нельзя сделать CLEAR 23999, однако если его не сделать, то #0038 испортит наш блок.
Однако можно в настройках хруста выставить NEW SP 24000 и это решит проблему? Или в дополнение к этому параметру надо будет выставить ещё и Int. on exit: DI? (т.е. запретить прерывания)
при sp=24000 стек будет расти вниз и естественно не затронет твои данные.
насчёт прерываний нельзя сказать точно, если программа устанавливает IM2 то она берёт полное управление на-себя.
однако бывают программы которые пользуются результатами пзушной im1 (опрос клавиатуры, часы и.т.д.) тогда прерывания должны быть разрешены.
в128ом бейсике всё гораздо запущенней.на прерываниях висят подпрограммы которые находятся в буфере принтера. например переключить страницу можно сделав poke 23388,page
чуть выше я писал:Но похоже правило "В бейсик-загрузчике CLEAR ставим "адресс загрузки сжатого блока -1", предварительно в хрусте выставив для этого блока NEW SP = адрес начала несжатого блока" не работает!Цитата:
В бейсик-загрузчике Робина у тебя стоит CLEAR 24575. Получается что CLEAR надо ставить на единицу меньше адреса загрузки сжатого блока? А я почему-то думал, что на единицу меньше уже разжатого блока. В этом была моя ошибка?
Когда в хрусте я выставляю параметры, то NEW SP надо выставлять на адрес первого байта распакованного блока, так? (я на этот параметр вообще не обращал внимание, думал, я ж уже выставил CLEAR в бейсике, нафига мне что-то еще делать.)
Щас делал турбо-версию "TEST 4.30" (в аттаче). Дело было так: глянул твой загрузчик, там CLEAR 24575, загруз несжатого блока и USR 24576. Я в хрусте, выставляю NEW SP 24576, сжатый блок кладу с 40000, в otla ставлю CLEAR 39999, и USR 40000. В итоге нихрена не работает. Только когда в otla поставил CLEAR 24575, заработало. Но тогда получается я в хрусте зря ставил NEW SP. Короче сложно всё.:v2_conf2: