反转asciiPad SG-6串行链接(第1部分)

asciiPad SG-6是一款带有额外按钮和宏功能的售后Sega Genesis控制器。 小时候,我不知道这些奇怪的开关做了什么。 我只是上下滑动它们,直到控制器按预期工作。 作为成年人,我开始想知道该控制器比股票控制器能够支持更多的按钮,更不用说我小时候记得的帧速率减慢功能了。 我不能独自留下一个谜。 到蝙蝠洞!

我主要只是作为硬件反向器入门,因此我的工具没什么花哨的。 为此,我使用了一堆跳线,DB-9母插口和母插口以及一个超级预算逻辑分析仪。 总而言之,材料成本约为20美元。 这是设置。

我想捕获按下不同按钮并设置不同模式时来自控制器的信号。 尽管控制器使用非标准引脚分配,但仍通过串行连接供电。 接地是引脚8,VCC在5v处在引脚5上。其他引脚在4v9处浮空。 在连接任何东西之前,我用万用表检查了所有这些信息(我的想法一点也不花哨)。 俗话说,量两次,切一次。

该控制器应完全独立,因此,如果您有台式电源,则可以将其设置为5v,并将+导轨钩到引脚5,将–导轨钩到引脚8。我没有这样做。 取而代之的是,我选择使用连接到控制器的公DB-9分支上的母DB-9分支,以便为控制器供电并提供对引脚信号的访问。 我这样做是因为它便宜且有效。 我的小型逻辑分析仪通过一些跳线连接到公头,因此它可以读取引脚逻辑电平。 我收集了引脚1-4、6、7和9(除地和VCC引脚以外的所有引脚)的走线。

从那里开始,该找点乐子了。 我首先打开Sega的电源,然后进行跟踪以查看控制器或Sega是否通过线路发送了任何启动信号。 没有-线条都很高。 然后,我开始使用单个按钮进行跟踪。 很快就变得…奇怪。

对于所有引脚,逻辑电平为0(该引脚在4v9处为高电平)表示未按下与该引脚相关的按钮。 逻辑电平1(引脚被驱动为接地)表示按钮被按下。 标准控制器的引脚排列通常将一个按钮与每个引脚关联,但是在几种情况下,引脚是多路复用的,并且两个按钮能够驱动该引脚。 在后一种情况下,特殊的选择引脚通过高电平或低电平来区分两个按钮。 例如,“开始”按钮和“ C”按钮在引脚9上多路复用-如果“选择”引脚为低电平,而引脚9为低电平,则世嘉会将其解释为按下了“开始”按钮。 如果选择引脚为高电平,而引脚9为低电平,则将其解释为按下了C按钮。

当我开始按下asciiPad上的按钮时,只有其中一些会影响引脚上的逻辑电平。 真正重要的是,标准按钮(例如A和开始)似乎对引脚输出没有任何影响。 但是,您知道,asciiPad有许多拨动开关,而且,有些人可能会搞砸按钮的操作。 它还有一个漂亮的“模式”按钮,如果我不知道它的功能,该死的。 似乎下一个合乎逻辑的步骤是将Sega连接到电视上并获得一些关于控制器上奇数按钮实际功能的直觉,而不是依靠我数十年来对与哥哥玩电子游戏的记忆。

虽然我保留了Sega随附的所有设备,包括电视调谐器,但不幸的是,RF接口一直都是超级挑剔的。 我无法在我的耐心允许的时间内使它正常工作。 但是,我确实拆开了Sega并尝试诊断任何明显的连接器问题(我没有找到任何问题)。 这是几张照片:

我回过头来对控制器引脚进行逻辑跟踪,并经过反复试验,弄清楚了控制器上“自动/涡轮/关闭”(ATO)开关的功能。 首先,从视觉上看,很明显,除了“开始”和“模式”按钮之外,控制器上的每个按钮都与一个开关关联。 我将每个ATO开关都关闭,并捕获了下图所示的信号。

按照激活顺序,在跟踪过程中按下的按钮为:上,下,左,右,Z,C,X,Y,A,B,模式,开始。 您会注意到,跟踪中的针脚激活几乎不足以说明所有这些按钮。 轨迹上显示的是D-pad按压以及B和C按钮,它们直接对应于库存Sega控制器所述的引脚排列。 显然,缺少的按钮有问题。 但是我们暂时忽略了这一点,继续将所有ATO开关设置为Turbo。

只要按住某个按钮,Turbo就会快速切换按钮。 这可能是在格斗游戏中快速冲拳,在飞行中飘浮或漂浮在其他物体上的好方法。

asciiPad的“自动”模式与Turbo一样,除了只要按下按钮处于激活状态。 按下按钮后,该按钮的信号将被驱动为高电平,从而有效地告知Sega该按钮当前未处于 被压。

所有这些轨迹中的最大谜团就是为什么X,Y,Z,A,“开始”和“模式”按钮似乎根本不影响引脚上的输出。 我可以相信,“模式”也许是一个会影响控制器操作并且不会直接通过串行线路发送任何内容的按钮。 可以为其他按钮设置类似的参数,例如,由于标准的Sega控制器仅支持A,B和C按钮,因此它们可能已停用。 但是A按钮是标准按钮,Start也是如此,并且在输出中都看不到任何按钮。 是时候把控制器拆开了。

在控制器内部,首先要揭示的是正在对控制器进行所有信号处理的芯片。 除此之外,实际上没有什么值得一看的—有一些电阻器和电容器,但很少,它们可能只是对从按钮到芯片的信号进行了一些处理。 显然,还有一个带有彩色电线的插头,它被包裹在黑线中,成为与世嘉的串行连接。 路由到该接头的信号直接来自芯片。

另一方面,我们具有与按钮连接的电路板组件。 对于压力按钮,当按下它们时,它们会形成一个电路,该电路会改变电路板另一侧的芯片接收到的信号。 对于拨动开关,当它们滑入三个不同位置之一时,它们完成了不同的电路。 在“关闭”位置,它们没有完成任何电路。 在“涡轮”位置,它们与中间的小灰块相连,在“自动”位置,它们与外部的小灰块相连。 唯一例外的是“快速/慢速”开关,它只有两种模式(此开关位于“开始”和“模式”按钮旁边)。

当我的耐心恢复时,我可能会再次尝试通过将Sega挂接到电视上来开始,这样我就可以在功能上诊断控制器的任何问题。 似乎没有真正发送信号的按钮可能无法正常工作。 这是一项古老的技术,在新技术中得到了很好的使用。