- กล่าวถึงเกร็ดที่คำรองของเกมอาร์เคด Street Fighter II อย่าง ‘World Warrior’ เคย สะกดผิดเป็น ‘World Warrier’ จนเกือบถึงวันวางจำหน่าย
- กราฟิกดีไซเนอร์ Akiman ไม่สามารถแก้ไขได้เพราะ GFX ROM ถูกเขียนลงไปแล้ว จึง ปรับให้ตัว ‘e’ ดูเหมือน ‘o’ ด้วยการประกอบสไปรต์
- เขานำบางไทล์จาก ‘World’ มาใช้ซ้ำเพื่อแทนที่ ‘ier’ แต่ผลลัพธ์กลับก่อให้เกิดปัญหาใหม่เป็น ‘The World Warrlor’
- หลังจากนั้นจึงใช้ ไทล์น่องของ Guile (0x96) มาช่วยตัดส่วนบนของตัว ‘l’ ในระดับพิกเซลให้ ดูเหมือน ‘i’ ในการแก้ไขชั่วคราว
- การแก้ไขนี้ถูกแทนที่อย่างเป็นทางการในเวอร์ชันถัดมา และแสดงให้เห็นถึง การรับมือเชิงเทคนิคอย่างละเอียดกับการแก้ปัญหาอย่างสร้างสรรค์ในการพัฒนาเกม
การพบคำสะกดผิดและจุดเริ่มต้นของการแก้ไข
- พบว่า คำรองของ Street Fighter II อย่าง ‘World Warrior’ ถูกระบุผิดเป็น ‘World Warrier’ ก่อนวางจำหน่าย 3 วัน
- Akiman ย้อนความว่า “พบความผิดพลาดที่เลวร้ายมาก” และอธิบายว่า GFX ROM ถูกเขียนไปแล้วจึงแก้ไขไม่ได้
- GFX ROM ใช้เก็บข้อมูลกราฟิก ส่วน 68000 ROM ใช้เก็บคำสั่ง และ กราฟิก ROM อยู่ในสถานะที่แก้ไขไม่ได้
- Akiman จึงลองใช้วิธีซ้อนสไปรต์เพื่อทำให้ตัว ‘e’ ดูคล้าย ‘o’ และทำให้เกิดการ แก้ไขในเชิงภาพ
การแก้ปัญหาชั่วคราวด้วยการเปลี่ยนไทล์
- โลโก้ประกอบด้วย 16 ไทล์ (
0xC8~0xDF) และ Akiman ได้ ลบสามไทล์สุดท้าย (0xDD~0xDF) แล้วแทนด้วย 0xCD, 0xCE
- ผลคือ ‘World Warrier’ กลายเป็น ‘World Warrlor’ แต่ก็ยังเหลือ ปัญหาที่ตัว ‘l’ ดูไม่เหมือน ‘i’
- เนื่องจาก CPU 68000 ไม่สามารถแก้ไขไทล์ได้โดยตรง จึง จำเป็นต้องมีการปรับในระดับพิกเซล
การแก้ไขพิกเซลด้วยไทล์ของ Guile
- กุญแจสำคัญของการแก้ปัญหาอยู่ที่ ไทล์น่องของตัวละคร Guile (
0x96)
- ไทล์นี้มีการแสดงผลเพียงพิกเซลเดียวที่มุมล่างซ้าย
- CPU 68000 สามารถเลือกพาเลตได้อย่างอิสระ และจึง อาศัยความต่างของสีจากการเปรียบเทียบพาเลตของ Guile กับพาเลตของโลโก้
- ดัชนี 14 ของพาเลต Guile เป็นสีเขียวเข้ม แต่ในพาเลตของโลโก้เป็นสีน้ำเงินเข้ม
- เมื่อนำไทล์นี้มาใช้กับพาเลตของโลโก้ จึงทำให้ 255 พิกเซลโปร่งใส และใช้เพียง 1 พิกเซลราวกับเป็น ‘ดินสอ’
- ด้วยคำสั่งวาด 3 ครั้ง จึงตัดส่วนบนของตัว ‘l’ ออกให้ ดูเหมือนจุดของตัว ‘i’
ผลลัพธ์และเวอร์ชันถัดมา
- ด้วยการแก้ไขชั่วคราวนี้ ทำให้บนหน้าจอสุดท้าย มองเห็นเป็น ‘World Warrior’ ได้สำเร็จ
- ในเวอร์ชันถัดมาได้เพิ่มชุดไทล์ ‘IOR’ ที่ถูกต้องแล้ว แต่ ไม่ได้ถูกใช้งานเพราะคำรองเปลี่ยนเป็น ‘Champion Edition’ และ ‘Hyper Fighting’
ความหมายทางเทคนิค
- กรณีนี้แสดงให้เห็นว่า แม้อยู่ภายใต้ข้อจำกัดของฮาร์ดแวร์อาร์เคดแบบ ROM ก็ยังสามารถแก้ปัญหาอย่างสร้างสรรค์ได้
- การแก้ไขโดยใช้พิกเซลเพียงจุดเดียวถือเป็นตัวอย่างของการผสานกันระหว่าง การควบคุมกราฟิกอย่างละเอียดกับความเข้าใจฮาร์ดแวร์
- กระบวนการแก้คำสะกดผิดนี้จึงกลายเป็นเกร็ดที่สะท้อนถึง การดีบักอย่างละเอียดและทักษะการรับมือเชิงปฏิบัติในการพัฒนาเกม
1 ความคิดเห็น
ความเห็นจาก Hacker News
โซเชียลมีเดีย ที่แท้จริงก็คือตู้อาร์เคด
ท่ามกลางเสียงลูกโบว์ลิ่งกลิ้งในสปอร์ตเซ็นเตอร์ ก็รู้ได้ทันทีว่าตู้เกมของฉันคือตู้ไหน
ผู้คนจะมายืนล้อมดู พูดหยอกล้อกัน เป็นพื้นที่ที่เต็มไปด้วยสมาธิและเสียงเฮ
มีช่วงเวลาหนึ่งที่เด็กคนหนึ่งซึ่งกำลังจับจอยสติ๊กได้รับ ความเคารพ จากทุกคน ก่อนที่บัลลังก์จะเปลี่ยนมือด้วยหมัดมังกรที่สมบูรณ์แบบเพียงครั้งเดียว และทุกคนก็ส่งเสียงเชียร์
เป็นยุคที่เราวางเหรียญรอคิวรอบถัดไป และแชร์ โดพามีน กับคนแปลกหน้า
ตอนนี้โลกเชื่อมต่อกันมากกว่าที่เคย แต่กลับรู้สึกห่างเหินกันมากขึ้น
ฉันได้เล่นกับเพื่อนรุ่นที่สองชาวม้งซึ่งครอบครัวย้ายถิ่นมาหลังสงครามเวียดนาม ฉันเลือก Ken ส่วนพวกเขาเลือก Ryu
เวลาที่เราแข่งกัน หัวเราะกัน และสอนท่าต่าง ๆ ให้กันและกัน คือ บทเรียนของการปฏิสัมพันธ์ทางสังคม อย่างแท้จริง
เพื่อนที่เรียนโรงเรียนเอกชนอาจพลาดประสบการณ์แบบนี้ไป
แม้จะมี SF2 อยู่ตามร้านเกม แต่คนส่วนใหญ่เล่นโหมดคนเดียวมากกว่าจะเล่นสู้กัน
เพราะราคาเล่นหนึ่งรอบแพงเกินไป ทุกคนจึงร่วมมือกันเล่นซิงเกิลเพลย์ และเกม PvE อย่าง Gauntlet หรือ Knights of the Round ก็ได้รับความนิยม
เป็นวัฒนธรรมที่ต่างออกไปโดยสิ้นเชิง
ที่ญี่ปุ่นวัฒนธรรมอาร์เคดยังมีชีวิตอยู่
ความคิดถึงแบบนี้เลยให้ความรู้สึก ย้อนแย้ง นิด ๆ
ด้วยรูปแบบที่ใช้กำแพงร่วมกัน มันทำให้ได้คุยกับคนแปลกหน้าอย่างเป็นธรรมชาติ และแค่ใช้เวลาไม่กี่ชั่วโมงก็สนุกได้เต็มที่
คิดว่ายังมีกีฬา เชิงสังคม แบบอื่นอีกมากที่เหมาะกับแต่ละช่วงวัย
เรื่องนี้น่าสนใจมากจริง ๆ
หนึ่งในกรณีที่ฉันชอบคือเรื่องที่ Naughty Dog ใช้ EULA เพื่อแก้ไข Ratchet and Clank
อ่านรายละเอียดได้ในบล็อกโพสต์นี้
ร้านแฮมเบอร์เกอร์แถวบ้านมี ตู้ SF2 อยู่ตู้หนึ่ง และติดภาพวาดด้วยมือแทนสติกเกอร์
ด้านบนเขียนว่า ‘HYRER FIGHTING’ และเมื่อคิดถึงการสะกดผิดของ ‘WORLD WARRIER’ ก็รู้สึกว่าเข้ากันดีเหลือเกิน
อยากรู้ว่าได้ดู วิดีโอ YouTube ที่เกี่ยวข้องเมื่อเร็ว ๆ นี้ไหม
ชื่อว่า “It sounds dumb but they really fixed a typo with a human leg” และมีลิงก์วิดีโอด้วย
เป็นวิดีโอที่ทำออกมาได้ดีทีเดียว
พออ่านเรื่องนี้วันนี้ก็เลยสงสัยขึ้นมาว่าสมัยก่อนเขาทำ การเรนเดอร์ข้อความ กันอย่างไร
มันทำให้นึกขึ้นมาอีกครั้งว่าเมื่อก่อนฟังก์ชันอย่าง
drawTextไม่ใช่ของที่มีให้ใช้กันเป็นเรื่องปกติเป็นยุคที่แม้แต่การแสดงตัวอักษรก็ต้อง ลงมือทำเอง
ทำให้นึกถึงประโยค “Thank you for playing Wing Commander! ”
เป็นประโยคที่สะกิดอารมณ์ยุคนั้นได้อย่างแม่นยำ
มันเป็นข้อความชั่วคราวเพื่อหลีกเลี่ยงการชนกันของระบบจัดการหน่วยความจำ
นึกถึงเกม Continental Circus ขึ้นมา
มีส่วนเกร็ดความรู้ในลิงก์ Arcade Museum
ในภาษาญี่ปุ่น ‘Circuit’ คือ サーキット และออกเสียงต่างจาก ‘サーカス’ อย่างสิ้นเชิง
แถมการเรียก F1 ว่า ‘circus’ ก็เป็นสำนวนที่ใช้กันทั่วไป ไม่ใช่แค่ในญี่ปุ่นแต่ทั่วโลก
เรื่องที่บอกว่าใช้ draw call 3 ครั้งกับพิกเซล 3 จุด เพื่อวาดน่องของ Guile นี่ตลกมาก
เป็นยุคที่ยังไม่มีระบบปฏิบัติการหรือกราฟิก API และต้องเข้าถึงหน่วยความจำฮาร์ดแวร์โดยตรง
มีคนแซวว่าอยากให้ใครสักคนไปแก้คำสะกดผิด “Bimmy and Jimmy” ใน Double Dragon เสียที