[閒聊] 讓超任也能撥動畫的MSU1晶片
原文發表於個人部落格:http://kwl.vcity.biz/blog/?p=1195
與獨立遊戲開發者分享會:http://igdshare.org/content/msu1
以下為去圖後全文轉貼:
對超級任天堂(SFC/SNES)這台主機有些許研究的玩家都知道,
超任雖然有著當代家用主機中最強的顯示晶片與聲音晶片,
但主CPU其實弱得可以,時脈只有同期競爭者MD或PC-E的一半左右,
不過這個弱點很快的就被「遊戲卡匣搭載特殊晶片」這種方式給補強,
代表性的例子就是讓超任可以做出3D射擊遊戲STARFOX的Super-FX晶片,
基本上你看到哪些畫面或特效表現讓人驚豔的超任遊戲,
很可能就是特殊晶片輔助運算下的成果。
因為多半是訂製的特製品,資料也不可能公開,
使用的遊戲又不多(代表逆向工程時可參考的東西少),
所以這些特殊晶片一直是超任模擬器發展路上最棘手的地方。
前陣子超任模擬器bsnes的作者byuu用磨開晶片+電子顯微鏡的方式解析特殊晶片的電路,
宣稱藉此終於讓bsnes達到了前人從未能達到的超任100%完全模擬境界,
沒想到的是,他還做了一件更瘋狂的事,那就是自己設計一個全新的超任用特殊晶片!
這個特殊晶片叫做MSU1,MSU for Media Streaming Unit,
功用在於它可以讓超任遊戲支援到4GB的檔案大小,
並提供超任遊戲full motion video(尺寸240×144,256色、30fps)
與無壓縮44.1KHz 16-bit立體聲PCM(相當於audio CD等級)的撥放能力!
這個MSU1晶片其實不是真的做了個實體晶片出來,
而是用類似模擬器模擬Super-FX晶片的方式,
讓自製程式的作者可以透過虛擬的MSU1晶片來實作視訊或音訊串流,
目前也只有本家的bsnes模擬器有支援,
但大家都知道,這年頭還想自製超任遊戲,
為的就是讓遊戲跑在超任實機上的那種浪漫啊,
只能跑在模擬器上還不如直接做PC遊戲就好咧。
但正所謂時代會進步,
當年大家都用過的超任磁碟機式技術也不會永遠停留在只能讀磁片
──所以看到sd2snes這種東西就別太意外啦,
簡單說,這就是用SD卡當存取媒介的超任燒錄卡啦,
而且,它也支援了虛擬的MSU1特殊晶片!
這就是MSU1+sd2snes於超任實機上的影片撥放demo:
http://www.youtube.com/watch?v=yULkopwR8oA
(如果你覺得畫質嚇死人的高,
我想那應該只是CRT+AV端子+翻攝效果搭配起來所產生的錯覺XD )
這是用MSU1撥放PCM音源的自製Super Mario:
http://www.youtube.com/watch?v=opsorqVVkuk
然後,經典FMV遊戲Road Blaster透過MSU1移植到超任上面啦:
http://www.youtube.com/watch?v=THJvsIezXrQ
7分55秒開始是MD-CD版與超任MSU1版Road Blaster的比較動畫:
http://www.youtube.com/watch?v=c-DEPDya02o&t=7m55s
(未成年的好孩子請在16分40秒前就把影片關掉以免影響身心健康)
從比較中可以看出,不論是發色數或者frame數,
MSU1版都明顯勝過MD-CD版(MD-CD版推測只有16色、15fps),
MSU1版的問題在於相較之下影片撥放的速度有比較慢些。
不過啦,畢竟兩者間的影像壓縮技術可是差了約20年(MD-CD版於1992年推出),
而且MSU1版還有卡匣的高速讀取優勢,
MD-CD版則必須把資料量壓在1x CD-ROM的物理限制內,
所以這比較不盡然公平啦,只是種參考。
總之MSU1這東西實在是非常特別,
某種程度上它也讓人可以更進一步的想像如果當年超任的CD-ROM有推出的話,
大概會是什麼效果吧。
而我的結論是我們又再一次見證了獨立製作homebrew社群的強大技術力!
--
◥ ▅ █ˍ ▊◥◥ ◢ ◤ ▁ █▅ ▇◣ ◤
◥ ████ ██◣ ███▋ ▄▃▃▃▂ ◥▆▅▆◣ ▎▄▌ ◢ ◤
◢ █ ◤ █ █ ◢◤▃ ▃▃▃▃ ▉ ▋◤▌▎▄▌ ◢ ◤
◥ ◥█◣ ◤ ◤ ◤ ▄▃ ◥ __ˍˍ◣ █▆▆◤ ▍▄◣ ◣
◥ ▇ ▆ ◤ ◤ ▍ ◤
◥ http://cubeat.game.tw/346 ◤
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.69.6.175
推
08/25 14:53, , 1F
08/25 14:53, 1F
→
08/25 15:01, , 2F
08/25 15:01, 2F
→
08/25 15:02, , 3F
08/25 15:02, 3F
→
08/25 15:16, , 4F
08/25 15:16, 4F
推
08/25 16:59, , 5F
08/25 16:59, 5F
推
08/25 17:03, , 6F
08/25 17:03, 6F
推
08/25 18:47, , 7F
08/25 18:47, 7F
推
08/25 19:33, , 8F
08/25 19:33, 8F
推
08/25 19:37, , 9F
08/25 19:37, 9F
推
08/25 20:33, , 10F
08/25 20:33, 10F
→
08/26 00:41, , 11F
08/26 00:41, 11F
推
08/26 02:43, , 12F
08/26 02:43, 12F
→
08/26 02:44, , 13F
08/26 02:44, 13F
推
08/26 02:47, , 14F
08/26 02:47, 14F
推
08/26 11:38, , 15F
08/26 11:38, 15F
→
08/26 12:40, , 16F
08/26 12:40, 16F
→
08/26 12:41, , 17F
08/26 12:41, 17F
推
08/26 14:04, , 18F
08/26 14:04, 18F
推
08/26 14:07, , 19F
08/26 14:07, 19F
→
08/26 14:08, , 20F
08/26 14:08, 20F
推
08/26 17:47, , 21F
08/26 17:47, 21F
推
08/26 21:17, , 22F
08/26 21:17, 22F
→
08/27 01:59, , 23F
08/27 01:59, 23F
→
08/27 02:00, , 24F
08/27 02:00, 24F
推
08/27 15:44, , 25F
08/27 15:44, 25F
推
08/28 08:24, , 26F
08/28 08:24, 26F
推
08/30 10:45, , 27F
08/30 10:45, 27F
推
08/30 23:12, , 28F
08/30 23:12, 28F
→
08/30 23:13, , 29F
08/30 23:13, 29F
→
08/30 23:16, , 30F
08/30 23:16, 30F
推
09/06 02:01, , 31F
09/06 02:01, 31F
→
09/06 02:01, , 32F
09/06 02:01, 32F
推
09/09 04:28, , 33F
09/09 04:28, 33F
推
09/13 15:01, , 34F
09/13 15:01, 34F