通过软件将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弹药筒时被接收到数据。