.....才怪:(
這週處理的是狀態欄上方的bar
因為上週翻回去以前的blog文章 看到類似處理完的圖
我以為以前就弄好了.....
.....我錯啦!!(抱頭
以前真的就只是試做確認可行性
例如可以固定顯示某小隊長名字 但其實不能換人顯示
這次又是預設只有256個8x8可用 卻要改成可顯示~700個8x16
連那256個8x8字都是不知道壓縮放在哪(我也懶得查了)
反正硬幹等它丟到Ram我再去把代碼跟字型換掉
就出現了左下那張圖 事實上到這裡還不難
因為就固定是那幾個字 頂多一個早上就能弄好
可是要弄出右下圖就讓我傻眼了....
移動到不同小隊時會顯示小隊長名
原本遊戲人名都是平片假名 所以256個8x8字就夠用
但是現在有上千個中文人名(還有幾個擅長移動地形)
要從~700個8x16字隨意選出來....=_=|||
好吧 也只能看要什麼就臨時載入什麼到VRam
這邊的顯示函式又是照慣例跟其他地方不同
所以又硬著頭皮找遊戲原本是載入到VRam哪裡
然後隨時把要的文字動態取代掉其中的一部份字庫位置
再把代碼依序對應到那固定幾個位置
理論上就能成功了!......才怪:(
不知道什麼原因,直接從Rom丟字到VRam 0x0900位置時
一直無法順利取代掉該位置內容(這是第一次用DMA傳失敗)
試了一個下午 卻"意外"發現丟到0x0400反而可以成功
雖然後來猜測是之前為顯示左下圖而丟在Ram的文字
因為多寫的函式被別人呼叫而持續將它自動載入VRam同位置
導致我另外寫上去的動作在0x0800~0x1000被覆蓋掉
0x0000~0x0800則因為我沒有要拿來顯示 所以沒被別人呼叫到
不過....我在trace過程中 其實完全沒發現有被意外呼叫的情形
所以真正原因至今還是個謎....
まぁ.....反正最後有改出來就好XD
最後總計花了一天時間 多寫了3段函式處理這個bar 效果如下:
(....其實右下小隊長名用空白打混過去 我想80%的人也不會注意到吧....)
那麼 再改完最後一個地方就完成所有8x16字的部分了....
....很遺憾 其實前天想到還有音樂鑑賞模式沒弄....orz
假設1~2週解決1個課題的話(我不一定每週都有空檔....)
也許6月就可以來弄16x16劇情部分了