All about Project Chameleon

Today, I’ll write some text about Project Chameleon.

Project Chameleon is NOT SO complex in my opinion, see the picture followed (PC part is not in this picture):

The GameCube DVD drive port is P9 on mainboard, the P9 connected to a xilinx Spartan3s400 FPGA board, we can see the board is on the top of GameCube.

A xilinx platform cable usb connected to FPGA board’s JTAG port.

At the right side is a SY2200A ez-usb DK. the chip is Cypress 68013A ez-usb, this board connected to FPGA borad too and a RS232 debug cable to pc.

These mess of hardwares work like this: GameCube send dvd read command (DI command) via P9, FPGA simulate the DVD drive, and a FIFO in FPGA keeps the DI command. PC read DI command vis usb, the ez-usb, read DI command FIFO in fact.

so PC now get the Di command, parse the command, and write data back to ez-usb then to FPGA and finally to P9.

ui

above is the PC server. the main problem is Cypress doesn’t supply the win7 x64 signed driver, so I write a UMDF driver myself.

Here is Chameleon running Metroid Prime:

http://player.youku.com/player.php/sid/XMTkxMTA1MzYw/v.swf

Project Chameleon Work In Progress 14

第一阶段正式完成

历史:

GameCube 使用了定制的光驱接口和通信协议,在任天堂的专利上,称为主板上的P9接口,名字叫做DI。
DI不仅仅是一个光驱接口,只要是使用DI协议的硬件,都可以安装在上面,比如任天堂自己的测试机就是把硬盘通过FPGA接到DI上,街机Triforce也是使用FPGA将GDROM驱动器和存储板接到DI上。

换句话说,我们完全可以自己做一个硬件,替换掉GC的光驱,比如用USB,比如用SD卡,比如用硬盘。国外已经有很多爱好者自己做了这样的设备。但是国内还没有这样的先例。

DSC01919

2007年底,我看到crazynation公开的GC DVD模拟器,我很有兴趣的想仿做一个。于是我开始了这个计划,本以为几个月就能完成,结果直到今天才算是完成。

硬件上主要有两部分组成,一片xilinx Spartan3 FPGA 负责DI协议模拟转换,一片Cypress ez-usb fx2lp负责USB2.0接口通信。

GC本体发出的光盘读取指令经过FPGA的协议转化,通过usb传输给pc,然后pc将游戏机所请求的iso数据又通过usb传送给FPGA,进一步交给GC。

在制作过程中遇到了各种未曾遇到的问题,比如驱动,Cypress没有提供win7 x64驱动,写传统的WDM驱动我又搞不到数字签名,这个卡了我很长时间,
今年年初我啃了半个月WDF UMDF文档,写了个UMDF驱动这才算搞定。

又比如VHDL,因为我是做软件的,之前从没接触过FPGA,也是硬啃了一个星期,设计修改了很多次。

最后非常谢谢支持我的朋友们,孤高の英雄,寄给我了一台GC,录像上这台就是,没有安装直读,但是在光驱模拟器的强大仿真下,GC已经认为自己读取到了z盘。
还有原谅我还活着,他把自己的一片上海思跃Sy2200A 开发板寄给了我,如果没有这个,这个计划恐怕2012年也完不成了。

实际运行录像:
http://v.youku.com/v_show/id_XMTkwNjkyMTk2.html

http://player.youku.com/player.php/sid/XMTkwNjkyMTk2/v.swf

 

第二阶段做可能就是优化速度了,现在loading非常慢。

未来的计划可能还包括wii的光驱模拟,以及自制GC数字输出,可能会是DVI之类的。

做点有意义的事情吧

刚删了个msn联系人,原因无他,只因此人经常在live space更新一些政治,宗教,修真的玩意。

我无法理解一个受过高等教育的程序员为什么会热衷于这些东西,练轮子了?被传销了?喝三鹿了?

Project Chameleon Work In Progress 13

焊接完成后,首要的工作就是再检查一遍是否存在短路,以及记录映射关系到文档……这么多线弄乱了可就很糟糕了。

其次的工作就是将FPGA板子和SY2200连接起来:

DSC01908

Project Chameleon Work In Progress 12

为了调试fx2lp固件,现在准备暂时不用FPGA板子上面的fx2lp而将FPGA和SY2200连在一起。

焊这个竟然用了两个多小时……电烙铁温度不足……

DSC01905

DSC01906

另外周末买到了透明的热缩管和杜邦线,效果很好

Untitled