سؤال

لقد شاهدت للتو Super Mario Bros. -1 World Glitch في YouTube وبدأت حقًا أتساءل عن الكود وراء تلك الألعاب. أي لغة تم استخدامها؟ ماذا عن نظام تشغيل لوحات التحكم في ألعاب الفيديو؟ هل يوجد أي موقع ويب لديه موارد حول هذا الموضوع؟ )

هل كانت مفيدة؟

المحلول

بعد أن عملت إلى حد ما على محاكي لـ NES (لديّ فك تشفير بعض الرموز المفروضة ، ولكن لم يتم محاكاة أي من الأجهزة الأخرى) ، ربما يمكنني مشاركة بعض الإجابات.

  1. لمعظم الألعاب تم استخدام Assembler. لم يكن تحسين المترجمين ، إذا كان متاحًا لوحدة المعالجة المركزية في أي مكان بالقرب من 20-30 عامًا كما هو الحال اليوم. للحصول على الأداء ، كنت بحاجة إلى الكتابة في Assembler (هذا صحيح حتى على جهاز الكمبيوتر. أجزاء من Doom في ASM). أكثر من ذلك ، منذ أن ركضت وحدة المعالجة المركزية NES بأقل من 2MHz. أيضا ، كانت الذاكرة أغلى مما هي عليه اليوم. تم تخزين ماريو الأصلي في حوالي 40 ألف من الذاكرة. كان 16 كيلو من ذلك هو الكود الفعلي ، والباقي هو الرسومات والموارد الصوتية.

  2. حتى عصر وحدة التحكم 32 بت ، أي نوع من نظام التشغيل ، أو حتى بنيت في المرافق ، كان على وحدة تحكم غير شائعة (كان Sega CD هو واحد من القلائل في عصر 16 بت مع BIOS الفعلي ، وكان هناك برنامج صغير محترق في معالج Game Boy الذي كان مسؤولاً عن شعار Nintendo الذي يركض على السلطة). انظر أعلاه حول قيود الحجم ، كسبب رئيسي. عند إدخال الخرطوشة ، تم توصيل رقاقة ROM في السيارة مباشرة بحافلة العنوان في وحدة المعالجة المركزية. على الطاقة ، ستقرأ وحدة المعالجة المركزية من عنوان ثابت للحصول على العنوان الفعلي الذي بدأه البرنامج في هذا الموقع ، ثم قفز إلى هذا الموقع وبدأت التنفيذ.

أما بالنسبة للموارد ، NES ديف ويكي لديه موارد تتعلق بأجهزة NES ، إلى جانب مراجع البرمجة. يحتوي مجال Zophar أيضًا على مستندات تقنية وذوم المجال العام لعدد قليل من وحدة التحكم (لا أعرف ما إذا كان ينبغي علي الارتباط بـ ZD على هذا الموقع ، فقط Google It)

نصائح أخرى

معظم لوحات المفاتيح القديمة لديها نوع من BIOS ROM.

بعض الكود المصدري لها على الإنترنت:

يمكنك قراءة التفكيك في الغالب إلى 7800 BIOS: http://atarihq.com/danb/files/7800bios.asm

يعد مصدر BIOS في Atari 5200 أكثر إثارة للاهتمام ، لأنه يعمل أكثر من مجرد تهيئة النظام وعرض شاشة رش: http://atarihq.com/danb/files/5200bios.txt

كان لدى Colecovision 8K (!) BIOS ROM أيضًا ؛ المصدر هنا: http://xi6.com/code/coleco/coleco29.asm

مصدر BIOS ODYSSEY II هنا: http://atarihq.com/danb/files/o2romsrc.txt

كان لدى Intellivision نظام تشغيل يسمى "exec" ، لا يمكن العثور على تفكيك عبر الإنترنت ، على الرغم من أنني وجدت مجموعة من المعلومات حول هذا الموضوع: http://www.intellivisiongames.com/bluesky/hardware/intelli_tech.html#exec و http://www.beeslife.com/faq.htm#_toc140592020 - كان لديه إجراءات لتحريك العفاريت ، وقراءة وحدات التحكم ، وحساب الجذور المربعة!

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

مرة أخرى في أواخر السبعينيات والثمانينيات وأوائل التسعينيات ، تمت كتابة معظم البرامج (بما في ذلك الألعاب) في ASM (التجميع). إذا لم تكن معتادًا على التجميع ، فهي عمليا لغة برمجة منخفضة المستوى وهي أجهزة خاصة ببرمجة وحدة المعالجة المركزية. هذا يعني أنه كان عليك التحكم في كل بكسل على الشاشة وإعادة إنشاء مكتبات لأشياء مثل الفيزياء والرسومات وحتى الصوت! كنت محدودًا جدًا في الذاكرة ، لذا كان لإعادة التدوير أمرًا ضروريًا. في Super Mario Bros الأصلي ، ستلاحظ أن الغيوم هي نفس الشجيرات ، والمختلف الوحيد هو اللون. تم إعادة تدوير الكثير من العفاريت وكانت فيزياء اللعبة محدودة.

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

لم أقم بإجراء بحث حول هذا الأمر ، لكن Super Mario Bros وألعاب التسعينيات المتاحة متوفرة كملفات .ns بدلاً من الخرطوشة وهناك تتوفر أيضًا OpenSource Emulator.

AFAIK ، هذه مكتوبة بشكل عام في C ++. لا أعرف عن شرعية ملفات NES والمحاكي هذه ، لكنها متوفرة على الإنترنت. لديك بحث مع السلسلة اليمنى!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top