המירוץ נגד הקרניים: ללמוד מזקני השבט

ככל שמיקרו-בקרים ולוחות פיתוח הולכים ונעשים זולים וחזקים יותר, כך גוברת הנטיה – גם ברמת החובבים וגם מעבר לה – להתמודד עם אתגרי פיתוח שונים, אפילו בסיסיים, על ידי הקצאה של עוד ועוד כוח מיחשוב גולמי. לפעמים זה פתרון הגיוני ונוח, במיוחד אם הדרישות מהמערכת בכללותה הן צנועות יחסית; אבל אם אנחנו רוצים ליצור משהו מדהים באמת, מוטב ללמוד מהמאסטרים של הדור הקודם – למשל, האנשים שהפכו מערכת עם מעבד עלוב של 1.2MHz ו-128 בייטים בלבד של RAM לאחת מקונסולות המשחקים הביתיות המצליחות בהיסטוריה.

הקונסולה Atari 2600 יצאה לשוק בספטמבר 1977, מספר שנים לפני המחשבים האישיים המיתולוגיים כגון ZX Spectrum, TI-99 או Commodore 64. היא היתה בין הראשונות בעולם ששילבו יחידת עיבוד קבועה עם קלטות משחק חיצוניות (זאת בניגוד לקונסולות הדור הראשון, שהריצו רק משחקים פשוטים מאד שנצרבו לתוכן במפעל), והמכירות שלה בשלב הראשון היו חלשות.

הסיבה לדשדוש במכירות היתה שהמשחקים הראשונים היו עלובים יחסית, והסיבה לכך שהמשחקים היו עלובים היתה חומרת הווידאו של הקונסולה. חומרה זו היתה למעשה ג'וק אחד ויחיד בשם TIA, שידע לנהל תצוגה של רקע, שני ספרייטים (אובייקטים של תבניות פיקסלים) ועוד שניים-שלושה אלמנטים בסיסיים מאד על המרקע. החומרה הזו היתה אמנם מרשימה לזמנה והורידה נטל עצום מהמעבד הראשי, אבל עדיין לא איפשרה הרבה יותר מאשר וריאציות צבעוניות על Pong, כמו בקונסולות הישנות.

אופן הפעולה המדויק של ה-TIA מורכב מכדי לתארו כאן. בגדול, הוא שלח את המידע למסך הטלוויזיה בשיטה הרגילה (סריקה של שורות פיקסלים משמאל לימין ומלמעלה למטה), חישב בזמן אמת, לכל פיקסל, האם הוא שייך לרקע, לספרייט או לאובייקט אחר וצבע אותו בהתאם. המעבד הראשי הודיע מראש ל-TIA, באמצעות כתיבה לרגיסטרים שונים בו, איך נראים כל האובייקטים האלה מבחינת פיקסלים ואיפה הם ממוקמים (פרט לרקע, כמובן) על המסך.

קל לדמיין את המנהלים המתוסכלים צועקים על המתכנתים "אנחנו חייבים משחקים עם יותר משתי צורות שזזות ויורות אחת על השניה כדור אחד!", ואת המתכנתים צועקים בחזרה "זה מה שהחומרה יכולה לעשות, לכו תמצאו חומרה טובה יותר!"

אבל בפועל, קרה משהו אחר. בשלב מסוים מתכנת כלשהו אמר לעצמו דבר כזה: "ה-TIA סורק את המסך פיקסל אחרי פיקסל ובודק בזמן אמת מה צריך לצייר שם. נניח ששמתי ספרייט בצד שמאל של המסך, וה-TIA גמר לצייר את שורת הפיקסלים הראשונה של הספרייט הזה וממשיך ימינה. מה יקרה אם בדיוק עכשיו אשנה את המיקום של הספרייט הזה לימין המסך?" והתשובה היא, אכן, שאם תזמון ההזזות של הספרייט נעשה היטב, יופיעו על המסך שני עותקים שלו, גם משמאל וגם מימין, והצופה לא ירגיש ש"עבדו עליו".

בתזמון מדויק מאד אפשר היה ליצור המוני עותקים של ספרייטים על המסך ולהזיז כל אחד מהם די בחופשיות, מה שפתח את הדרך למשחקים קלאסיים כמו Space Invaders על הקונסולה הזו ולהצלחה מסחרית (נמכרו כשלושים מיליוני קונסולות, ומי יודע כמה קלטות משחקים).

הקאץ' היה כמובן הצורך לנהל את הזזות הספרייטים בתאום מלא עם סריקת המסך (שנעשתה במסכי ה-CRT של אותם ימים על ידי קרן אלקטרונים), טכניקה שזכתה לכינוי Racing the beam – ומכאן כותרת הפוסט הזה.

אני לא הכרתי את הקונסולה הזו באופן אישי, ונחשפתי להיסטוריה המעניינת שלה רק לפני כמה ימים. זוהי דוגמה מצוינת נוספת לעיקרון שניסח מדען המחשב המפורסם טוני הור: "לא משנה עד כמה המחשב זול ומהיר – יהיה זול ומהיר יותר להשתמש בו בצורה יעילה." אפשר להמשיך לרדוף לנצח אחרי הדגם העוד-יותר-חדש של ארדואינו או רספברי פיי כדי לסחוט עוד קצת ביצועים לתוכנות שנכתבו בצורה "מרובעת", אבל אפילו כיום, כמו בשנת 1977, יצירתיות, התעמקות ומחשבה יכולות להוציא מכל חומרה – גם פשוטה ומוגבלת – הרבה יותר ממה שנדמה במבט ראשון.

להרשמה
הודע לי על
2 Comments
מהכי חדשה
מהכי ישנה לפי הצבעות
Inline Feedbacks
הראה את כל התגובות

מזכיר לי משהו… כמה שנים אחרי זה, היה לי מחשב Dragon32. החומרה של הגרפיקה שלו, עבדה ב"מוד" גרפי שבו יכולת לשלוט על כל פיקסל במסך, ו"מוד" טקסט, בו הוא ידע להציג תווי ASCII. מה היית עושה אם היית רוצה להציג תמונה וטקסט יחד ? לא היתה דרך, פרט להליך מייגע של ציור אות-אות מפיקסלים. עד ש…בעקבות מאמר במגזין חובבים, עלינו על שיטה בה משתמשים בסנכרון על הקרן, כדי לתת פקודה לצ'יפ הגרפי, להחליף Mode בנקודה קבועה במסך, בכל פעם שהקרן מגיעה אליה. כך יכולנו, למשל, להיות במצב גרפי בחלק העליון של המסך, ולהפוך לטקסט בחלק התחתון כדי לכתוב הסבר מתחת… לקרוא עוד »