星期二, 3月 16, 2010

Just Try

因為校對TO真的很無聊
所以我稍稍了一下OB
好換一下口味

基本上
我是能不碰ASM就不碰
一來看code流程很無聊
二來替代函式容易出包

所以可以的話
我一般偏好按原算法
重新壓縮資料回原空間
這樣幾乎不會衝突當掉


不過......
偶爾還是有不用ASM寫新函式不行的情形.....
OB的狀態畫面就是其中之一

這個畫面主要會放512個(事實上不止)8x8圖像到VRAM
再選用這些8x8圖像拼出狀態畫面
其中作為字庫的部份近200個    用來放平片假名英數字等
(其他內容是職業icon、邊框、血條等....)
用兩個8x8圖像顯示8x12中文的話   塞不到100個字就爆了

而我估計  大約要近400個8x12中文字  
才能涵蓋所有姓名、職業、攻擊名、裝備名等用字
就算VRAM切換成mode 0  讓職業icon改用4色表示(原16色)
還是無法一次讀進4倍大的中文字庫

最後只好改寫新函式 
把人名、職業等所用的圖像編號鎖死成連續編號
把當下要用的字依序排好繪至RAM裡後
一次用DMA轉進到VRAM中的對應連續編號位址  
(理論上這樣就沒有了字庫大小的限制)
只是這函式僅能用於狀態畫面    其他畫面的要再改寫一下....

OB目前看來  最麻煩的就是這4倍文字量需求的狀態畫面
其他劇情對話等雖有壓縮    但很快就被找出位址跟演算法
狀態畫面則是花了我兩天時間才初步解決
不過這不代表我會繼續做下去就是了    
目前只是為了轉換心情用而已.....
何況戰神3也要出了.....

另外關於SFC ASM debugger
我是推薦用snes9x1.43.ep9r8比較方便
只可惜VRAM資料好像不能存出?