通過軟件將GBA轉換為GBC模式的例行程序!
源代碼可以在此處找到:
https://github.com/antoniond/gba-switch-to-gbc
一個演示代碼的視頻在這裡:
https://www.youtube.com/watch?v=pciqqqpokbgi
我對GBA BIOS進行了解剖,並尋找了檢查DISPCNT Bit 15(地址為0x00001958 )的說明。如果檢測到GBC購物車(在實際硬件中不可能)調用子例程。大部分只是屏幕淡出,但是有一些有關切換到GBC模式所需的寄存器配置的信息。
它甚至可以修改其他寄存器以更改GBC屏幕!它可以應用仿射轉換,也可以應用摩塞效應...在代碼中有一些可以測試的東西。
請注意,您可以通過按L鍵啟用的“拉伸屏幕”模式似乎繞過了所有轉換寄存器,但是Mosaic和GreensWap之類的效果仍在拉伸模式下應用。
請注意,一旦將GBC墨盒插入GBA中,就無法使用EWRAM。這意味著需要將切換到GBC模式(以及在切換之前等待的任何功能)以及函數使用的任何變量都需要放置。
它應該在GBA,GBA SP,GB Micro中起作用,但在DS中不能使用。如果我沒記錯的話,ARM7在NDS中有所不同。 DS中的GBA模式只是一種兼容模式,但是在GBA,GBA SP和GB Micro中,SOC也包括GBC CPU。
結果是:
GBC模式下的GB Micro似乎無法從購物車中讀取任何內容。我必須進行更多測試,但是我嘗試了一個以3.3V運行的墨盒,而GB Micro不會像真正的GBC或MGB一樣在Nintendo徽標中加載垃圾。
要構建它,您需要DevKitpro。
我的網站:www.skylyrac.net/
由於:
DWEDIT,對於試圖進入GBC模式的原始ROM:
https://www.dwedit.org/dwedit_board/viewtopic.php?id=339
極端,發現該代碼需要在IWRAM中才能真正起作用。
從這裡取:https://problembaputt.de/gbatek.htm#auxgbagamepakbus
8bit-gamepak-switch(GBA,僅GBA SP)(不是DS)
一個小開關位於墨盒插槽內部,當插入8位墨盒時,將開關向下推,當插入GBA彈藥筒時(或者未插入彈藥筒)時將其釋放。
開關可以機械地控制VDD3或VDD5是否在VDD35處輸出; IE。在GBA模式下,3V電源/信號用於墨盒插槽和鏈接端口,而在8位模式5V中使用。
當插入8位手推車時,該開關還可以通過端口4000204H(waitcnt)確定IN35的當前狀態,如果按下開關,則可以通過port 4000000h(Dispcnt.3)激活CGB模式,僅可以通過opcodes在bios in In Bios區域(cpus)設置該位。
在8位模式下,墨盒的工作原理與GBA SRAM相似,但是,預計在引腳5處的8位 /CS信號,而8位MBC芯片(如果有)將PIN 30時的GBA SRAM /CS2解釋為 /重置信號。實際上,這似乎導致00h在嘗試從GBA模式內部讀取8bit 8bit彈藥筒時被接收到數據。