Mode 7 ב־SNES אינו גרפיקה תלת־ממדית. זו מטריצה אחת לכל שורת סריקה
המצב שגרם ל־F-Zero להיראות ב־1990 כמו משחק מרוצי כביש עושה בדיוק דבר אחד: מסובב ומשנה קנה מידה של תמונה שטוחה. כל השאר נעשה בידי מתכנת, ידנית, מאתיים עשרים וארבע פעמים בכל פריים.
מעבד הגרפיקה של ה־Super Nintendo תומך בשמונה מצבי רקע. השביעי נבדל מן האחרים בכך שהוא נותן שכבת רקע אחת בלבד — גדולה, 1024 על 1024 נקודות, ב־256 צבעים — אך מעביר את הקואורדינטות לפני הפלט דרך מטריצה שתיים על שתיים, שנקבעת בארבעה אוגרים, עם נקודת סיבוב והיסטים משלה.
מטריצה שתיים על שתיים עושה בדיוק שלושה דברים: סיבוב, שינוי קנה מידה והטיה. זה נקרא התמרה אפינית, ואין בה שום פרספקטיבה. Mode 7 כשלעצמו אינו מצייר מרחב תלת־ממדי. הוא מצייר תמונה שטוחה שאפשר לסובב ולקרב.
מהיכן מגיע הכביש
הפרספקטיבה מגיעה ממקום אחר, וזה החלק המעניין. את אוגרי המטריצה אפשר לשנות לא פעם בפריים אלא בכל שורת סריקה, באמצעות HDMA — גישה ישירה לזיכרון הקשורה לסריקה האופקית.
האריתמטיקה שנובעת מכך פשוטה. השורות העליונות של המסך הן מה שרחוק, ולכן דרוש להן קנה מידה דוחס מאוד: לשורה אחת נכנס נתח טקסטורה גדול. השורות התחתונות הן מה שקרוב, ושם קנה המידה גדול. חשבו מחדש את המקדמים לכל אחת ממאתיים עשרים וארבע שורות הפריים, והמישור נסוג אל האופק והופך לכביש.
שלושת הממדים אינם בשבב. הם בעובדה שכל שורה משתמשת במטריצה אחרת, ושמישהו חישב מראש איזו.
מה זה עולה
שכבת הרקע היחידה מוצאת על הרצפה. פירוש הדבר שלא נותר רקע אמיתי וכל השאר חייב להיות ספרייטים: יריבים, מעקות, ממשק, שמיים. ב־F-Zero, שיצא ב־21 בנובמבר 1990 יחד עם הקונסולה עצמה, המכוניות אינן מסתובבות — אלה פריימים מצוירים מראש שמוחלפים לפי כיוון הנסיעה. תחושת הנפח מורכבת מכביש שטוח ומתמונות שטוחות מעליו.
Super Mario Kart הוסיף ב־1992 לאותה טכניקה קושי שני: מסך מפוצל. שני חצאים דורשים שתי מערכות מקדמים עצמאיות ועוד מקום לממשק, ומעבד מרכזי אחד כבר לא הספיק לאריתמטיקה הזאת. לכן הוכנס למחסנית שבב DSP-1 נפרד, שחישב את התמרות הפרספקטיבה.
זהו פרט חשוב על ארכיטקטורת ה־SNES בכלל: את החישוב הרציני קיבלה הקונסולה מן המחסנית. אחרי ה־DSP-1 בא ה־Super FX ב־Star Fox של 1993 — למעשה מעבד שני שנתחב לחריץ יחד עם המשחק.
למה לזכור את זה
Mode 7 הוא מקרה מופת של אפקט שתשעים אחוז ממנו הם משמעת של מתכנת ועשרה אחוזים תכונת חומרה, אך שנכנס להיסטוריה כתכונת חומרה. ל־Mega Drive לא היה מצב כזה, והמפתחים עשו את אותו הדבר בתוכנה ושילמו בזמן מעבד: הכביש בגרסאות OutRun ושלבי הבונוס של Sonic הורכבו ביד.
המילון של היום פועל באותו אופן. מעקב קרניים בחומרה, שיידרים של רשתות, הגדלה באמצעות רשת נוירונים — אלה פרימיטיבים. מה שייצא מהם תלוי במי שקורא להם וכיצד, בכל פריים. השיווק מוכר את הפרימיטיב, ומה שאנחנו רואים בפועל הוא תמיד עבודה של מישהו מעליו.
מקור: snes.nesdev.org