Автор Тема: [NES] Хаки F-1 Race. Зацикленная версия + версия с износом шин  (Прочитано 6425 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн JAM

  • Пользователь
  • Сообщений: 427
    • Просмотр профиля
Давно у меня была идейка сделать эту непроходимую игру из детства проходимой. Сейчас появилась возможность. Выкладываю своё творение. Уже не один байт изменён, а куда больше.

Список отличий от оригинальной игры:
1. На пятой и последующих трассах количество кругов не бесконечно, а равно двум.
2. Игру можно "пройти". Также, как и игру Road Fighter, например. После десятой трассы загружается первая трасса, но уже на следующем уровне сложности. При этом, после пройгрыша рекорд сохраняется на том уровне сложности, с которого вы начинали. Кроме того, сам уровень сложности на заставке не переключается на тот, до которого вы дошли.
3. Игра на любом уровне сложности начинается с первой трассы.
4. Изменена нумерация трасс на экране "CIRCUIT No.". Каждая трасса имеет номер в виде цифры от 0 до 9. (Сделано неумышленно, но так даже лучше, чем править "A" на десятку. Кроме того, сама первая трасса есть ничто иное, как ноль, повёрнутый на π/2 =) )

Уровни сложности отличаются между собой лишь типом резины, как и в оригинальной игре.
1 уровень -- на плавных поворотах заносит, начиная со скорости 367 км/ч (мягкая резина).
2 уровень -- на плавных поворотах заносит, начиная со скорости 352 км/ч, а также на максимальной скорости при прогретой машине (средняя резина).
3 уровень -- на плавных поворотах заносит, начиная со скорости ~330 км/ч и на скорости ~450 км/ч на прогретой машине (жёсткая резина).

На трассах 0-4 на всех уровнях сложности можно врезаться несколько раз.
На трассах 5-6 -- 1 раз.
На трассах 7-9 -- ни разу.
На прогретой машине -- от 3 раз на каждой трассе.



Версия с износом шин
В архиве 4 РОМа (разные уровни сложности) и патч на время (пункты 7 и 8) для выпущенной ранее версии.

Список отличий от оригинальной игры:

1. Игру можно "пройти". Также, как и игру Road Fighter, например. После десятой трассы загружается первая трасса, но уже на следующем уровне сложности. При этом, после пройгрыша рекорд сохраняется на том уровне сложности, с которого вы начинали. Кроме того, сам уровень сложности на заставке не переключается на тот, до которого вы дошли.
2. Игра на любом уровне сложности начинается с первой трассы.
3. Изменена нумерация трасс на экране "CIRCUIT No.". Каждая трасса имеет номер в виде цифры от 0 до 9. (Сделано неумышленно, но так даже лучше, чем править "A" на десятку. Кроме того, сама первая трасса есть ничто иное, как ноль, повёрнутый на π/2 =) )
4. Количество кругов зависит от уровня сложности. 2 круга на первом, 3 круга на втором, 4 круга на третьем.
5. Добавлена эмуляция износа шин. Первые 2 круга на любом уровне сложности машина ведёт себя одинаково, как на уровне сложности 1 в оригинальной игре. На третьем круге машина себя ведёт, как на уровне сложности 2, а на четвёртом круге -- как на уровне сложности 3.
6. Начиная с третьего круга добавляется бонусное время (кроме режима Expert). Таким образом, после 2 кругов машину заносит больше, но и времени прибавляют тоже больше. Поскольку повороты придётся проходить на меньшей скорости, время прохождения круга увеличится. Более подробно -- ниже.
7. На финише оставшееся время трансформируется в очки, как только машина достигнет горизонта. За каждую секунду добавляют 100 очков. Опять-таки, по примеру игры Road Fighter. Быстрее прошли трассу -- получили больше очков.
8. Устранён глюк при наборе миллиона очков (а вы и не знали о таком?). В оригинальной игре после этого трасса исчезает, а остаётся одна трава, по которой надо ехать вслепую, не видя повороты. Теперь очки считаются с нуля по достижению миллиона, а в рекорд записывается 999990 очков.

Уровень заноса на поворотах, как и в оригинальной игре.
1-й и 2-й круги -- на плавных поворотах заносит, начиная со скорости 367 км/ч (свежая резина).
3-й круг -- на плавных поворотах заносит, начиная со скорости 352 км/ч, а также на максимальной скорости при прогретой машине (разрушающаяся резина).
4-й круг -- на плавных поворотах заносит, начиная со скорости ~330 км/ч и на скорости ~450 км/ч на прогретой машине (убитая резина).

И ещё одна заметка.
В оригинальной игре после первого же круга на 5-й трассе начинает действовать подлая подпрограмма, которая ворует у вас 4 секунды с каждого следующего круга. Таким образом, времени прибавляется всё меньше и меньше. Раньше я просто отключал эту подпрограмму, а теперь решил вернуть вам похищенное время. =)

Режим Easy:
Бонус +4 секунды к началу 3-го круга.
Бонус +8 секунд к началу 4-го круга.

Режим Normal:
Бонус +2 секунды к началу 3-го круга.
Бонус +4 секунды к началу 4-го круга.

Режим Hard:
Бонус +1 секунда к началу 3-го круга.
Бонус +2 секунды к началу 4-го круга.

Режим Expert:
Никаких бонусов >:-D
Просто отключил программу.

В режиме Expert игра проходима. Проверял на последней трассе (а если голова пролезет, то всё пролезет =)). Оставалась целая 1 секунда (правда с сохранками)! Это много, на самом деле. =) Даже при окончании времени можно по инерции доехать до черты и получить ещё 45 секунд.

Скриншоты:


Всем приятной игры. Против изменения и модификации не возражаю совершенно, если что =)
« Последнее редактирование: 23 Февраль 2014, 08:51:07 от JAM »

Оффлайн Guyver(X.B.M.)

  • Пользователь
  • Сообщений: 2161
  • Пол: Мужской
  • Уничтожим Кронос!
    • Facebook
    • Twitter
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: [NES] Хак F-1 Race. Зацикленная версия
« Ответ #1 : 12 Февраль 2014, 10:52:00 »
Крутяк! Вот это работа проделана!!! Респект!

Добавлено позже:
По скринам видно, что играли на гадком эмуляторе, который при изменении кода в роме перестаёт узнавать ром (так как понимает ром по контрольной сумме) и в итоге картинка трассы, особенно на поворотах, получается "рваная". Эх... Неужели под этот всем известный ром разработчики нормально свои эмуляторы не могут заточить...

Оффлайн 3DSchumacher

  • Ушел с форума
  • Сообщений: 2172
  • Пол: Мужской
    • Просмотр профиля
Re: [NES] Хак F-1 Race. Зацикленная версия
« Ответ #2 : 12 Февраль 2014, 10:59:59 »
Мне всегда казалось, что так себя ведут все эмуляторы... И не только в этой игре.

Оффлайн Guyver(X.B.M.)

  • Пользователь
  • Сообщений: 2161
  • Пол: Мужской
  • Уничтожим Кронос!
    • Facebook
    • Twitter
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: [NES] Хак F-1 Race. Зацикленная версия
« Ответ #3 : 12 Февраль 2014, 17:15:13 »
Увы и ах... Далеко не все. Это зависит от создателя эмулятора...

Например, я знаю один ром! Это ВООБЩЕ ПРИКОЛ. Создатель одного известного эмулятора заставил эмулятор определять ром по НАЗВАНИЮ (!!!). Т.е. тупо меняешь название рома - и он не работает! Я был в шоке от этого открытия, но это факт...

Оффлайн JAM

  • Пользователь
  • Сообщений: 427
    • Просмотр профиля
Re: [NES] Хак F-1 Race. Зацикленная версия
« Ответ #4 : 14 Февраль 2014, 22:31:27 »
Крутяк! Вот это работа проделана!!! Респект!
Спасибо. =)
На самом деле, изменено около 100 байт, но эти 100 байт надо было ещё написать.
6 часов работы вместе с тестами и прохождением примерно.

По скринам видно, что играли на гадком эмуляторе, который при изменении кода в роме перестаёт узнавать ром (так как понимает ром по контрольной сумме) и в итоге картинка трассы, особенно на поворотах, получается "рваная". Эх... Неужели под этот всем известный ром разработчики нормально свои эмуляторы не могут заточить...
Да, кстати, заметил, что оригинальную игру он не рвёт. Но что поделать, на NES нет хороших эмуляторов. Скажем так, эмуляторов, обладающих набором нескольких функций, которые бы меня устраивали, но В ОДНОМ ЭМУЛЯТОРЕ.

Оффлайн Guyver(X.B.M.)

  • Пользователь
  • Сообщений: 2161
  • Пол: Мужской
  • Уничтожим Кронос!
    • Facebook
    • Twitter
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: [NES] Хак F-1 Race. Зацикленная версия
« Ответ #5 : 15 Февраль 2014, 10:08:50 »
Самый прикол в том, что более слабые эмуляторы справляются лучше хороших...



Я тоже делал хак на эту игру. Но как посмотрел потом, что большинство вменяемых эмуляторов её криво эмулируют - и бросил...

Оффлайн 3DSchumacher

  • Ушел с форума
  • Сообщений: 2172
  • Пол: Мужской
    • Просмотр профиля
Re: [NES] Хак F-1 Race. Зацикленная версия
« Ответ #6 : 15 Февраль 2014, 13:25:59 »
Цитата: Guyver(X.B.M.)
и бросил...
ну теперь, когда у людей есть флешкарики или просто возможность изготавливать самодельные карики, смысл опять появился ;)

Оффлайн The GR

  • Пользователь
  • Сообщений: 2334
    • Просмотр профиля
Re: [NES] Хак F-1 Race. Зацикленная версия
« Ответ #7 : 17 Февраль 2014, 23:13:01 »
Цитата
6 часов работы вместе с тестами и прохождением примерно.

И в итоге чуть ли не самый интересный и качественный хак десятилетия  :thumbup:

Оффлайн JAM

  • Пользователь
  • Сообщений: 427
    • Просмотр профиля
Re: [NES] Хак F-1 Race. Зацикленная версия
« Ответ #8 : 19 Февраль 2014, 04:50:52 »
Я тоже делал хак на эту игру. Но как посмотрел потом, что большинство вменяемых эмуляторов её криво эмулируют - и бросил...
Ну и зря... Это ж не твоя проблема. Кому надо, скачают определённый эмуль. Вот хак Кабала один единственный эмулятор переваривает (точнее даже, его хакнутая версия), и ничего. Что изменял-то?

И да, Шумахер прав. Сейчас ведь есть флеш-картриджи. Хоть и они далеко не всё понимают, но РОМ в 24 килобайта поймут точно.



Добавлено позже:
И в итоге чуть ли не самый интересный и качественный хак десятилетия  :thumbup:
Кончай прикалываться =)


По теме. Сделал вторую версию этого хака. Сейчас только протестировать осталось. Не на работоспособность, а на проходимость (ужо всё работает). В общем, суть в том, что по-прежнему будут 3 уровня сложности, по-прежнему, начало с первой трассы. Разница в том, что надо будет проехать разное количество кругов в зависимости от уровня сложности по формуле "уровень сложности + 1". При этом, первые 2 круга машина едет условно на мягких шинах на всех уровнях сложности. А дальше, шины начинают "проседать", и в поворот можно вписаться на всё меньших скоростях. Т.е. заносы на круге 3, как на уровне сложности 2, а на круге 4 -- как на уровне сложности 3. "Смена шин" чётко на финишной черте происходит. В общем, я попытался эмулировать износ шин, как в более продвинутых гонках.

Оффлайн 3DSchumacher

  • Ушел с форума
  • Сообщений: 2172
  • Пол: Мужской
    • Просмотр профиля
Re: [NES] Хак F-1 Race. Зацикленная версия
« Ответ #9 : 19 Февраль 2014, 10:14:23 »
Цитата: JAM
В общем, я попытался эмулировать износ шин, как в более продвинутых гонках.
люто доставил! Ждем, очень ждем :thumbup:

Оффлайн The GR

  • Пользователь
  • Сообщений: 2334
    • Просмотр профиля
Re: [NES] Хак F-1 Race. Зацикленная версия
« Ответ #10 : 19 Февраль 2014, 11:38:29 »
Цитата
Кончай прикалываться

Серьёзно.
Хак класса "доработанный и избавленный от глюков оригинал" большая редкость для ретрогеймерства.

Оффлайн JAM

  • Пользователь
  • Сообщений: 427
    • Просмотр профиля
Поздравляю с нашим общим праздником, мужики!

Серьёзно.
Хак класса "доработанный и избавленный от глюков оригинал" большая редкость для ретрогеймерства.
Тогда спасибо =)
Я всегда стараюсь избавлять игры, за которые берусь, от глюков. Если это мне по зубам, конечно. Из-за этого однажды ромхакером и стал, когда ДОСТАЛО. Примерно так: "Ну неужели разработчики не знали про этот глюк. Бесит уже. Когда-нибудь сам его исправлю".

Оффлайн sinicum

  • Пользователь
  • Сообщений: 46
  • Пол: Мужской
  • Homo Ludens
    • Просмотр профиля
Цитата: JAM
Если это мне по зубам, конечно.

JAM,  с праздником...
..если не секрет - расскажи..  :ohmy:в ЧЁМ работал (как дебажил ) ,  ну завидую я,  :blush:ну невежда.. (?). Ну ТЫ даёшшь..  "Синтаксис" чё-ли наМОЗГлял..!..? Браво..

Оффлайн JAM

  • Пользователь
  • Сообщений: 427
    • Просмотр профиля
sinicum
Спасибо, и тебя тоже =)
Да нет тут никакого секрета. Для поиска нужных адресов памяти использовал эмулятор NESten 0.6 F, для редактирования -- Hex-редактор Hiew 6.11.

Как я всё это делал.
1. Искал определённые адреса памяти, в которых хранятся нужные значения. Использовал упомянутый эмулятор. Доисторический, но с удобный функцией поиска чит-кодов. Этим и занимался. Нашёл адреса, отвечающие за очки, за время, за номер уровня, за сложность и т.п.

2. Ознакомился со списком комманд ассемблера NES (6502). Всегда держал список комманд открытым в блокноте.

3. Когда я примерно понял, что именно искать в РОМе, начал искать. К примеру, найти код, переключающий уровни, было проще всего. Зная адрес ячейки, отвечающей за уровень, я искал комманду INC level в 16-ричных кодах, где level -- название ячейки.

4. Найдя нужное место, где исполняется именно тот кусок кода, что мне нужен, писал подрограмму в свободном месте и делал вызов из места в пункте номер 3.

5. Всё это проверял на эмуляторе.

Оффлайн sinicum

  • Пользователь
  • Сообщений: 46
  • Пол: Мужской
  • Homo Ludens
    • Просмотр профиля
JAM,  значит дебаг "на коленке", как всегда делали наши "Кулибины". Вспомнился анекдот, там в конце: "...А чё, так можно было, что ли?":) уважух, сам такой. А этот эмуль был, наверное,  самым первым с "дебаггером", и я тоже крутил .nes'ки..
У тебя как, "асм" осиливается? Хотя, там же голый код, просто нужен опыт.. так что удачи! :hi:

Оффлайн JAM

  • Пользователь
  • Сообщений: 427
    • Просмотр профиля
JAM,  значит дебаг "на коленке", как всегда делали наши "Кулибины". Вспомнился анекдот, там в конце: "...А чё, так можно было, что ли?":) уважух, сам такой.
Спасибо =)
Ну да, можно и без ручек. :lol:
Одно дело -- код писать, тут уж всё ручками надо, а другое -- уровни делать. Здесь и правда лучше редактором.

У тебя как, "асм" осиливается? Хотя, там же голый код, просто нужен опыт.. так что удачи! :hi:
Спасибо.
Осиливаю потихоньку, визуально уже различаю через Hex-редактор, где код, а где таблица какая-нибудь. Три дня работы над хаком и уже появилиась такая читалка. В Матрице говорили правду -- сначала видишь просто символы, а потом уже -- блондинку, брюнетку. Например, A5 17 0A 85 19 -- это явно код, а 17 18 19 1B 1C 1F -- таблица, музыка или что-то ещё.

Кстати, что меня поразило, в 6502 нет оператора короткого безусловного перехода а-ля BRA из 65c816. Все безусловные переходы -- только через JMP, а это 3 байта вместо двух. Даже если надо прыгнуть всего байт на 20-30. И это на NES, где часто каждый байт экономят...
« Последнее редактирование: 05 Март 2014, 19:19:49 от JAM »