อะไรทำให้เป็นหน้าจอในเกม C64 ทั่วไป


10

ฉันกำลังพยายามหาพื้นฐานของการพัฒนาเกม C64 ที่ผ่านมา BASIC และฉันสามารถใช้คำแนะนำในสิ่งที่พื้นฐานมาก แต่สำคัญ: อะไรคือสิ่งที่อยู่บนหน้าจอจริง ๆ แล้วจะวาดอย่างไร?

ดูที่Katakis / Denaris :

ภาพหน้าจอ Katakis

มีอย่างน้อย 9 อย่างบนหน้าจอ:

  1. แถบคะแนนด้วยแบบอักษรที่แตกต่างกัน
  2. ตัวเรือเอง
  3. ดาวเทียมที่ติดอยู่กับเรือสามารถถอดออกได้
  4. ขีปนาวุธอาวุธรอง
  5. ขีปนาวุธอาวุธหลัก
  6. วัตถุเคลื่อนที่ (อาจเป็นเรือศัตรู)
  7. แถบสถานะที่มีภาพของเรือจำนวนชีวิตและสามส่วนที่สามารถเติมได้
  8. แถบชาร์จอาวุธหลักสามารถเติมจนจบ
  9. สตาร์ฟิลด์เลื่อนในพื้นหลัง
  10. (ไม่ใช่หมายเลขบนหน้าจอ) วัตถุที่เป็นของแข็งเช่นหินหรือผนังโลหะที่เป็นส่วนหนึ่งของพื้นหลัง

C64 รองรับเพียง 8 sprite ต่อเส้นสแกนแนวนอนดังนั้นฉันไม่คิดว่าทุกอย่างที่อยู่ตรงกลางของหน้าจอจะเป็น sprite หรือไม่ ฉันจะสมมติว่าสิ่งใดก็ตามที่ต้องมีการปะทะกันจะเป็นสไปรต์ (เนื่องจากฉันสามารถรับการตรวจจับการชนกันของฮาร์ดแวร์กับสไปรต์) ได้ นอกจากนี้อาวุธของฉันสามารถยิงกระสุนมากกว่าหนึ่งลำ - เรือของฉันดาวเทียมและกระสุน 6 อันก็จะเรียงกันเป็น 8 ครั้งต่อเนื่อง (ดูประมาณ 50 วินาทีในวิดีโอ)

นอกจากนี้เกมกราฟิกแบบไหนที่จะใช้เช่นนี้? คู่มือการเขียนโปรแกรมแสดงรายการโหมดบิตแผนที่ซึ่งจำเป็นต้องแก้ไขหน่วยความจำหน้าจอโดยตรง นี่เป็นโหมดที่ฉันควรทำงานเป็นปกติหรือไม่ ฉันจะเขียนองค์ประกอบที่ไม่ใช่สไปรต์ทั้งหมดเข้าด้วยกันเพื่อนำมาประกอบบนหน้าจอได้อย่างไร

สิ่งต่าง ๆ มากมายในคะแนนและแถบสถานะเป็นแบบคงที่ ("พื้นที่: 01" หรือ "กรอบ") ดังนั้นฉันเดาว่าฉันจะเติมพวกเขาเพียงครั้งเดียวเมื่อระดับเริ่มต้น สิ่งที่ต้องอัปเดต - คะแนนแถบชาร์จที่ด้านล่าง - จะได้รับการอัปเดตโดยการเติมหน่วยความจำหน้าจอด้วยสีดำแล้ววาดคะแนนใหม่ทุกเฟรม

หรือฉันต้องวาดทั้งหน้าจอในทุกเฟรมหรือไม่?

คำตอบ:


13

ใน c64 คุณสามารถ "มัลติเพล็กซ์" สไปรต์ได้ หลังจากวาดเสร็จแล้วคุณย้ายพวกมันไปยังที่ใหม่และนำกลับมาใช้ใหม่ วัตถุส่วนใหญ่ที่อยู่ตรงกลางน่าจะเป็นสไปรต์มัลติเพล็กซ์ ใน c64 มันง่ายมากที่จะใช้มากกว่า 8 sprites ตราบเท่าที่พวกเขาไม่ได้ครอบครอง scanlines แนวนอนเดียวกัน นอกจากนั้นคุณสามารถสร้างซอฟต์แวร์สไปรท์โดยใช้กราฟิกแบบอักษรหากจำเป็น (projectiles atleast ในกรณีนี้)

2, 3, 6. สิ่งเหล่านั้นมีแนวโน้มที่จะเป็นสไปรต์

4, 5, 9. สิ่งเหล่านี้น่าจะเป็นซอฟต์แวร์กราฟิกตัวอักษร (8x8 พิกเซล) "sprites"

เกมจะใช้โหมดไม่บิตแมปมันจะต้องมีการเคลื่อนย้ายหน่วยความจำมากเกินไป (เว้นแต่คุณจะใช้เทคนิคชิป VIC ... ) โหมดที่ใช้จะเป็นโหมดกราฟิกอักขระ

สิ่งที่คุณต้องวาดจะขึ้นอยู่กับ ในกรณีนี้ถ้าคุณดูอย่างใกล้ชิดมีดาวรูปแบบขนาด (x * y พิกเซล) ซ้ำหลายครั้งดังนั้นโดยทั่วไปคุณจะอัปเดตหน่วยความจำอักขระของฟอนต์เหล่านั้นเพื่อเลียนแบบการเลื่อนของสตาร์ฟิลด์

คะแนน / สถานะที่คุณเติมเมื่อเริ่มต้นแล้วอัปเดตเมื่อจำเป็น

คุณจะต้องอัปเดตสไปรท์และตำแหน่งของแต่ละเฟรม นอกจากนี้คุณยังจะอัพเดตขีปนาวุธ นอกจากนี้คุณจะต้องปรับปรุงรูปแบบสตาร์ฟิลด์ของ x * y pixel


5
ดูวิดีโอ Katakis อย่างละเอียดยิ่งขึ้น วัตถุบางอย่างนั้นเป็นกราฟิกแบบอักษร คุณสามารถดูได้จากการมองหาสีที่ใช้ Starfield ไม่ได้เป็นเพียงแค่พิกเซล X * Y เท่านั้น แต่ยังแตกต่างกันเล็กน้อย แต่ยังคงอยู่ในกราฟิกแบบอักษร คุณต้องอัปเดตกราฟิกแบบอักษรเลื่อนทุกพิกเซลที่ 8 เนื่องจากการเลื่อนฮาร์ดแวร์ลงทะเบียนจะย้ายเฉพาะกราฟิก 8 พิกเซลซึ่งเป็นซอฟต์แวร์ที่ใช้งานไม่ได้ นอกจากนี้คุณไม่ต้องการใช้การชนสไปรต์ของฮาร์ดแวร์ พวกเขาไม่สามารถแยกแยะสิ่งที่สไปรต์ชนกันได้หากมีสไปรต์มากกว่า 2 อัน คณิตศาสตร์ง่าย ๆ มีประโยชน์ในการชน
แค่เก่าแก่ 64 ปีคนแก่

2

ฉันอ่านบทความเมื่อนานมาแล้วในนิตยสาร C64 ภาษาเยอรมัน สัญลักษณ์แสดงหัวข้อย่อยเป็นตัวละครที่ทำหน้าที่เหมือนผีสางที่มีคนชี้ไปแล้ว เรือและศัตรูเป็นผีสาง

ระดับที่ทำจากตัวละครด้วย แต่ด้วยการบิด เนื่องจากระดับมีขนาดใหญ่มากและหน่วยความจำมีค่า Trenz จึงเขียนชุดเครื่องมือของเขาเองเพื่อจัดกลุ่มอักขระเป็นโมดูล

เพื่อให้เขาสามารถใช้โมดูลที่ใหญ่กว่าและเขียนสิ่งเหล่านั้นได้ นอกจากนี้เขาจะใช้โมดูลแก้ไขบางอย่างเพื่อให้จุดตัดของโมดูลดีและสะอาด

ทั้งหมดในประเภทของการบีบอัดที่มีการอธิบายระดับการสร้างบล็อกแทนถ่านโดยถ่าน

นอกจากนี้คุณอาจสังเกตเห็นว่าใน Katakis บางระดับมีพื้นหลังพารัลแลกซ์

ที่ทำโดยมีรูปแบบการเติมพื้นหลังส่วนใหญ่ทำจาก 2x2 หรือ 3x3 ตัวอักษรและเคลื่อนไหว (บิตขยับ) กับทิศทางของการเลื่อน เช่นระดับเลื่อนไปทางซ้าย 2 พิกเซลรูปแบบพื้นหลังจะถูกเลื่อนไปทางขวา 1 พิกเซลดังนั้นจึงดูเหมือนว่าจะเลื่อนช้าลง

หวังว่าจะช่วย

อีกสิ่งหนึ่งที่คุณสามารถเห็นโมดูลจริง ๆ และที่นี่https://archive.org/details/64er_1989_10/page/n27เลื่อนไปที่หน้า 24

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.