-
Публикации
947 -
Зарегистрирован
-
Посещение
-
Дней в лидерах
9
Все публикации пользователя vladikcomper
-
Illegal Instruction навряд ли можно вызвать неверным расположением объектов, оно в худшем случае может привести к глюкам, хотя игра в большинстве случаев со всем прекрасно справляется. Думаю, это связано с неправильным заданием подтипа объекта, в SonED2 он отражается вторым байтом в "Object Type Id:", а его двоичное значение показано чуть ниже в свойствах объекта, в строчке "Bits:". Этот байт задает свойства объекта, например тип монитора или количество колец и их расположение. Если СонЭд хорошо "знает" объект, он будет расшифрововать разные значение байта, отображая дополнительные строки, например "Param Field 0: 4 Rings" и т.п. Очевидно, многим объектам хватает использования лишь нескольких бит для определения различных своих вариаций, поэтому байт подтипа объекта не может принимать какие попало значения. Если по неосторожности задать неверное значение, в лучшем случае объект будет работать неверно (например, пружина будет отбрасывать в противоположную сторону), а в худшем - illegal instruction. А получается он вот как: Obj2F_Types: ; XREF: Obj2F_Action moveq #0,d0 ; очистим d0, а то мало ли, какой там мусор завалялся move.b $28(a0),d0 ; премещаем подтип объекта в d0 andi.w #7,d0 ; применяем побитовую маску, оставляем только первые три бита числа add.w d0,d0 ; удваиваем его! move.w Obj2F_TypeIndex(pc,d0.w),d1 jmp Obj2F_TypeIndex(pc,d1.w) ; ======================== Obj2F_TypeIndex: dc.w Obj2F_Type00-Obj2F_TypeIndex dc.w Obj2F_Type01-Obj2F_TypeIndex dc.w Obj2F_Type02-Obj2F_TypeIndex dc.w Obj2F_Type03-Obj2F_TypeIndex dc.w Obj2F_Type04-Obj2F_TypeIndex dc.w Obj2F_Type05-Obj2F_TypeIndex ; ======================== Этот пример кода как раз объекта MZ, который в исходнике назван "large moving platforms". Здесь подтип объекта в определенном месте используется как указатель на одну различные роутины, которые отвечают за то, каким образом будет двигаться объект. Игра рассчитана на то, что он будет принимать значения от 0 до 5. Если значение будет иным, команда jmp прыгнет не на определенную роутину, а в абсолютно случайное место, что в большинстве случаев вызовет Illegal Insturction, либо Line 1010 (1111) Emulator. Несмотря на то, что умный код применяет маску и оставляет только три бита числа (чтобы оно было в пределах от 0 до 7), ошибки все равно возможны, если эти три бита составят 6 или 7. Расскажи ситуацию подробнее. Где поставил? В какой зоне? Делал ли что-нибудь с кодом или артом? Мы не можем постоянно догадываться, что ты делал, чтобы поставить гусеницу и как выглядит недогруженный спрайт Мотобага, так расскажи по-нормальному, тогда у людей будет больше шансов помочь тебе или догадаться о причине проблеммы.
-
Плохой из тебя кэп. Это и игра, и хак. Оригинальный Соник 1 был игрой, почему хак на него должен быть чем-то иным? Называть SQWA игрой никто не запрещал. Да, уже подумываю о переименовании t^_^ Кстати, несмотря на то, что игра разрабатывается уже в течение долгого срока, она все же может называться Quick, так как в будущей версии планируется только две зоны. Относительно иностранного хакерского комьюнити, их тоже очень мало.
-
Там рядом с буквами R, G и B есть микроскопические стрелочки, именно на них надо нажимать для изменения цвета. Это очень неудобно, но таков СонЭд, поэтому советую иногда разворачивать программу на весь экран, чтобы не портить зрение.
-
Приятный небольшой хак. t^_^ Музыка весьма неплохая, особенно в GHZ2 и на титульнике. Также радуют АСМ изменения, такие как более удобный левел селект и другой способ завершения уровня, единственное, не пойму, почему отсутсвует Спин Дэш - неотъемлимый аттрибут современных хаков, без него играть иногда неудобно.
-
Вот, это уже во много раз лучше t^_^ Очень приятно слушать, отличная работа.
-
Ну блин, что нельзя по программке немного полазить? Во втором же меню - Editor, выбрав первый же пункт Tile Editor наткнешься на нужный тебе редактор палитр.
-
Не торопите события. Я не могу по вашему желанию выложить хак. Ясное дело, он недоделан, некоторые вещи не связаны, некоторые не сделаны, некоторые не реализованы до конца. Запаситесь терпением и подождите некоторое время, ничего страшного не случится.
-
Не баг, это родной неполноценный Jump Dash S1HS :) Да, есть гиды по портированию движков, посмотри на Ретро. Я ими никогда не пользовался, и сомневаюсь, что они полезны, потому что все нормальные хаки обычно используют новые DAC-движки, позволяющие добавлять больше DAC-сэмплов и даже использовать несколько банков по 32 Кб. Их всего два - драйвер Jman'а и драйвер Sonic Harder Levels. Гид по последнему легко найти на просторах SSRG (подфорум Tutotials кажется), все говорят, что он проще и удобнее в использовании, единственный минус - DAC-сэмплы должны быть сжатыми, это приводит к небольшой потере качества. Драйвер Jman'а немного получше, сэмлпы не требуют сжатия, но он с ним сложнее разобраться, причем драйвер давнишний (2006 года где-то). Его можно найти на форумах Ретро.
-
Не всегда дело в количестве DAC-сэмплов. Поиграй в хак S1 Yarmar Edition ( http://www.fileden.com/files/2009/6/6/2467921/S1Yarmar.bin ), там музыка в первой же зоне взята из той же МИДИ, что и у тебя, использует те же 3 сэмпла, но звучит намного приятнее. Поиграй в SoniNeko, там почти все песни используют обычные сэмплы, но режущего слух звучания у них нет. Потому что дело не только в количестве сэмплов, но и в умении их правильно использовать.
-
Инструменты хороши, но вот DAC-сэмплы не те... Слух режут.
-
Вообще-то я только переводил гид, а создал его Cinossu, в самом гиде про это, кстати написано. =Ъ Ага, файлов нет, но умный код все равно загружает палитру с оффсетов, где они предполагаемо должны быть и натыкается на палитры других зон. Причем некоторые палитры (MZ2, SLZ2) очень даже прилично смотрятся. Не сталкивался с этой проблеммой у себя, но думаю, что это происходит из-за того, что таблица запоминаемых объектов переполняется. Дело в том, что игра не может держать все объекты уровня в памяти, поэтому объекты которые остались далеко за границей камеры приходится удалять, а новые погружать по мере прохождения уровня. Чтобы запоминать какие кольца были собраны, какие бадники были убиты, а какие мониторы разбиты, предусмотрена эта таблица. Если мониторов/бадников/колец слишком много, она, видимо, переполняется, из-за чего многие ее записи оказываются за отведенным пределом ($FC00-$FD7F) и игнориуются.
-
Что надо: написать свой код. Увы, готовый код в личку тебе никто не даст, так как это не тот тип вещей, который можно раздавать всем подряд в готовом виде. Реализация счетчика миллесекунд требует наличия у хакера хороших навыков. Нужно хотя бы немного иметь представление про VDP и уметь работать с VRAM. Для этого необходимо ознакомится с документацией VPD: http://emu-docs.org/Genesis/Graphics/genvdp.txt и http://info.sonicretro.org/SCHG:VDP_Docume...n/General/Ports Отображение счетчиков минут и секунд происходит в суброутине HUD_Update, а именно здесь: loc_1C734: move.l #$5E400003,d0 ; запрос на запись во VRAM по адресу $DE40 moveq #0,d1 move.b ($FFFFFE23).w,d1; загрузить счетчик минут bsr.w Hud_Mins ; определяет нужные для цифр счетчика тайлы и записывает их во VRAM move.l #$5EC00003,d0 ; запрос на запись во VRAM по адресу $DEC0 moveq #0,d1 move.b ($FFFFFE24).w,d1; загрузить счетчик секунд bsr.w Hud_Secs ; определяет нужные для цифр счетчика тайлы и записывает их во VRAM Счетчик миллесекунд находится по адресу $FFFFFE25. Тебе нужно будет найти в видео памяти место, куда можно было бы записать 4 тайла и дополнить код примерно такими же строками, но запрашивать другой адресс VRAM и вызывать Hud_Secs после этого. И да, значение $FFFFFE25 надо будет домножить на 100 и поделить на 60, чтобы получить настоящие миллесекунды, дело в том, что байт этот обнуляется при 60, так как считает кол-во кадров, через которое нужно увеличивать счетчик секунд на единицу (1 секунда = 60 кадров). move.b ($FFFFFE25).w,d1 mulu.w #100,d1 divu.w #60,d1 swap d1 move.w #0,d1 swap d1 Если ты работаешь в S1HS, то это скорее мое небольшое упущение - я слил первичный и вторичный арты GHZ в один файл, чтобы не было проблем с СонЕдом, но забыл сделать изменения в коде. Исправить это несложно, нужно лишь проследовать этому маленькому гиду: http://info.sonicretro.org/SCHG_How-to:Sep...d_alternate_art
-
S1HS был полностью переведен на английский, так что ты сможешь им показать.
-
Когда я впервые увидел скриншотики, я первые несколько секунд пытался понять, что это за ночь в SQWA :) Серьезно, палитра очень смахивает на зимнюю, а в сочетании с русским HUD'ом немного напоминает палитру SQWA. Разумеется, это никакой не плагиат, просто совпадение =Ъ Думаю, чтобы палитра смотрелась как ночная палитра Зеленого холма, нужно немного прибавить количество зеленого в траве, сделать некоторые цвета в стенах темнее и приглушить синий в них. Но палитра - не главное в этом замечательном хаке. Главное - это отличная музыка и перевод. Я до сих пор слушаю песню $8E, так она мне нравится. Она безусловно лучше моих кривых портов в SQWA. Можно сказать, что ты - это русская версия nineko =P (да, кстати, твои порты напоминают по звучанию и стилю Нинековские)
-
General Parametres -> Tempo, там есть два списка, выбирая в них разные значения как раз можно изменить темп, а еще есть кнопочка Calculate, которая в случае удачи подсчитает самый подходящий темп.
-
Это да, но обычно маппинги никак от этого не страдают, потому что в коде игры на лейбелы в них никто не ссылается. Единственное исключение - маппинги на экранах Sonic Got Through/Special Stage/Chaos emerald, все они ради экономии места ссылаются на лейбел в маппингах Zone Title Cards, в этом лейбеле находятся маппинги овала (он же везде одинаков, вот и решили не повторяться). Поэтому эти маппинги не были вынесены в отдельные файлы для удобного редактирования в SonMapEd'е. А если их там отредактировать, то тут изменение названий лейбелов приведет к ошибкам.
-
Маппинги спрайтов никогда не сжимаются. Сжимать нужно только арт (т.е. тайлы), если он берется из папки artnem\. Ну тут все за нас готов сделать SonMapEd, так как он поддерживает открытие и сохранение сжатого арта - посмотри меню File>Load Data File и File>Save Data File и все станет ясно.
-
Не понимаю правда смысл вопроса про Ретро, но вот: http://forums.sonicretro.org/index.php?showtopic=18470 - топик с программой на форуме.
-
Дело в том, что голова Соника не в лезет в старые маппинги, не хватит тайлов. Да и тайловом редакторе с этим управиться будет намного сложнее.
-
Нужно проверить состояние байта $FFFFF603. Там прописываются кнопки, которые держатся в данный момент. Скорее всего, где-то в коде допущена незаметная ошибка, которая и приводит к такому глюку. Это может быть что угодно - забытое RTS, ссылка не на тот лейбел в жизненно-важных роутинах. Проверь, кстати Resize_SYZ, если ошибка происходит при определенной позиции камеры, возможно что-то не так там. Формат уровней с течением времени у Соников особо не изменялся. Графику можно скопипастить не задумываясь, надо только проверить, чтобы была сжата в Nemesis. С блоками 16х16 тоже проблем нет - их формат и в С1, и в С2 абсолютно идентичен. Единственная проблема - chunks (большие блоки), если в прототипе они 128х128, то придется повозится - при обычном копировании все просто напросто собьется.
-
Все объекты, которые отображает SonEd2 определяются в папке SonEd2\objdef, описаны они в файле s1obj.lst, а их изображения находятся в pcx-файлах. Очень многие объекты не отображаются, потому что список неполный и многие изображения отсутствуют. Попробуй взять SVN-дизасембл из скопировать папку objdef оттуда, там список пополнее будет.
-
Я бы с удовольствием перевел, если бы было время. Но в любом случае надо учиться понимать иностранные гиды, потому что без этого никуда.
-
Втречался с таким глюком. SonED2 по каким-то причинам портит массив коллизий для блоков, и Соник начинает проваливаться сквозь пол в некоторых местах. Чтобы исправить проблему, нужно заменить файлы collide\carray_n.bin и collide\carray_r.bin на оригинальные.
-
Импортируешь спрайты? Если новый спрайт получился больше предыдущего и не соответствует ему по форме, то некоторые его части будут обрезаны. Потому что SonMapEd при импортинге заменяет только использованные в пределах спрайта тайлы. Я никогда не занимался импортом спрайтов из изображений, так что не знаю, как лучше поступить. Советую почитать http://info.sonicretro.org/SCHG_How-to:Use_SonMapEd/Part_2 - там как раз описана именно такая проблема.
-
Сейчас на странице 0 пользователей
Нет пользователей, просматривающих эту страницу
