Ghidraboy: Sharp SM83 / Game Boy Extension สำหรับ Ghidra
ทดลองมาก! ไม่มีการรับประกันความเข้ากันได้!
รองรับ Ghidra รุ่น:

คุณสมบัติ
- Sharp SM83 (CPU Core ที่ใช้ใน Game Boy) รองรับการเลื่อน
- Game Boy Rom Loader:
- สามารถโหลด ROM ที่ไม่มีธนาคารได้ (<= 32KB, เช่น tetris)
- สามารถโหลด ROM ที่มีการเก็บรักษาได้ (> 32KB, เช่นโปเกมอน)
- สามารถโหลด ROM Boot Greyscale (DMG/DMG0/MGB/SGB/SGB2)
- สามารถโหลด ROM Boot Color (CGB/CGB0)
- บล็อกหน่วยความจำตามแผนที่หน่วยความจำฮาร์ดแวร์
- ภูมิภาคที่มีการงงใช้ซ้อนทับ (สิ่งที่ต้องทำ: คิดว่ามีวิธีที่ดีกว่าในการสนับสนุนพวกเขาหรือไม่)
- GB vs GBC ความแตกต่างได้รับการจัดการ (เช่น banked wram)
- สัญลักษณ์สำหรับการลงทะเบียนฮาร์ดแวร์ (ช่วง 0xffxx)
- GB vs GBC ความแตกต่างได้รับการจัดการ (เช่นการดำรงอยู่ของ Key1 register)
- ประเภทข้อมูลส่วนหัวของเกม Boy Boy
- ประเภทที่แจกแจงสำหรับบางสิ่ง
วิธีการติดตั้ง
- ดาวน์โหลดรุ่น prebuilt Ghidraboy หรือสร้างมันเอง
- เริ่ม Ghidra
- ไฟล์ -> ติดตั้งส่วนขยาย
- กดไอคอนบวก ("เพิ่มส่วนขยาย")
- เลือกไฟล์ซิป Ghidraboy ที่สร้างขึ้นหรือดาวน์โหลด
- รีสตาร์ท Ghidra เมื่อได้รับแจ้งให้โหลดส่วนขยายอย่างถูกต้อง
วิธีการสร้าง
ตามข้อกำหนดเบื้องต้นคุณต้องมีการติดตั้ง Ghidra ที่ไหนสักแห่ง (การติดตั้งจริงไม่ใช่สำเนาของซอร์สโค้ด Ghidra!)
export GHIDRA_INSTALL_DIR=/path/to/ghidra
./gradlew
หรือ
./gradlew -Pghidra.dir=/path/to/ghidra
จากนั้นคุณสามารถค้นหาส่วนขยายที่สร้างขึ้นได้. ZIP ในไดเรกทอรี build/distributions
เปิดคำถาม / ปัญหา
- เอาท์พุท decompiler นั้นยากที่จะอ่านหากใช้คำแนะนำบางอย่าง (เช่นการหมุน, JP HL สำหรับ Jumptables)
- ค่าเริ่มต้น "ASM Calling Convention" จะถือว่าการลงทะเบียนทั้งหมดสามารถเป็นอินพุตและ/หรือเอาต์พุต อินพุต/เอาต์พุตมักจะเดาไม่ถูกต้องดังนั้นจึงจำเป็นต้องมีการปรับแต่งด้วยตนเองสำหรับเกือบทุกฟังก์ชั่น
- การซ้อนทับเป็นทางออกเดียว / ที่ดีที่สุดสำหรับการจัดการพื้นที่หน่วยความจำที่มีการธนาคารหรือไม่? ตอนนี้ใน ROM ที่มีการเรียกเก็บเงินทุกฟังก์ชั่นโทรไปที่ 0x4000-0x7fff จะต้องได้รับการแก้ไขด้วยตนเองไปยังธนาคารที่ถูกต้องด้วยตนเอง
ใบอนุญาต
ได้รับใบอนุญาตภายใต้ใบอนุญาต Apache เวอร์ชัน 2.0