[心得] FC中文化經驗談(一)—作業前—
【前言】
看了lula大的SFC中文化經驗談後就有想法也寫一下自己做FC中文化的一些心得,
但一直沒付諸行動,趁著最近有點動力,趕快讓自己動手,
希望不要爛尾 XD
【正文】
本篇想先說些開始作業前一些我覺得先了解會有幫助的事項,
當然僅止於我了解的,可能有所謬誤,還請協助指正。
==========================================================================
一、關於紅白機
1. NES格式的檔案區塊
NES格式分三個區塊,依存放順序為Header、PRG-ROM、CHR-ROM,
通常情況下PRG是儲存程式碼及資料的,CHR是儲存圖形,
但本質上都是資料,所以也有把非圖形資料存在CHR的案例,
而Header應該是給模擬器使用的,
主要用來標示遊戲的Mapper、PRG和CHR的大小等資訊,
因此如果沒有Header,有些模擬器會無法開啟;
PRG、CHR個別遊戲大小不一定,Header則是固定16Bytes放在檔案前。
(圖:光神話的Header資訊,標示[iNes]的內容皆來自前16Bytes)
https://meee.com.tw/sirFyzT
(圖:超級瑪利歐將部分資料寫在CHR裡(紅框處))
https://meee.com.tw/YjpseBr
2. 主機的記憶體
CPU RAM: 要執行的程式或資料都要放進這裡,
其中0x8000~0xFFFF(後32KByte)會映射卡匣裡的PRG-ROM
PPU RAM: 要顯示的圖形都要放進這裡
其中0x0000~0x1FFF放Tile,中文化要改動的字庫就在這裡
3. Mapper
由於主機能映射卡匣的PRG位置只有0x8000~0xFFFF(32KByte),
Tile也只能放進PPU的0x0000~0x1FFF(8Kbyte),
初期遊戲如超級瑪利歐1(PRG:32K、CHR:8K)剛剛好可以全部載入沒什麼問題,
但大一點的遊戲就會爆掉,例如前述提到的光神話PRG就有128K,超出FC的規格,
所以FC用Mapper來讓開發者決定哪一區塊的PRG或CHR放進RAM裡,
除非可以維持檔案大小不變(卡匣未使用的空間夠多),
不然要做中文化大概率避免不了要跟Mapper打交道。
4. CHR-ROM
開發者可以決定把哪一區塊(Bank)的CHR-ROM放進記憶體,
所以每次要切換進PPU的大小是以區塊為單位,
而每區塊實際多大要看使用的Mapper規範,
這種方式好處是不管多大的圖形量都可以在一瞬間全部切進VRam,
壞處就是不靈活,每一區塊內容一開始就固定了,
所以得預先將要同時出現的圖形整理在同一區塊裡,
但我個人喜歡這類型的ROM。
5. CHR-RAM
有些遊戲沒有CHR-ROM,圖形資料是存PRG-ROM裡,
要顯示時是1Byte 1Byte寫進PPU RAM的,
這類遊戲使用的就是CHR-RAM,前述提到的光神話也在此列。
==========================================================================
二、工具
工具方面,lula大提到的的工具除模擬器外都可以適用,
故只需挑選好用的FC模擬器即可,
我個人目前是用Mesen,
但其實任一款有附帶debugger的模擬器都可以,
只是更強大的工具自然可以更好的完成工作,
所以除了debugger(用來看程式碼)外,
最好也要有Memory edit(直接修改CPU、PPU的記憶體內容)、
PPU Viewer(圖形化顯示PPU RAM)等功能;
一開始我使用fceuxdsp,後來使用fceux(fceu系列的最終版),現在則使用Mesen
==========================================================================
三、Mesen
大概介紹一下會用到的功能
1. Tools -> Log Window(查看ROM的格式)
https://meee.com.tw/sirFyzT
2. Debug -> Debugger(查看原始碼、中斷點設定)
https://meee.com.tw/AQtO7VN
3. Debug -> Memory Tools (檢視所有記憶體內容,最常會觀察的是CPU和PPU)
https://meee.com.tw/xWyvhAq
4. Debug -> PPU Viewer(圖形化顯示PPU RAM)
https://meee.com.tw/lapLSVj
大概就先這樣。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.192.217.145 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Emulator/M.1731922904.A.B5C.html