Перейти к содержимому

vladikcomper

Пользователи
  • Публикации

    947
  • Зарегистрирован

  • Посещение

  • Дней в лидерах

    8

Все публикации пользователя vladikcomper

  1. Да легко. Можно взять оринальный РОМ, открыть его в Портере, поставить галочку "Палитры". И все палитры станут такими как раньше.
  2. Да. Так вышло, что изначально в дизасембл S1HS каким-то образом попала часть данных из моего самого первого хака, Sonic High Force v.0.6. Скорее всего, когда я тестировал свой Портер =Р Это было еще в далеком 2009-м, когда я заканчивал S1 Hacking Studio 1.0. Так, в первой версии программы случайно оказались измененными палитры Соника, SYZ и даже порядок уровней. В дизасембле S1 Hacking Studio 2.0 я исправил это недоразумение, но палитру Соника решил оставить, ну уж очень она мне понравилась. Она же такая крутая!
  3. Замени BSR.W на JSR
  4. Менять палитру спрайтов можно в SonMapEd например. Спешу предупредить - цвет спрайтов по отдельности изменить нельзя. SMD использует 4 палитры по 16 цветов, что дает в общей сумме 64 цвета. Изменение палитр влиет на все спрайты (объекты) и тайлы, которые ее используют. По SonED2 - да, так и должно быть. Не все объекты представлены в программе, к сожалению.
  5. А с чем возникли проблемы? Я написал справку к программе, так что можно и нужно при затруднениях обращаться к ней. Если и она не поможет, можно задать вопрос в этой теме.
  6. Да, я не прошел до конца, потому что вместе с песней играла бы музыка Got Through, точно так же как и тема 1up. Но нет, даже музыка с приоритетом реагирует на команды "пауза" и "остановка". Это я предусмотрел. Как я показал вначале видео, пауза работает, а значит и остановка тоже. Просто мне было лень это исправлять, так как с текущей реализацией это было бы немного... нет, не сложно, просто кривовато. Перед воспроизведением любой SMPS-песни нужно проиграть сэмпл $80, чтобы DAC-песня остановилась. Это видео так называемый "proof-of-concept", просто чтобы продемонстрировать, что это возможно, что это работает. Только после этого уже можно хорошей реализацией этого концепта, чем я в ближайшее время и займусь. Сейчас думаю, как сделать работу с песнями как можно проще и удобнее.
  7. Нет. Сделать музыку в отдельных от РОМа файлах невозможно, если только не разработать специально заточенный под это эмулятор. Но тогда хак не будет работать ни в других эмуляторах, ни на реальном железе. В любом случае, это огромный минус, я считаю. Кстати, теперь расскажу чуть подробнее о том, что я сделал в том видео. Все сделано на том же старом добром Mega PCM, драйвер не подвергся абсолютно никаким изменениям. В видео играет звук 8-bit PCM с частотой 26 kHz. Чтобы улучшить качество воспроизведения и добиться максимально "чистого" звука, я модифицировал SMPS и процедуры VBlank'а, чтобы сократить время простоя Z80. Потому что как я уже писал, из-за того, что игре часто приходится останавливать Z80, воспроизведение цифрового звука тоже прерывается и качество заметно падает. Итак, скоро вы увидите: Гид "Как улучшить качество воспроизводимого звука" Гид "Как воспроизводить цифровую музыку на уровнях" Новую версию Mega PCM, с небольшими исправлениями и улучшениями
  8. Coming Soon:
  9. Дело в SMPS. Как было написано в первом посте про флаги: Если флаги панорамирования не заданы (panLR/L/R), "Mega PCM" не будет настраивать панорамирование, сохраняя настройки, сделанные SMPS. "Настройки, сделанные SMPS". А если SMPS ничего не воспроизводит, то он панорамирование DAC он настраивать не будет, то есть после паузы аудио на самом деле будет играть, но оно останется заглушенным. Исправить это просто: нужно сделать так, чтобы Mega PCM сам настраивал панорамирование. Для этого достаточно добавить panLR к флагам твоей DAC-песни. Кстати, скоро я напишу свой гид про воспроизведение DAC-песен с Mega PCM, где постараюсь реализовать это наиболее удобным способом и без "костылей". Перед этим будет еще один важный гид "как улучшить качество воспроизведения сэмплов". Для песен это критично. Из-за того, как часто Соник 1 прeрывает Z80, качество звука заметно падает, появляются шумы. Зато если усовершенствовать SMPS и исправить процедуры VBlank'а, результат получится достойный.
  10. привет всем!!!! я хачу штобы вы зацeнили мой первый проект!!!!я работаю над ним весь месяц!!!! щя версия уже 0.02!!! качайте все изминения: ночная палитра,спиндаш,джампдэш на врагов и джмпдэш на мониторы,новая музыка в 1акте и ещо многа чево там по мелочи.сами найдете вот скрин ы: > СКА ЧАТЬ <
  11. cmpi.b #4,$21(a0) ; осталось 4 удара или меньше? bls XXXXX ; если да, переход И дополнительные флаги не нужны.
  12. Замени BSR на JSR. Видимо, в твоем хаке появилось много нового кода, и стоило тебе увеличить длину имен в тайтл кардсах, расстояние между этим бранчем превысило 32 Кб и стало недостижимым для BSR.
  13. Еще до этого я взял оригинальные сэмплы S3K по первой ссылке, которую давал в прошлом посте. Все они заведомо в формате DPCM. Для проверки поставил их вместо тех же сэмплов формата PCM. Воспроизводилось как и должно. Кстати, а архиве я оригинальные сэмплы не нашел. У тебя часть сэмплов, что в BIN-файлах записаны в формате PCM, а в MegaPCM.asm числятся как DPCM-сэмплы. Я думаю, ты просто перепутал форматы. Сейчас же все работает? Если хочешь могу скинуть тебе твой измененный набор сэмплов, где С3-сэмплы в оригинальном DPCM-формате. Но это завтра, сегодня уже нет сил раздобыть и заменить некоторые сэмплы (для проверки я менял не все, а лишь часть из них).
  14. Изменением кода игры, т.е. программированием на ассемблере. Берешь дизасембл игры, который для нас уже сделали и вперед =Р http://info.sonicretro.org/Disassemblies#Sonic_3_.26_Knuckles
  15. Вобщем, я основательно изучил файлы, которые ты мне скинул в личку и выявил, что было на самом деле. Пожалуй, отвечу здесь. Честно говоря, твои объяснения меня немало запутали, и я ожидал нечто невообразимое. Как оказалось, под "сконвертил свои сэмплы в формат pcm" ты имел ввиду что просто сменил флажок dpcm на pcm в таблице, а под "в музыке не воспроизводятся" имелось "воспроизводятся, но звук битый". Только когда сам это увидел, все встало на места. Объясняй по-нормальнее. Плиз? Вобщем, все в порядке. А сэмплы действительно были не в том формате. Они были PCM, а ты хотел воспроизвести их как DPCM. Ну и естественно, звук был битый. И правильно ты сделал, что потом исправил в таблице формат. Когда сэмплы стали играть в правильном формате, все заработало. Так что, все в порядке, драйвер работает исправно. Кстати, если кто хочет достать все оригинальные сэмплы из S3K и даже S2, их можно найти в SK-драйвере от flamewing'а: http://www.mediafire...hje7jbl3ux090ab В этой таблице перечислены названия всех сэмплов S3K: http://info.sonicret...FSonic_3D_Blast Вот еще хороший топик: http://forums.sonicr...showtopic=18619 (Правда должен предупредить, сэмплы в некоторых играх используют немного модифицированный формат DPCM, тогда звук будет искаженным) Программно кстати можно. На будущее, если я задумаю выпустить новый Mega PCM, возможно, там будет функция изменения громкости. Чтобы изменить громкость звука, нужно домножить выдаваемый PCM-сигнал на некий коэффициент: a*k, где k - коэффициент, а - PCM-сигнал. При k>1 звук станет громче. При k<1 звук станет тише. Придется модифицировать код драйвера. В случае с Z80 реализация такого алгоритма осложняется тем, что в процессоре банально отсутствуют команды умножения и деления, так что придется ограничиться командами побитового сдвига, реализующими умножение/деление на одну из степеней двойки (2, 4, 8, 16 и т.д.) Другое препятствие -- стоит нагрузить код дополнительной логикой, сразу же падает скорость воспроизведения звука, т.е. увеличивается интервал между отправлением сигнала в DAC (напомню, что эта работа лежит на суровых плечах Z80, очень неудобно!) Впрочем, я хочу реализовать эту идею и новом переиздании Mega PCM. Может быть. Если оно случится. Можно будет динамически управлять уровнем громкости. Думаю, уровнем громкости тебе управлять не нужно, ты хочешь просто сделать погромче и оставить все как есть. В таком случае сделай как говорит Ivan YO ;)
  16. Интересно, почему не работал DPCM. Если не сложно, скинь мне в личку MegaPCM.asm и сэмплы (нерабочие DPCM и сконверченные PCM), хотелось бы их проверить и установить причину проблемы.
  17. Ivan YO, в этом коде все верно, тем более если это компилируется. Макросы (DAC_Entry и IncludeDAC) в любом случае настроят файлы и таблицу без ошибок. Это ты уже в своем хаке пытаешься делаешь? Если да, то два вопроса: Не забыл заменить функцию SoundDriverLoad? Не был ли до этого как-то модифицирован сам движок SMPS?
  18. Очевидно, раз я выложил этот драйвер публично, значит он рабочий. То же относится и к предложенному гиду по его установке. Гид был составлен на примере того, как я сам внедрял этот драйвер в Соник 1. Разве мог я составить гид, если не добился бы полноценной работы драйвера в игре? Разве мог я выложить драйвер, если он не работает? если с кодом проблемы? Работоспособность драйвера я проверял различными тестами. Предложенная в гиде конфигурация с сэмплами из Соник 3 - проверенная, так как именно с ней я и работал при внедрении драйвера. Конечно, не исключено, что в драйвере еще присутствуют некоторые баги, которые могут выявится при его использовании. Если вы нашли баг -- смело сообщайте, при возможности давая его наиболее подробное описание. Однако перед этим я советую убедиться, что баг не вызван какой-либо ошибкой при применении гида или неправильной работой с драйвером. Ivan YO, а теперь еще раз касаемо гида. Как я уже сказал, я писал его по образцу того, как внедрял свой драйвер. Вначале внедрял, работал над кодом, добивался полноценной работы, и по результатам всех своих действий написал гид. Тут действительно могла закрасться ошибка -- когда пишешь такой массивный пост, можно что-то, да упустить (хотя когда я закончил пост, я был уверен, что ничего не забыл -- действий по большому счету в гиде немного). Однако, я решил еще раз проверить свой гид, так как ты заявляешь о его полной неработоспособности. Скомпилировалось с первого раза. Теперь я точно могу сказать - в гиде ошибок нет! * * * * Прилагаю дизасембл Соник 1 со вставленным "Mega PCM": https://dl.dropbox.com/u/44757401/Sonic_1_with_MegaPCM.7z Заодно, тем кто раздумывает, можно посмотреть как оно выглядит и работает ;) Кстати, сразу хотел предоставить дизасембл, но поленился. Спасибо, что напомнили. Все точно по гиду из первого поста, добавления/изменения в SMPS (по второму пункту гида) я пометил, их можно найти, вбив в поиске ';++', код, который нужно удалить я просто закомментировал, чтобы было видно где он.
  19. Впервые вижу такую ошибку. Я тоже вставлял свой драйвер в S1HS2, только обычный. Покажи мне эту строку номер 39880 в sonic1.asm, потому что из описания ошибки ничего не ясно.
  20. Маленькая поправка к первому посту: В секции "Как воспроизводить голоса в игре" была небольшая ошибка. В примере неправильно заданы флаги воспроизведения (в таблице). Исправлено.
  21. Да, у меня на сайте вообще ее нет =Р Если только в блоге. Но там то, что все уже видели. Хотя надо будет как-нибудь разместить ее у себя на сайте, а то как-то неправильно получается. Спасибо, что напомнил, мой милый тролль.
  22. Если я правильно понимаю суть проблемы, должно быть ты добавил новый тайлы в арт Title Cards? Т.е. в файл artnem\ttlcards.bin. В таком случае причина "искажений" на экране -- повреждение маппингов (тайловой таблицы) плана А. Корни проблемы уходят в большие "дебри" -- устройство VRAM, специфику VDP и формат плановых маппингов. Не хотелось бы загружать новичка кучей технической информации, так что постараюсь быть предельно простым и кратким (хотя это у меня плохо получается =Р) Есть VRAM, или видео память. В ней хранятся все тайлы, которые будут выведены на экран видео процессором (VDP). Помимо простых тайлов отдельные части VRAM используются для формирования слоев (план А, план Б и спрайты), у которых свой формат. Этот формат я называю "плановыми маппингами" для Планов А и Б, и "спрайтовыми маппингами" для спрайтов. Маппинги слоев говорят, какими тайлами эти слои заполнять. На основе маппингов выстраивает "картинку" из тайлов для каждого слоя, потом комбинирует все слои с учетом смещения и получается финальное изображение. На основе содержимого VRAM и строится видеокадр. Кадр строится из трех слоев. Каждый слой состоит из "мозайки" тайлов, а маппинги говорят какие тайлы в эту "мозайке" расположить. Эту скучную теорию я рассказывал чтобы подвести к сути проблеммы (к сожалению без теории тут никак). Вот снимок части VRAM, он сделан в момент, когда отображаются результаты уровня, в него как раз попали эти самые тайлы и то, что после них (эти тайлы кстати подгружаются только когда нужно отобразить результаты уровня, при обычной игре там арт животных и взрывов): Тайлы выделены зеленым. Что выделено красным после них? Это маппинги плана А, из которых строится картинка переднего плана. Ты добавил еще несколько тайлов -- и что произойдет? "Зеленая" рамка зайдет за "красную", новые тайлы будут помещены туда, где им не место. Будет конфликт данных. Когда тайлы заезжают на плановые маппинги, нарушается "мозаика" из тайлов на плане, и часть слоя окажется заполненной случайными тайлами. В других случаях был просто конфликт арта, но вот арт Тайтл Кардс граничит с такими данными... Ситуация тут сложная. Манипулировать загрузкой тайлов сложно, из-за того что их подгрузка в игре заточена под определенные места. Хотя могу предложить один трюк, надеюсь он не вызовет проблем с артом. * * * Найди лейбел "loc_C5CA:", ниже по коду ты увидешь команду: move.w #$8580,2(a1) Замени $8580 на $8400. В коде "SignpostArtLoad:" замени: moveq #$12,d0 bra.w LoadPLC2 ; load signpost patterns на jsr ClearPLC lea ($FFFFF680).w,a2 move.l #Nem_TitleCard,(a2)+ move.w #$8000,(a2)+ rts Решение довольно "хакерское", но другое в голову не пришло =\
  23. Как-то давно на другом форуме писал по этому вопросу, так что цитирую: С координатами все просто. Если проверка на взаимодействие с полом удалась (tst.w d1 ; коснулись пола?), т.е. мы не прыгнули на ObjXX_NoHit (это кстати выдуманное имя чисто для примера, тебе следует заменить его на нужное тебе), то можно утверждать что координаты объекта в таком случае такие, что он коснулся пола (или вошел в него). Последняя команда в моем коде скорректирует Y-координату, так что она будет точной. А координаты объекта записаны в байтах 8 ( x) и $C (Y) структуры объекта. В коде выглядят как 8(a0) и $C(a0). Правда маленькая поправка: это координаты центра объекта, если тебе нужно посчитать именно координату соприкосновения с полом, прибавь к Y-координате, вертикальный радиус (высота/2) объекта (байт $16). Например: move.w $C(a0),d0 ; d0 = Ypos add.w $16(a0),d0 ; d0 = Ypos + Height/2 <...> Здесь в D0 посчитается как раз Y-координата соприкосновения с полом. Ну а дальше используй D0 в своем коде, как тебе угодно. X-координату и считать не надо - она строго равна 8(a0). Нельзя вырывать отдельные команды из контекста. В данном случае комментарий определяет смысл команды в некотором блоке кода. Если вырвать из блока отдельную команду, она теряет свой смысл, ибо более не несет смысловой нагрузки. Ну, вот давай посмотрим с технической стороны, что она делает. CMP (Compare) - это команда сравнения. В данном случае она сравнит значение в регистре D0 со значением адреса памяти $C(a0). Сама по себе команда CMP не имеет большого смысла -- сравнили, так сравнили и ничего с этими значениями не случилось. Смысл появляется только тогда, когда мы выполняем выполняем переход в зависимости от результата работы CMP. Переходы выполняют бранчи, например BEQ (перейти если равно) и BNE (перейти если не равно). Вместе пара команд CMP + Бранч образует условие (condition), а используемый бранч называют условным (conditional branch). Бранч работает (переносит нас на новое место) или не работает (код продолжает выполняться со старого места), и это в зависимости от того, выполняется ли его условие или нет. Твоя команда не имеет смысла по отдельности, потому что: 1) Используемый в ней регистр D0 не определен. Что в D0? Что угодно! Зависит от места, где его расположить, какой код выполнялся до этого. В силу этого эту команду нельзя рассматривать как отдельный кусок кода, должна быть команда определяющая D0 или вызов процедуры, которая записывает что-то в D0. 2) Нет бранча, так что нельзя сказать, что это за условие. Кстати, комментарии в дизасембле сделаны так, что вопросы в них всегда зависят от условия, т.е. от следующего за командой бранча. Если нет бранча, то и сказать ничего нельзя. Я даже не могу сказать, что должна была делать эта команда. Информации настолько мало, что это может быть что угодно.
  24. Раздел с гидами на SSRG закрыт для гостей. Чтобы увидеть его и еще почти десяток других интересных разделов нужно создать там аккаунт. Хотя, гид который ты ищешь так же можно найти на Соник Ретро: http://info.sonicretro.org/SCHG_How-to:Sonic_2_%28Simon_Wai_Prototype%29_Level_Select_in_Sonic_1
  25. Давно уже =Р
  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×