تاريخ المهرجانات الفنية للكمبيوتر ، المعروف أيضا باسم demopati ، كان في بلدنا لمدة ربع قرن. يجتمع الناس من جميع أنحاء البلاد لإظهار تمارينهم في استخراج المستحيل من أجهزة الكمبيوتر القديمة أو الحديثة وكميات صغيرة جدًا من الكود. في فترة الخمس سنوات الأولى ،
أصبح CAFe (فجأة ،
مهرجان فنون الكمبيوتر ) ، الذي أقيم في مدينة قازان من عام 1999 إلى عام 2003 ، أحد أهم حالات التشريح في البلاد. في وقت لاحق ، اختفى من الرادارات لفترة طويلة ، مما أعطى راحة إلى
تشاوس للإنشاءات الأكثر شهرة الآن و
DiHalt ، وفقط هذا العام كانت عودته منتصرة للغاية - إن لم يكن على نطاق الحدث ، ثم بعدد من الأعمال المختلفة ، والتي استمرت حتى ستة في الصباح. من بينها كان لي ، والتي ستتم مناقشتها في هذا المقال.
في الديموزين ، أنا أكثر تعاطفا من مشارك نشط. اهتماماتي الرئيسية هي تطوير الألعاب القديمة وبرامج الصوت. في وقت سابق ، قمت بعمل
عرض توضيحي واحد كامل مشروط
لهاتف أحمر ، والذي أصبح منذ ذلك الحين مشهدًا مميّزًا ، وحوالي عشرة تقاطع صغير لمنصات مختلفة. قام منظمو
CAFe ، الذين بدؤوا بالتحريض الشخصي للمؤلفين مقدمًا ، أولاً عن بُعد ، من خلال الأصدقاء
المشتركين ، ثم في الاجتماعات الشخصية ،
بدفعي في نهاية المطاف إلى إنشاء أول عمل متكامل حقًا لي في فئة العرض التوضيحي الكامل. كما حدث ، على منصة أخرى ليست الأكثر شعبية - وحدة ألعاب
NES /
Famicom ، المعروفة لأكثر من تحت اسم Dandy.
تخطيط
في البداية ، كنت بصدد تقديم عرض توضيحي طويل الأجل لمنصة 8 بت أخرى أكثر شعبية. ولكن من أجل تنفيذها ، كان من الضروري إجراء قدر كبير من العمل البحثي ، أي أنه لم يكن هناك فهم للتوقيت أو الجدوى الأساسية للفكرة أو جودة النتيجة المحتملة. لذلك ، اتخذت إجراءات محددة ببطء شديد. بدأت المواعيد النهائية تنفد إلى حد كبير ، وأصبح من الواضح أنني إذا أردت الوفاء بوعد المشاركة ، فمن الملح اختيار مشروع آخر أكثر قابلية للتنبؤ به قيد التنفيذ. بعد التفكير في الفكرة الثانية ، بالنسبة للفئة
Wild ، والتي تتطلب التجريب أيضًا ، قررت العودة إلى الفراغات التجريبية الطويلة الأمد لـ
NES ، التي تم
إعدادها قبل ثلاث سنوات ، ثم لـ
Multimatograph . نتيجة لذلك ، لم يتم استخدامها فعليًا ، ولكن تم تحديد اتجاه العمل في النهاية.
تمت الموافقة أخيرًا على خطة القيام بالعمل خصيصًا لـ
NES في أوائل أكتوبر ، إلى أن كان
CAFe على بعد حوالي ثلاثة أسابيع. تم إنشاء مجلد المشروع في 5 أكتوبر ، ولكن حدثت بعض الحركات قبل ذلك.
كان السؤال الأول الذي كان بحاجة إلى حل هو عدد الآثار (المشاهد) اللازمة لجعل مدة العرض التوضيحي كافية للمطالبة بنموذج كبير ، بدلاً من مقدمة بسيطة. كان مطلوبًا أيضًا لفهم ماهية هذه المدة الكافية.
لهذا ، من بين أشياء أخرى ،
تمت مراجعة أفضل الأعمال الحالية للمنصة المختارة على
Pouet ، وتم تحليل أفضل اثنين منها -
High Hopes و
NESPECCY . آخر إصدار ، وهو دعوة إلى نفس demopati ، تم إصداره في ديسمبر 2018 ، وحتى تلك اللحظة لم يلفت انتباهي. في البداية ، بلغ الأمر الدافع إلى حد ما ، حيث افترضت في البداية مستوى أسهل لعملي في المستقبل.
وفقا لنتائج التحليل ، اتضح أنه في
الآمال العالية يوجد حوالي ستة تأثيرات ومدة 2:45 ، وفي
NESPECCY حوالي 11 تأثيرًا ومدة 3:45. هذا هو متوسط حوالي 25 ثانية لكل تأثير. اقترحت أنه في المتوسط ، سيكون ما بين 10 إلى 15 تأثيرًا كافيًا ، بناءً على افتراض أن 3-5 منها فقط ستكون معقدة نسبيًا من الناحية الفنية ، ويمكن أن يكون الباقي بسيطًا لكنه ممتلئ. من أجل عدم تأخير عرض المشاهد البسيطة ، ستنتهي في المتوسط حوالي 15 ثانية لكل تأثير ، مع إجمالي مدة العرض التوضيحي في غضون دقيقتين أو ثلاث دقائق تقريبًا.
وأعقب ذلك حساب مقدار الوقت الذي يمكن إنفاقه في إنشاء كل تأثير. انتهى الأمر من يوم إلى يومين إلى يومين ، دون حساب العديد من الأعمال الضرورية الأخرى ، مثل الموسيقى والرسومات وبعض أنواع الأفكار وإعداد مجرد أساس فني يجمع بين التأثيرات. لم يبدو هذا الجدول واقعيًا للغاية ، لكنني قررت أن أجعل أكبر عدد ممكن من الآثار ، محاولًا احتواء كل يوم على كل منهما.
وهكذا ، تم تحديد مهمة الأولوية - لتكون قادرة على القيام في الوقت المناسب على الأقل بشيء مناسب للمشاركة في المنافسة ، وكذلك وضع التطوير في أسلوب "لا يوجد وقت للشرح". استبعد هذا أيضًا مذكرات التطوير ، والآن يتعين عليك استرداد الأحداث من الذاكرة ، محاولًا عدم الاستلقاء أكثر من اللازم.
مهمة القيام بهذه المهمة ، مدعيا المركز الأول ، لم يتم طرحها. الشيء الرئيسي هو ليس النصر ، ولكن المشاركة وكل ذلك ، وبشكل عام النصر الرئيسي هو فوق النفس. لم أقدم أي تنبؤات خاصة بناءً على نتائج المسابقة من أجل عدم شعبية الفئة المختارة ، وأتوقع أنه في أسوأ حالة (أفضل) للمشاركة في مسابقة العديد من الأعمال القوية إلى حد ما ، سوف تصبح لي شركة ملغمة ، وهي ضرورية وهامة أيضًا ، وإذا لم تكن هناك أعمال ، فائز بين نفسه ، كما حدث بالفعل في تخصصات أخرى. بالطبع ، أردت الفوز في معركة لائقة ، لكنني شخصياً صنف عملي أقل مما قدّره الجمهور أخيرًا.
قانون
بعد تحديد المواعيد النهائية ، أصبح من الواضح أنه من أجل توفير الوقت لرفع مثل هذا المشروع ، كان من الضروري ربط الكمال غير المناسب وعدم محاولة جعل رمز تجريبي الأكثر التكنولوجية أو المدمجة. أبسط وأسرع ، كلما كان ذلك أفضل ، مع الحفاظ على تأثير خارجي كاف.
تقرر اختيار تكوين قوي إلى حد ما وحتى متكرر - مخطط
MMC3 مع 256 كيلو بايت من رمز ROM و 256 كيلو بايت من رسومات الرسومات ، وحاول ألا تقلق من أن إمكاناتها الكاملة ستبقى غير مستغلة. هذا التكوين ليس هو الأكثر تقدماً في القائمة ، بل إنه أكثر استخدامًا ، فقد تم استخدامه على نطاق واسع في الألعاب التجارية ، بدءًا من
Super Mario Bros. 3 (1988) ، ولكن في السابق اقتصر مؤلفو العرض التوضيحي لـ
NES على مصممي الخرائط الأكثر بساطة والذاكرة الأقل. ونتيجة لذلك ، تم استخدام 80 ٪ من حجم رمز ROM وأقل بقليل من ثلثي حجم الرسومات ROM. سمحت لنا الكمية الزائدة من الذاكرة بعدم إضاعة الوقت الإضافي في حل مشكلة ضغط البيانات ، على الرغم من أنه لا يمكن الاستغناء عنها.
كانت طريقة التطوير واضحة أيضًا - بشكل أساسي في C ، مع إدراج أداة التجميع حسب الحاجة ، والنسخ بشكل أساسي إلى ذاكرة الفيديو ، ومعالجات المقاطعة ومشغل الموسيقى. لقد استخدمت منذ فترة طويلة وبنجاح هذا النهج على منصات الرجعية. إنه يوفر وقت التطوير إلى حد كبير ، حيث يمكن إجراء النماذج الأولية للكود محليًا: أولاً قم بتنفيذها في C واحصل على النتيجة التي تعمل على
NES فورًا ، ثم إذا لم تعمل بسرعة كافية ، فقم بإعادة كتابتها في أجزاء لتجميعها وفقًا لقالب تم إعداده بالفعل ، حتى تم الوصول إلى السرعة المطلوبة.

كانت إحدى المشكلات الرئيسية المتوقعة ، والتي ، مع ذلك ، في الممارسة العملية لم تسبب الكثير من المتاعب ، هي مقدار ذاكرة الوصول العشوائي الرئيسية - في
NES لا يتجاوز 2 كيلو بايت ، وفي عملي قررت أن أفعل دون توسيعها ، على الرغم من أن المخطط قد سمح بهذه الخطوة بشكل أساسي. غالبًا ما يتم اعتبار الذاكرة في الأنظمة القائمة على
معالج 6502 ، نظرًا
لسعتها الإجمالية البالغة 8 بتات ، في صفحات ذات 256 بايت ، وفيها ظهر توزيع ذاكرة الوصول العشوائي كما يلي:
- صفحة واحدة للمتغيرات "السريعة" ؛
- صفحة واحدة لتكدس الأجهزة واللوحة (جزء كبير من المكدس غير مستخدم) ؛
- صفحة واحدة للمخزن المؤقت لقائمة sprite (تتطلب ميزات بنية تحكم الفيديو) ؛
- صفحة واحدة لقائمة تحديثات ذاكرة الفيديو ؛
- صفحة واحدة للحصول على قائمة المعلمات لتأثيرات النقطية.
يتم الإعلان عن الأخيرتين في البرنامج في شكل صفائف char غير موقعة عادية من 256 بايت وفي بعض الأماكن يتم إعادة استخدامها أيضًا لأغراض أخرى. يتم إعطاء الصفحات الثلاث المتبقية ضمن
رصة برنامج
cc65 ، أي تحت المتغيرات العالمية والمحلية لبرنامج C.
تجدر الإشارة إلى أن التخصيص الديناميكي للذاكرة (malloc / free) على مثل هذه المنصات لا يستخدم عملياً ، وكان الحل الثابت مطلوبًا. في البداية ، التزمت بأسلوب استخدام أكبر عدد ممكن من المتغيرات المحلية ، مما أتاح لي إعادة استخدام ذاكرة مكدس البرنامج تلقائيًا لهم. لكن المتغيرات المحلية تعمل ببطء أكثر ، ونتيجة لذلك ، فإن الحجم المتاح للمتغيرات العالمية ينقصه ، وكان من غير المريح فقط كتابة التعليمات البرمجية بهذه الطريقة ، باستخدام متغيرات تحمل الاسم نفسه بشكل متكرر. ثم طبقت حلاً غير مستخدم سابقًا: إعلان في تكوين رابط العديد من شرائح ذاكرة الوصول العشوائي الموجودة فعليًا في نفس العناوين. تم وضع مجموعات من المتغيرات المستخدمة في نفس التأثير باستخدام توجيهات برنامج التحويل البرمجي في هذه المقاطع ، مما يسمح بإعادة استخدام نفس الذاكرة.
هناك مشكلة أخرى - توزيع كود برنامج C عن طريق بنوك ذاكرة الكود (تستخدم
NES صفحة عنونة للذاكرة الموسعة) - تم حلها مسبقًا من قبلي في مشاريع أخرى ، ولم تسبب مشاكل. يقتصر رمز وضع الصفحات على 16 كيلو بايت (حجم نافذة الذاكرة القابلة للتحويل) على قسم مكتمل وظيفيًا ، ويتم استدعاؤه بواسطة طريقة التراكب: يتم توصيل الصفحة المطلوبة ، تتم معالجة الرمز منها ، ويعود التنفيذ إلى الصفحة الرئيسية ، ولا يمكن الوصول إلى الذاكرة بين الصفحات. يتم تخصيص الوظائف للبنوك يدويًا ، من خلال توجيهات برنامج التحويل البرمجي. يوجد الكود المطلوب في جميع أجزاء البرنامج ، مثل مشغل الموسيقى وإخراج العفريت ومعالجات المقاطعة ، في نافذة الذاكرة العليا غير القابلة للتحويل ، والتي يبلغ حجمها أيضًا 16 كيلوبايت.
عند العمل على التأثير الأخير ، الممر مع Mario ، صادفت رسالة خطأ تجميع مسلية:
تجاوز الملصق المحلي . كما أفهمها ، يحتوي برنامج التحويل البرمجي على حد داخلي لعدد الملصقات المحلية التي تم إنشاؤها (على ما يبدو 65536) داخل وحدة كائن واحدة ، لكنني استخدمت وحدة نمطية مشتركة واحدة لتبسيط إدارة الذاكرة المشتركة. أحد الحلول الممكنة هو تقسيم الكود إلى عدة وحدات ، وقد خططت بالفعل لتطبيقه ، ولكن بعد نقل مجموعة واحدة من الثوابت من المصدر في C إلى جزء المجمع (
incbin مع تسمية خارجية) ، المشكلة التي تم حلها بنفسها ، توقف الحد الأقصى ، وحتى بعد الإضافة بضع مئات من أسطر التعليمات البرمجية لم تعد هناك رسالة خطأ.
تصميم
في اختيار التأثيرات ، كانت هناك خطة لتقييد أنفسنا بالبساطة ، ولكن السلس دائمًا ، العمل بأقصى سرعة عرض (60 إطارًا في الثانية). لم يتم اعتبار التأثيرات التجريبية التقليدية مثل دوّارات البلازما والتكبير / التصغير مبدئيًا ، نظرًا لأنها لا تتلاءم جيدًا مع بنية جهاز فك التشفير ، التي تفرض قيودًا كبيرة على الوصول إلى ذاكرة الفيديو - سيبدو ذلك رديءًا مقارنةً بالمنصات التي يتم فيها تطبيق هذه التأثيرات مرارًا وتكرارًا في كل مجدها.
في البداية ، أردت أن أجعل الجزء الأكبر من التأثيرات وفقًا لخطة عمرها ثلاث سنوات ، استنادًا إلى معالجة تلو الأخرى مع خطوط المسح المعروضة - تغيير الإزاحة الرأسية والأفقية لكل سطر ، بالإضافة إلى ضفاف الرسم المعروض ، بينما يمر الشعاع عبر خطوط المسح. يمكن لمثل هذا النهج أن يعمل على أساس مجموعة شائعة واحدة من التعليمات البرمجية ، مما يوفر وقت التطوير ، لكن الآثار ستكون متماثلة تمامًا وتقليدية تمامًا ، موجودة في العديد من الأعمال الأخرى. بالإضافة إلى ذلك ، كانت هناك صعوبات في تصحيح هذه الكتلة العامة من التعليمات البرمجية ، ونتيجة لذلك ، تضمن العرض التوضيحي تأثيرًا واحدًا فقط لهذا النوع ، وهو خرطوشة دوارة.
تافهة مع اثنين من الآثار على أساس الأفكار القديمة ، واحدة منها أصبحت في نهاية المطاف تأثير كيربي ، والثاني لم يذهب إلى العرض ، بدأت في كتابة وثيقة نصية حيث كتبت جميع الأفكار التي وصلت إلى ذهني ، سواء بالنسبة للآثار الفردية والمفهوم العام. تضمنت هذه القائمة أكثر من 40 مؤثرًا ، بينما تم تنفيذ أقل من 15. في العمل النهائي ، وفي الوقت نفسه ، فإن معظم التأثيرات عبارة عن رسوم متحركة من نوع أو آخر ، على الرغم من أن كل من المتغيرات فريدة من نوعها تمامًا وتستخدم حيل متنوعة لضمان استهلاك مقبول للذاكرة والتشغيل السلس المطلوب . كما حدث عن غير قصد أن النوع السائد من الآثار هو دوران شيء ما. من حيث المبدأ ، هذه صدفة جيدة ، حيث نشأ نوع من الوحدة المفاهيمية.
تم تصميم مقدمة مع فيل وصنعها ، كنكتة حول موضوع عملي السابق ، ثم تأثيرًا مع خطوط ملونة والتداخل. من دون تفكير كبير ، تم اختيار لقب العمل ،
HEOHdemo ،
كإضافة للنكتة من المقدمة (HE HE HE HE). عندما يتعلق الأمر بإدراك المشهد بعرض الاسم ، تمت الموافقة عليه نهائيًا ، لأنه لم تكن هناك أفكار أكثر نجاحًا بحلول ذلك الوقت ، ولم يكن هناك وقت لنتقدم به.
دفع القرار العفوي الذي يحمل الاسم التجريبي إلى المفهوم النهائي لجميع الأعمال ، والذي ظهر أخيرًا قبل الموعد النهائي بعشرة أيام. يتضمن استخدام لعبة فيديو يمكن التعرف عليها ومواد ثقافة البوب ، مثل الشخصيات والشعارات ومشاهد الألعاب ، لكن تم تعديلها بطريقة تجعل النسخ الأصلية مختلفة بعض الشيء (مثل "ليس لهم"). تقرر أيضًا نشر الفكاهة من المشاهد الأولية والنهائية إلى العرض التوضيحي بأكمله ، وبالتالي التعويض عن المستوى الفني غير العالي للغاية ، والذي يتماشى مع روح العصر المذكور (منتصف التسعينيات) ، وتناشد جمهورًا أوسع - بعد كل شيء ، تتمتع لوحات الألعاب القديمة بمشاهدها الخاصة ، لا تتقاطع مع demoscene وليس المستنير جدا في التكنولوجيا ، ولكن جمهور واسع جدا. في نفس الوقت تقريبًا ، تقرر استخدام العرض التوضيحي المتأصل في التسعينات مقسومًا على مشاهد مستقلة منفصلة ، حيث يسهل القيام بها في الوقت المتاح ، وقد ساعد ذلك لاحقًا بشكل كبير مع الجزء الموسيقي وتزامن التأثيرات معه.
نشأت بشكل طبيعي أثناء العمل أفكار المشاهد مع Vid ، وهو شعار دائري وجزئيًا مع Mario في الممر. لقد تم تصنيعها بدورها ، كنوع من التسويف - حتى تم لصق الآثار المخططة الرئيسية.
جمعية
في البداية ، كان من الواضح أن أطول وقت في التوقيت سيستغرق أجزاء مع مقدمة ، عنوان ، تحيات ، وائتمانات نهائية. تم تنفيذ العمل عليها في المقام الأول ، لذلك اتضح في مرحلة ما أن العرض التوضيحي له بالفعل بداية ونهاية كاملة (مثلما هو الحال في الإصدار النهائي) ، ولكن لا يوجد تقريبًا أي أرض وسط لم يكن هناك سوى جزء واحد منها جاهز أكثر أو أقل تأثير. كانت المواعيد النهائية تقترب من نهايتها. تحول العمل في المشروع إلى سباق الماراثون الذي استمر لساعات ، واستغرق وقتًا مجانيًا وليس مجانيًا. تم فرز الآثار المتبقية في الخطط حسب التعقيد ، وتم تبسيط جميع الأفكار قدر الإمكان. تم صنع غزاة الفضاء ، وهزمت مشاكل مع خرطوشة دوارة ، وتم الانتهاء من برج سهل التنفيذ مع صرير (تجربة مع المظهر). عندما تكون الآثار جاهزة ، تم تحديد تسلسل عرضها.
استغرق كل تافه ثلاث مرات أكثر مما بدا في البداية ، وقبل بضعة أيام من الموعد النهائي ، عندما لم يكن هناك نصف الآثار أو الموسيقى ، كان هناك شعور قوي بأنها لن تنجح. تم النظر في الخطة (ب) ، لاستكمال وفضح العمل بالفعل على demopati آخر ، أو خارجها. ولكن بعد ذلك تم اتخاذ قرار أكثر فاعلية: لجمع وإكمال كل ما هو موجود بالفعل بشكل عاجل ، على الأقل بعض مظاهر منتج جاهز للإصدار ، حتى أنه غبي تمامًا ، لكتابة بعض الموسيقى لهذا الغرض ، وإذا كان لا يزال هناك وقت متبقٍ ، محاولة لإضافة المزيد من الآثار. من بين هذه المشاهد التي تمت إضافتها في اللحظة الأخيرة ، كان كل من Pakman والممر ، كلاهما في أبسط نسخة مقارنة بالأفكار الأصلية.
أدت طريقة التجميع هذه إلى عدم تناسق ملحوظ في التأثيرات في منتصف العرض التوضيحي وتغيير كامل للموسيقى بين العديد من المشاهد. ومع ذلك ، فقد ساعد في توفير الكثير من الوقت ، وفي الواقع كان العمل جاهزًا بالكامل للنشر قبل يوم واحد من الموعد النهائي. قضى هذا الوقت الإضافي في وضع اللمسات الأخيرة على تفاهات مختلفة في جميع الأجزاء وفي الموسيقى. على وجه الخصوص ، كان في هذا الوقت أن الغزاة و الضفدع اكتسبوا مظهرهم البديل.
التصحيح
بسبب نقص قدرات التصحيح على الأجهزة الحقيقية ، وكذلك الأجهزة نفسها ، تم تصحيح العرض التوضيحي بشكل حصري في برامج محاكاة. كان العمل الرئيسي في محاكي
FCEUX . إنه ليس دقيقًا جدًا ، ولكنه يحتوي على مصحح أخطاء جيد ويبدأ بسرعة كبيرة ، وهو أمر مهم مع طريقة التطوير "إلحاق بضعة خطوط ، تشغيل ، فحص". كما تم تصحيح الآثار
الخطيرة للوقت في Mesen ،
التورية ، و
Nestopia الأكثر دقة ولكنها أقل ملاءمة.
نظرًا لأن التنسيق التوضيحي بحد ذاته يعني الرغبة في الحصول من المنصة على ما لم يفعله أحد من قبل ، فإنه يختبر دقة المحاكيات بحثًا عن القوة ، بما في ذلك من خلال إظهار خلافهم حول الحالات الشديدة المختلفة. بعد تصحيح التأثير في محاكي واحد ، يمكنك الحصول على القطع الأثرية في المحاكيات الأخرى. وبسبب هذا ، وكذلك بسبب ميزات بنية
NES ، كان لا بد من تصحيح العديد من التأثيرات المرتبطة بالتوقيت الدقيق عدة مرات. ونتيجة لذلك ، قمت بإعداد العرض التوضيحي للعمل النظيف في محاكي
FCEUX الشهير ، والذي تم إرساله إلى المسابقة ، وللعمل العادي في جميع برامج المحاكاة الأخرى.
من الأخطاء المثيرة للاهتمام التي تم العثور عليها أثناء تصحيح الأخطاء ، حدثت مشكلة في المشهد مع وجود شعار دوار ، يظهر نفسه حصريًا في محاكي
Mesen . inspired by, , . ,
Mesen . .
NTSC - ,
PAL — , . ,
PAL -, . , 17% .
–
NES ,
Famicom AV ,
Pegasus (
Dendy Classic 2 , ). , , , , . , ,
MMC3 Flash -,
MMC3 .
Pegasus , — . , — — .
, , . , , .
Flash -.
موسيقى
« » «». . ' , . , , , , . , . .
NES , , , -. , , , , , . , .
Reaper MIDI-, ,
FamiTracker . MIDI-, Reaper,
FamiTracker .
FamiTracker NES , , , — , . , . , «»
FamiTracker '
NSF - . , ,
NES .
. .
FamiTracker Zxx , .
يتم استعارة الكود من مشروع قديم. يتم عرض الجزء الظاهر من الخط مع نقوش مع لوحات مختلفة ، ثم مطبوع في الخلفية. تشير الكتابة "المستندة إلى تأثيرات حقيقية" إلى أن التأثيرات الإضافية ليست كذلك ، فهذه مزحة حول موضوع النقاش المستمر حول قبول ودور الرسوم المتحركة في العرض التوضيحي.مقدمة مع الفيل وزحف الخط
, , . .
, —
Graphics Gale , (10). , .
NES Screen Tool .

, , , . , , .
8 32 , PC. . MMC3, ( ), , . , .
أول تأثير كامل تم كتابته للعرض التوضيحي. في الواقع ، يتكون من جزأين - أولاً يتم عرض مؤقت يعرض توقيت العرض التوضيحي الحالي بالقرب من الحقيقي ، ثم ينتقل التأثير إلى رسم متحرك للعصابات المتزايدة., , . 12x16 , 8x8, — . — 00 99, — . . , .

, , MMC3, , .
, 32 . 238 , 7 . , , , 53. , PC, , .

اسم
, , .
. . . Blender . , ,
NES Screen Tool – 82 . , .

, . , , . , , . , .
MMC3 , .
, , ,
Gale . , , .

. .
, . , , .
بسبب قلة التأثيرات والوقت اللازم لتطويرها ، قررت إعادة استخدام مقدمة صغيرة مكتوبة قبل عامين ، والتي طارت فيها الحروف على نفس المسار حول شعار ثابت. في الآونة الأخيرة ، أصبحت مهتمًا مرة أخرى ببادئة
N64 ، التي تجاهلتها في أواخر التسعينيات ، وفي عملية العمل على التأثيرات الأخرى ، جاءت فكرة تلقائية برسم متحرك لتناوب الشعار الشهير ، والذي بدا بسيطًا في التنفيذ - لكن هاتين الفكرتين تجمعتا ، لكن التنفيذ استغرق وقتا أطول بكثير مما كان متوقعا.
التعقيد التقني الرئيسي للمشهد هو تقليل حجم الذاكرة المطلوبة لمثل هذه الرسوم المتحركة السلسة والكبيرة. إذا قمت بتخزين إطاراتها دون ضغط ، فسيشغل إطار واحد مجموعة واحدة من 4 كيلوبايت (نظرًا لأن إطارين لن يتلاءمان مع 256 قطعة) ، وسيحتاج الأمر إلى 256 كيلو بايت من ذاكرة الوصول العشوائي ، أي كل وحدة التخزين المستخدمة في وحدة التخزين التجريبية. لحل هذه المشكلة ، تم تطبيق ثلاثة حيل في وقت واحد: الرسوم المتحركة للدوران فقط 90 درجة (64 لقطة) ، وبعد ذلك يتم تبديل لونين للوجه ؛ تحويل الرسومات المفقودة إلى مجموعات من أربعة إطارات في مجموعات من 256 البلاط ؛ وكذلك تحديث ذاكرة الفيديو في الجزء المرئي من خطوط المسح. وهكذا ، استغرق الرسوم المتحركة مساحة أقل أربع مرات.
مصنوعة نموذج الرسالة والرسوم المتحركة التناوب في
خلاط . وخلال زيارتها تعكس جاءت فكرتك الذي يتوافق مع مفهوم العرض، وكان مضحك - ". وووووو" المشهد يقول، يتم تجميع إطارات الرسوم المتحركة ، وتقليل عمق الألوان إلى 4 ، ويتم تحويل هذه الصور بواسطة وظيفة الاستيراد المفقودة في
أداة الشاشة NES . ربما تكون هذه الوظيفة هي سلاحي السري الرئيسي - إذا تم تجاوز حد التجانب أثناء الضغط ، فإنه يبحث عن البلاطات المرئية الأكثر تشابهاً ويجمعها حتى يبقى العدد المطلوب من التجانبات. وبطبيعة الحال ، فإن هذا يوفر أدوات تحويل بصرية ويتطلب تحسينًا يدويًا لاحقًا ، ولكنه يسمح لك بالضغط على صور أكثر تعقيدًا مع تقليل حجم العمل.

للرسوم المتحركة للشعار ، يتم تبديل مجموعات من البلاط ، ويتم تحديث نافذة من 14 إلى 14 من البلاط في خريطة تجانب الخلفية ، والتي يتم من خلالها استخدام مقاطعة MMC3 ، والتي يتم تشغيلها قبل سطر النص. يتطلب الخط أيضًا تبديل مجموعة الرسومات إلى الخط ، وبعد ذلك يكون هناك تأخير في الرمز للوقت الذي يتم فيه عرض خطوط الكتابة ، ثم يتم إيقاف تشغيل الشاشة (يتم عرض لون الخلفية باستمرار) ويتم نقل البيانات إلى ذاكرة الفيديو.
يتم عرض العملات المعدنية بواسطة العفاريت وتطير على طول مسار حساب محسوب بصدق (أو باستخدام نقطة ثابتة). تم تعديل الكود القديم بحيث يستمر الدوران ، إن أمكن دون تقاطع مع الشعار الأكبر ، وكذلك تظهر العملات وتختفي تدريجياً في اللحظات المناسبة. إنها تتجاوز رسومات الشعار باستخدام علامة الأولوية التي لدى كل شبح.
خرطوشة دوارة
تنفيذ التأثير بسيط جدًا في الكلمات ، لكنه يتطلب تصحيحًا طويلًا. يقوم معالج المقاطعة بتشغيل تأثير نقطي على الخط المرغوب (لإتاحة الوقت لمؤشر الترابط الرئيسي). بعد ذلك ، يتم تنفيذ الشفرة ذات التوقيت المحدد بدقة بالغة لتعيين الإزاحة الرأسية بالبكسل لخريطة التجانب المعروضة لكل سطر من الشاشة. يتطلب هذا مخططًا صعبًا جدًا للكتابة إلى سجلات
PPU ، ويجب أن يقع بعضها في مكان معين على الخط. في إصدار
NTSC من جهاز فك التشفير ، لا تكون سرعة ساعة المعالج ومعدل تكرار البكسل متعددة ، وقد يختلف وقت تنفيذ التعليمات البرمجية اختلافًا طفيفًا اعتمادًا على عدة عوامل ، وبالتالي فإن توقيت كل سطر يطفو تدريجياً ويتطلب تصحيحًا.
تم رسم الجزء الرئيسي من الرسومات لهذا المشهد قبل عدة سنوات لمحاولة سابقة لتقديم عرض توضيحي لـ
NES ، ولكن الآن تم استكماله بواجهات خرطوشة أخرى وشعار تجريبي. الصورة الأصلية مكدسة في ارتفاع في شاشة واحدة. لتبسيط رمز التأثير ، يتم تكرار نفس الخطوط عدة مرات على ظهر الخرطوشة.

يتم احتساب الرسوم المتحركة للتناوب بشكل مسبق مقدمًا باستخدام برنامج كمبيوتر ويستهلك مقدارًا كبيرًا من رمز ROM - ثلاثة بنوك لكل منها 16 كيلو بايت ، حيث يتم تخزين جدول لكل 176 من إطارات الرسوم المتحركة في 176 رقمًا من الخطوط النقطية المعروضة. كان من الممكن إحداث تأثير في الوقت الفعلي ، لقد قمت بالفعل بعمل عرض تجريبي مماثل لمنصة أخرى ، لكن في هذه الحالة كانت هناك ذاكرة حرة كافية ولم يكن هناك وقت إضافي.
بكمن
في البداية ، تم التخطيط لمشهد أكثر تعقيدًا ، ولكن نظرًا لضيق الوقت ، دخلت العرض التجريبي في الإصدار الأكثر أضيق الحدود ، في شكل انهيار للمشاهد في وقت تغيير الموسيقى.
كانت المشكلة الرئيسية هي إيجاد طريقة لإنشاء الرسوم المتحركة بسرعة. أولاً ، ظهرت الفكرة لاستخدام
Blender أو برامج الرسومات الأخرى مرة أخرى. ولكن بعد المحاولات الأولى وبعض الحسابات ، أصبح من الواضح أن ثمانية إطارات فقط من الرسوم المتحركة لفتح الفم من وضع مغلق تمامًا إلى وضع مفتوح بالكامل ستكون كافية ، وسيكون من الأسهل والأسرع رسمها يدويًا في
Gale .
بعد ذلك ، تم كتابة برنامج للكمبيوتر الشخصي ، مع تسلسل الإطارات من دورة الرسوم المتحركة الكاملة وإيجاد الإطارات التي تغيرت بين البلاط. يتم حفظ عناوين هذه التجانبات في خريطة التجانب في ذاكرة الفيديو كقوائم متغيرة الطول ، والتأثير في العرض التجريبي يقوم ببساطة بتحديث الأقسام التي تم تغييرها في هذه القوائم. تتلاءم رسومات جميع الإطارات مع مجموعة تجانب واحدة ولا تتغير أثناء التأثير.

كيربي
تم تصحيح هذا التأثير على
صورة Catrix القديمة . كانت هناك خطة لتغيير صورة وجه القطة إلى صورة بديلة مع قطة شيشاير من خلال نوع من التأثير البصري. عندما طرحت الفكرة لإضافة شخصيات اللعبة إلى العرض التوضيحي ، بعد انتخابات قصيرة - كان من الضروري رسم صورتين جديدتين بملء الشاشة - تقرر اتخاذ Kirby وجعلها نسخة "Cheshire". تم تبسيط تأثير تغيير الصور في العملية إلى وميض قصير.
يتم عرض كتل الصور المتحركة كعفاريت وتطبع على الخريطة المتجانبة عندما تصل إلى المكان الصحيح. وبالمثل ، يحدث حذف الكتلة.
برج
لطالما أحببت التأثير في المستوى الأخير من لعبة
Battletoads وأردت أن أكررها منذ فترة طويلة. في العرض التوضيحي ، جاء إلى مكان في المشهد مع تحياتي.
الجزء الفني بسيط للغاية ، وهذا التمرير العمودي العادي لطبقة الخلفية. يتم تحقيق تأثير الدوران من خلال الرسوم المتحركة لرسومات البلاط ، لكن خريطة البلاط تظل كما هي. للرسوم المتحركة ، يتم
استخدام وضع
MMC3 مع أربعة نوافذ
CHR قابلة للتحويل. تحتوي النافذة الأولى على مربعات الجزء الثابت ، بينما التبديل الثلاثة الآخر بسرعات مختلفة. يغير أحد الإطارات أيضًا اتجاه الحركة بشكل سلس. نظرًا لوضع 64 تجانب في كل نافذة ، ويتطلب العنصر المتحرك 28 فقط ، يتم تكرار رسومات التجانب في كل نافذة لتلقي الرسوم المتحركة في الاتجاه المعاكس.



كانت المشكلة الرئيسية في تحقيق التأثير إعداد الرسوم المتحركة. تم تنفيذه بواسطة برنامج على جهاز كمبيوتر يأخذ ملمسًا 16 × 16 وجدول سرعة لكل عمود بكسل عند الإدخال ، ويقوم بإنشاء كتلة مكونة من 16 إطارًا للرسوم المتحركة في شكل مجموعة مكونة من 256 بلاطة (بعضها فارغ). يتم تحويل المجموعات إلى التنسيق المطلوب في
أداة الشاشة NES ويتم توزيعها على بنوك رسومات ROM مع الإزاحة المطلوبة من خلال خيارات توجيه مجمّع
incbin .
كانت المهمة المهمة الأخرى المتعلقة بالتهاني هي عدم نسيان نقلها إلى كل من يرغب في ذلك. نظرًا لأن هذا الرقم يميل إلى ما لا نهاية ، وسيبدو المشهد الطويل للغاية مملًا. قررت أن أقصر نفسي فقط على أولئك الذين كنت أعبرهم لمدة عام. الأسماء التي تم جمعها في ملف نصي عندما تتبادر إلى الذهن. بالطبع ، بعد الانتهاء من العمل ، اتضح أنني ما زلت نسيت أن أذكر الكثير من الناس.
الرواق
كانت هناك رغبة في تكوين مشهد من نوع ما ، مثل النفق الكلاسيكي. لقد اختفت الأنفاق الكلاسيكية أو راشف الذئب الحقيقي لـ
Wolfenstein 3D بسبب التعقيد. بالإضافة إلى ذلك ، لدى
NES بالفعل العديد من الراكبات الحقيقيين ، بما في ذلك القوام ، لكنهم جميعًا لا يبدون إعجابًا كبيرًا بسبب السرعة المنخفضة للغاية.
أنا مهتم جدًا بالرسومات الزائفة ثلاثية الأبعاد في الألعاب المبكرة ، ومن بين التطورات القديمة كان هناك بالفعل ممر شبح مع الرسوم المتحركة السلسة من المنعطفات ، مستوحاة من لعبة
Zig Zag لـ
ZX Spectrum . تقرر استخدامه. نظرًا لأن الممر التجريدي نفسه ليس ممتعًا للغاية ، فقد تم اختراع مؤامرة داخلية للمشهد مع ماريو وروح الفكاهة الخاصة بالمراحيض ، وهو ما يكمله بشكل منطقي ، وكذلك التجريبي ككل. تم وضع المشهد الأخير ، وعلى الرغم من استخدام الفراغات ، استغرق العمل عليه أكثر من 11 ساعة متتالية ، دون حساب الأعمال التحضيرية أثناء التخطيط.
يتم تتبع جميع إطارات الحركة يدويًا في Gale. هذا هو التأثير الوحيد في العرض التوضيحي ، حيث يقل السرعة عن 60 إطارًا في الثانية ، على الرغم من أنه يمكن أن يعمل بهذه السرعة دون أي مشاكل. لأسباب تتعلق بالقراءة البصرية والمزامنة مع الموسيقى أثناء رميها على طول الممر ، كان معدل تحديث الشاشة محددًا بـ 30 إطارًا في الثانية ، كبديل لإضافة مراحل وسيطة للحركة ، ولم يعد هناك وقت لتحضيرها.
استغرق إطارات الرسومات مجموعتين من البلاط. في اللحظات الضرورية للرسوم المتحركة ، يتم تحديث طبقة الخلفية ، يتم توصيل مجموعة الرسومات المطلوبة وتعيين لونين في لوحين (للنصفين العلوي والسفلي من الشاشة) ، حيث عند تغيير 90 درجة ، تتغير ألوان الجدران إلى الأماكن.
يتم أولاً نسخ بطاقات تجانب الرسوم المتحركة إلى ذاكرة الوصول العشوائي (RAM) عن طريق رمز في أحد البنوك الثابتة من أحد البنكين السفليين في ذاكرة القراءة فقط. أثناء عرض البيانات النقطية مباشرة أسفل النافذة المعروضة للتأثير ، يتم إيقاف تشغيله ويتم نقل البيانات من ذاكرة الوصول العشوائي إلى ذاكرة الفيديو. يعمل إيقاف تشغيل التجسيد أيضًا على الحد الأدنى من القطع المرئي لـ Sprite ماريو.
تعليق
كان هذا المشهد أحد الأول ، بعد أشرطة الألوان ، استنادًا إلى الكود من أحد المشاريع القديمة. كان لديه بالفعل دعم لخطين ، لوحات مختلفة وتباطؤ في النهاية. بالنسبة إلى العرض التوضيحي ، تم رسم الخطوط الجديدة ، والتي يتم استخدامها في كل مكان ، وتم إضافة تأثير على حواف الشاشة.
في البداية كنت أرغب في جعل الحواف يعتم بسلاسة ، لكن خلال التجارب الأولية جربت خيارات مع إزاحة خط أفقي ، أعجبتني النتيجة ، وقررت عدم قضاء وقت إضافي. تتم إضافة تظليل طفيف باستخدام الميزة المثيرة للجدل
بوحدة التحكم في الفيديو
NES ، اكتساب مكونات اللون. يكمن الجدل في حقيقة أنه في الإصدارات الإقليمية المختلفة واستنساخ وحدة التحكم ، تعمل هذه الوظيفة بشكل مختلف ، ولكن في هذا التطبيق لا ينبغي أن تكون هناك أي مشاكل خاصة (لا يتم احتساب ما يسمى
RGB PPU ، حيث سيتم ملء الحواف باللون الأبيض).
رأي
في وقت قريب من صنع مشهد التسمية التوضيحية ، نشأت فكرة هذا المشهد تلقائيًا. كانت الفكرة الأولية هي إدخالها في لحظة عشوائية ، ولكن في النهاية كانت تتناسب مع النهاية بنجاح. على الرغم من المدة القصيرة ، يتكون المشهد من ثلاثة عناصر: محاكاة تحجيم العفريت ، وزيادة عدد درجات اللون الرمادي عن طريق تبديل إطارين ، ولعب عينة
DPCM برمجياً.
لمحاكاة القياس ، يتم استخدام حقيقة أن جميع العفاريت الكبيرة على متن
NES صغيرة ، في هذه الحالة بحجم 8x16. إذا قمت بتغييرها بالنسبة لبعضها البعض ، يمكنك الحصول على تأثير التحجيم أو التشويه ، والذي يبدو لائقًا جدًا مع قيم صغيرة من التغييرات. لهذا الغرض ، تحتاج إلى مضاعفة إزاحة كل عفريت من المركز بمقياس ، لكن بما أن معالج
NES لا يمكنه التعامل مع عدد كبير من مضاعفات عدد صحيح ، يتم تطبيق الخدعة - في بداية الإطار ، يتم النظر في شبكة الإحداثيات على محاور X و Y ، ويستخدم إخراج العفريت هذه القيم المحسوبة مسبقًا . وبالتالي ، يتم تقليل عدد الضربات المطلوبة بشكل كبير - مع رذاذ مركب من عناصر 8x8 (64 العفاريت) ، فقط 16 (8 + 8) مضاعفات مطلوبة بدلاً من 128 (8 * 8 * 2).
لا يمكن لـ
NES عرض سوى 4 درجات من الرمادي ، بما في ذلك الأبيض والأسود. يقلد التأثير 7 تدرجات: إذا عرضت بيكسل أبيض وأبيض خلال الإطار ، فسيكون لونه أبيض ، وإذا كان رماديًا ورماديًا فسيكون رماديًا ، وإذا قمت بالتبديل بين الأبيض والرمادي ، فسيبدو بصريًا مثل التدرج الوسيط بين الأبيض والرمادي. تكمن الصعوبة الرئيسية مرة أخرى في إعداد الرسومات ، وهما إطاران نصفان للصورة ، تم تنفيذهما بواسطة عدد من التلاعب اليدوي في
Gale و
GIMP . لتقليل الرجفة ، تتناوب خطوط الإطارات نصفية.


كان التشغيل
البرمجي لـ
DPCM مطلوبًا لأنه لم يكن هناك مكان لعينة بتنسيقات أفضل ، ولم يتمكن دعم الأجهزة من تشغيل عينات من النصف السفلي من الذاكرة ، ولكن لم يكن هناك مساحة لعينة من هذا الطول في الذاكرة العليا غير القابلة للتحويل. جزء الصوت في حد ذاته ليس من شاشة التوقف الأصلية ، بل هو جلجل سبر مشابه إلى حد ما من اللعبة المعروفة مع الانتهاء من القسوة ، السبر في وقت الانتهاء الفعلي.
بطاقة الذاكرة
في التطوير ، تم استخدام الأداة المساعدة NES Space Checker باستمرار ، مما يتصور ملء بنوك الذاكرة. من المثير للاهتمام رؤية مثال جيد لما وأين يوجد داخل البرنامج.
PRG00 ...
PRG02 - بيانات الموسيقى
PRG03 - نموذج للمشهد باستخدام طريقة عرض
PRG04 ...
PRG06 - بيانات حركة دوران الخرطوشة
PRG07 - الرسوم المتحركة للبلاط في عمق الممر
PRG08 - الرسوم المتحركة دوران البلاط في الممر
PRG09 - رمز مشهد البرج
PRG0A - رمز المشهد مع شعار الدورية
PRG0B - رمز المشهد مع اسم وممر
PRG0C - رمز المشهد مع الدورية خرطوشة ، كيربي ، عرض ، الغزاة ، Pakman
PRG0D - رمز المشهد مع intros ، والضوضاء ، وأشرطة اللون ، والتسميات التوضيحية
PRG0E - البنك الرئيسي للرمز ، يحتوي على مكالمات فقط من جميع المشاهد
PRG0F - البنك رمز ثابت ، مشغل موسيقى ، خرج العفريت ، معالجات المقاطعة
CHR00 - فيل الطفل والبلاط
للأشرطة الملونة
CHR01 - الخط والضوضاء
CHR02 - عرض العفريت والبلاط من الحروف بالتناوب في الاسم
CHR03 -
بلاط كيربي العادي
CHR04 - شيشاير كيربي
بلاطCHR05 - رسومات لمشهد مع خرطوشة دوارة
CHR06 ...
CHR0D - تدوير شعار الرسوم المتحركة
CHR0E - خط للتحية والرسوم المتحركة من البلاط الغازي
CHR0F -
بلاط باكمان
CHR10 ...
CHR13 - الرسوم المتحركة برج الملمس
CHR14 - ممر
البلاطCHR15 -
العفريت ماريو
CHR16 ...
CHR1F - غير مستخدم
بدلا من الاستنتاج
سأنتهي بمذكرة تحرير وسرد: في أي موقف غير مفهوم ، اكتب المشاهد التجريبية ، أيها السادة!