Emulator 板


LINE

╭────────────╮ 前言 ── 什麽是 ACE? ╰────────────╯ TAS 的全名是 "Tool-Assisted Speedrun/Superplay", 也就是「用辅助工具制作的通关/游玩影片」, 他们可以透过不断的存档读档、监控记忆体、放慢速度录制动作...等等辅助工具, 达成非人力可及的操作技巧, 进而完成「最快速度通关」或是「某些指定目标」。 大概在 2008 年左右, 网路上出现了不少「不务正业」的TAS, 他们看起来不太打算破关, 像是在 Pokemon 黑白版里面努力的阻碍交通, https://youtu.be/crb-qQ58EGo
然而这些「不务正业」大致上都还是在游戏设计的范围之内。 过了几年之後这现象越发严重, 大约在 2013 年左右, 我发现 TAS 开始不务正业, 开始做一些「跟目前这个游戏本身没什麽关系」的事; 同时,这些TAS的标题上,大多都会写上 "Arbitrary Code Execution" (ACE, 任意代码执行)。 我大概能想像这个词汇好像有些抽象, 不太容易马上看懂这想干嘛, 所以让我们来看一个例子──也就是「ACE」这个技术真的红起来的瞬间。 2014年的一月, 在全世界的游戏快速通关社群一年一度的盛会 AGDQ2014 之中, 由 DwangoAC 带领的团队设计了一台机器人 "TASbot", 让他们能够在实机上现场表演TAS。 他们在当时玩了几个游戏, 其中最让人印象深刻, 甚至我觉得震惊世界的 是超任的 Super Mario World 玛利欧世界。 https://youtu.be/Uep1H_NvZS0?t=31m48s
游戏开始之後,可以看到玛利欧骑上耀西, 沿路像杂耍一样的玩弄一些路上的物件, 然而大约在影片的 33:28 处, 事情变得不太一样,画面开始出现一些不太对劲的东西 ... 几秒钟後,画面上出现了两个可以操作的小游戏, 就在一台实机超任的玛利欧世界里面。 非常明显,这两个小游戏绝对不是任天堂当初设计的部分。 没错,这就是他们自己写的。 他们在实机超任的玛利欧世界中, 利用一些游戏的Bug, 在超任的记忆体里面写了这两个小游戏的程式码, 然後执行他。 於是这时候可以回到我们这次的主题,「什麽是ACE?」 看过上面的例子,应该大致能够想像, 他们在游戏中「执行了一段由他们自己决定的程式码」, 这就是所谓的「任意代码执行」。 题外话,在节目里面他们说, 他们原本想要写一个红白机玛利欧一代, 然後再来跑他的 TAS, 但是实在是赶不上节目, 光是这两个小游戏就是表演前一天晚上才作好的。 於是,一年後,有了充裕的开发时间, 他们就在 AGDQ2015 现场端出来红白机玛利欧了。 https://youtu.be/HvCoNSq3GEM?t=5m48s
GDQ 後来几年也都会有 TAS Block, TASbot 团队也经常端出稀奇古怪的东西, 非常精彩,极度强烈推荐喜欢TAS的人们都可以看看。 ------ ╭─────────╮ ACE 影片范例精选 ╰─────────╯ 「任意代码执行」从字面上理解, 他几乎能够做到任何事情; 那麽大家究竟用ACE做过哪些事情呢? 这里提供一些经典的ACE影片, 包含了许多不同方向的作法。 (1) 最早期的 ACE TAS 我最早注意到的 ACE 是 2012 年年底的 Pokemon 黄版https://youtu.be/p5T81yHkHtI
他在10分47秒开始花了一分半的时间用按键进行大量输入, 最後放出了彩虹小马的主题曲。 当时出现的时候, 圈子内的大家多少都知道一些很严重的记忆体bug, 「我们可以透过一些 bug 来改变记忆体的数值,达成奇怪的效果」。 就这个概念上,直接写一段 code 来执行好像也不算是太奇怪的事情, 但是真的作出来还是非常惊艳。 (2) 手动输入的 ACE 「任意代码执行」不见得需要透过 TAS。 事实上有些游戏只凭人力输入, 就能够控制好一整段的记忆体代码, 然後只要有触发执行的手段, 就能够不倚赖 TAS 的方式完成ACE。 SethBling 在 2015 年在实机超任的 Super Mario World 中, 透过 ACE 的手段执行了 Credits Warp, 也就是直接跳到破关画面结束游戏,总时间花费 5 分 59 秒。 https://youtu.be/14wqBA5Q1yc
後来有许多游戏有找到类似的手段作出 Credit Warp, 在游戏开始不久之後直接跳到破关画面, 让这成为 Speedrun / TAS 的一种常见的分类。 我自己平常也很喜欢 Pokemon 黄版的 Save Corruption, 自己打一轮通常不用五分钟的时间,很适合当小游戏调剂身心。 https://youtu.be/VlmoEpNNiVI
(3) 手动输入了一整个新游戏的 ACE TAS 同样是 SethBling, 同样在实机超任上, 同样是 Super Mario World, 2016 年他花了一个小时用人力输入了 由 p4plus2 撰写的 Flappy Bird 程式码并执行他。 https://youtu.be/hB6eY73sLV0
这就是很大的工程了, 能够不依赖 TAS 就做到这麽复杂的 code 真的非常非常不容易。 (4) 推卡车抓梦幻 @ AGDQ2016 AGDQ2016 有一段节目 "Pokemon Glitch Showcase", 表演很多 Pokemon 第一世代游戏中的各种游戏漏洞花式表演, 其中我觉得最震惊世界的一段: https://youtu.be/mCoQm8bIyyw?t=24m
他利用存档转向之後读档冲浪穿过 S.S. Anne 号游艇的剪票员, 然後走到了传说中的卡车旁边。 这卡车非常有名, 我想不少人小时候大概听过谣传, 「听说用劲力推这个卡车就会跳出梦幻」。 於是,跑者 Shenanagans 就这麽说了, 「我想我在这边可以澄清一个谣言, 我知道很多人说在对着卡车使用劲力可以获得梦幻, 但是这并不是真的,(手上一边按劲力), 我可以现场示范一下这并不是...真的...What??」 (画面上跑出一只梦幻,对话框"Mew!",全场欢声雷动) 这在节目上没有解释是怎麽做到, 显然也没有时间特别详细解释, 但现场、聊天室还有当时的 Reddit 都快暴动了。 毕竟推卡车已经有无数人亲手试验过了, 那应该只是个谣言, 因此许多人怀疑这是改造的 ROM。 跑者後来在推特上解释, 这并不是一个改造 ROM,而是 ACE。 当然,节目上其实没有太多时间可以让跑者操作ACE, 所以这个ACE其实是 在「游戏存档」中预先安排好所有需要的程式码, 让跑者打开游戏就自动启动的。 比较详细的原理讨论可以参考我的另外两篇文章: #1R5j0WyX (PokeMon) [ptt.cc] [讨论] 梦幻卡车@AGDQ2016 (上) #1R5j5WKM (PokeMon) [ptt.cc] [讨论] 梦幻卡车@AGDQ2016 (下) (5) 用超任玩 N64 / 传送门 / Skype @ AGDQ2017 AGDQ2017 TASbot - 对,又是 TASbot。 这次他们选择的游戏是超任上的萨尔达传说https://youtu.be/7CgXvIuZR40?t=1400
前几分钟看起来还像是在玩游戏, 但影片27分5秒左右画面淡出, 几秒後回来的是 N64 上的 Super Mario 64, 竟然是比他高一阶的主机上的游戏, 而且还花了五分钟跑了一次 Speedrun; 然後马上接着的是另一次的传送门 Speedrun, 然後接上来的是──他们现场打了一通 Skype。 好,看到这里大概能够想像, 上面这些非常非常明显的超出了超任这台主机的性能; 所以实际上这很明显不是以超任为主来执行的内容。 在这个 ACE 中,他们实际上作的是, 「把画面资讯通过八只手把传给超任, 然後把超任当作一个萤幕」。 超任实际执行的程式码, 其实只有处理「把画面显示出来」的工作。 ------ ╭───────────────╮ 所以 ACE 到底是怎麽发生的? ╰───────────────╯ TASvideo.org 有一篇对於 ACE 的介绍, 对ACE的原理描述大概是这样的: http://tasvideos.org/ArbitraryCodeExecutionHowTo.html 每个游戏系统都会有一格记忆体去纪录「现在要执行的程式码」; 这是理所当然的,不然游戏也不知道自己现在执行到哪里了。 通常游戏的程式码会存在游戏卡匣/光碟/磁片这些唯读装置中, 在正常游玩下,这些部分通常是没办法被更改的。 然而,如果我们能够去写入 「现在要跑哪一段程式码」的那一格记忆体, 把它指向某个我们能够比较自由操作的记忆体空间── 例如 Pokemon,他有比较大的背包/携带道具的系统, 因此玩家可以透过更换队伍顺序/物品顺序的方式, 在那一段记忆体中安排好「要执行的程式码」, 然後让游戏去执行他。 然而,TAS 常常更倾向, 把「要执行的程式码」指向「按键输入」的记忆体位址。 只要能够办到这件事,程式码多长都不怕── 用所有手把上的所有按钮打进去就是了。 当然有时候这件事情很难一步到位, 所以你可能会在一些 ACE 的 TAS的投稿纪录中, 可以看到作者 Comment 的栏位中写着, 他们做了不同阶段的记忆体调整, 一开始先用比较容易达成的方式, 然後再写一小段程式码让游戏去读取手把输入, 甚至用更高频率读取。 好,我知道上面这些句子仍然有些抽象, 可能不太容易看懂这怎麽连到实际运作方式, 但实际的运作原理真的是很冗长而困难, 我觉得不太适合放在这样一篇介绍性的文章里面。 真的有兴趣的话, 可以参考我之前写来介绍 AGDQ2016 的梦幻卡车的文章: #1R5j5WKM (PokeMon) [ptt.cc] [讨论] 梦幻卡车@AGDQ2016 (下) ------ ╭───╮ 预告 ╰───╯ - 经典的 ACE 里程碑 - 2017 年的 Pokemon 黄版 - 後记──如果 TAS 不再玩游戏 ------ ╭────────────╮ 给按End的人的重点整理 ╰────────────╯ (1) ACE 是利用游戏的漏洞,在记忆体中安排程式码并执行。 (2) ACE TAS 可以做到很多很多事情,从2012年开始越来越匪夷所思。 (3) 上面的几个 ACE 影片都很精采,特别是 TASbot 相关的那些。 AGDQ2014 ACE红起来的瞬间 https://youtu.be/Uep1H_NvZS0?t=31m48s
AGDQ2016 推卡车抓梦幻 https://youtu.be/mCoQm8bIyyw?t=24m
AGDQ2017 用超任打N64/传送门/Skype https://youtu.be/7CgXvIuZR40?t=1400
-- ███◣ ◢██◣ ◢██◣ █ ◢█ ◣ ◢ ◢██◣ ◣ █ █ ██ █ ██ █ ██ █◢█◤ █◣◢█ █ ██ █◣ █ █ ██ █ ██ █ ██◤ ████ █ ██ ██◣█ @ ptt.cc ███◤ █ ██ █ ██◣ █◥◤█ ████ ████ █◥█◣ █ ██ █ ██ █◥█◣ █ ██ ◥█ 鸦片(Append) ◥█ ◥██◤ ◥██◤ █ ◥█ █ █ █ ██ twitch.tv/append --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.135.48.54 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Emulator/M.1599023597.A.03A.html
1F:推 srwcc: 推 09/02 13:24
2F:推 jazon: 先推一个 这边的概念是如果有在写程式的版友才比较容易看懂 09/02 15:05
3F:推 napdh: 好文推荐 09/02 15:20
4F:推 Jay915: 推 09/02 20:52
5F:推 darknote: 红白机时期记得有几个游戏有搞过 09/02 22:07
6F:推 superrockman: 不会写程式 有看没有懂XD 09/03 02:08
7F:推 icf10076328: 太厉害了 09/03 09:58
8F:推 kkssffaa: 这个太屌了,不管是精神还是技术,都值得敬佩 09/05 08:45
9F:推 bgworld: 好酷,对游戏很有爱 09/06 18:15
10F:推 AmosYang: 推 09/09 21:17
11F:推 longlongint: 利用漏洞修改记忆体内容,把二进位程式输入到记忆体 10/23 13:16
12F:→ longlongint: 原理简单实际上很难弄 10/23 13:16







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP