Совершенно верно! Я только что сам догадался. Я перегнал файлы в bin и вручную их загоняю в память, а потом в дебагере переключаю счетчик команд на нужный адрес и игра работает!
Но музыки АУ, как я понял, в оригинале нет, версия единственная?
Вид для печати
Не думаю, что исправление глюков вредит
Спросил бы у нас, что ли... ;)
Она не левая, она с версии Диззи для Commodore. Так же, как и 1-ая картинка в Диззи 3, картина на стене в игре (тоже в Диззи 3) и 1-ая заставка в Диззи 4.
да фиг его знает... дело в том, что не известно как там что исправлено. Игрухи же тестили, значит они проходимые. В любых играх есть баги, возьмите того же Брайде оф франкинштейн, там , когда в верхнюю комнату заходишь экран заглючивает... Ну и что?
---------- Post added at 22:55 ---------- Previous post was at 22:55 ----------
в моем понимании это левак...
Клон, обратись в фирму Codemasters, что-бы они тебе продали оригиналы всех Диззелей. А то они уже замучили весь мир про то, что за их игры надо платить деньги, хотя эти игры уже несколько десятков лет не выпускаются. Вот пускай откроют архивы, и вышлют тебе фирменные кассеты или диски. Правда для дисков тебе надо вернуть родной дисковод в свой +3.
Просто не понимаю смысла плодить корявые хоть и фирменные версии для +3. И вообще, неужели этого никто не сделал за такой промежуток времени? Или ты там решил отгрузку игры сделать?
Slider, видно будет! Адаптирую, тогда сяду все версии сам пройду, если замечу глюки спрошу у тебя как их залечить, ОК?
goodboy, ну картинка, по крайней мере, совпадает с тем что на WOS выдают за оригинал, плюс при загрузке и при просмотре кодовых блоков не видно всякого левака. Я не люблю когда какие-то вставки налеплены...
Адаптировал тут Dizzy1 и нашел очень изящный способ решить проблему незапуска в режиме 128к.
На самом деле проблема ни сколько в системных переменных, сколько в корректном выходе из режима 128к!
Ведь самой игрушке эти переменные не нужны, она не юзает их, также эти переменные не нужны и лодеру, который их затирает совместно со стеком!
И тут возникает вопрос: "ТАК КАКОГО же фига :) НЕ ПАШЕТ?"
А вот такого :), не пашет и все тут...
Давайте зададим еще один вопрос: "А чем отличается режим 128к от 48к, когда Спектрум уже работает в машинном коде?" Думаю не сильно ошибусь, если скажу, что не закрыта защелка банков памяти и есть доступ к АУ (или он есть всегда? ну, это, короче, к знатокам). Но ведь тогда получается, что нет никакой проблемы запустить DIZZY1 из под режима 128к, при этом не нужны даже уловки типа сжатия, загрузки в экранную область и т.п. То есть, возможен вариант абсолютно качественной переделки игры с сохранением оригинальных неизмененный файлов экрана, блока данных, причем с загрузкой их в те же (родные) адреса!
Все что для этого нужно - это сделать всего лишь один изящный ход - я его назвал "Рокировкой" :).
Суть этого хода заключается в том, что лодер загружается сначала в нормальное адресное пространство, например, 25017, затем осуществляется корректный переход в машинный код по Randomize usr 25000. Именно этот корректный переход и выправляет ситуацию, после его осуществления работа ОС корректно завершается, и порча системных переменных уже никак не может нарушить работу компьютера, так как вы переходите под управление лодера, а потом самой игры. Вы уже догадались, что после перехода в код по 25000 отрабатывает процедура переброски стандартного лодера по штатному адресу 23296 и осуществляется его старт!
В общем проблема, если кратко, заключалась в том, что испортив системные переменные ОС, вы не могли потом корректно завершить с ней работу и перейти в машинный код, поэтому рокировка - завершение работы с ОС, а потом загрузка лодера в системные переменные спокойно вылечивает проблему с минимальными доработками оригинала.
Считаю этот вариант наиболее оптимальным с точки зрения адаптации к 128к с сохранением по максимуму оригинальности версии.
Аналогично сделаю и на +3DOS, там просто лодер будет другой, а файлы, адреса - все сохранятся!
Вот тапка для режима 128к, отличается от оригинала на 16 байт лодера, в которых реализуется его переброска из верхних адресов ОЗУ в начало системных переменных.
Slider, у меня к тебе вопрос, как к опытному кодеру DIZZY :).
Я вот тут перегнал на +3 DOS две версии DIZZY1 и DIZZY2 c вроде как фирменных тапок. Заставил их работать без всякого изменения кодовых блоков, немножко подстроил ОС+3 для DIZZY2, но об этом я потом напишу в другой теме...
Вопрос вот в чем. Можешь рассказать или дать ссылку на стандартные баги (глюки) DIZZY2?
Дело в том, что игруха работает, но вскрылся один глюк! Если разбежаться со всей дури в первом экране и прыгнуть вправо, в море где рыбка плавает иногда происходит РЕСЕТ :( !
Раскрутить в чем проблема так до конца и не удалось, а может и проблемы вовсе нет. Я вот подумал, может ты уже что-то подобное замечал?
Что удалось локализовать:
6204h Call 7269h, удалось установить, что эта процедура выполняется после попадания Диззика в воду. При переключении банка ОЗУ на 6 и воспроизведении музыки при отработке данной процедуры и происходит глюк. Точно его место установить не удалось, сложилось впечатление, что происходит прерывание, которое, естественно, проходит каждый раз по-разному. В момент отработки процедуры включено прерывание второго рода, адрес перехода FDFDh. Я хотел было на него грешить, но Спектрум во время глюка переходит на E5E5h! Так что дело не в IM2! Возможно, это просто некорректная эмуляция SPIN! Однако за твоим диззиком это замечено не было, хотя я все-таки его включал режиме в ПЕНТПГОН128...
В РеалСпектрум эмулятор, воссоздать этот баг не удалось, там эта версия четко работает, не знаю может просто не могу создать условия для глюка или это все же глюк эмулятора SPIN.