รูทีนเพื่อเปลี่ยน GBA เป็นโหมด GBC โดยซอฟต์แวร์!
ซอร์สโค้ดสามารถพบได้ที่นี่:
https://github.com/antoniond/gba-switch-to-gbc
วิดีโอที่แสดงให้เห็นว่ารหัสอยู่ที่นี่:
https://www.youtube.com/watch?v=PCIQQPOKBGI
ฉันแยกแยะ GBA BIOS และค้นหาคำแนะนำที่ตรวจสอบ DISPCNT BIT 15 (ตามที่อยู่ 0x00001958 ) หากตรวจพบรถเข็น GBC (เป็นไปไม่ได้ในฮาร์ดแวร์จริง) รูทีนย่อยจะถูกเรียก ส่วนใหญ่เป็นเพียงหน้าจอที่จางหายไป แต่มีข้อมูลบางอย่างเกี่ยวกับการกำหนดค่าการลงทะเบียนที่จำเป็นในการเปลี่ยนไปใช้โหมด GBC
มันสามารถปรับเปลี่ยนการลงทะเบียนอื่น ๆ เพื่อเปลี่ยนหน้าจอ GBC! มันสามารถใช้การเปลี่ยนแปลงแบบเลียนแบบหรือใช้เอฟเฟกต์มอสซาอิก ... มีบางสิ่งที่จะทดสอบในรหัส
โปรดทราบว่าโหมด "หน้าจอยืด" ที่คุณเปิดใช้งานโดยการกด L ดูเหมือนว่าจะข้ามการลงทะเบียนการแปลงทั้งหมด แต่เอฟเฟกต์เช่นโมเสคและ Greenswap ยังคงใช้ในโหมดยืด
โปรดทราบว่าทันทีที่มีการใส่ตลับหมึก GBC ใน GBA จะไม่สามารถใช้ eWram ได้ ซึ่งหมายความว่าฟังก์ชั่นที่สลับไปใช้เป็นโหมด GBC (และฟังก์ชั่นใด ๆ ที่ใช้เพื่อรอก่อนการสลับ) จะต้องวางไว้ใน IWRAM รวมถึงตัวแปรใด ๆ ที่ใช้โดยฟังก์ชั่น
มันควรทำงานใน GBA, GBA SP, GB micro แต่ไม่ใช่ใน DS ถ้าฉันจำได้ถูกต้อง ARM7 จะแตกต่างกันใน NDS โหมด GBA ใน DS เป็นเพียงโหมดความเข้ากันได้ แต่ใน GBA, GBA SP และ GB Micro SoC รวมถึง GBC CPU ด้วย
ผลลัพธ์คือ:
ดูเหมือนว่า GB micro ในโหมด GBC ไม่สามารถอ่านอะไรได้จากรถเข็น ฉันต้องทำการทดสอบมากขึ้น แต่ฉันได้ลองใช้ตลับหมึกที่ทำงานที่ 3.3V และ GB Micro ไม่ได้โหลดขยะในโลโก้ Nintendo เช่น GBC หรือ MGB จริง
ในการสร้างมันคุณต้อง devkitpro
เว็บไซต์ของฉัน: www.skylyrac.net/
ขอบคุณ:
DWEDIT สำหรับ ROM ดั้งเดิมที่พยายามเข้าสู่โหมด GBC:
https://www.dwedit.org/dwedit_board/viewtopic.php?id=339
สุดขั้วสำหรับการค้นพบว่ารหัสต้องอยู่ใน iWram เพื่อใช้งานได้จริง
นำมาจากที่นี่: https://problemkaputt.de/gbatek.htm#auxgbagamepakbus
8bit-Gamepak-Switch (GBA, GBA SP เท่านั้น) (ไม่ใช่ DS)
สวิตช์ขนาดเล็กตั้งอยู่ภายในช่องเสียบสวิตช์สวิตช์จะถูกผลักลงเมื่อใส่ตลับหมึก 8 บิตมันจะถูกปล่อยออกมาเมื่อใส่ตลับหมึก GBA (หรือหากไม่มีการใส่คาร์ทริดจ์)
สวิตช์ควบคุมกลไกได้ว่า VDD3 หรือ VDD5 จะถูกส่งออกที่ VDD35 หรือไม่ เช่น. ในโหมด GBA 3V แหล่งจ่ายไฟ/สัญญาณใช้สำหรับช่องเสียบคาร์ทริดจ์และพอร์ตลิงค์ในขณะที่ใช้ในโหมด 8 บิต 5V
สวิตช์เพิ่มเติมลากใน 35 ถึง 3V เมื่อใส่รถเข็น 8 บิตสถานะปัจจุบันของ IN35 สามารถกำหนดได้ในโหมด GBA ผ่านพอร์ต 4000204H (waitcnt) หากสวิตช์ถูกผลักออกไปโหมด CGB สามารถเปิดใช้งานผ่านพอร์ต 40000H
ในโหมด 8 บิตรถบัสคาร์ทริดจ์ทำงานได้ดีสำหรับ GBA SRAM อย่างไรก็ตามสัญญาณ 8 บิต /CS คาดว่าจะอยู่ที่ PIN 5 ในขณะที่ GBA SRAM /CS2 ที่ PIN 30 ถูกตีความเป็นสัญญาณ /รีเซ็ตโดยชิป MBC 8 บิต (ถ้ามี) ในทางปฏิบัติสิ่งนี้ดูเหมือนจะส่งผลให้ 00H ได้รับเป็นข้อมูลเมื่อพยายามอ่านตลับหมึก 8 บิตจากภายในโหมด GBA