We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
執行的ROM: Galaga & Galaxian (J) [S].gb 遇到的狀況: 在進入遊戲後,畫面遇到下述異常:
Galaga & Galaxian (J) [S].gb
Galaga畫面會全白,但是操作仍有反應且聲音正常,戰鬥過程中只能看到移動中的物件
Galaxian類似於Galaga,但一開始會看到異常的READY字樣(如下圖所示)
可能原因推測:
Galaga & Galaxian為了要突破sprite個數限制,使用了一個特殊技巧,將大部分的物件交由bg顯示,僅有玩家與攻擊中的敵人會將該區域內的bg map清除後改由OAM控制的sprite繪製
Galaxian更進一步的加上了ScrollX暫存器的操作,實現快速平移多個物件
僅能看到移動中的物件是因為他們是sprite
透過觀察,可以得知顯示異常的皆為bg相關的圖形,因此可以將bug可能發生的範圍限縮
2.異常的READY字樣:
READY是sprite不是bg
LCD相關的除錯總離不開對各區域記憶體進行觀察,我們可以透過bgb觀察tile:
我們可以發現顯示錯誤的字母(E A Y)都剛剛好差了一個tile,且剛剛好又出現在正下方,因此可以懷疑OAM的解析出現問題,
導致讀取到錯誤的tile number和可能觸發了8*16模式
The text was updated successfully, but these errors were encountered:
後來進一步對instruction做分析,空白畫面的主因是因為LCDC Status Interrupt(0x48)的行為異常
一般來說,在進入48h中斷之後,應該要跳轉到0x42a,此時的LCD Mode應為0b11,LY==LYC會被檢查 在正確將STAT_LYC_COINC bit設為1之後觸發0x44b的or,另gb->gb_reg.LCDC & LCDC_BG_ENABLE為true
但gameboy_emu在0x42a的時候LCD Mode為0b01,LY==LYC不會被檢查,LCDC Bit 0也就不會被設為1 最終造成bg沒有被繪製(強行取消gb->gb_reg.LCDC & LCDC_BG_ENABLE判斷可以緩解問題,但我想應該會導致其他錯誤)
目前只能推斷是時序問題,但依照過往經驗,這類型的Bug並不好處理......
Sorry, something went wrong.
No branches or pull requests
執行的ROM:
Galaga & Galaxian (J) [S].gb
遇到的狀況:
在進入遊戲後,畫面遇到下述異常:
Galaga畫面會全白,但是操作仍有反應且聲音正常,戰鬥過程中只能看到移動中的物件
Galaxian類似於Galaga,但一開始會看到異常的READY字樣(如下圖所示)
可能原因推測:
Galaga & Galaxian為了要突破sprite個數限制,使用了一個特殊技巧,將大部分的物件交由bg顯示,僅有玩家與攻擊中的敵人會將該區域內的bg map清除後改由OAM控制的sprite繪製
Galaxian更進一步的加上了ScrollX暫存器的操作,實現快速平移多個物件
僅能看到移動中的物件是因為他們是sprite
透過觀察,可以得知顯示異常的皆為bg相關的圖形,因此可以將bug可能發生的範圍限縮
2.異常的READY字樣:
READY是sprite不是bg
LCD相關的除錯總離不開對各區域記憶體進行觀察,我們可以透過bgb觀察tile:
我們可以發現顯示錯誤的字母(E A Y)都剛剛好差了一個tile,且剛剛好又出現在正下方,因此可以懷疑OAM的解析出現問題,
導致讀取到錯誤的tile number和可能觸發了8*16模式
The text was updated successfully, but these errors were encountered: