看板Programming
标 题Re: [问题] 电玩模拟器是怎麽写出来的?
发信站中央大学松涛风情资讯站 (Mon Sep 1 21:58:29 2008)
转信站ptt!ctu-reader!ctu-gate!news.nctu!news.ncu!Evergreen
> ==>发信人: [email protected] (闇黑贵公子), 信区: programming
> ※ 引述《powerguy (小P)》之铭言:
> : 这个问题让我好奇很久了,而且也不知道能去哪问
> : 想来想去,我想还是这儿最适合吧,毕竟能写出模拟器的都是程式高手.....
> : 我想过
> : 方法1:厂商有公布or流出电玩的spec.
> : 听说当年GBA模拟器能那麽快写出来,就是规格外泄
> : 但那些规格未知的电玩模拟器是怎麽写的?
> 有种东西叫做示波器, 它可以探测讯号
> 有种东西叫做三用电表, 它的好处我举例不完
> 硬体高手可以藉着这两种基本工具和其他测试工具
> 画出大概的图或是 spec.
> 举例:
> 破解光碟保护不挑片的破解晶片就是这样来的
光靠这两个东西没那麽容易出名堂来
还有一个动辙百万台币起跳的东西叫做逻辑分析仪 (Logical Analyzer)
这东西才是真正破解硬体的好帮手
光是厂商公布的或外流出来的硬体规格而没有线路图的话, 是半个影都
不可能生得出来的. 光知道 CPU, GPU, Audio Processor 等主要晶片的
型号而不知道其它辅助晶片有哪些, 要猜出线路是怎样兜出来的恐怕比
中乐透头彩或被闪电击中的机率还低
> : 方法2:拆解硬体,然後写出模拟器
> : 觉得这方法根本是天方夜谭 = =
> 拆解硬体是一样要的
拆电路板量线路重建线路图也还只算是基本功
MAME team 在解保护 ROM 有一个方法是把 ROM chip 拆开拿到高倍显
微镜下去解读矽晶上的线路逻辑
> : 方法3:软体逆向工程
> : 例如藉由厂商公布电玩支援的指令集、API....等
> : 然後分析这些指令、API对应到的机码,藉此写出模拟器
> : 不过这方法是我乱想到的,不知道可行吗?
> : 请乡民补充,还有有错请更正
> : 谢谢 <(_ _)>
> 基本上, 经由 1, 2 的步骤就可以得知大致上的规格 (CPU/讯号 ... 等)
> 如果不知道, 换找一个硬体工程师来帮你检测
> 而 CPU 的指令码资料, 要弄到不是难事, 大部分资料网路上都有
没那麽简单. 尤其是某些游戏大厂特别爱用特制型的 CPU 来设计硬体
平台以提高某些特定部份的执行效率, 或是加入某些原 CPU 所没有的
特异功能. 那些特异化的部分虽然不多, 可也不是那麽容易就找得到
资料的, 甚至都是根本就没有资料的 undocumented function
再说如果板子上有用到 FPGA/CPLD 这一类的可程化逻辑阵列, 那要猜
出里面怎麽运做可就更是难罗
> 没有的话, 最好可以找到有在 "游戏开发产商" 内部工作的人
> 因为他们都会有 "整包的开发工具"
这个也没有那麽简单. 第一, 要找得到在游戏开发厂商内工作有交情的
人不是那麽容易, 更何况他们当初被雇用时一定会签保密合约. 第二,
就算透过种种正式授权之外的管道取得了开发包, 也不可能直接用, 因
为有法律问题. 而且写模拟器顶多拿这开发包当做模拟正确度的验证工
具, 不可能拿开发包来写模拟器. 第三, 就算取得开发包没有法律上的
问题, 开发包里面可能也只给你 object code library 而没有附上这
些 library 的 source code
> 等到这些都完备後, 基本上, 就可以开始写模拟器
其实, 写模拟器通常都是先写或找一个可运作的 CPU 模拟核心, 然後
再慢慢的把周边的支援晶片的模拟建立起来. 至於模拟器的正确度, 则
是手上有多少资料能有多少正确度就算多少, 不正确的部份再边猜边改
--
** 版权声明 **
本篇文章欢迎转载收录,无须为任何用途支付任何费用。
本文一经转载收录引用,本人即无须对其内容负责。
--
◎ Origin: 中央松涛站□bbs.csie.ncu.edu.tw From: 218-168-57-215.dynamic.hinet.
1F:→ MasterChang:便宜的LA几万就有了.... 140.132.23.74 09/02 02:04
2F:→ Lordaeron:多便宜都没用,猜不到chips的功能就白搭. 125.232.133.20 09/02 06:12