|
ทดลองสร้างไฟล์ cheat ของ Supercard Lite Micro SD
พอดีอยากเล่นเกมส์ Phantasy Star Zero ของ DS แต่มีการเขียน Code ดักไว้คือเมื่อสร้างตัวละครเสร็จ แล้วSave ก็จะ hang แต่มีคนเขียน cheat code แก้แล้วคือ 020C5690 E3A00000 020C5694 E12FFF1E 020C59F0 E3A00000 020C59F4 E12FFF1E แล้วจะนำมาใช้ใน Supercard Lite MicroSD อย่างไร Search แล้วได้วิธีจากที่ //www.scdev.org/forum/index.php/topic,14549.0.html หลักการคือ สร้าง Action Replay (txt) แล้วแปลงเป็น .cht แล้วแปลงเป็น .scc โดยใช้ Program จาก //eng.supercard.cn/soft_scl.htm ar2cht.ext สำหรับ .txt -> .cht cht2supercardcheat .cht->scc ซึ่งต้องมี ไฟล์ Unicode ด้วยไม่งั้นเมื่อแปลเสร็จจะได้ O byte
รูปแบบ Action Replay คือ หัวข้อหลักให้ใส่ @ หัวข้อรองให้ใส่ # เช่น @Phantasy Star Zero (J) Piracy Fix
020C5690 E3A00000 020C5694 E12FFF1E 020C59F0 E3A00000 020C59F4 E12FFF1E
ต่อไปถ้ามี code ก็นำไปสร้างเป็น scc ได้แว้วว
Create Date : 16 กุมภาพันธ์ 2552 | | |
Last Update : 16 กุมภาพันธ์ 2552 20:58:14 น. |
Counter : 1122 Pageviews. |
| |
|
|
|
|
เขียนเกม บนเครื่อง Nintendo DS : การใช้ Touch Screen
ครั้งนี้เป็นเรื่องการใช้ Touch Screen ตอนแรกก็คิดว่าง่าย แต่ทำไปทำมา ยากเหมือนกัน sourcecode+nds กดโหลดได้เลยครับ
====================================== touch=touchReadXY(); เป็นการอ่านค่าข้อมูลการใช้ ปากกา ซึ่งจะคล้ายๆการอ่านค่าการกดปุ่ม คือ scanKeys();
KEY_TOUCH สำหรับการตรวจสอบว่าปากกา กดบน หน้าจอหรือยัง โดยใช้คู่กับ pressed = keysDown(); และถ้าสังเกตดีๆ จะมีการใช้ held = keysHeld(); ด้วย ข้อแตกต่างระหว่าง keysDown(); และ keysHeld(); คือ เรื่องความต่อเนื่องของการกดปากกา ???
คำสั่งข้างล่าง นี้ถ้า เปลี่ยน held เป็น pressed จะเป็นเขียนเป็นจุดๆไป ? if ( (held & KEY_TOUCH ) && ( touch.px >= stX ) && (touch.px <= stX +w) && ( touch.py >= stY ) && (touch.py <= stY +h))
คำสั่งนี้ มีหน้าที่ ไม่ให้เกิดการ ลงจุด ก่อน กดปากกา ?? งงเหมือนกัน 55 แต่ดูตามตัวอย่างของ libnds if ( !(held & KEY_TOUCH) || touch.x == 0 || touch.y == 0) { continue;}
touch.px และ touch.py เป็นการบอกตำแหน่งปากกา สังเกต ดีๆ จะมีตัว p ด้วย
อีกอย่างเวลาเราเคลื่อนปากกาเร็วๆตำแหน่งของจุดจะไม่ต่อกัน ดังนั้นจึงต้องใช้ฟังก์ชั่นการเขียนเส้นตรง เข้ามาประกอบ โดย Modify จาก //en.wikipedia.org/wiki/Bresenhams_line_algorithm
ที่เหลือ ก็ดูใน sourcecode ละกันครับ
Create Date : 09 พฤศจิกายน 2551 | | |
Last Update : 9 พฤศจิกายน 2551 16:50:04 น. |
Counter : 645 Pageviews. |
| |
|
|
|
|
เขียนเกม บนเครื่อง Nintendo DS : การ Fade ระหว่าง 2 ภาพ และการเล่นเสียง MP3
.NDS + SourceCode โหลดได้เลยครับ
มาต่อกันเรื่อง ทำ Effect คือการ Fade ระหว่างภาพสองภาพ Register ที่เกี่ยวข้องคือ BLEND_CR และ BLEND_AB
การตั้งค่า BLEND_CR= BLEND_ALPHA | BLEND_SRC_BG2 |BLEND_DST_BG3; หมายถึง ให้ blend จาก BG2 ไปยัง BG3
การตั้งค่า BLEND_AB = ข้อมูล 16 bit bit 0-4 สำหรับ Source และbit 8-12 สำหรับ Destination โดยค่า 0 ไม่เห็นภาพ แต่ถ้าค่า 15 เห็นภาพชัดสุด ดังนั้นค่าเรา set ค่า bit 0-4 ให้มีค่า 0xF และ set ค่า bit 8-12 ให้มีค่า 0 จะเห็นภาพผู้หญิงภาพเดียว ในทางตรงกันข้ามถ้ากำหนดค่า bit 0-4 เป็น 0 และ bit 8-14 เป็น 0xF จะเห็นภาพผู้ชายภาพเดียว ซึ่งเราทำการ update ค่า BLEND_AB ในช่วง VBlank โดยฟังก์ชั่น UpdateBlend และเนื่องจากครั้งนี้เรามีการเล่นเสียง mp3 ดังนั้น เราจึงจำเป็นต้องใส่ฟังก์ชั่น UpdateBlend ใน ฟังก์ชั่น AS_SoundVBL()
การเล่นเสียง MP3 ใช้ Libary As_Lib ซึ่งหาได้จากที่นี้ เบื้องต้น เราต้อง include #include "as_lib9.h" และกำหนด file เสียง #include "test_mp3.h" แล้วอย่าลืมนำไฟล์ mp3 ไปใส่ใน Folder "data" ด้วยนะครับ
ตั้งค่า Libary เบื้องต้นด้วย AS_Init(AS_MODE_MP3 | AS_MODE_SURROUND | AS_MODE_16CH); AS_SetDefaultSettings(AS_PCM_8BIT, 11025, AS_SURROUND);
เล่น Mp3 ด้วย AS_MP3DirectPlay((u8*)test_mp3, (u32)test_mp3_size); และ Loop เพลงด้วย AS_SetMP3Loop(true);
และให้นำไฟล์ as_lib9 as_lib7 helix มาใส่ด้วย ดูใน code ประกอบล่ะกันครับ
สุดท้ายมีการปรับปรุงการแสดงภาษาไทยให้ใช้ memory น้อยลง โดยให้แสดงในMode 0 (คือการแสดงผลแบบ Text หรือ Tile) คือการปรับปรุงการ Putpixel โดยมีการ mark จุดที่ไม่เกี่ยวข้องก่อนใส่จุด ? ลองไล่ code ตามอีกที่นะครับจะเข้าใจมากขึ้น
ตอนนี้ก็น่าจะพอทำ Game Adventure ง่ายๆ สักเกมได้แล้ว ใครทำได้ส่งมาให้ดูด้วยนะครับ บอกอย่างนี้หลายครั้งแต่ไม่เห็นมีใครส่งมาเลยอ่ะหรือเราอธิบายไม่รู้เรื่องหว่า
Create Date : 11 ตุลาคม 2551 | | |
Last Update : 11 ตุลาคม 2551 23:19:55 น. |
Counter : 1144 Pageviews. |
| |
|
|
|
|
เขียนเกม บนเครื่อง Nintendo DS : Fade In, Fade Out, Mosaic และการ Scroll ฉากหลัง
Download .NDS + Source Here
มาครั้งนี้จะทดลองเล่นพวก effect ต่างๆ ได้แก่ Fade In, Fade Out, Mosaic และการ Scroll ฉากหลัง โดยมีหลักการง่ายดังนี้ Fade In และ Fade Out ทาง NDS มี Register ที่สำหรับจัดการในเรื่องนี้ 2 ตัวคือ BLEND_CR และ BLEND_Y BLEND_CR =BLEND_FADE_BLACK|BLEND_SRC_BG0; คำสั่งนี้เพื่อกำหนดให้มีการ Fade เป็นสีดำ(ถ้าเปลี่ยนเป็นBLEND_FADE_WHITE จะเป็นสีขาวมังไม่ได้ลอง) และกำหนดให้แสดงที่ Background 0 โดยมีลำดับการ Fade จาก 0 -16 (0=ไม่fade ... 16 = เป็นสีดำ) ดังนั้นใน Function จึงมีการไล่ระดับ จาก 0 ถึง 16 สำหรับ Fade Out และไล่ระดับจาก 16 ถึง 0 สำหรับ Fade In
ส่วนการทำภาพMosaic จะใช้การเปลี่ยนค่าของ register MOSAIC_CR สำหรับการทำภาพ Mosaic ของ Backgroud จะใช้ 8 bit ล่าง ซึ่งจะแบ่งเป็น 4 bit บน (ขนาดในแกนY)และ 4 bit ล่าง(ขนาดในแกนX) ดังนั้นค่าของขนาด Pixel จะไล่จาก 0 ถึง 15 โดยถ้าเป็น 0 ขนาดจะไม่เปลี่ยนแปลง และถ้าเป็น 15 จะทำให้pixel มีขนาดใหญ่สุด แล้วเราต้องไป enable Mosaic ที่ BACKGROUND.control[0] ด้วยค่าBG_MOSAIC_ON
สุดท้ายเป็นส่วนการ Scroll ฉากหลัง โดยการ ปรับค่า SUB_BG0_X0 สำหรับการ Scroll ในแนวแกน X และกำหนด BACKGROUND_SUB.control[0] ให้เป็นแบบ BG_WRAP_ON เพราะเมื่อ scroll จนสุดภาพ ระบบจะนำภาพทางซ้ายมาต่อ ? ส่วนการ ปรับค่า SUB_BG0_X0 ต้องทำตลอด เราจึงใช้ Interrupt VBLANK เพื่อเรียก function UpdateScroll() ที่เราสร้างขึ้นมา
เพิ่มเติมสักนิด ถ้าสังเกต ใน code ดีๆ จะพบว่าการแสดงผลภาษาไทยมีการปรับเปลี่ยนนิดหน่อย ตรงการ putpixel เนื่องจากแต่ก่อนกำหนด Background เป็น BMP16bit ทำให้ต้องใช้หน่วยความจำมากคือ 2 byte x 256 x 192 = 96 kBytes เราเลยทดลองเปลี่ยนเป็น BMP8bit ทำให้ลดการใช้หน่วยความจำ VRAM = 1 byte x 256 x 192 = 48 kBytes แต่ต้องมีการปรับเปลี่ยนนิดหน่อย ในการเข้าถึงหน่วยความจำ เพราะระบบ NDS จะเขียนอ่านในรูปแบบ 16 bit (ทำไมไม่ทำแบบ 8 bit หว่า) จึงต้องมีการคงค่า จุดเก่าที่เขียนไปแล้ว ลองไล่ code ดูละกัน ครับ
ครั้งหน้าคงหา effect อีกสักหน่อย เพื่อทำเกมพวก Adventure แบบ เกม Metal Slader Glory แต่ตอนนี้หา Font ไทย สวยๆ ไม่ได้เลยอ่ะ แบบ 8x16 น่า
Create Date : 03 ตุลาคม 2551 | | |
Last Update : 3 ตุลาคม 2551 20:20:01 น. |
Counter : 952 Pageviews. |
| |
|
|
|
|
| |
|
|