| Разработка и ромхакинг > Ромхакинг и программирование |
| Prince of Persia (NES) генератор паролей |
| (1/1) |
| angrylion:
Наваял генератор паролей для Prince of Persia(NES). Вроде, такого ранее в инете не появлялось. Встроен также анализатор существующих паролей: он расскажет, какому уровню и количеству минут соответствует пароль. Комментируем. Также нуждаюсь в вашем тестировании на предмет багов. Также можете мне задавать вопросы о системе паролей в Prince of Persia(NES), ибо я кое-что об этом знаю. |
| Spirit:
Ну круто... че то вроде там генерирует... только зачем это все ? я в эту игру на приставке играл тока, а на эмуляторе даже рома нету, зачем... как то прошло уже |
| angrylion:
Не знаю, что сказать. Писал я, конечно, ради удовольствия, а не для того, чтобы узнать пароли к уровням :) Стыжусь признаться в этом пороке :blush: , но нахожу в программировании некую дозу fun'а :). |
| Mefistotel:
angrylion, Молодец! Так держать! И не слушай никаго! --- Цитата ---Ну круто... че то вроде там генерирует... только зачем это все ? я в эту игру на приставке играл тока, а на эмуляторе даже рома нету, зачем... как то прошло уже --- Конец цитаты --- Зачем тебе вообще нужна эмуляция??? Скачай ром и вспомни былое. |
| Йобан Матич:
--- Цитата: angrylion ---Также можете мне задавать вопросы о системе паролей в Prince of Persia(NES) --- Конец цитаты --- Объясни как работает. =) |
| CaH4e3:
Ну ты намудрил. ;) Скопировать кусок асма в сях каждый сможет. ;) А вот расчет то пароля там совсем простенький на самом деле. --- Код: --- pass2 = random() pass5 = random() pass1 = ((level & 3) + pass2) % 10 pass7 = ((level >> 2) + pass5) % 10 pass0 = ((time % 10) + pass2) % 10 pass3 = ((time / 10) + pass5) % 10 sum = pass0 + pass1 + pass2 + pass3 sum += (sum % 10) + pass5 sum += (sum / 10) + pass7 pass4 = sum % 10 pass6 = sum / 10 --- Конец кода --- Если генерировать случайные числа в диапазоне от 0 до 7, а значение уровня в диапазоне от 0 до 13 (время, соответственно от 0 до 99), получим все возможные варианты паролей идентичных генерируемым игрой. Пароли с random() значениями 8 и 9 будут работать точно также, но игра таких никогда сгенерировать не сможет. Пароль не проверяет максимальное значение уровня, так что 14 и 15 будут вести в никуда, в несуществующие уровни. Еще несколько уникальных паролей можно выжать, если для pass1 использовать диапазон значений от 0..9, это тоже будут пароли, которых оригинальный код генерировать не умеет. |
| goukiX:
удерживаем вниз+влево+старт на экране newgame и password и получаем 90 мин вместо 60. |
| CaH4e3:
Это, кстати, не намеренный "чит", а глюк. Когда вбегаешь в комнату с зажатым вниз и старт, еще до того, как персонаж остановится перед бутылкой, происходит набор одного символа в пароле на девятку и сразу его проверка. Первый разряд пароля как раз отвечает за десятки минут, и хотя такой пароль неверный, но... Процедура проверки пароля пересчитывает контрольную сумму и кладет ее точно на то место в памяти, где она должна быть, правильную. Сравнив с изначально неправильной, которая там была (нули), она отбрыкивает пароль как неверный, но... Принц то еще не добежал, и флаг верности или неверности пароля просто не проверяется, смерти не происходит. В итоге получается, что при вбегании в комнату пароль с одной девяткой был скорректирован на правильный (90009010). Как только принц останавливается, повторное срабатывание проверки пароля дает уже положительный результат и соответственно 90 минут вместо 60. Собственно, финт может работать даже если после вбегания в комнату с зажатыми вышеназванными кнопками их отпустить до того, как принц остановится, а потом просто неспеша нажать старт, эффект будет такой же. |
| angrylion:
Да, у тебя гораздо кошернее. Только не --- Код: ---pass0 = ((time % 10) + pass2) % 10 pass3 = ((time / 10) + pass5) % 10 --- Конец кода --- , а --- Код: ---pass0 = ((time / 10) + pass2) % 10 pass3 = ((time % 10) + pass5) % 10 --- Конец кода --- |
| CaH4e3:
Ага, в жавовском пасгене уже исправил, а тут забил. ;) |
| Zephyr:
Молодца! :) |
| Crash Nicker:
Что ж, даже если ген писался "для галочки", то он получился очень даже неплохой. Молодцы (если ещё и Санчеза следует иметь в виду... :)) |
| Spirit:
--- Цитата: Mefistotel от 25 Июль 2008, 07:40:33 ---angrylion, Молодец! Так держать! И не слушай никаго!Зачем тебе вообще нужна эмуляция??? Скачай ром и вспомни былое. --- Конец цитаты --- Я не говорю что эта вещь плоха, просто именно эта игра... ну как сказать... там со старта все нормально проходиться, нету ничего интересного, и пароли не дают ничего интересного, я скачаю ром поиграю, вспомню ) просто не вижу жуткой необходимости в генерации паролей, лучше сделай генератор паролей на метал геар, вот это будет очень интересно и полный руль |
| angrylion:
Для Metal Gear есть два онлайн-генератора: http://www.math.purdue.edu/~dbabcock/personal/vg/metal-gear.php http://unoriginal.org/people/cybern/metal_gear.html Также есть текстовое описание того, как работает пароль: http://www.math.purdue.edu/~dbabcock/personal/vg/mg-passwords.txt |
| Навигация |
| Главная страница сообщений |