المضلعات عالم آخر

هناك طريقة مثيرة للاهتمام لدراسة هندسة أجهزة الكمبيوتر في الماضي. ابحث عن برنامج تعرفه وحاول معرفة كيفية نقله.


خيار جيد لهذا سيكون DOOM . تم نقل megahit لعام 1994 من id Software إلى كل شيء ممكن. تم تصميم اللعبة حول النواة ، مقسمة بوضوح إلى طبقات. عادة ما يكون من السهل العثور على وقراءة تطبيق الأنظمة الفرعية I / O الستة.


سيكون هناك خيار آخر هو عالم آخر عام 1991 من إريك تشايلي ، المعروف في أمريكا الشمالية باسم Out Of This World . أود أن أقول إن الأمر أكثر إثارة للاهتمام بالفعل من DOOM ، بسبب الرسومات المتعددة الأضلاع المناسبة للتحسينات البرية . في بعض الحالات ، سمحت الأعمال المثيرة الصعبة للعبة بالعمل على المعدات التي تم إنشاؤها قبل خمس سنوات من إطلاق اللعبة.




  1. المضلعات عالم آخر.
  2. المضلعات عالم آخر: أميغا 500 .
  3. المضلعات عالم آخر: Atari ST .

هذه السلسلة من المقالات هي رحلة عبر معدات ألعاب الفيديو منذ أوائل التسعينيات. من Amiga 500 ، Atari ST ، IBM PC ، Super Nintendo ، إلى Sega Genesis. لكل جهاز ، حاولت أن أعرف كيف تم تطبيق عالم آخر.


في أفضل الأحوال ، تمكنت من الاتصال بالمطور الأصلي. في أسوأ الأحوال ، اضطررت لمعرفة الكود المفكك بنفسي. لقد كانت مغامرة ممتعة.


عالم آخر 101


عالم آخر لديه الكثير من التعليمات البرمجية. كان الإصدار الأولي لـ Amiga يبلغ طوله 6000 سطر فقط. الملف القابل للتنفيذ لـ DOS ضمن الكمبيوتر الشخصي هو 20 كيلو بايت فقط. والمثير للدهشة لمثل هذه اللعبة الضخمة ، التي ظهرت على قرص مرن 1.44 ميغا بايت. ذلك لأن معظم منطق العمل يتم تنفيذه باستخدام bytecode. القابل للتنفيذ "عالم آخر" هو في الواقع مضيف الجهاز الظاهري الذي يقرأ ويدير uint8_t التشغيل uint8_t .




يعرّف الجهاز الظاهري في "عالم آخر" 256 متغيرًا و 64 مؤشر ترابط و 29 رمزًا تشغيليًا وثلاثة إطارات للإطارات ( ترجمة من PatientZero ). هذا كل شيء. إذا قمت بإنشاء مضيف للجهاز الظاهري يمكنه التعامل مع هذا ، يمكنك بدء اللعبة. إذا تمكنت من جعل الجهاز الظاهري سريعًا بما يكفي لتشغيله بمعدل 20 إطارًا في الثانية ، فيمكنك لعب اللعبة بالفعل.


يستخدم نظام رسومات الجهاز الظاهري نظام إحداثيات 320 × 200 مع لوحة ألوان 16. قد يفاجئ حد اللوحة ، بالنظر إلى أن Amiga 500 يدعم ما يصل إلى 32 لونًا. تم ذلك بشكل هادف ، مما مكن من دمج الرسومات مع منصة أخرى كبيرة في ذلك الوقت - Atari ST ، التي تدعم 16 لونًا فقط.


ولكن لا يوجد بطانة فضية. وقد أدى هذا القيد إلى أسلوب فريد من نوعه ، والذي ، على مر السنين ، لا يزال يرضي العين.














حتى عندما كان من الممكن استخدام لوحة محددة للمشهد ، قرر إريك شاي عدم القيام بذلك. أثناء الاصطدام بالوحش ، يتم استخدام ثلاثة ألوان فقط له: الأسود للجسم ، والأحمر للعينين والبيج للأسنان. فعل الخيال الباقي.






تم الكشف عن نظام مماثل للوحة بالكامل في المشهد الأولي. تغيير لوحة رخيص للغاية جعل من السهل تصوير صاعقة البرق.










يمكن للمحرك أيضًا إنشاء تأثيرات شفافة إذا كان هناك ثمانية ألوان فقط على الساحة.



هنا يتم تخزين الألوان داخل [0x0.0x8].






الأشعة من المصابيح الأمامية فيراري شفافة. تم رسمها بلون 0x10 خاص غير موجود ، حيث لا يتوفر سوى 16 لونًا. يتم تفسير القيمة الخاصة على أنها "قراءة فهرس المخزن المؤقت للإطار وإضافة 0x8 والإرجاع." الجزء الأخير من الخدعة هو التحديد الذكي للألوان الثمانية التالية في اللوحة.


لم تستخدم الشفافية في كثير من الأحيان في اللعبة ،


ولكن يمكن رؤيته مرة أخرى أثناء التجربة ،


عندما يوشك البرق على الانتقال إلى ليستر إلى العالم الآخر.






ثلاثة إطارات


من بين حواجب الإطارات الثلاثة ، يتم استخدام اثنين من أدوات التخزين المؤقت المزدوج ، بينما يتم استخدام الأخير للحفاظ على تركيبة الخلفية (BKGD). يتجنب هذا التحسين إعادة رسم جميع المضلعات ذات الخلفيات الثابتة لصالح عملية نسخ بسيطة.


في الفيديو التالي ، راجع كيف يتم رسم مشهد جديد أولاً في المخزن المؤقت BKGD. يتم نسخ كل إطار BKGD جديد بالكامل إلى المخزن المؤقت المزدوج. هناك عناصر متحركة ، مثل ليستر ، يتم رسمها. يرجى ملاحظة أنه بعد "إيقاف السيارة" ، يتم رسمها أيضًا في المخزن المؤقت BKGD لتقليل عدد المضلعات التي سيتم رسمها في إطارات لاحقة.



لاحظ أيضًا كيف يستخدم التكوين خوارزمية بسيطة من قبل الفنان ، والتي ، على الرغم من بساطتها ، تؤدي إلى إعادة رسم غير ضرورية. هذه ليست مشكلة لأنه يتم إهمالها إلى حد كبير بواسطة نسخة من BKGD.


شفرة الآلة الافتراضية


يعرض الجدول التالي 29 شفرة تشغيل. هنا يمكنك العثور على أكواد الشفرة للتحكم في التدفق (THRD) ، وإدارة إطارات المكياج (FB) وجميع عمليات إدارة السجل. معظم العمليات "بسيطة" للتنفيذ ، باستثناء COPY FB و FILL و DRAW_POLY * ، وهي معقدة من حيث الأداء.




يمتد كلاً من DRAW_POLY_ * opcodes على أكثر من خلية واحدة. يشغل DRAW_POLY_BACKGROUND نصف مساحة شفرة التشغيل - من 0x80 إلى 0xFF . مضيعة للغاية ، ولكن هذه خدعة لتوفير مساحة. يتيح استخدام جميع العمليات التي تبدأ بالبت "1" نقل 7 بتات أخرى إلى مساحة شفرة التشغيل كمعلمات للتجسيد. نظرًا لأن شفرة التشغيل هذه تستخدم للخلفية والتواضع ، فإن توفير المساحة مهم جدًا.


يستخدم إصدار SPRITE جميع أكواد شفرة التشغيل بدءًا من البتات "01" ، في حين تستخدم الـ 6 بت المتبقية لتشفير الإحداثيات [x، y] والتكبير / التصغير لرسم "sprites" من Leicester والأصدقاء والأعداء.


ما التالي؟


كما ذكرنا سابقًا ، 26 من 29 شفرة تشغيل سهلة التنفيذ. كانت المشكلة الحقيقية عند ترقية هذه اللعبة هي معالجة البيكسلات ضمن حدود النطاق الترددي للحافلة والمعالج. ستناقش هذه السلسلة كيف تم التلاعب بأدوات إزالة الإطارات في الميناء وكيف تم حل مشاكل أكواد DRAW و FILL و COPY.

Source: https://habr.com/ru/post/ar482872/


All Articles