Разработка и ромхакинг > Ромхакинг и программирование
[ALL] Ваши хаки
<< < (51/81) > >>
Sen244:
v5
Увы, опять зависла игра. Снова тот же самый уровень Cave of Crystal, почти самый конец. Опять во время драки с рыцарем. Вряд ли это с захватами связано, на этот раз дело было так: сбиваю его с ног, пролетаю ему за спину, поворачиваюсь, он только-только должен поднятся - хлоп - висит цветное месиво.
Я вот думаю, может это зависание как-то связано с появлением боссов уровня? Они вроде должны появляться незадолго до того как я всех врагов убью. Был там еще толстяк мелкий, я его как раз грохнул перед рыцарем, буквально через две секунды глюк случился.

А ещё там с толстяками другой глюк, на всех уровнях - когда его в захвате мутузишь, его спрайт прыгает по экрану, появляясь то внизу экрана где-то, то там где надо.
Ti_:

--- Цитата: Sen244 от 26 Январь 2012, 01:57:09 ---на этот раз дело было так: сбиваю его с ног, пролетаю ему за спину, поворачиваюсь, он только-только должен поднятся - хлоп - висит цветное месиво.

--- Конец цитаты ---
У меня не получается, сейв файл для gens перед этим местом, попробуй может точно выяснишь:

Толстяки какие? С мелкими нормально всё вроде.
Sen244:
И правда, на эмулях все отлично с толстяками, и место это проходится нормально. Наверно, это какой-то каприз железа приставки, фиг его знает. :(

В общем, это вряд ли возможно пофиксить, раз такое дело, но я все равно попробую выяснить когда это происходит. На этот раз я успел завалить рыцаря и боссы появились нормально. Но случилось зависание во время драки с боссами. В следующий раз буду всех бить аккуратно, чтоб убедиться, не захват ли это. Дело все-таки в птице, т.к. за другого перса без проблем проходится. На этот раз зависание было без искажения изображения.
JS:
интересно где скачать так называемый ninja gaiden 4 nes
Ti_:

--- Цитата: Sen244 от 27 Январь 2012, 20:40:33 ---И правда, на эмулях все отлично с толстяками, и место это проходится нормально. Наверно, это какой-то каприз железа приставки, фиг его знает. :(

--- Конец цитаты ---
Можно попробовать добавить экран отладочный как в мортале например. Хотя зависания разные бывают, скажем может быть зависание где просто бесконечный цикл и тогда не будет экрана.
Насчет каши на экране - для каждого кадра персонажа есть набор графики (адрес откуда+размер сколько скопировать в видеопамять), для несуществующих номеров кадров размер может оказаться каким угодно, всю память вот и заливает кашей.  Вообще на крайняк можно сделать так: все кадры больше чем X заменять на первый (для грифона).
TrickZter:

--- Цитата: Sen244 от 27 Январь 2012, 20:40:33 ---И правда, на эмулях все отлично с толстяками, и место это проходится нормально. Наверно, это какой-то каприз железа приставки, фиг его знает. :(
--- Конец цитаты ---
Это не каприз железа, а хак, который криво работает на железе ;)
Такие кривые хаки рождаются по причине того, что тестируют их не на родном железе, а на эмуляторах. Практически все эмуляторы "срезают углы" - что-то упрощают, что-то пропускают, что-то интерпретируют иначе, делается это для ускорения работы эмулятора. Как следствие, некоторые игры не работают или работают криво. Кстати, для SNES есть "корректный" эмулятор, который максимально приближен к работе натурального железа - BSNES, правда, он и самый тормознутый из эмуляторов :)
Sen244:
Значит нам надобно иметь отладочный экран, а то мои сообщения об ошибках не несут полезной информации.

Еще я тут пробовал конвертнуть ром из бин в смд. Для этих целей я обычно использую прогу SBWin, но она не желает иметь дело с этим ромом, утверждает что формат неверный.
Конвертнуть хотел потому что любопытство потребовало запустить хак на Denn Portable Entertainment 831b, а он отчего-то желает именно smd. Хотя я точно знаю что модель 801w могла хавать bin, но там сеговские игры страшно тормозили.
Ti_:

--- Цитата: Sen244 от 28 Январь 2012, 20:47:20 ---Значит нам надобно иметь отладочный экран, а то мои сообщения об ошибках не несут полезной информации.

--- Конец цитаты ---
Я подумал попробую сделать так, чтобы игра начиналась с этого уровня, тогда проще проверять будет. Может завтра тогда сделаю.  Надо еще проверить может читы были на выбор уровня.
Ti_:

--- Цитата: TrickZter от 28 Январь 2012, 12:25:49 ---Такие кривые хаки рождаются по причине того, что тестируют их не на родном железе, а на эмуляторах. Практически все эмуляторы "срезают углы" - что-то упрощают, что-то пропускают, что-то интерпретируют иначе, делается это для ускорения работы эмулятора. Как следствие, некоторые игры не работают или работают криво.

--- Конец цитаты ---
Нет, в данном случае и эмулятор и железо работают правильно.  Я тут догадался в чем проблема была. Адресация как известно для рома 4мб, но ром меньше,  поэтому в эмуляторе пустое место считается заполненным нулями.  А на его флеше в нем что угодно может быть.  
Вообщем расширил ром до 4мб и заполнил всё место рандомными цифрами. Результат - на первом же уровне при попытке 'захвата' копейщика - артефакты.

Fix v6 (захват b+c):
vladikcomper:

--- Цитата: Sen244 от 28 Январь 2012, 20:47:20 ---Еще я тут пробовал конвертнуть ром из бин в смд. Для этих целей я обычно использую прогу SBWin, но она не желает иметь дело с этим ромом, утверждает что формат неверный.

--- Конец цитаты ---
Для этого можно воспользоваться WinHex'ом например.
Открываешь в нем РОМ -> Ctrl + A -> Edit -> Modify Data -> 16-bit byte swap.
Разница между форматами SMD и GEN/BIN заключается лишь в том, что у них разных порядок байтов в слове.


--- Цитата ---Кстати, для SNES есть "корректный" эмулятор, который максимально приближен к работе натурального железа - BSNES, правда, он и самый тормознутый из эмуляторов :)
--- Конец цитаты ---
Для SMD таковым безусловно является Regen, и кстати, он далеко не тормознутый (проверено на старом ноуте).
Правда, 100%-ой точности никто не гарантирует, за долгое время работы с ним заметил я пару косяков, но это все мелочи. Вообще, все Сеговские эмуляторы на данный момент весьма поверхностно эмулируют доступ к SRAM и звуковые чипы. Эмуляция VDP кстати тоже отличается от железа, но тут учесть все детали просто невозможно.
Зато Реген один из немногих эмулирует Address Error и довольно точно эмулирует DMA.
Sen244:
А чексумма рома влияет на что-нибудь? А то я её обычно исправляю, а вдруг так задумано чтоб она кривая была  :blush:
v6 потестю сегодня-завтра.
TrickZter:

--- Цитата: Sen244 от 29 Январь 2012, 23:17:18 ---А чексумма рома влияет на что-нибудь? А то я её обычно исправляю, а вдруг так задумано чтоб она кривая была  :blush:
v6 потестю сегодня-завтра.

--- Конец цитаты ---
Контрольная сумма нужна для проверки целостности рома. Эмуляторам, в общем то, пофигу на контрольную сумму (на счёт родного железа - не уверен), но фиксить её - это что-то вроде хороших манер в ромхакинге :)
vladikcomper:

--- Цитата: TrickZter от 30 Январь 2012, 06:52:04 ---Эмуляторам, в общем то, пофигу на контрольную сумму (на счёт родного железа - не уверен), но фиксить её - это что-то вроде хороших манер в ромхакинге :)

--- Конец цитаты ---

На самом деле контрольной суммы не касается ни железо, ни его эмуляторы.

Дело в том, что вся инициализация железа (подготовка памяти, VDP, Z80, PSG и стека) лежит на плечах самой игры. Поэтому в любом РОМе можно найти стандартный код инициализации, который абсолютно одинаков почти во всех играх.

Проверка контрольной суммы тоже выполняется самой игрой (железо не имеет к этому отношение). Эмуляторы только предлагают автоматически исправлять эту сумму, чтобы игра всегда считала, что она верная. Алгоритм вычисления чек сумм, опять же, одинаков во всех играх (в качестве исключения могу привести только порт Марио, в котором он отличается, и включение опции 'Auto-fix check sum' приводит к тому, что игра не работает).

На что влияет чек сумма? Зависит от игры, так как все в ее руках. Обычно, если чексума в заголовке не совпадает с настоящей, игры не запускаются или отображают красный экран (например, Соник 1 и 2). Я еще не видел, чтобы игра специально генерировала баги, если сумма неверна.
lupus:
Про баги с чексуммой вроже писали в топике про фиксы игр для гофера. Тоже где-то была защита от перадофф.
Segaman:
еще чек сумма вичисляется оригинальной консолью с биосом.
так что следите за чексуммой ;)
Sen244:
v6
Прошел то дурацкое место в Crystal Cave все-таки. :) Не повисло ничего. И мелких жирдяев в захвате теперь можно клевать без глюков.
Получается, это самый безглючный хак в мире. :) Чуть попозже пройду всю игру, если не прибегу сюда ныть, значит вообще все-все в порядке.
vladikcomper:

--- Цитата: Segaman от 30 Январь 2012, 19:48:23 ---еще чек сумма вичисляется оригинальной консолью с биосом.
так что следите за чексуммой ;)

--- Конец цитаты ---
Ты про TMSS?
Он ни коем образом не работает с чек суммой. Все, что он делает, проверяет записано ли слово 'SEGA' в адрес $A14000. Если при инициализации игра этого не сделала, она считается нелицензированной и TMSS отключает VDP.
Nemesis_c:

--- Цитата: Segaman от 30 Январь 2012, 19:48:23 ---еще чек сумма вичисляется оригинальной консолью с биосом.
так что следите за чексуммой ;)

--- Конец цитаты ---
это ты где такое вычитал?

--- Цитата: vladikcomper от 30 Январь 2012, 20:12:35 ---Ты про TMSS?
Он ни коем образом не работает с чек суммой. Все, что он делает, проверяет записано ли слово 'SEGA' в адрес $A14000. Если при инициализации игра этого не сделала, она считается нелицензированной и TMSS отключает VDP.

--- Конец цитаты ---
именно, оно записано по адресу $100 в роме.. если его нет - тады ой  :lol:
Sen244:
Прошел я тут игру по нижнему пути полностью, правда последний босс меня убил, но это неважно. Есть такой косячок, в глаза бросается. Дело в том что при игре за нормальных персонажей на уровнях "Tender hamlet", "Bloody street" и "Cursed city" в конце вместо боссов надо драться с другими играбельными персонажами, причем среди них нет клонов и повторений. А при игре за грифона, в конце каждого из этих уровней противник всегда один и тот же.
Segaman:
омг o_0
Навигация
Главная страница сообщений
Следующая страница
Предыдущая страница

Перейти к полной версии