تقنية MOS VIC-II

شريحة MOS 6569R3 (إصدار PAL) على اللوحة الرئيسية لجهاز C64

إن شريحة VIC-II ( شريحة واجهة الفيديو II )، والمعروفة تحديدًا باسم MOS Technology 6567/6566/8562/8564 ( إصدارات NTSC )، و6569/8565/8566 ( PAL )، هي الشريحة الدقيقة المكلفة بتوليد إشارات الفيديو Y/C (المدمجة في فيديو مركب في مُعدِّل الترددات اللاسلكية ) وإشارات تحديث DRAM في أجهزة الكمبيوتر المنزلية Commodore 64 و Commodore 128 .

بعد أن خلفت شريحة MOS Technology VIC الأصلية المستخدمة في VIC-20 ، كانت شريحة VIC-II واحدة من الشرائح المخصصة الرئيسية في Commodore 64 (والأخرى هي شريحة الصوت MOS Technology 6581 ).

تاريخ التطوير

صُممت شريحة VIC-II بشكل أساسي من قِبل ألبرت شاربنتييه وتشارلز وينتربل [ 1 ] في شركة MOS Technology، كخليفة لشريحة MOS Technology 6560 "VIC" . وكان فريق MOS Technology قد فشل سابقًا في إنتاج شريحتين رسوميتين، هما MOS Technology 6562 لجهاز الكمبيوتر Commodore TOI، و MOS Technology 6564 لجهاز Color PET، بسبب قيود سرعة الذاكرة. [ 2 ]

لبناء جهاز VIC-II، أجرى شاربنتييه ووينتربل دراسة سوقية لأجهزة الكمبيوتر المنزلية وألعاب الفيديو المتوفرة آنذاك ، وسجلا الميزات الحالية والميزات التي يرغبان في إضافتها إلى VIC-II. استُلهمت فكرة إضافة الرسوم المتحركة (Sprites) من جهاز الكمبيوتر TI-99/4A ومعالجه الرسومي المساعد TMS9918 . أما فكرة دعم اكتشاف التصادم، فاستُوحيت من جهاز ماتيل إنتيليفيجن . كما استُخدمت ميزات إضافية من جهاز أتاري 800 ، لا سيما وضع الصور النقطية، الذي كان هدفًا رئيسيًا لفريق MOS، حيث أن جميع منافسي كومودور الرئيسيين في مجال أجهزة الكمبيوتر المنزلية كانوا يعتمدون على رسومات الصور النقطية، بينما كان جهاز VIC-20 يدعم فقط الأحرف القابلة لإعادة التعريف. [ 3 ] [ 4 ] يُستخدم حوالي ثلاثة أرباع سطح الشريحة لوظيفة الرسوم المتحركة. [ 5 ]

تم تصميم الشريحة جزئيًا باستخدام أدوات أتمتة التصميم الإلكتروني من شركة أبليكون (التابعة الآن لشركة يو جي إس )، وجزئيًا يدويًا على ورق شفاف . وتم تصحيح أخطاء التصميم جزئيًا بتصنيع شرائح تحتوي على أجزاء صغيرة منه، والتي أمكن اختبارها بشكل منفصل. كان هذا سهلاً نظرًا لوجود مختبر البحث والتطوير ومصنع أشباه الموصلات التابعين لشركة إم أو إس تكنولوجي في نفس الموقع. خرجت الدفعة الأولى من شرائح الاختبار شبه كاملة الوظائف، مع وجود شريحة واحدة معيبة فقط. [ 6 ] تم تطوير الشريحة بتقنية 5 ميكرومتر. [ 3 ]

اكتمل العمل على شريحة VIC-II في نوفمبر 1981، بينما كان روبرت يانيس يعمل في الوقت نفسه على شريحة SID . وقد تم الانتهاء من كلتا الشريحتين، مثل شريحة كومودور 64 ، في الوقت المناسب لمعرض الإلكترونيات الاستهلاكية في عطلة نهاية الأسبوع الأولى من يناير 1982. [ 7 ]

ميزات VIC-II

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

كريج نيلسون من شركة إيبكس، 1986 [ 8 ]

التفاصيل الفنية

مخطط توصيل MOS 6567 VIC-II .

لاحظ أن عناوين السجلات المذكورة أدناه مذكورة كما يراها المعالج في جهاز C64. وللحصول على أرقام السجلات كما هو معتاد في جداول البيانات (أي  بدءًا من 0)، يجب حذف "D0" في البداية.

برمجة

يعرض برنامج Supratechnic ، وهو برنامج كتابة تم نشره بواسطة COMPUTE!'s Gazette في نوفمبر 1988، الاستخدام الدقيق لمقاطعات النقطية لعرض المعلومات خارج حدود الشاشة القياسية (هنا: الحدود العلوية والسفلية).

تتم برمجة جهاز VIC-II من خلال معالجة سجلات التحكم الـ 47 (مقارنةً بـ 16 سجلًا في جهاز VIC)، والمُخزّنة في الذاكرة ضمن النطاق $D000 $D02E في مساحة عناوين C64. من بين هذه السجلات، يُعنى 34 سجلًا منها حصريًا بالتحكم في الرسوم المتحركة (التي تُسمى MOBs، اختصارًا لـ "Movable Object Blocks" في وثائق VIC-II). وكما هو الحال في سابقه، يدعم VIC-II إدخال قلم الضوء ، وبمساعدة ذاكرة القراءة فقط (ROM) القياسية للأحرف في C64، وفّر مجموعة أحرف PETSCII الأصلية من عام 1977 على شاشة عرض ذات أبعاد مماثلة لشاشة سلسلة PET ذات الـ 40 عمودًا .

من خلال إعادة تحميل سجلات التحكم في معالج VIC-II عبر شفرة الآلة المتصلة بروتين مقاطعة المسح (مقاطعة خط المسح)، يُمكن برمجة الشريحة لتوليد أكثر من 8 صور متحركة متزامنة (وهي عملية تُعرف باسم تعدد إرسال الصور المتحركة )، ومنح كل جزء من الشاشة، وفقًا للبرنامج، خصائص تمرير ودقة ولون مختلفة. ويمكن زيادة الحد الأقصى لعدد الصور المتحركة المسموح به في كل خط مسح، والمحدد بـ 8 صور متحركة، عن طريق جعل الصور المتحركة تومض بسرعة. يُعد إتقان مقاطعة المسح أمرًا أساسيًا لإطلاق العنان لإمكانيات معالج VIC-II. وقد اعتمدت العديد من العروض التوضيحية وبعض الألعاب اللاحقة على تزامن ثابت بين وحدة المعالجة المركزية ومعالج VIC-II، بحيث يُمكن التلاعب بسجلات VIC في اللحظة المناسبة تمامًا، مع تقليل الاعتماد على مقاطعات المسح لضمان التزامن الصحيح، وبالتالي تقليل العبء الإضافي الناتج عنها.

رسومات الشخصيات

كان جهاز C64 مزودًا بمجموعة أحرف PETSCII في ذاكرة قراءة فقط (ROM) سعتها 4 كيلوبايت، ولكن، كما هو الحال في جهاز VIC-20 السابق، كانت البيانات الفعلية للأحرف تُقرأ من الذاكرة في موقع محدد. هذا الموقع هو أحد سجلات VIC-II، مما سمح للمبرمجين بإنشاء مجموعات الأحرف الخاصة بهم عن طريق وضع البيانات المناسبة في الذاكرة؛ كل حرف عبارة عن شبكة 8×8، حيث يمثل كل بايت 8 بتات أفقيًا، لذا يلزم 8 بايتات لكل حرف، وبالتالي تستخدم مجموعة الأحرف الكاملة المكونة من 256 حرفًا ما مجموعه 2048 بايتًا. نظريًا، يمكن استخدام ما يصل إلى ثماني مجموعات أحرف إذا تم ملء ذاكرة الفيديو بالكامل البالغة 16 كيلوبايت. [ 9 ] : 363

بالإضافة إلى مجموعات الأحرف، يستخدم جهاز VIC-II أيضًا 1000 بايت لتخزين 25 سطرًا، كل سطر يحتوي على 40 حرفًا ، بايت واحد لكل حرف، ويقع هذا الموقع في الوضع الافتراضي عند التشغيل بين $400 و $7E8 . [ 9 ] : 117-119. يتم الوصول إلى ذاكرة الوصول العشوائي للألوان (Color RAM) من خلال البتات من 8 إلى 11 من مصفوفة الفيديو؛ [ 10 ] في الإصدارين 64 و128، تقع هذه الذاكرة في مساحة الإدخال/الإخراج بين $D800 و $DBFF ولا يمكن نقلها من هذا الموقع. تحتوي هذه الذاكرة على قيم اللون 1 (اللون 3 في وضع الألوان المتعددة) لكل حرف.

تُخزَّن ذاكرة القراءة فقط (ROM) الخاصة بالأحرف في اثنتين من "نوافذ" VIC-II الأربع، عند العنوانين $1000 - $1FFF و $9000 - $9FFF ، على الرغم من أن وحدة المعالجة المركزية (CPU) لا تستطيع الوصول إليها هناك (قد يتم نقل ذاكرة القراءة فقط الخاصة بالأحرف إلى العنوان $D000 - $DFFF حيث تكون مرئية لوحدة المعالجة المركزية، ولكن ليس لـ VIC-II). وبالتالي، لا يمكن وضع بيانات الرسومات أو مخازن الفيديو المؤقتة عند العنوانين $1000 - $1FFF أو $9000 - $9FFF لأن VIC-II ستتعرف على ذاكرة القراءة فقط الخاصة بالأحرف هناك. ولأن شريحة الرسومات في VIC-II لا تستطيع استخدام هذه المناطق من ذاكرة الوصول العشوائي (RAM)، فقد استُخدمت بشكل متكرر للموسيقى/المؤثرات الصوتية (شريحة SID). يتميز جهاز C64 بإمكانية وجود ذاكرة الوصول العشوائي (RAM) وذاكرة القراءة فقط (ROM) في نفس العنوان في الذاكرة، ولكن وحدة المعالجة المركزية "تتعرف" على أحدهما وشريحة VIC-II "تتعرف" على الآخر.

في وضع الأحرف عالي الدقة الافتراضي، يمكن ضبط لون مقدمة كل حرف على حدة في ذاكرة الألوان. في وضع الأحرف متعددة الألوان، يقتصر اللون 3 على أول ثمانية قيم لونية ممكنة؛ ثم تُستخدم البتة الرابعة كعلامة تشير إلى ما إذا كان سيتم عرض هذا الحرف بدقة عالية أو بألوان متعددة، مما يتيح إمكانية دمج كلا النوعين على شاشة واحدة. [ 9 ] : 460-462. يتم ضبط اللونين 1 و2 بواسطة المسجلين في $D022 و $D023 وهما عامان لجميع الأحرف. [ 9 ] : 373

في حال استخدام وضع ألوان الخلفية الموسّعة، تُستخدم أعلى بتين من رمز الحرف لاختيار أحد سجلات ألوان الخلفية الأربعة. يتيح هذا أربعة ألوان خلفية مختلفة على الشاشة، لكن على حساب اقتصار عدد الأحرف على 64 حرفًا فقط بدلًا من 256. ونظرًا لهذا التقييد، نادرًا ما استخدمته الألعاب.

وضع الصورة النقطية

كان إضافة وضع عرض الصور النقطية القابل للعنونة على جميع النقاط أحد الأهداف الرئيسية لفريق تصميم كومودور، نظرًا لافتقار جهاز VIC-I لهذه الميزة. ومع ذلك، ولتقليل استخدام الدوائر الإضافية قدر الإمكان، قاموا بتنظيمها بنفس طريقة وضع الأحرف، أي مربعات 8x8 و4x8. تتطلب رسومات الصور النقطية صفحة بحجم 8 كيلوبايت لبيانات البكسل، ويتوافق كل بايت مع صف واحد من ثمانية أو أربعة بكسلات. البايت التالي هو الصف الذي يليه مباشرةً، وبعد الصف الثامن، يعود إلى أعلى المربع التالي.

في الصور النقطية عالية الدقة، تُستخدم ذاكرة الوصول العشوائي للشاشة لتخزين ألوان المقدمة والخلفية لكل مربع (النصف العلوي والسفلي من كل بايت). هذا هو الوضع الوحيد في معالج VIC-II الذي لا يستخدم ذاكرة الوصول العشوائي للألوان في العنوان $D800 أو سجل لون الخلفية في العنوان $D021 .

يسمح وضع الصور النقطية متعددة الألوان بثلاثة ألوان لكل مربع (اللون الرابع هو لون الخلفية كما هو محدد في $D021 ). يتم اختيار اللونين 1 و2 بواسطة البتات الموجودة في ذاكرة الوصول العشوائي للشاشة (كما هو الحال في الصور النقطية عالية الدقة)، بينما يتم اختيار اللون الثالث من ذاكرة الألوان.

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

رسومات متحركة

تتكون رسومات VIC-II من نوعين: أحادية اللون بحجم 24×21 بكسل، ومتعددة الألوان بحجم 12×21 بكسل. وكما هو الحال في رسومات الأحرف، تحتوي الرسومات متعددة الألوان على لون واحد لكل رسمة، بالإضافة إلى لونين عامين. يحتوي VIC-II على ثماني رسومات، تشغل كل منها 64 بايت من الذاكرة، ولكن مع بعض القيود، يمكنه عرض عدد أكبر بكثير. يُعدّ تعدد إرسال الرسومات طريقة شائعة لعرض أكثر من ثماني رسومات على الشاشة (مع العلم أن الحد الأقصى هو ثماني رسومات لكل سطر مسح). يمكن استطلاع عداد خطوط المسح في VIC-II حتى الوصول إلى النقطة المطلوبة على الشاشة، أو يمكن برمجة مقاطعة المسح النقطي لتفعيلها عند سطر مسح معين، وبعدها يقوم البرنامج بتغيير إحداثيات الرسومات بسرعة. يمكن أن تؤدي هذه الطريقة إلى عرض العديد من الرسومات الإضافية على الشاشة في وقت واحد، ليصل العدد الإجمالي غالبًا إلى 16 أو 24 رسمة أو أكثر. أما بالنسبة للعروض التوضيحية، فإن هذا الحد أكثر مرونة.

نظريًا، يبلغ الحد الأقصى لعدد الصور المتحركة المختلفة المرئية في الوقت نفسه 256 صورة (بافتراض امتلاء صفحة VIC-II بالكامل، والتي تبلغ سعتها 16 كيلوبايت). ويتم الوصول إليها باستخدام رقم كتلة للإشارة إلى كل نمط صورة متحركة في الذاكرة، بدءًا من 0 وحتى 255 ($FF)، وذلك حسب موقعها في صفحة الفيديو. (في حال استخدام بنك الفيديو الثاني (المرقم من 0 إلى 3)، فإن الكتلة 0 تشير إلى الصورة المتحركة المخزنة في $4000 ، بينما تشير الكتلة 255 إلى الصورة المتحركة المخزنة في $7FC0 ).

قد يتضاعف حجم كل صورة متحركة عموديًا أو أفقيًا أو كليهما. هذا لا يزيد من دقة الصورة (فهي لا تزال بعرض 24 بكسل وارتفاع 21 بكسل)، ولكن كل بكسل سيصبح ضعف العرض و/أو ضعف الارتفاع.

نظرًا لأن سجل الموضع الأفقي لكل صورة متحركة هو بايت واحد ومحدود بقيمة قصوى تبلغ 255، فإنه لا يمكنه وحده تغطية كامل مساحة شاشة VIC-II البالغة 320 بكسل، لذلك يوفر سجل إضافي يسمى علامة البايت الأكثر أهمية بتًا للموضع التاسع لجميع الصور المتحركة.

يحتوي كل من $D01E و $D01F على سجلات الخلفية وسجلات تصادم الكائنات الرسومية. نادرًا ما يُستخدم السجل الأول لأنه لا يوفر معلومات عن كائن الخلفية المحدد الذي تلامسه الكائن الرسومي.

يحتوي الملف $D01B على سجل أولوية حركة الكائن الرسومي إلى الخلفية، والذي يُستخدم لتحديد ما إذا كان الكائن الرسومي يتحرك خلف أو أمام رسومات الخلفية. عندما يدخل كائن رسومي نفس المساحة مع كائن رسومي آخر، فإن الكائنات ذات الأرقام الأقل ستتجاوز دائمًا الكائنات ذات الأرقام الأعلى.

التمرير

لتمرير شاشة الأحرف، يتم ضبط معالج VIC-II على وضع 38 عمودًا و/أو 24 سطرًا عبر المسجلين $D011 و $D016 . يؤدي هذا إلى إنشاء مخزن مؤقت خارج الشاشة، حيث يتم وضع صف الأحرف المراد تمريره. من خلال ضبط بتات التمرير في المسجلين المذكورين، يمكن تحريك صف واحد على الشاشة، وبعد ذلك يتكرر ما لم يتم وضع صف جديد في المخزن المؤقت. يتم تمرير ذاكرة الوصول العشوائي للألوان بالتزامن مع ذاكرة الوصول العشوائي للشاشة، وتعمل بنفس الطريقة.

يُعدّ التمرير في معالج VIC-II مهمةً معقدةً نسبيًا وتستهلك موارد المعالج بكثافة، مع أنّه ليس من النادر أن يلجأ مبرمجو ألعاب C64 إلى حيلةٍ تتمثل في تصميم الرسومات بحيث تبقى ذاكرة الألوان ثابتة. ومن الحيل الشائعة الأخرى استخدام جزء من الشاشة (ربما الصفوف الأربعة أو الخمسة العلوية من الأحرف) كمنطقة لعرض حالة اللعبة، مثل النتيجة وعدد المحاولات، مما يقلل من كمية التمرير المطلوبة. وأخيرًا، غالبًا ما يكون من الضروري استخدام تقنية "التخزين المؤقت المزدوج" لمنع تشوّه الشاشة . حيث يتم حجز كتلتين من ذاكرة الشاشة، كلٌّ منهما بسعة 1 كيلوبايت؛ تُعرض إحداهما بينما تُكتب الأخرى، ثم يتم تبديلهما بسرعة أثناء فترة اختفاء الشاشة (vblank) من خلال معالجة سجلات VIC-II. لسوء الحظ، لا يمكن تطبيق هذه التقنية على ذاكرة الألوان.

في أواخر عمر جهاز كومودور 64 التجاري، تم اكتشاف ثغرة أمنية تُعرف باسم VSP (تحديد موضع الشاشة المتغير)، والتي تتضمن التلاعب ببتات التحكم في $D011 لإنتاج تمرير سريع بتكلفة دورة معالج أقل بكثير من سجلات التمرير القياسية. مع ذلك، تطلبت هذه الثغرة برمجة دقيقة للغاية، ولم تكن تعمل بكفاءة على بعض إصدارات VIC-II؛ كما أنها تقتصر على التمرير الأفقي فقط. وقد استُخدمت هذه الثغرة بشكل ملحوظ في لعبة Mayhem in Monsterland .

مقاطعات الراستر

يُعدّ استخدام مقاطعات الشبكة جزءًا أساسيًا من برمجة ألعاب C64. في حالة التشغيل الافتراضية، تُولّد شريحة MOS Technology CIA الأولى مقاطعة قابلة للإخفاء (IRQ) 60 مرة في الثانية (سواءً كانت NTSC أو PAL، فهذا لا علاقة له بتحديث الفيديو)، مما يُرسل وحدة المعالجة المركزية إلى معالج مقاطعات النواة الموجود في العنوان $EA31 . يستجيب المعالج لمقاطعة CIA، ويُحدّث الساعة، ويفحص لوحة المفاتيح، ويُومض المؤشر بلغة BASIC.

عادةً ما تُعطّل الألعاب مقاطعة CIA، وتُهيّئ VIC-II لتوليد مقاطعات عند الوصول إلى سطر مسح مُحدد، وهو أمر ضروري لتمرير الشاشة المنقسمة وتشغيل الموسيقى. تُعيد اللعبة تعيين متجه IRQ عند $0314 / $0315 إلى مُعالج النقط الخاص بها، والذي يُنفّذ هذه الوظائف، ثم يُنفّذ اختياريًا تعليمة JMP $EA31 لإعادة التحكم إلى النواة.

تستخدم بعض الألعاب مقاطعة واحدة فقط (IRQ)؛ إلا أن المقاطعات المتسلسلة أكثر شيوعًا وتُحسّن استقرار البرنامج. في هذا الإعداد، يُعاد توجيه المقاطعة إلى الروتين الثاني، وهكذا لكل روتين حتى يُعيدها الروتين الأخير إلى عنوان المقاطعة الأولى. عند استخدام المقاطعات المتسلسلة، يلزم تنفيذ تعليمة JMP $EA31 واحدة فقط في السلسلة، ويمكن إنهاء البقية بـ JMP $EA81 ، التي تُنهي معالج النواة. كما أنه من الشائع أن تستبدل الألعاب النواة وتستخدم معالج مقاطعات خاص بها. يمكن استخدام NMI لإنشاء خيط مقاطعة إضافي، مع العلم أن الضغط عن طريق الخطأ على مفتاح الاستعادة قد يُؤدي إلى آثار جانبية غير مرغوب فيها، حيث يُؤدي الضغط عليه إلى NMI.

قد يقوم جهاز VIC-II أيضًا بتوليد مقاطعة مسح ضوئي من سجلات التصادم، ولكن نادرًا ما يتم استخدام هذه الميزة لأنها لا توفر معلومات كافية للبرنامج في معظم الحالات.

رسم خرائط الذاكرة

يحتوي معالج VIC-II على ناقل عناوين 14 بت، ويمكنه استخدام أي من قطاعات ذاكرة C64 الأربعة (سعة كل منها 16 كيلوبايت) لبيانات الفيديو. ولإدارة ذلك، تُضاف بتان إضافيتان للعناوين من بتات منافذ CIA. النطاق الافتراضي عند التشغيل هو من 0000 إلى 3FFF . يُعد القطاع الثاني ( من 4000 إلى 7FFF ) الخيار الأمثل عادةً للبرمجة بلغة BASIC، كونه القطاع الوحيد الذي يُمثل ذاكرة وصول عشوائي (RAM) خالية تمامًا، دون أي ذاكرة قراءة فقط (ROM) أو سجلات إدخال/إخراج مُرتبطة به. كما يُعد القطاع الرابع ( من C000 إلى FFFF ) خيارًا جيدًا أيضًا عند استخدام لغة الآلة، حيث يجب تعطيل ذاكرة القراءة فقط (ROM) الخاصة بالنواة لتمكين وحدة المعالجة المركزية من الوصول للقراءة، كما أنه يتجنب وجود بيانات ورموز برمجية غير متجاورة قد تنتج عن استخدام النطاق من 4000 إلى 7FFF . لاحظ أنه يمكن تخزين بيانات الرسومات بحرية أسفل ذاكرة القراءة فقط الأساسية (BASIC ROM) في النطاق من $A000 إلى $BFFF ، وذاكرة القراءة فقط الخاصة بالنواة (kernel ROM) في النطاق من $E000 إلى $FFFF، أو سجلات الإدخال/الإخراج وذاكرة الوصول العشوائي للألوان (Color RAM) في النطاق من $D000 إلى $DFFF ، حيث أن معالج VIC-II لا يرى سوى ذاكرة الوصول العشوائي، بغض النظر عن كيفية تعديل تعيين ذاكرة وحدة المعالجة المركزية (CPU). تكون ذاكرة القراءة فقط الخاصة بالأحرف مرئية فقط في القطاعين الأول والثالث، وبالتالي إذا تم استخدام القطاع الثاني أو الرابع، فيجب على المبرمج توفير بيانات الأحرف الخاصة به. يجب أن تشغل ذاكرة الوصول العشوائي للشاشة وصفحة الصور النقطية والرسومات المتحركة ومجموعات الأحرف نفس نافذة القطاع (شريطة ألا يتم تغيير بتات CIA عبر مقاطعة خط المسح). تحتوي البايتات الستة الأخيرة من ذاكرة النظام ( $FFFA - $FFFF ) على متجهات IRQ و NMI وإعادة الضبط، لذلك إذا تم استخدام الجزء العلوي من الذاكرة لتخزين مجموعة أحرف أو بيانات رسوم متحركة، وتم استبدال ذاكرة القراءة فقط (ROM) الخاصة بالنواة مما يكشف عن ذاكرة الوصول العشوائي (RAM) الموجودة أسفلها لوحدة المعالجة المركزية (CPU)، فسيكون من الضروري التضحية بحرف واحد أو رسم متحرك واحد لتجنب الكتابة فوق المتجهات.

السجلات

يحتوي جهاز VIC-II على 47 سجل قراءة/كتابة مدرجة أدناه:

يسجلالنظام الست عشريالبت 7البت 6البت 5البت 4البت 3الجزء 2البت 1البت 0وصف
0
D000
M0X
إحداثيات X Sprite 0
1
D001
M0Y
إحداثيات Y للكائن 0
2
D002
M1X
كائن إحداثيات س 1
3
D003
M1Y
كائن إحداثيات Y 1
4
D004
M2X
صورة إحداثيات X 2
5
D005
M2Y
صورة متحركة بإحداثيات Y 2
6
D006
M3X
صورة متحركة بإحداثيات X 3
7
D007
M3Y
صورة متحركة بإحداثيات Y 3
8
D008
M4X
صورة إحداثيات X رقم 4
9
D009
M4Y
صورة متحركة بإحداثيات Y رقم 4
10
D00A
M5X
صورة إحداثيات X 5
11
D00B
M5Y
صورة متحركة بإحداثيات Y 5
12
D00C
M6X
إحداثيات X Sprite 6
13
D00D
M6Y
إحداثيات Y Sprite 6
14
D00E
M7X
صورة متحركة بإحداثيات X 7
15
D00F
M7Y
إحداثيات Y Sprite 7
16
D010
M7X8M6X8M5X8M4X8M3X8M2X8M1X8M0X8البتات الأكثر أهمية لإحداثيات X
17
D011
RST8وحدة التحكم الإلكترونيةبي إم إمعرينRSEL
YSCRALL
سجل التحكم 1
18
D012
RST
عداد النقاط
19
D013
LPX
قلم ضوئي إكس
20
D014
LPY
قلم ضوئي Y
21
D015
M7EM6EM5EM4EM3EM2EM1EM0Eتم تفعيل خاصية Sprite
22
D016
RESMCMCSEL
إكس سلو
سجل التحكم 2
23
D017
M7YEM6YEM5YEM4YEM3YEM2YEM1YEM0YEتوسعة Sprite Y
24
D018
VM13VM12VM11VM10CB13CB12سي بي 11مؤشرات الذاكرة
25
D019
IRQبرنامج ILPIMMCIMBCأولاًسجل المقاطعة
26
D01A
ELPEMMCEMBCإيرستتم تفعيل المقاطعة
27
D01B
M7DPM6DPM5DPM4DPM3DPM2DPM1DPM0DPأولوية بيانات Sprite
28
D01C
M7MCM6MCM5MCM4MCM3MCM2MCM1MCM0MCسبرايت متعدد الألوان
29
D01D
M7XEM6XEM5XEM4XEM3XEM2XEM1XEM0XEتوسعة Sprite X
30
D01E
M7MM6MM5Mرجل يبحث عن رجلM3MM2MM1MM0Mتصادم بين الكائنات الرسومية
31
D01F
M7DM6DM5DM4DM3DM2DM1DM0Dتصادم بيانات Sprite
32
D020
المفوضية الأوروبية
لون الحدود
33
D021
B0C
لون الخلفية 0
34
D022
B1C
لون الخلفية 1
35
D023
B2C
لون الخلفية 2
36
D024
B3C
لون الخلفية 3
37
D025
MM0
صورة متعددة الألوان 0
38
D026
MM1
صورة متعددة الألوان 1
39
D027
M0C
صورة ملونة 0
40
D028
M1C
صورة ملونة 1
41
D029
M2C
صورة ملونة 2
42
D02A
M3C
صورة ملونة 3
43
D02B
M4C
صورة ملونة 4
44
D02C
M5C
صورة ملونة 5
45
D02D
M6C
صورة ملونة 6
46
D02E
M7C
صورة ملونة 7

الألوان

تحتوي شريحة VIC-II على لوحة ألوان ثابتة مكونة من 16 لونًا، كما هو موضح أعلاه.

في وضع الأحرف متعددة الألوان (160×200 بكسل، وهو الوضع المستخدم في معظم الألعاب)، تتكون الأحرف من 4×8 بكسل (تبقى الأحرف مربعة تقريبًا لأن عرض البكسلات مضاعف) وتستخدم 4 ألوان من أصل 16 لونًا. ثلاثة من هذه الألوان موحدة على كامل الشاشة (لون الخلفية، واللون المتعدد 1، واللون المتعدد 2)، بينما يمكن تحديد اللون المتبقي بشكل فردي لكل منطقة من مناطق 4×8 بكسل كما هو محدد في ذاكرة الألوان. أما في وضع الرسوم المتحركة متعددة الألوان (12×21 بكسل)، فتتكون الرسوم المتحركة من ثلاثة ألوان بالإضافة إلى الشفافية: لونان مشتركان بين جميع الرسوم المتحركة ولون واحد خاص بكل رسمة. يختار الفنانون الألوان المشتركة بحيث يؤدي دمجها مع الألوان الفردية إلى انطباع ملون. تقوم بعض الألعاب بإعادة تحميل الألوان المشتركة أثناء مقاطعة المسح الضوئي؛ على سبيل المثال، منطقة تحت الماء في لعبة Turrican II (التي كانت متميزة رأسيًا) لها ألوان مختلفة. أما ألعاب أخرى، مثل ألعاب Epyx الصيفية ولعبة كرة السلة Sam & Ed من COMPUTE! Gazette ، فتستخدم صورتين عاليتي الدقة لتتيح استخدام لونين للخلفية دون التضحية بالدقة الأفقية.بالطبع، هذه التقنية تقلل عدد الصور المتحركة المتاحة إلى النصف.

في أجهزة C64 بتقنية PAL ، يمكن استخدام خط تأخير PAL في الشاشة أو التلفزيون، الذي يُحسب متوسط ​​درجة اللون (وليس سطوع) خطوط الشاشة المتتالية، لإنشاء سبعة ألوان غير قياسية عن طريق تبديل خطوط الشاشة التي تُظهر لونين متطابقين في السطوع. يوجد سبعة أزواج من هذه الألوان في شريحة VIC. [ 11 ]

لم يُخصّص فريق تطوير جهاز C64 وقتًا طويلًا لحساب لوحة الألوان الستة عشر رياضيًا. قال روبرت يانيس، الذي شارك في تطوير جهاز VIC-II:

أخشى أن اختيار الألوان لم يُبذل فيه جهدٌ يُذكر كما تظن. بما أننا كنا نتحكم تمامًا في درجة اللون والتشبع والإضاءة، فقد اخترنا ألوانًا تُناسبنا. ولكن لتوفير مساحة على الشريحة، كانت العديد من الألوان ببساطة على الجانب المقابل من عجلة الألوان للألوان التي اخترناها. هذا سمح لنا بإعادة استخدام قيم المقاومات الموجودة، بدلًا من وجود مجموعة فريدة تمامًا لكل لون. [ 12 ]

تتميز الإصدارات المبكرة من جهاز VIC-II المستخدمة في أجهزة PAL C64 بلوحة ألوان مختلفة عن الإصدارات اللاحقة. [ 13 ]

يتم توليد لوحة الألوان الكاملة المكونة من ستة عشر لونًا بناءً على اختلافات إشارات YPbPr كما هو موضح أدناه:

الرقم — الاسمYالرصاص (نسبياً)Pr (rel.)
0 — أسود000
1 - أبيض100
2 - أحمر0.3125-0.38268340.9238795
3 — سماوي0.6250.3826834-0.9238795
4 — بنفسجي0.3750.70710680.7071068
5 - أخضر0.5-0.7071068-0.7071068
6 — أزرق0.2510
7 — أصفر0.75-10
8 — برتقالي0.375-0.70710680.7071068
9 — بني0.25-0.92387950.3826834
10 — أحمر فاتح0.5-0.38268340.9238795
11 — رمادي داكن0.312500
12 — رمادي متوسط0.4687500
13 — أخضر فاتح0.75-0.7071068-0.7071068
14 — أزرق فاتح0.4687510
15 — رمادي فاتح0.62500

VIC-IIe

مخطط توصيل MOS 8566 VIC-IIe
مخطط توصيل MOS 8566 VIC-IIe

تستخدم وحدة VIC-IIe 8564/8566 في جهاز Commodore 128 ثمانية وأربعين طرفًا بدلًا من أربعين، نظرًا لقدرتها على توليد إشارات أكثر، من بينها إشارة الساعة لوحدة المعالجة المركزية Zilog Z80 الإضافية في ذلك الجهاز. كما تحتوي على سجلين إضافيين. يُستخدم أحد السجلين للوصول إلى لوحة المفاتيح الرقمية الإضافية والمفاتيح الإضافية الأخرى في ذلك الجهاز؛ وقد أُضيفت هذه الوظيفة إلى وحدة VIC لأنها كانت أسهل مكان في الجهاز لإضافة أطراف الإخراج الثلاثة الإضافية اللازمة. أما السجل الإضافي الآخر فيُستخدم للتبديل بين تردد ساعة النظام 1  ميجاهرتز و2  ميجاهرتز؛ عند السرعة الأعلى، يعرض خرج الفيديو في وحدة VIC-II كل بايت ثانٍ في الكود كنمط بتات أسود عالي الدقة على الشاشة، مما يشير إلى استخدام وضع 80 عمودًا في جهاز C128 عند تلك السرعة (عبر شريحة 8563 VDC RGB). بشكل غير رسمي، يتوفر السجلان الإضافيان أيضًا في وضع C64 الخاص بجهاز C128، مما يسمح باستخدام بعض المفاتيح الإضافية، بالإضافة إلى تنفيذ التعليمات البرمجية التي تعتمد على وحدة المعالجة المركزية (مثل العمليات الحسابية المكثفة) بسرعة مضاعفة وبدون فيديو في برامج C64 المصممة خصيصًا. [ 14 ] كما تُعد السجلات الإضافية أحد مصادر عدم التوافق الطفيف بين وضع C64 الخاص بجهاز C128 وجهاز C64 حقيقي - حيث قامت بعض برامج C64 القديمة بالكتابة عن غير قصد فيبت التبديل 2 ميجاهرتز  ، والذي لن يفعل شيئًا على الإطلاق على جهاز C64 حقيقي، ولكنه سيؤدي إلى شاشة مشوهة على جهاز C128 في وضع C64.

يتمتع معالج VIC-IIe بقدرة غير معروفة على نطاق واسع، وهي إنشاء مجموعة ألوان إضافية عن طريق معالجة السجلات بطريقة محددة تجعل إشارة اللون خارج الطور عما تعتبره الأجزاء الأخرى من الشريحة. وقد تم عرض هذه القدرة في عرض "Risen from Oblivion" التوضيحي. [ 15 ] لسوء الحظ، لا تعمل هذه الميزة على جميع الشاشات - وقد تم التأكد من صحة الألوان على شاشات Commodore CRT وما يماثلها.

باستخدام السلوك المحدد لبت الاختبار في جهاز VIC-IIe، فإنه قادر أيضًا على إنتاج صورة متداخلة حقيقية بدقة 320×400 (وضع الدقة العالية) و160×400 (وضع الألوان المتعددة). [ 16 ]

قائمة إصدارات VIC-II

أجرت شركة كومودور العديد من التعديلات على جهاز VIC-II خلال فترة إنتاجه. وذكرت مجلة Compute!'s Gazette في عددها الأول، الصادر في يوليو 1983، أنه قد تم إجراء ثمانية تعديلات بالفعل منذ إصدار جهاز كومودور 64 في منتصف عام 1982. [ 17 ]

  • بال
    • MOS Technology 6569 ( PAL-B ، المستخدم في معظم دول PAL)
    • MOS Technology 6572 ( PAL-N ، يستخدم في جنوب أمريكا الجنوبية فقط)
    • MOS Technology 6573 ( PAL-M ، يستخدم في البرازيل فقط)
    • تقنية MOS 8565 - إصدار HMOS-II للوحات الأم "C64E"
    • تقنية MOS 8566 VIC-II E (PAL-B) إصدار C128
    • MOS Technology 8569 VIC-II E (PAL-N) C128 الإصدار

استُخدمت النسخة الأولى من شريحة VIC-II في الأجهزة المصنعة خلال عامي 1982 وأوائل 1983؛ وكانت مزودة بغلاف خزفي لأسباب حرارية، وتُنتج 64 إشارة لونية NTSC لكل خط. كما لم تُخرج هذه الشرائح إشارات منفصلة للون والسطوع. أما النسخ اللاحقة، فكانت مزودة بغلاف بلاستيكي أقل تكلفة، و65 إشارة لونية لكل خط (لنظام NTSC، و63 لنظام PAL)، بالإضافة إلى فصل إشارات اللون والسطوع، مما أتاح شكلاً مبكراً من تقنية S-video. أُجريت عدة تعديلات بهدف رئيسي هو تحسين جودة إخراج الفيديو، التي كانت رديئة في الوحدات الأولى، والقضاء على خلل برمجي كان يتسبب في ظهور وحدات بكسل عشوائية على الشاشة (استغلت بعض الألعاب المبكرة هذا الخلل عمداً لتأثيرات رسومية لم تعمل بالتالي على أجهزة C64 اللاحقة). كان الهدف من وجود 64 إشارة لونية في شريحة VIC-II الأولية هو السماح بظهور تشوهات لونية NTSC في وضع الصور النقطية عالية الدقة كما في أجهزة أتاري ذات 8 بت، ولكن تم التخلي عن هذه الفكرة سريعاً.

بسبب ضرورة التحول إلى غلاف بلاستيكي لأسباب تتعلق بالتكلفة، كان ارتفاع درجة الحرارة مشكلة شائعة في جهاز VIC-II. ويعود ذلك لعدة أسباب، منها الكثافة العالية للرقاقة مقارنةً بعملية التصنيع المستخدمة، وسرعتها الداخلية العالية (8  ميجاهرتز). حاولت شركة كومودور إيجاد حل مؤقت لهذه المشكلة باستخدام درع الترددات اللاسلكية المصنوع من الألومنيوم كمشتت حراري (في أجهزة NTSC؛ أما أجهزة PAL فكانت تُباع في دول ذات معايير أقل صرامة للتداخل اللاسلكي من الولايات المتحدة، ولذلك استخدمت فقط ورق مقوى مطلي بالألومنيوم)، إلا أن هذا الحل لم يكن فعالاً تماماً في منع ارتفاع درجة الحرارة وتلف الرقاقة.

صُنعت شريحة VIC-II من سلسلة 85xx المستخدمة في جهاز C64Cs بتقنية HMOS الحديثة بدقة 3.5 ميكرومتر ، وتتطلب خط طاقة واحد فقط بجهد 5 فولت بدلاً من خطي الطاقة المزدوجين 12 فولت و5 فولت الموجودين في شريحة VIC-II من سلسلة 65xx. تعمل هذه الشرائح بدرجة حرارة أقل بكثير ولا تعاني من مشاكل ارتفاع درجة الحرارة التي تؤثر على شريحة VIC-II من سلسلة 65xx.

توجد عدة إصدارات من 6569: 6569R1 (عادةً ما تكون مطلية بالذهب)، و6569R3، و6569R4، و6569R5. أما الإصدار الأكثر شيوعًا من 8565 فهو 8565R2.

انظر أيضاً

مراجع

  1. بيرسال، كيمبرلي (30 أكتوبر 2016). "اتضح أن قائد فريق هندسة كومودور 64 تقاعد في يوركتاون" . pilotonline.com . تاريخ الاسترجاع: 12 أكتوبر 2021 .
  2. باغنال، برايان (2005). "المشروع السري 1981". على الحافة: الصعود والسقوط المذهل لشركة كومودور ( الطبعة الأولى). وينيبيغ، مانيتوبا: دار فاريانت للنشر. الصفحات 224-225 . ISBN   0-9738649-0-7.
  3. 1 2 بيري، تيكلا س.؛ واليش، بول (مارس 1985). "دراسة حالة تصميمية: كومودور 64" (ملف PDF) . مجلة IEEE Spectrum . 22 (3). نيويورك، نيويورك: معهد مهندسي الكهرباء والإلكترونيات : 48-58 . Bibcode : 1985IEEES..22c..48P . doi : 10.1109/MSPEC.1985.6370590 . ISSN 0018-9235 . S2CID 11900865. مؤرشف من الأصل (ملف PDF) في 13 مايو 2012. تم الاسترجاع في 12 نوفمبر 2011 .  
  4. باغنال، برايان (2005). "المشروع السري 1981". على الحافة: الصعود والسقوط المذهل لشركة كومودور ( الطبعة الأولى). وينيبيغ، مانيتوبا: دار فاريانت للنشر. ص 227. ISBN   0-9738649-0-7.
  5. باغنال، برايان (2005). "المشروع السري 1981". على الحافة: الصعود والسقوط المذهل لشركة كومودور ( الطبعة الأولى). وينيبيغ، مانيتوبا: دار فاريانت للنشر. ص 229. ISBN   0-9738649-0-7.
  6. باغنال، برايان (2005). "المشروع السري 1981". على الحافة: الصعود والسقوط المذهل لشركة كومودور ( الطبعة الأولى). وينيبيغ، مانيتوبا: دار فاريانت للنشر. ص 230. ISBN   0-9738649-0-7.
  7. باغنال، برايان (2005). "المشروع السري 1981". على الحافة: الصعود والسقوط المذهل لشركة كومودور ( الطبعة الأولى). وينيبيغ، مانيتوبا: دار فاريانت للنشر. ص 242. ISBN   0-9738649-0-7.
  8. ياكال، كاثي (يونيو 1986). "تطور رسومات كومودور" . مجلة كومبيوت! غازيت . الصفحات 34-42 . تاريخ الاسترجاع: 18 يونيو 2019 . 
  9. 1 2 3 4 كوبر، أوتيس ر. (1986). رسم خرائط كومودور 128. غرينسبورو، كارولاينا الشمالية: كتب كومبيوت! ISBN 0-87455-060-2.
  10. "شريحة واجهة الفيديو 6567: ورقة المواصفات" (ملف PDF) . مجموعة كومودور لأشباه الموصلات. الصفحتان 2 و5.
  11. "الرسومات المدفوعة بالإضاءة على جهاز C64" .
  12. تيمرمان، فيليب. "تحليل ألوان كومودور VIC-II (معاينة)" . تم الاطلاع عليه بتاريخ 11 فبراير 2018 .
  13. سيوشتيدت، إيلكا (30 مارس 2016). "ألوان VIC-II القديمة ومزج الألوان" . مدونة ilesj . تم الاطلاع عليه بتاريخ 11 فبراير 2018 .
  14. كوبر، أوتيس ر.؛ فلورانس، ديفيد؛ هايمارك، تود د.؛ كراوس، جون؛ ميلر، جورج و.؛ ميكيتين، كيفن؛ نيلسون، فيليب إ.؛ فيكتور، تيم (أكتوبر 1985). "الفصل 7. بنية النظام". دليل المبرمج رقم 128 من مجلة COMPUTE!. غرينسبورو، كارولاينا الشمالية: منشورات COMPUTE!. الصفحات 348-349 . ISBN  0-87455-031-9.
  15. "نهض من النسيان - معلومات عامة" .
  16. "VIC-IIe Interlace" .
  17. هالفيل، توم ر. (يوليو 1983). "تحديث فيديو كومودور 64" . مجلة كومبيوت! غازيت . ص 40. تم الاطلاع عليه بتاريخ 6 فبراير 2016 .