وحدة المعالجة المركزية لـNES هي ريكوه 2A03 ، المقتبسة من وحدة 8 بت MOS Technology 6502 ويعمل على تردد 1.79 ميغاهرتز (أو 1.66 ميغاهرتز في أنظمة PAL).
القليل من السياق
كان سوق وحدات المعالجة المركزية في أواخر السبعينات وأوائل الثمانينات متنوع للغاية.

حاسوب كومودور PET، مع وحده المعالجة المركزيه 6502.

حاسوب تندي TRS-80، مع وحده المعالجة المركزيه Z80.
وإذا كانت شركة ما راغبة في بناء حاسوب صغير فإن الخيارات التالية متاحة:
- انتل 8080: معالج شعبي مميز في ألتير و أول كمبيوتر شخصي. و يحتوي على مسار بيانات مكون من 8 بت، و مسار عناوين مكون من 16 بت.
- زيالوج Z80: وهي نسخة 'غير رسمية' من معالجات 8080 معززة بمزيد من التعليمات والمسجلات والمكونات الداخلية. وتم بيعها بسعر أرخص ولا يزال بإمكانها تنفيذ برامج 8080 . وقد اختار امسترد و سنكلير (ضمن آخرين) هذا المعالج.
- موتورولا 6800: معالج آخر 8 بت مصمم من قبل موتورولا، يحتوي على مجموعة تعليمات مختلفة تماما. تضمنت مجموعات الكمبيوتر ذاتية الصنع ومحركات السينثيسايزر وأجهزة الكمبيوتر الكل في واحد 6800.
وكأن هذه الخيارات لم تكن كافية، ظهرت في السوق شركة أخرى تسمى MOS وقدمت نسخة معاد تصميمها من 6800: نسخة 6502. وإن كانت غير متوافقة مع الباقين، كانت الشريحة الجديدة بكثير أقل تكلفة للإنتاج ولم تكن مسألة وقت إلا أمام أشهر صانعي الحواسيب (كومودور، تندي، أبل، أتاري، أكورن وما إلى ذلك) اختاروا 6502 لتشغيل آلاتهم.
نعود إلى اليابان، احتاجت نينتندو إلى شيء منخفض الثمن ولكنه مألوف لتطويره، لذا فقد اختاروا 6502. تحديدا ريكوه، موردة المعالجات وأنتجت بنجاح معالج متوافق مع معالجات 6502.
لغز ترخيص ريكوه
كيفية تمكن ريكوه من استنساخ معالجات 6502 ليس واضحا حتى هذا اليوم. من المتوقع أن MOS رخصت تصميم الرقائق لريكوه ولكن هناك العديد من التناقضات حول ذلك:
- كلاً من إصدار ريكوه و MOS يحتويان على نفس التصميم، ولكن ريكوه يحتوي على مسارات مقطوعة (تعطيل بعض الوظائف) . سأدخل في المزيد من التفاصيل عنها لاحقا.
- لم يُعثر بعد على وثيقة تنص على أن شركة MOS منحت ترخيصا لمعالجات 6502 إلى ريكوه.
- يذكر مقال نشرته نيكي تريندي في عام 2008 أن ريكوه رخصت من روكويل وهي شركة مصنعة لرقائق مرخص لها . على الرغم من أنه قابل للنقاش ما إذا كان المصدر الآخر قادراً على توفير IP لطرف ثالث، على الأقل بموافقة MOS.
- لن تكون المرة الأولى التي تهرب فيها نينتندو من حقوق الملكية الفكرية، إذ حكمت Ikegami Tsushinki v. Nintendo في اليابان أن نينتندو لم تكن تملك الشفرة الأصلية لدونكي كونج .
وظائف مخبأة
إن ريكوه 2A03 ألغت وضع العد الثنائي المشفر عشريًا (BCD) الذي تم تضمينه في 6502 . يرمز BCD لكل منزلة عشرية كرقم ثنائي 4-بت منفصل. تستخدم معالجات 6502 'كلمات' 8-بت، بمعنى أن يمكن كل كلمة تخزن رقمين عشريين.
كمثال، الرقم العشري 42 يمثل كما يلي:
0010 1010في النظام الثنائي.0100 0010في نظام الـ BCD.
ويمكننا أن نمضي قدما وأن نتكلم عن هذا النظام، ولكن لإعطيكم موجزاً: BCD مفيد للتطبيقات التي تتطلب معالجة كل منزلة عشري على حدة (على سبيل المثال، الساعات الرقمية). غير ذلك يتطلب المزيد من التخزين، لأن كل كلمة 8 بت يمكن أن ترمز فقط إلى الرقم العشري 99 - في حين يمكن ترميز الأرقام الثنائية التقليدية حتى 255.
على أية حال، قامت ريكوه بتعمد بكسر وضع BCD في رقاقاتها بقطع خطوط التحكم التي تفعله. تم القيام بذلك على الأرجح لتجنب دفع الإتاوات لـ MOS، حيث أن BCD تم تسجيلها بواسطتهم (والتشريع الذي مكن من حماية حقوق الطبع والنشر لتصاميم الدوائر المتكاملة في الولايات المتحدة لم يدخل حيز التنفيذ حتى عام 1984 ).
الذاكرة
كل من ريكوه 2A03 و MOS 6502 تتميز بمسار بيانات 8 بت و مسار عناوين 16 بت، والذي يسمح لهم بالوصول إلى ما يصل إلى 64 كيلو بايت من الذاكرة. إذاً، كيف ملأت نينتندو هذه الذاكرة؟
من ناحية، تحتوي اللوحة الأم على شريحة توفر 2 كيلوبايت من ذاكرة الوصول العشوائي الثابتة (SRAM) . نينتندو تطلق على هذه المنطقة ب ذاكرة العمل (WRAM) ويمكن استخدامها في تخزين:
- المتغيرات للتعامل مع حالة اللعبة أو البحث عن المعلومات.
- المكدس 'stack' والذي يحفظ قيم المسجلات مؤقتاً بينما تقوم وحدة المعالجة المركزية بتنفيذ الروتينات الفرعية.
- منطقة عازلة 'buffer area' حتى تتمكن وحدة المعالجة المركزية من نسخ بيانات كبيرة بين موقعين.
على الجانب الآخر، من مكونات النظام هي الذاكرة الممثَّلة ، بمعنى أنه يتم الوصول إليها باستخدام عناوين الذاكرة، وبالتالي فإنها تشغل جزءاً من مساحة عنوان المعالج. لذا تملأ ذاكرة المعالج المركزي بعناوين تشير إلى شريط اللعبة و WRAM و PPU و APU ووحدتين تحكم (لا تقلق بشأن كل مكون، حيث يتم شرحها طوال هذا المقال).
الخرطوشة و بيانات اللعبة
فقط في حالة عدم معرفتك، يتم توزيع ألعاب NES على شكل خراطيش، وتتصل خطوط الشريط مباشرة بالمعالج المركزي.
قامت نينتندو بربط خطوط الخرطوشة بطريقة تجعل فقط 49120 بايت (~ 49.97 كيلوبايت) من بيانات الخرطوشة يمكن الوصول إليها . الآن، ماذا أعني بـ 'بيانات الشريط'؟ حسنًا، أي شريحة متصلة بتلك الخطوط، على سبيل المثال:
- ذاكرة ROM للبرنامج حيث يقيم برنامج اللعبة. يستثني ذلك بيانات الرسومات، كما سترى لاحقًا في قسم 'الرسومات'. بطبيعة الحال وعلى عكس الشرائح الأخرى، فهذه إلزامية.
- شرائح RAM لتمديد WRAM.
- شريحة RAM مع البطارية لتخزين الحفظ.
السبب في أن هناك مجموعات مختلفة هو أن المعالج المركزي لا يهتم بنوع المكون الذي يقرأه، فهو يرى فقط مواقع الذاكرة. لذا يقع على عاتق استوديوهات الألعاب اختيار (أو المجيء بـ) تصميم قابل للتطبيق يناسب لعبتهم.

لوحة دائرة مطبوعة من سوبر ماريو بروس .

نفس لوحة الدائرة مع أجزاء مهمة معلمة. يتم شرح معنى شريحة 'Lockout' في قسم 'مكافحة القرصنة'.
على سبيل المثال، استخدم "سوبر ماريو براذرز" من نينتندو تصميمًا يسمى NES-NROM-256 ويتكون من 32 كيلوبايت من برنامج ROM و 8 كيلوبايت من 'Character ROM' للرسومات (سنرى المزيد عنها في قسم 'الرسومات') . تم تجهيزه NES-NROM-256 أيضًا لاستيعاب ما يصل إلى 3 كيلوبايت من WRAM إضافي، رغم أن اللعبة لا تستخدمه.
ما وراء القدرات الحالية
إحدى القيود الكبيرة لشركات العنوان 16 بت (التي تؤثر في وحدات تحكم الجيل الثالث والرابع) هي مساحة العنوان المضغوطة. في الوقت الحاضر، يمكن لأجهزة الكمبيوتر 32 بت أن تعالج ذاكرة تصل إلى 4 جيجابايت (وتستمتع أجهزة 64 بت بذاكرة تصل إلى 16 إكسابايت) لذا لم يعد هذا الأمر مقلقًا، ولكن في ذلك الوقت كان لدى NES مساحة عناوين تبلغ 64 كيلوبايت فقط وكان جزء كبير منها تستهلكه الأجهزة الموجهة بالذاكرة (وهو ما تجنبه المنافسون).
إذن، هل يعني هذا أن استوديوهات الألعاب يمكنها فقط تطوير ألعاب لا تتجاوز حد 49.97 كيلوبايت؟ بالطبع لا! إذا علمتنا التاريخ شيئاً، فهو أنه دائماً هناك حلاً ذكياً لمشكلة تحدي؛ وتم معالجة هذه المشكلة باستخدام Mapper.

تمثيل مبسط لكيفية توسيع الممر لعناوين المعالج. مع تضمين الMapper، يمكن للمعالج الوصول إلى بنوك إضافية (مجموعات من العناوين) لبرنامج ROM الكبير. على الرغم من أن اللعبة/البرنامج لديه المهمة الجديدة بتحويل العمل بين البنوك يدوياً كلما دعت الحاجة.

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

لوحة دائرة مطبوعة للعبة سوبر ماريو بروس 2 . سوبر ماريو بروس 3 يستخدم هذا التنسيق أيضًا ولكنه يحتوي على 256 كيلوبايت من ذاكرة ROM الخاصة بالبرنامج.

نفس الصورة مع الأجزاء المهمة المعلمة. في البداية، كنت أعتقد أن WRAM الإضافي كان لتخزين الحفظات، ولكن أدركت بعد ذلك أنه لا توجد أي حفظات في هذه اللعبة (وليس هناك بطارية أيضًا). في الواقع، تُستخدم شريحة RAM تلك لتخزين مستوى غير مضغوط.
بالعودة إلى NES، ألعاب مثل 'سوبر ماريو بروس 2' و'سوبر ماريو بروس 3' تم شحنها مع مخطط 'MMC3' (الذي صنعته نينتندو) في الكارتريدج الخاص بها. للمقارنة، قدم MMC3 ما يصل إلى 512 كيلوبايت من المساحة لبرنامج ROM، وما يصل إلى 256 كيلوبايت لذاكرة الشخصيات وما يصل إلى 8 كيلوبايت من WRAM إضافية . يمكنك الآن أن ترى لماذا تختلف جودة 'Super Mario Bros 3' بشكل كبير مقارنة بالنسخة الأولى.
بشكل عام، بينما قد تبدو هذه الوحدة محدودة عند فحص ميزاتها الداخلية، تأكدت نينتندو من أنها يمكن أن تتكيف مع تطور التكنولوجيا. على الجانب الآخر، في حين أن هذه التقنية ساعدت في تقليل تكلفة الوحدة، فإنها حولت جزءاً من العبء إلى خرطوشة اللعبة. لذا، جودة الألعاب وتكاليف الخرطوشة كانتا محورين يجب على استوديوهات الألعاب التوازن بينهما.