| Другое > Разное |
| Tool-Assisted Superplay - искусство сверх-игры |
| << < (2/4) > >> |
| feos:
Assasin, спидраны какого формата тебе нужны? просто эмуляторные? |
| Brick_Man:
Assasin, о, я тоже за. :) Тебе нужны Тул-Ассистед прохи или просто мега задротский спидран без перезаписей? |
| Assasin:
Brick_Man,feos,УльтраБлокС,Street Fighter, Пойдёмте обсудим. http://www.emu-land.net/forum/index.php/topic,47762.new.html |
| feos:
Открыта группа ВКонтакте. http://vkontakte.ru/club20287165 Также, я влился в число команды TASVideos. А вот вам анимашка на затравку, взято из новогоднего пробега Супер Марио. |
| DeniSS:
Лучший TAS 2010 года. С 6-й минуты начинается хаос, а концовка вообще убила :) |
| OmKol:
--- Цитата: DeniSS от 14 Февраль 2011, 15:52:41 ---http://www.youtube.com/watch?v=_lnogpRPvY4 Лучший TAS 2010 года. С 6-й минуты начинается хаос, а концовка вообще убила :) --- Конец цитаты --- Такого издевательства над игрой я ещё не видел. В избранное. |
| metSyS:
Интересно а где, люди которые это делают, покупают себе нервы и терпение? |
| Brick_Man:
Я вот не понимаю, как они, тупо подойдя к стенке, попадают "внутрь"? Я знаю прикол, что стена отталкивает героя в противоположном направлении, но как они туда залезают? Иногда кажется, что фрейм адванса маловато. :D |
| Fly:
--- Цитата: Brick_Man ---Иногда кажется, что фрейм адванса маловато. --- Конец цитаты --- Иногда игру дизассемблируют и изучают код, чтобы узнать, где могут быть глюки и как их использовать. |
| feos:
AnSstuff Re: Новый рокмен Нихрена себе, что творится... на 3 минуты обогнали, да ещё как. А я ещё хотел когда-то сделать обзор ТАСа Deign'а - там помимо известных мегаменовских фишек (типа wallzip) использовался очень классный баг с побегом от Катмена и последующей порчей памяти оставшимся от Катмена объектом. Но тут вообще Матрица... Короче, разбираюсь. *** Да, надо всё-таки обзор по первому мегамену писать - развёрнутый, с таблицами и фрагментами исходного кода. Жаль только, скорее всего, его поймут только ромхакеры (то есть в России это Санчез, Хоррор, может GManiac и ещё парочка). Ну я сейчас на пальцах тебе объясню основу. Думаю, ты в курсе, что у процессора 6502 ограниченная адресация, так что большие игры делят себя на банки и вовремя переключают эти банки, так что процессор всё время видит нужный разработчику фрагмент РОМа. Смысл такой - в каждой NES-игре 60 раз в секунду вызывается NMI-прерывание, которое перерисовывает экран, играет музыку и т.д. И в процессе работы NMI требуется поменять текущий банк (чтоб, например, достать из другого куска РОМа музыкальные данные), а при выходе восстановить банк, чтоб прерванная игра ничего не заметила и поехала дальше, как ни в чём ни бывало. Это стандартная схема работы NES-игр. Как NMI узнаёт, на какой банк возвращать маппер? Узнаёт по значению переменной (в рокмене - по адресу 0x42), так что сама игра после каждого переключения банка обязательно сразу же сохраняет в ячейке 42 номер этого уже переключенного банка. Например, когда начинается процедура обработки AI объектов (а у каждого объекта, даже мелкого приза, есть своя процедура обработки каждого кадра), то игра переключает банк с 05 (в этом банке хранится основной цикл игры, код управления мегаменом и т.д.) на банк 06 (в этом банке хранятся обработчики поведения объектов и ещё куча всяких данных). Хотя NMI по сути означает "конец кадра" (обновление экрана ведь), но если игровой цикл не успел закончиться, NMI может сработать и до окончания обработки всех объектов - тогда обработка оставшихся объектов откладывается на следующий кадр, это и называется лагом. Весь трюк состоит в том, чтобы с помощью жуткого лага и невероятного везения сделать так, что NMI-прерывание произойдёт между двумя критическими инструкциями: sta $C006 - сменить банк на 06 sta CurrentBank - запомнить шестёрку в ячейке 42 ...тут идёт запуск кода из шестого банка Если получилось, то происходит следующее: sta $C006 - сменить банк на 06 *** внезапно NMI ***** обновить экран ***** переключить банк на 04, достать оттуда следующую ноту музыки и озвучить ***** восстановить банк (взяв значение из 42, в котором пока что хранится пятёрка, а не шестёрка) ***** продолжить основной цикл sta CurrentBank - запомнить шестёрку в ячейке 42 - а банк-то остался пятым ... тут идёт запуск кода, но не из шестого, а из пятого банка, в котором совсем другие данные В результате почти всегда это даёт зависание, т.к. исполняется какой-то левый код. Иногда просто портится память - в ряд ячеек пишутся ненужные данные. Но FinalFighter нашёл оптимальное стечение обстоятельств, когда после ошибки в переключении банка происходит запуск кода окончания уровня (подсчёт очков и т.д.). Повезло, что этот код хранится в пятом банке (хотя почему повезло, в этом банке вся основная игровая логика). Тут самое невероятное - что удалось так точно поймать NMI между двумя инструкциями. Это просто нереал, ведь в течение кадра исполняется несколько тысяч инструкций (это ещё хорошо, что процессор с частотой 1 мегагерц), и так точно спозиционировать лаг - это только методом миллиадрных проб и ошибок можно (ботами только). Причём, как я думаю, теоретически этот трюк возможен в любой игре с подобной схемой игрового цикла. С другой стороны, если бы в игре было так sta CurrentBank - заведомо запомнить шестёрку в ячейке 42 sta $C006 - сменить банк на 06 ...тут идёт запуск кода из шестого банка то этот трюк уже не сработал бы. Я, наверное, как-нибудь поищу подобные игры. Вообще, достижение громкое - заставить игру выполнять другой код - это натурально смахивает на сюжет фильма Matrix. Не знаю, сподоблюсь ли я начать обзор ТАСа Мегамена, но такие события реально вдохновляют. Добавлено позже: Brick_Man, в каждой и гре это может слегка отличаться в мегамене в основном герой проникает не в стены, а в потолок. в марио это связано с субпикселами и местом приземления на стенке. в других играх при получении урона персонаж подпрыгивает. это использовано в утиных историях и мегамене. http://www.youtube.com/watch?v=Y1v9B158P6M#t=318s |
| DeniSS:
feos, я подозревал, что дело в нерасторопности процессора, но что там такой милиметраж... |
| feos:
http://tasvideos.org/forum/viewtopic.php?t=10646 --- Цитата ---Congratulations to [1686] NES Mega Man (JPN) in 12:24.56 by Shinryuu & FinalFighter, the TAS of 2010, and to all of the nominees! --- Конец цитаты --- Ну то есть то, что это лучший ТАС 2010 года - официальное мнение сообщества. :shifty: Добавлено позже: http://www.youtube.com/view_play_list?p=073B34F918460667 Плейлист моих энкодов для ТАСВидеос. 69 видео |
| Dagoth Ur:
Многие считают, что TAS используют неточности эмуляции и что большинство трюков на реальной приставке не работают. Некто под ником micro500 доказал обратное: TAS на реальной NES возможен (ссылка на плейлист)! http://www.youtube.com/view_play_list?p=7D18A575A69D2832 Вместо контроллера используется самодельный девайс, скармливающий приставке последовательность нажатий. Пока не все опробованные прохождения работают, но и то, что уже достигнуто, достаточно любопытно. |
| Brick_Man:
Крутой девайс!!! :jumpy: |
| Dagoth Ur:
--- Цитата: Brick_Man от 20 Февраль 2011, 22:14:40 ---Крутой девайс!!! :jumpy: --- Конец цитаты --- Кстати, автор сделал инструкцию, как самому создать такое чудо. |
| feos:
Dagoth Ur, лол я его сегодня просил оформить это в плейлист. вот тред по этому вопросу http://tasvideos.org/forum/viewtopic.php?t=9580&start=11 |
| DeniSS:
Brick_Man, ага, почти как нёрдовская кнопка "пройти игру" :lol: |
| feos:
--- Цитата: DeniSS от 20 Февраль 2011, 22:54:04 ---Brick_Man, ага, почти как нёрдовская кнопка "пройти игру" :lol: --- Конец цитаты --- ну да, только в отличие от той кнопки игра РЕАЛЬНО проходится сама, да еще как! |
| Brick_Man:
А почему не все прохи работают? o_0 :-\ |
| feos:
Brick_Man, глюки с таймингом. эмулятор принимает инпут раз в кадр, длина которого примерно 1/60 секунды (не точно) консоль же выдает разницу в частоте опроса джоя и в лаге. так как лаг в мувиках учтен эмуляторный, а даже в разных версия эмуляторов он может отличаться, то и от консольного тем более. хотя это связано и с несовершенством девайса. сначала он не мог играть СМБ 3, теперь может. |
| Навигация |
| Главная страница сообщений |
| Следующая страница |
| Предыдущая страница |