一開始先弄一張全白的 PNG 來試著顯示在畫面上,結果還算成功…
之後就把原本要擺的畫面放進來試著顯示,結果有點淒慘…

不知為何整個顏色都跑掉,圖本身也扭曲了一邊。之後就一直在看是不是程式哪裡沒寫對,還是解讀資料時有誤…到後來才發現顏色會跑掉都是 RGB15 這個 macro 搞的鬼。原因是原本的 PNG 是以 24 bits 為單位來儲存每個像素 (每個 RGB 分別為 8 bits) 但是在 NDS 的 Framebuffer 模式底下則是 15/16 bits 為單位 (每個 RGB 分別為 5 bits) 所以產生色素顏色顯示錯誤的問題。至於解決的方法很簡單…那就是讀 PLTE 時順便將每個 RGB 值 * 5 / 8 來換算成顯示的單位就行了。
至於扭曲的問題,應該跟寬度記算錯誤有關…目前還找不到真正的原因,先暫時偷改了一下正確的程式碼讓它寬度少一格來把圖案調正。
暫時先這樣了,明天有時間再好好研究問題所在…
至於扭曲的問題,應該跟寬度記算錯誤有關…目前還找不到真正的原因,先暫時偷改了一下正確的程式碼讓它寬度少一格來把圖案調正。
暫時先這樣了,明天有時間再好好研究問題所在…



沒有留言:
張貼留言