-
Публикации
947 -
Зарегистрирован
-
Посещение
-
Дней в лидерах
9
Все публикации пользователя vladikcomper
-
Врут они только в одном месте =Р И персонаж-помощник сам сознается. Еще иногда могут случаться баги, если активировать мониторы-переключатели не так, как было задумано. Я из-за этого несколько раз начинал проходить заново, и каким было мое счастье, когда наконец добрался до выхода. Правда в самом конце использовал свои хитрые читы, чтобы пройти сквозь стены в некоторых местах, потому что верный путь оказался прямо за стеной, а желания к нему пробираться через запутанные лабиринтовые тропы просто не было. Кстати, и раньше применял тактику с проходом сквозь стены - проносился через весь лабиринт, но когда добегал до конца тропы, выход был закрыт, оказывается, надо было активировать некоторые мониторы, чтобы его открыть. Если кому интересно, вот мои хитрые читы, которые могут немного облегчить прохождение: FFD010:2000 - проходить через любые стены справа, работает только в прыжке, при этом побочный эффект - Соник проваливается сквозь пол. FFD012:2800 - проходить сквозь пол, при нажатии кнопки прыжка Соник проваливается через пол и попадает на один уровень ниже.
-
Эта версия как бы и есть окончательная. MarkeyJester не хотел создать идеально отлаженный хак, это лишь его непродолжительный проект, начинавшийся как мини-хак-головоломка. Потом, Markey, видимо, включил туда многие свои наработки из прошлых хаков, и попрактиковался в создании еще нескольких интересных вещей. Не смотря на это, как полностью закончен - у него есть начало, и эпичный финал с огромным сюрпризом (сюрприз просто нечто, обязательно дойдите до него =Р). Есть, только некоторые баги - если активировать мониторы-переключатели в неправильном порядке в некоторых местах, можно попасть в тупик, либо продолжение пути будет заблокировано. Но хак просто отличен в своем классе - это чертовски хорошая головоломка. Я провел полтора часа в этом лабиринте, прежде чем найти выход и добраться до сюрприза sv:drop: Я любил и ненавидил хак одновременно, но оно того в конечном счете стоило - ибо сюрприз эпичен.
-
Это просто гид мой давно надо переписать, тупой он. =Р Скоро им займусь
-
Это ревизия 01, и в этом вся проблема. Это, по сути, более поздняя версия игры, доработанная и исправленная, а поскольку ее исправляли и дорабатывали, добавились новые данные и оффсеты старых сдвинулись. К сожалению, мой Porter рассчитан только на REV00, а с новой версией он просто достает "левые" данные.
-
Я это пробовал, но увы в игре потом много багов. Мне нужен именно ПОЛНЫЙ рестарт игры. Полного рестарта железа (с автоматической очисткой памяти, ресетом всех регистров и пр), подобно Hard Reset'у в эмуляторах, добиться нельзя. Все должно делаться посредством кода, поэтому переход на Sega Screen в этом случае и есть самое подходящее решение. Хотя можно в качестве совсем уж экстремального способа прыгнуть на EntryPoint, но это не очень то хорошо, и не факт, что все будет в порядке, хотя так делается в Sonic 3 в случае ошибки (вектор ErrorTrap). Джамп на Сега скрин - это совсем плохо и обязательно кончится вылетом игры. Связано это с состоянием стека на момент прыжка, он уже используется режимом экрана Level, и сверху этого забит вызовами кучи вложенных суброутин. Режимы экрана - дело тонкое, и в этом должна соблюдаться последовательность, не случайно в игре присутствует процедура MainGameLoop. MainGameLoop: move.b ($FFFFF600).w,d0; load Game Mode andi.w #%11100,d0 ; apply bit mask, so d0 will be <= $1C and multiple of 4 jsr GameModeArray(pc,d0.w); jump to apt location in ROM bra.s MainGameLoop Это такой бесконечный цикл, который вызывает суброутину (например, Level или SegaScreen) в зависимости от значения в адрессе $FFFFF600. Чтобы перейти к другому экрану, вызванная суброутина должна изменить $FFFFF600, а затем снова вернуться к MainGameLoop с помощью rts. В каждом режиме экрана обычно тоже есть такие циклы, которые выполняются каждый кадр и вызывают с свою очередь другие суброутины, например, когда уровень полностью загружен, начинается цикл Level_MainLoop, именно от него идут вызовы буквально всех жизненно-важныех суброутин. Да-да, эти ваши Obj01 и прочие приятности сами по себе же не выполняются, вначале вызывается ObjectsLoad, а она-то и выполняет коды всех объектов на уровне. Но вернемся к принципу переключения между экранами. Вот например, написал ты где-нибудь в коде: move.b #0,($FFFFF600).w; set Game Mode to Sega Screen Не важно, что будет ниже в коде, но когда все суброутины в цикле завершатся, внутри Level_MainLoop настанет черед выполнить этот код: Level_MainLoop: <...> cmpi.b #8,($FFFFF600).w beq.s Level_ChkDemo; if screen mode is 08 (demo), branch tst.w ($FFFFFE02).w; is the level set to restart? bne.w Level ; if yes, branch cmpi.b #$C,($FFFFF600).w beq.w Level_MainLoop ; if screen mode is $0C (level), branch rts Особенно важны последние три строчки, которые говорят, что если $FFFFF600 изменился, не надо больше продолжать цикл, а надо выйти из суброутины, и вернуться снова к MainGameLoop, который, в свою очередь, и перейдет к другому экрану. Да, режимы экранов - это штука очень сложная и тонкая, но что поделать =Р SONIC2010, короче просто пиши "move.b #0,($FFFFF600).w", это самый правильный способ. Кстати, какие у тебя происходят баги после рестарта игры?
-
Что за ошибка? Если это Branch offset out of range, то нужно пойти к строчке, на которой произошла ошибка и заменить: b**.s на b**.w bra.w на jmp bsr.w на jsr Менять названия в Маппингах на оригинальные имеет смысл, если ты вытащил из sonic1.asm маппинги таких объектов, как Sonic Has Passed, Title Cards или Special Stage (Chaos Emerald) и отредактировал их в СонМапЭде. Несколько месяцев назад я написал по этому делу небольшой гид. Он не очень-то совершенен, но максимально прост и понятен. Поищи его в темке "Ваши хаки", он в одном из моих постов, если ты сильно хочешь разнообразные палитры, ты обязательно его найдешь =)
-
Ну так добавление bne в этом случае не спасет, так как сам код у тебя, видимо, несколько раз выполняется. Самый простой способ профиксить это - сделать так: tst.b (xxxxx).w bne.s SkipObjCreate move.b #1,(xxxxx).w <...>; твой код SkipObjCreate: Где xxxxx- используй свободный адрес памяти. Это как бы универсальный способ, если этот код, например, находится в коде какого-то объекта, было бы разумнее использовать счетчик роутин. Так что многое зависит от того, где расположен твой код.
-
Вообще, объект создается так: bsr.w SingleObjLoad bne.s XXXXXX; переход, если загрузка не удалась После этого адресс нового объекта будет загружен в a1. Тогда можно установить тип объекта, и, например, его координаты, скорость. При этом объект будет создан всего один раз. Вероятно, у тебя объект создается многократно, потому что код, который его создает выполняется много раз. Где у тебя расположен код, создающий новый объект?
-
Хех, знакомый глюк. "Эффект ветра" - интересное название, но на самом деле он происходит из-за порчи файлов в папке collide, в результате игра считает ровные поверхности наклонными, поэтому Сонику трудно разогнаться, а при прыжке его отбрасывает назад. Так что тут дело сугубо в коллизиях =) Исправить это просто - достаточно заменить файлы в папке collide, как сказал Look-Tops. Но, увы, при следующей правке лабиринта в SonEd'е файлы снова испортятся. Этот глюк постоянно происходит в SonED'е из S1HS, связанно это с неверно настроенными файлами lz*.sep. Совсем недавно, после долгих поисков, я нашел решение проблеммы. Баг был очень коварным и незаметным. Вот часть кода из этих файлов: Palettes- Number of files: 2 Palette 1- Start index: 0 Number of entries: 16 File: ..\SourceCode\pallet\sonic.bin Palette 2- Start index: 16 Number of entries: 48 File: ..\SourceCode\pallet\lz.bin Palette 3- Start index: 64 Number of entries: 64 File: ..\SourceCode\pallet\lz_uw.bin При составлении кода файлов я допустил огромную ошибку, написал "Number of files: 2", в то время как файлов палитр описано три. В результате, все сбивалось, SonEd2 погружал не те файлы и портил их содержимое. Чтобы исправить ужасный баг, достаточно заменить "Number of files: 2" на "Number of files: 3" в lz1.sep, lz2.sep и lz3.sep (они лежат в папке с SonEd'ом)
-
Да, красное лого смотрится странно. Оно там просто случайно осталось, как и палитра SYZ, палитра Соника, измененный порядок уровней (после LZ3 сразу FZ). Тогда у меня был бардак с дизасемблами и в дизасембле S1HS остались некоторые файлы из моего старого хака - Sonic High Force. Впрочем, как уже сказал Doctor Robotnik, это легко исправить с помощью Porter'а.
-
После долгих проверок я все-таки установил, что дело не в русских символах, а лишь в длине пути к программе. Он не должен быть длиннее примерно 48 символов. Названия папок тоже не должны быть слишком длинными, папок не должно быть слишком много.
-
Это надо анимацию вручную редактировать. Анимации обычно находятся в папке _anim. Например, анимация Choper'а - _anim\obj2B.asm. dc.w byte_ABBE-Ani_obj2B dc.w byte_ABC2-Ani_obj2B dc.w byte_ABC6-Ani_obj2B byte_ABBE: dc.b 7, 0, 1, $FF byte_ABC2: dc.b 3, 0, 1, $FF byte_ABC6: dc.b 7, 0, $FF even Например, как здесь видно, у этого бадника три анимации. Скрипт анимации устроен просто: Первый байт - задержка между кадрами. Чем она больше, тем медленнее будет воспроизводиться анимация. А все остальное - кадры в анимации. Наряду со списком кадров, есть еще и некоторые служебные байты, например $FF. $FF - повторить анимацию сначала $FE - прокрутить анимацию на X кадров назад (количество кадров берется из следущего за $FD байта) $FD - перейти к другой анимации (номер анимации берется из следущего за $FD байта) Вот, как это работает на реальном примере: Первый байт - 7 - устанавливает задержку между кадрами. Потом идут собственно, сами кадры - 0, а потом 1. В конце находится байт $FF, при переходе на который анимация будет воспроизведена заново. Т.е. здесь циклично воспроизводятся кадры 0 и 1, с задержкой в 7 кадров. Следующая анимация, делает то же самое: Но тут задержка не 7, а 3 кадра. А последняя анимация вообще отображает один кадр - 0. Так что если ты, например хочешь добавить баднику новый кадр, то после того, как сделаешь это в Сон Эде, пропиши новый кадр - 2 - в первых двух анимациях:
-
Скажи, что ты пытаешься с самим бадником сделать? Дело в том, что нельзя просто так сделать баднику отдельную палитру, он обязательно должен использовать одну из 4 доступных доступных в уровне строк палитр. Память цветов (CRAM) в сеге очень мала, она рассчитана всего на 64 цвета. Для удобства эти 64 цвета разбили на 4 строки по 16 цветов, и каждый спрайт может использовать только одну из этих строк. В каждом уровне первая строка палитры содержит цвета Соника (pallet\sonic.bin), остальные три - цвета текущей зоны, у каждой зоны они свои, и загружаются из файлов с названиями зон, например pallet\ghz.bin. Так что твой бадник может использовать только одну из вышеописанных строк для палитры. Для наглядности, вот содержимое CRAM в GHZ:
-
Самый странный вопрос, который я когда-либо видел. А что посещать профили запрещено? Я часто посещаю профили новых для меня людей, так как интересно узнать человека поближе.
-
Х-координата - 8(a0), тип word Y-координата - $C(a0), тип word addi.w #1,8(a0); сместить Соника на один пиксель вправо subi.w #10,$C(a0); поднять соника на 10 пикселей вверх Только вот такое вот обращение к Сонику будет работать только внутри кода Obj01, в других случаях нужно использовать его абсолютный адрес, $FFFFFD00 + нужный байт, например Y-координата будет $FFFFFD0C: subi.w #10,($FFFFFD0C).w; поднять соника на 10 пикселей вверх или загрузить $FFFFFD00, например в a1, но не думаю что это тут остро необходимо.
-
Не совсем понял вопрос. Какие номера нужны? Байт FE10 отвечает за зону, FE11 - номер акта. Нумеруются с нуля. Если ты хочешь узнать номер какой-либо зоны, то посмотри оригинальное меню выбора уровней - там зоны как раз расположены в порядке возрастания их номеров (начиная с нуля).
-
О нет, только не это! Этот дизасембл использует негодный компилятор SNASM68K, в котором даже нет директивы include, который очень любит намертво зависать без объяснения причин. Единственное, чем может быть хорош этот архив, это понятными интсрукциями на русском языке, объясняющими предназначения главных файлов в дизасембле. Лучше всего использовать дизасембл с компилятором asm68k: http://info.sonicretro.org/images/5/5f/Son...28ASM68K%29.zip Его, кстати и использует S1HS. Хех, и снова поднимается темка "S1HS против обычных дизасмеблов". Я над ней тоже размышлял неоднократно и вот что надумал: Что использовать, это личное дело каждого. Кому-то нравится все делать ручками, следить за вносимыми изменениями, делать все самостоятельно. А есть люди, которые любят быстроту и оперативность, не хотят заново делать вещи, которые уже кто-то позаботился сделать за них. Что выбрать - это личное дело каждого в зависимости от его предпочтений, так что спор этот бесмысленный. Не надо навязывать людям то или иное, пускай люди сами выбирают то, что им по душе.
-
Гид по портированию перевода в S1HS просто замечательный :) Особенно то, что ты обошел кривость S1HS касаемо арта HUD'а - программа не предусматривала возможность ставить свой арт.
-
DirectX, оказывается, язык программирования? Это фейл.
-
Неа Скриншот не мой, его сделал кто-то на Ретро. Тут, кажется, супер-форм добились читами.
-
Как уже сказал кул-спот, и до этого было множество игр с такими идеями. Так что идея это не моя, да и она далеко не моя. Я даже помню несколько похожих Соник-хаков с такой же погодной идеей, кстати ими и вдохновился =Р Падающие листья, думаю были бы прикольным эффектом, правда не представляю, как вписать их в стилистику GHZ, точнее, как они будут выглядеть, чтобы не мешали обзору и не создавали неприятных визуальных эффектов. И, кстати, опять же, использование снега/листьев никакой не плагиат, так как погодные эффекты использовались в бесконечном множестве игр, в том числе Sonic 3K.
-
Почему сложно? Да нет, если поизучать код Спин Дэша, работу анимаций, вполне реально это сделать. Я не буду это добавлять не потому что это сложно, а потому что будет плохо, если в программе будет слишко много легкодоступных фич, как эта, а то будет ужасное - люди разучатся пользоваться гидами и пробовать сделать что-то самостоятельно. Вообще, говоря "скромная", я ее ни с чем не сравнивал.
-
Хак намного похорошел по сравнению с предыдущей версией. Да, есть в нем некоторые недочеты, из самого заметного: Jump Dash из S1HS и спрайт Соника 3 от hbrd (кривоват он). Но музыка, музыка затмевает многие недочеты, твои последние порты по-настоящему отличного качества, их вдвойне приятно слушать, особенно мелодию из Соник 4. А уровни, они вполне нормальные. Нельзя назвать их кривыми, их, наоборот довольно приятно проходить, я ни разу не провалился в пропасть и не задавился неправильным расположением объектов (а это, между прочим, встречается во многих хаках), пока проходил первые 6 уровней. Немного пугает огромное изобилие мониторов и пружин местами, но это не критично. Расположение объектов и блоков надо исправить кое-где и будет ок. Кстати, очень советую поставить нормальный Jump Dash и вернуть максимальную скорость Соника обратно на $600, а вместо этого убрать Speed Cap. Это существенно улучшит геймплей, а с ним и общее качество хака. А для того чтобы сделать хак еще лучше и красивей, попробуй портировать спрайт Соника из С3, это несложно, если использовать SonMapEd.
-
Ребята, вы слишком много хотите от моей скромной программки. Если я запихну в функционал программы все гиды, то к чему тогда сведется процесс хакинга? "Джамп Дэш. Щелк. Спин Дэш. Тык-с. Пил Аут. Клик-с. Сохранить. Щелк. Компиляция. Тык. О, прикольна, дай-ка следующий хак сделаю!!!!111". Где будет весь азарт хакинга? Это когда сидишь несколько дней и пыхтишь над кодом Пил Аута, и в один прекрасный момент код подает признаки жизни, выдавая немного шороховатый, но Пил Аут, особенный, самодельный. А если это все воплотится в S1HS, то зачем вообще будет хакать? Люди будут сидеть и ждать, когда же нужная им фича появится в новой версии Хакинг Студии. Поэтому во второй версии S1 Hacking Studio набор опций увеличится ненамного, некоторые из них уже можно заметить на скриншотах: http://vladikcomper.narod.ru/blog/scr_s1hs2_1.png http://vladikcomper.narod.ru/blog/scr_s1hs2_2.png Главное, что будет примичательного в С1ХС2 - исправления множества багов в дизасембле и неудобств в самой программе, а также Creditor для редактирования текстов Sonic Team Presents и т.п.
-
Да, видел я наших выдающихся хакеров :) Знаю таковых на Ромхакинг.нет.ру и еще нескольких с других сайтов, почему нескольких - потому что мало был на других сайтах, и не успел увидеть всех хороших хакеров там. Но если взять иностранное комьюнити, хакеров там все равно будет в десятки раз больше, верно? А среди всех хакеров, есть некоторый процент Соник-хакеров, их, однако, всегда меньше. Скажем, если в иностранном комьюнити будут сотни хороших хакеров, то хороших Соник-хакеров будет несколько десятков. А поскольку у нас хороших хакеров десятки, то Соник хакеров - вообще единицы. Вот такая печальная статистика.
-
Сейчас на странице 0 пользователей
Нет пользователей, просматривающих эту страницу
