NOVA RAID — لعبة أركيد على Pico W
إصدار منشورلعبة فضاء كاملة بلغة C على العتاد مباشرة، منشورة كملف UF2 — وأُصلحت بعد أن كشف أول تشغيل على العتاد الحقيقي عيبًا لم يلتقطه أي محاكٍ.
القيد الذي شكّل كل شيء
تحتاج شاشة ST7796S نحو 39 مللي ثانية لاستقبال إطار كامل 480×320 عبر SPI بتردد 62.5 ميغاهرتز — وهذا وحده أكثر من ميزانية إطار عند 25 إطارًا في الثانية. الحل التصميمي: النواة 0 تحاكي وترسم إطارًا 240×160 بخطوة زمنية ثابتة، بينما تضاعف النواة 1 كل سطر وتبثه عبر DMA مزدوج التخزين، فيتداخل نقل الشاشة مع محاكاة الإطار التالي بدلًا من تعطيلها. (هذه حسابات تصميمية من ورقة البيانات لا قياسات على العتاد — والتمييز مهم.)
هندسة بلا وحدة فاصلة عائمة
لا FPU في Cortex-M0+: كل الحركة بحساب النقطة الثابتة 24.8 وجدول جيب من 64 مدخلًا. وتُحفظ أعلى النتائج في آخر قطاع فلاش 4 كيبيبايت مع إقفال النواة الثانية وتعطيل المقاطعات. ولا يلمس كود اللعبة العتاد إلا عبر طبقة تجريد صغيرة — ما يعني أن المصادر نفسها تُترجم على الحاسوب المكتبي، حيث يقود إطار اختبار مضيفي اللعبة عبر كل حالاتها في CI مع كل دفعة.
الخلل الذي لم يوجد إلا على العتاد الحقيقي
صدر v1.0.0 والاختبارات خضراء. أول إقلاع على اللوحة الفعلية عرض صورة
سالبة الألوان — خلفية بيضاء وكائنات معكوسة. تبيّن أن شاشة اللوحة تعمل في
وضع معكوس، وتسلسل التهيئة لم يرسل أمر INVON قط. أصلح v1.0.1 المشكلة في
اليوم نفسه، مع كتابة السبب الجذري في ملاحظة الإصدار. ويحتفظ المستودع
بالإصدارين وبصور العتاد قبل الإصلاح: النسخة الصادقة من «تم التحقق على
العتاد» تتضمن ما وجده التحقق الأول.
الأدلة
عشرة إطارات ملتقطة بدقة البكسل من إطار الاختبار المضيفي (موسومة كصور مُولّدة لا فوتوغرافية)، وخمس صور للعبة تعمل على اللوحة الفعلية، ومخططات SVG، وإحدى عشرة دورة CI ناجحة، وإصداران موسومان بملفات UF2. كل كود اللعبة والرسوم والأصوات أصلية، والمكونات الخارجية منسوبة في README.
معرض الأدلة

