Sufficiency Economy
Group Blog
 
All blogs
 
Wonderswan Emulator for DSi


หลังจากได้ซื้อ Wonderswan จาก ebay เพื่อเล่นเกมส์ของค่าย สี่เหลี่ยม
แต่ไม่ Work เพราะหน้าจอไม่ชัดมากมาย ขนาดเป็นรุ่น Crystal แล้วก็เหมือน gameboy Advance รุ่นแรกๆ ต้องเอียงๆไปเอียงมาหามุมที่ภาพชัด

เลยไปค้นในอากู๋ มีคนทำ emulator บน nds ชื่อ dualSwan อยู่ที่
//www.liranuna.com/nds-projects/dualswan/
แต่ File ดัน Download ไม่ได้อีก จึงหาอีกไปได้ที่
//library.dev-scene.com/index.php?dir=DS/Emulators/dualSwan/
โดยมี ทั้ง Binary และ source code เอาแบบ bin มาใช้ สรุปแล้วใช้ไม่ได้
กับตลับ Flash รุ่นใหม่

แต่เนื่องจากมี source เลยลองแกะๆ ดู ก็ยากมากๆๆๆ เลยคิดว่าค่อยๆ ทำความเข้าใจกับมัน แล้วแก้ไขเพื่อรันบน DSi น่าจะได้

เริ่มจาก spec ของเครื่อง Wonderswan
Resolution: 224 x 144 pixels
CPU : NEC V30 MZ at 3.072 MHz
Hblank : 256 CPU cycles
Vblank : 159 Hblank = 159*256/3072000 = 75.47Hz
Graphic ขาวดำ
Max. 512 characters per layer, max. 128 sprites (32 on one horizontal line), two screens (overlay possible), screen windows and sprite windows.
Graphics: 8-shade monochrome in the dot matrix section and six icons at the static section.

Graphic รุ่น สี
colours: 241 out of 4096 colors

ต่อไปก็วิธีเขียน emulator เบื้องต้น ก็ที่นี้
//fms.komkon.org/EMUL8/HOWTO.html
พอสรุปคร่าวๆ ได้ตามนี้
มีวิธีเขียน 3 แบบคือ Interpretation, Static Recompilation, Dynamic Recompilation
แบบที่ 1 Interpretation
while(CPUIsRunning)
{
Fetch OpCode
Interpret OpCode
}
คือการอ่าน code ที่ละ byte แล้วนำมาแปลความหมาย แล้วก็ทำMethodที่เหมาะสม กับ registers, memory, and I/O ?
เป็นวิธีที่ง่ายที่สุด แต่ไม่ค่อยมีประสิทธิภาพ เพราะต้องใช้ CPU ที่แรงๆ

แบบที่2 Interpretation
โดยทำการแปลงให้เป็นassembly code ของเครื่องนั้นๆ ในที่นี้ก็คือ DSi แต่เค้าบอกว่าเป็นไปไม่ได้เนื่องจาก ในบางครั้งเราจะไม่ทราบว่าโปรแกรมจะทำอะไร นอกจากเราได้ run โปรแกรมไปแล้ว

แบบที่3 Dynamic Recompilation
จะทำการ recompilation ตอนโปรแกรมทำงาน เช่นตอนเรียกคำสั่ง CALL หรือ JUMP
ซึ่ง dualSwan ใช้เทคนิคนี้ (คิดว่าใช่)

เอาแค่นี้ก่อนล่ะกัน งงส่ะ


Create Date : 30 พฤศจิกายน 2553
Last Update : 4 พฤศจิกายน 2555 15:04:13 น. 1 comments
Counter : 1086 Pageviews.

 
แล้วอยากขายเครื่องเกมหรือเปล่าครับ


โดย: Bugcreative IP: 171.4.91.180 วันที่: 22 เมษายน 2557 เวลา:3:49:04 น.  

ชื่อ :
Comment :
  *ใช้ code html ตกแต่งข้อความได้เฉพาะสมาชิก
 

wink99_th
Location :
พิษณุโลก Thailand

[Profile ทั้งหมด]

ฝากข้อความหลังไมค์
Rss Feed
Smember
ผู้ติดตามบล็อก : 8 คน [?]




New Comments
Friends' blogs
[Add wink99_th's blog to your web]
Links
 

 Pantip.com | PantipMarket.com | Pantown.com | © 2004 BlogGang.com allrights reserved.