1 คะแนน โดย GN⁺ 2024-07-30 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

การออกแบบระบบวิดีโอของ Super Nintendo

ภายในของทีวีในช่วงต้นยุค 90
  • Super Nintendo ส่งสัญญาณวิดีโอออกไปยังทีวีมาตรฐาน
  • ทีวีรับสัญญาณโทรทัศน์แอนะล็อก (NTSC) ผ่านเสาอากาศ รับสัญญาณผ่านจูนเนอร์ และแสดงภาพบน CRT (หลอดรังสีแคโทด)
  • ทีวีมีอินพุตเสริม (AUX) และทีวีทั่วไปมีคอนเน็กเตอร์คอมโพสิต (สีเหลือง) สำหรับส่งสัญญาณวิดีโอ และแจ็กเฉพาะสำหรับสัญญาณเสียงสเตอริโอ (สีขาวและสีแดง)
หลักการทำงานของ CRT
  • CRT ทำงานที่ 15kHz และวาดเส้นประมาณ 15,000 เส้นต่อวินาที
  • ภายใน CRT มีปืนอิเล็กตรอนสามกระบอก ซึ่งจะยิงอิเล็กตรอนไปด้านหน้าเสมอ และมีชุดแม่เหล็กสองชุด (แนวตั้งและแนวนอน) สำหรับเบี่ยงอิเล็กตรอนขึ้นลงและซ้ายขวา
  • CRT ไม่มีพิกเซล และอิเล็กตรอนที่ยิงออกจากปืนอิเล็กตรอนจะไปถึงแถบสีที่ถูกต้องเสมอ
วิธีควบคุม CRT
  • CRT รับสัญญาณแดง เขียว น้ำเงิน โดยเชื่อมต่อกับปืนอิเล็กตรอนแต่ละกระบอกโดยตรง
  • สัญญาณซิงก์ (HSYNC และ VSYNC) ถูกส่งผ่านสายสีขาวเส้นเดียว ซึ่งเรียกว่าสัญญาณซิงก์รวม (CSYNC)
  • CRT จะรับสัญญาณและพยายามซิงก์ปืนอิเล็กตรอนให้ตรงกัน
วิธีที่ CRT วาดภาพ
  • CRT วาดเส้นจากซ้ายไปขวา
  • เมื่อได้รับเหตุการณ์ HSYNC มันจะกลับไปทางซ้ายของหน้าจอ (X=0) และเมื่อได้รับเหตุการณ์ VSYNC มันจะกลับไปด้านบนสุดของหน้าจอ (Y=0)
  • CRT วาดเส้นขณะเคลื่อนไปทางขวาพร้อมกับเอียงลงด้านล่าง
หัวใจสำคัญของการเข้าใจ CRT
  • แก่นสำคัญของ CRT คือการเข้าใจว่าปืนอิเล็กตรอนเคลื่อนไปทางขวาของหน้าจอพร้อมกับเอียงลงด้านล่าง
  • หาก VSYNC เกิดขึ้นพร้อมกับ HSYNC สุดท้าย เส้นจะถูกวาดที่ตำแหน่งเดิมของหน้าจอเสมอ
  • หาก VSYNC เกิดขึ้นระหว่าง HSYNC สองครั้ง เส้นจะถูกวาดแบบไขว้กัน
เนื้อหาภายในเส้น
  • CRT เป็นดิจิทัลในแง่ของการวาดเส้น แต่เนื้อหาภายในเส้นเป็นแอนะล็อก
  • ปืนอิเล็กตรอนทั้งสามเชื่อมต่อโดยตรงกับสาย RGB และระบบสามารถเปลี่ยนสัญญาณสีได้อย่างอิสระ
การจัดการของระบบแบบเดิม
  • ผู้ออกแบบ SNES ต้องสร้างสัญญาณที่ CRT สามารถจัดการได้
  • ต้องปฏิบัติตามข้อกำหนดของสัญญาณ NTSC
  • อัตราส่วนภาพ 4:3, 262.5 เส้นต่อฟิลด์, 341.25 จุดต่อเส้น, ความถี่ฟิลด์ 59.94Hz
การเป็นวิศวกรของ Nintendo
  • หลังจากเข้าใจการทำงานของ CRT แล้ว ก็ต้องออกแบบระบบวิดีโอ
  • ใช้ 262 เส้นเพื่อสร้างโหมดโปรเกรสซีฟ และตั้งเป้าอัตราเฟรมที่ 59.94Hz
  • ใช้ 350 จุดเพื่อให้ได้อัตราส่วนภาพ 4:3 และต้องใช้ดอตคล็อก 5,496,498Hz
การแก้ปัญหา
  • ไม่สามารถใช้ดอตคล็อก 5,496,498Hz ได้
  • ต้องใช้มาสเตอร์ออสซิลเลเตอร์ แล้วให้ระบบย่อยนำไปหารความถี่ผ่านตัวแบ่งสัญญาณ
  • ต้องแก้ปัญหาโอเวอร์สแกน
การนำโอเวอร์สแกนมาใช้
  • หากปืนอิเล็กตรอนยังยิงอิเล็กตรอนต่อไปในขณะที่กำลังรีเซ็ตในแนวนอนหรือแนวตั้ง จะเกิดอาร์ติแฟกต์ที่มองเห็นได้
  • ทีวีจะโอเวอร์สแกนพื้นที่หน้าจอ ทำให้ภาพแสดงใหญ่กว่าพื้นที่จริงเล็กน้อย
  • จำเป็นต้องมีช่วงเวลาที่หยุดปืนอิเล็กตรอนหลัง VSYNC และ HSYNC
การเลือกความละเอียดแนวตั้งของ SNES
  • ระบบคู่แข่งใช้เส้นที่มองเห็นได้ 224 เส้น
  • Nintendo แบ่ง 262 เส้นออกเป็น 224 เส้นที่มองเห็นได้ และ 38 เส้นว่าง
การเลือกความละเอียดแนวนอนของ SNES
  • ใช้ 262 เส้น และใช้มาสเตอร์คล็อก 21.47727MHz เพื่อให้ได้ดอตคล็อก 5.3693175MHz
  • ใช้ 341 จุดเพื่อให้ได้อัตราเฟรม 60.098Hz
การเลือกโอเวอร์สแกนแนวนอนของ SNES
  • จาก 341 จุด ใช้ 256 จุดที่มองเห็นได้ และใช้ 85 จุดเป็น HBLANK
  • อัตราส่วนภาพเป็น 8:7 ทำให้เกิดความบิดเบี้ยวเล็กน้อย
โหมดความละเอียดสูง: อินเทอร์เลซ
  • สามารถเพิ่มความละเอียดแนวตั้งเป็นสองเท่าไปที่ 448 เส้นได้
  • การเพิ่มความละเอียดแนวนอนเป็นสองเท่าทำได้ยาก
PAL เทียบกับ NTSC
  • ในยุโรปใช้ PAL แทน NTSC และในฝรั่งเศสใช้ SECAM
  • PAL ใช้อัตราเฟรม 50Hz และ 312.5 เส้นต่อฟิลด์
  • SNES เวอร์ชัน PAL ใช้มาสเตอร์คล็อก 17.7344750MHz
  • ความละเอียดที่มองเห็นได้ใช้ 224 เส้นและ 256 จุด และมีอัตราเฟรม 50.00697891Hz
เอาต์พุต
  • SNES แปลงสัญญาณ CRT เป็นคอมโพสิตและ S-Video
  • ผ่านคอนเน็กเตอร์ AV จะให้สัญญาณ "RGB/CSync" แบบบริสุทธิ์, สัญญาณ "Composite" และสัญญาณ S-Video

สรุปโดย GN⁺

  • บทความนี้อธิบายกระบวนการออกแบบระบบวิดีโอของ Super Nintendo โดยครอบคลุมหลักการทำงานของ CRT และวิธีประมวลผลสัญญาณ
  • อธิบายการตัดสินใจในการออกแบบระบบวิดีโอของ SNES ผ่านความเข้าใจเกี่ยวกับการทำงานของ CRT และการประมวลผลสัญญาณ
  • บทความนี้มีประโยชน์สำหรับผู้ที่สนใจการออกแบบฮาร์ดแวร์ของเครื่องเล่นวิดีโอเกม และช่วยให้เข้าใจประวัติและหลักการทำงานของเทคโนโลยี CRT
  • โปรเจ็กต์อื่นที่มีคุณลักษณะคล้ายกัน ได้แก่ Sega Genesis และ Neo-Geo AES

1 ความคิดเห็น

 
GN⁺ 2024-07-30
ความคิดเห็นจาก Hacker News
  • 224 เป็นตัวเลขที่หารด้วย 16 ลงตัว จึงเข้ากันได้ดีกับ tilemap ในไปป์ไลน์การเรนเดอร์กราฟิก

    • CGA/EGA/VGA ล้วนมีโหมด 320x200
    • NES คือ 256x224 และ SNES ก็เช่นกัน
    • Pac-man บนเครื่องอาร์เคดคือ 288x224
    • Pacman โคลนบนพีซีดูแปลกอยู่เสมอ
    • เพิ่งจะเข้าใจหลังจากได้เรียนรู้รายละเอียดของเครื่อง
    • พิกเซลบนความละเอียดของพีซีไม่ใช่สี่เหลี่ยมจัตุรัส
    • เมื่อดูพอร์ตหรือโคลนของ Pacman ก็พยายามหาว่าขนาดโลก ขนาดไทล์ และขนาดสไปรต์เป็นเท่าไร
  • 59.94Hz เป็นตัวเลขที่ประหลาด

    • อเมริกาเหนือและบางภูมิภาคอื่นใช้โครงข่ายไฟฟ้า 60Hz
  • อัตราส่วนงานภาพ 8:7 สามารถเห็นได้ในเกม SFC/SNES ที่ถูกพอร์ตไปแพลตฟอร์มอื่น

    • เวอร์ชัน PSX/Saturn/PC คงงานภาพต้นฉบับไว้และเติม padding ให้เป็น 4:3
    • ถ้าดูภาพหน้าจอของเวอร์ชัน Saturn ทุกอย่างจะดูผอมไปนิดหน่อย
  • เกมยุโรปเกิด VSYNC ที่ 50.00697891Hz ทำให้เกมรันช้ากว่าที่ตั้งใจไว้ 17%

    • ตอนเล่น Sonic the Hedgehog บน Mega Drive ครั้งแรก รู้สึกผิดหวัง
    • มารู้ความต่างด้านความเร็วระหว่าง NTSC กับ PAL จาก YouTube
    • เพลงบน PAL ก็ฟังแย่มากด้วย
    • DooM บน SNES มีหน้าจอใหญ่กว่าในเวอร์ชัน NTSC
    • ฉันเล่น Punch-Out บน NES ได้เก่ง แต่ถ้าไปแข่งในอเมริกาคงแพ้ตั้งแต่ยกแรก
  • บทความต้นฉบับมีพิมพ์ผิด; อัตราส่วน 8:6 เท่ากับ 4:3

    • เคยใช้เอาต์พุต RF เพื่อสลับระหว่าง SNES กับเสาอากาศทีวี
  • ความละเอียดเอาต์พุต 256x224 (8:7) ถูกขยายเป็นภาพ 4:3

    • dot clock ของ SNES ช้ากว่าอัตราพิกเซลสี่เหลี่ยมจัตุรัสของมาตรฐาน ATSC
    • พิกเซลถูกยืดตามแนวนอนเป็น 8/7 ทำให้ความละเอียด 8:7 ถูกขยายเป็น 64:49
    • 224*(4/3) = 298 จุดที่มองเห็นได้
    • 224*(7/6) = 261.33... จุดที่มองเห็นได้ ซึ่งใกล้เคียงกว่า
  • สงสัยว่ามีอีมูเลเตอร์ที่จำลองรูปลักษณ์ของ CRT ได้อย่างแม่นยำหรือไม่

    • น่าจะเป็นไปได้ในแง่ประสิทธิภาพด้วย GPU shader
  • เคยคาดหวังว่าจะได้มุมมองว่าการออกแบบเกมอันเป็นเอกลักษณ์เกิดขึ้นได้อย่างไรจากเรื่องนี้

    • ฉันรัก SNES แต่ไม่สามารถโน้มน้าวพ่อแม่ได้
    • ขอบคุณสำหรับบทความ น่าสนใจมาก