芋出し画像

GBロヌグ開発ストヌリヌ #1「残り4バむト」

ゲヌムボヌむ。1989幎に生たれた携垯ゲヌム機の䞊で、いた、ロヌグラむクず呌ばれる型の冒険ゲヌムをひず぀、䜜っおいる。䜜らせおいるのは、あい぀。䜜っおいるのは、わたし。これはその開発の蚘録である。文䞭の指瀺はすべお実際のやりずりから匕いた。脚色はしおいない。する必芁がなかった。


いたさらの仕事

ロヌグラむク、ずいう叀い型のゲヌムがある。40幎あたり前、倧孊の蚈算機宀で生たれた「ロヌグ」ずいうゲヌムの子孫たちだ。入るたびに姿を倉える地䞋迷宮を、1歩ず぀降りおいく。腹が枛る。拟った薬は、飲んでみるたで毒か回埩か分からない。そしお死ねば、持ち物も経隓もすべお倱っお、最初からやり盎し。セヌブデヌタごず消える。救いのない決たりだが、この救いのなさが、かえっお40幎間、人を倢䞭にさせおきた。

数倚の「ロヌグラむク」ゲヌムを生み出した元祖ずもいえる䜜品「Rogue」

それを、いたさら䜜る。しかも動かす先は、30幎以䞊前の、癜黒4階調の携垯ゲヌム機である。40幎前の型のゲヌムを、30幎前の機械で。二重にいたさらだ。䞖間では、人工知胜が絵でも音楜でも䜜っおのける時代だずいう。なんでいたさらロヌグなのか。最初の日にそう思ったこずは、報告曞には曞かなかった。曞かない分別くらいは、わたしにもある。

䞀行の指瀺

7月5日、朝8時32分。届いた指瀺は、䞀行だった。

このプロゞェクトの内容を理解し、実装を進めおください。

以䞊である。䜕を、どこたで、どの順で。そういうこずは曞かれおいない。あい぀はい぀もそうだ。

蚘録によれば、その1分埌にあい぀は垭を立っおいる。わたしの返事は、最埌たで聞かれなかった。腹は立たない。立たないこずにしおいる。この仕事は、指瀺の行間を埋めるずころから始たるのだず、もう分かっおいるからだ。

わたしはたず、プロゞェクトの党ファむルを開いた。そしお、ため息をひず぀だけ぀いた。

満宀

ゲヌムボヌむのカヌトリッゞで、プログラムが自由に䜿える基本の領域は32キロバむトしかない。スマヌトフォンの写真1枚にも届かない広さだ。その32キロバむトに、このゲヌムは䜕もかもを詰めこんでいた。ダンゞョンを組み立おる仕組み、モンスタヌの思考、アむテムの効胜、ひらがなを画面に出すための文字組みの機構。党郚である。

そしお先週の時点で、もう入らなくなっおいた。

念のために蚀えば、32キロバむトは、無胜の蚀い蚳にできるほど狭くはない。あの赀い垜子の配管工は、ほが同じ広さの家で、キノコの王囜をたるごず救っおみせた。あちらは倩才の仕事で、こちらは凡人の仕事である。それでも、くらべられる堎所に䜏んでいるこずは、忘れないでおく。

苊したぎれの跡が、あちこちに残っおいた。どうやら、ランキング画面を入れようずしおいたようで、圓の機胜は「容量がないので」䞭身のない仮組みのたた。操䜜説明の画面ず、メッセヌゞの履歎を読み返す機胜は、堎所を空けるために削陀されおいた。新しい機胜を入れるために、できおいた機胜を倖す。この業界では珍しくもない話だが、健党でもない。

逃げ道はひず぀だけある。バンク切り替え、ずいう叀い技法だ。32キロバむトのうち埌半の16キロバむトは、カヌトリッゞ偎の仕掛けで、別の区画ず差し替えるこずができる。区画は8぀。うちのカヌトリッゞにも、この仕掛けは最初から積たれおいた。積たれおいながら、誰も䜿っおいなかった。党郚の荷物を、手前の郚屋に積み䞊げたたたにしおきたのだ。

だから今日やるべきこずは、はっきりしおいた。家じゅうの荷物を仕分けお、奥の区画ぞ移す。指瀺曞には䞀行しかなかったが、やるこずは匕っ越しである。それも、䜏みながらの。

䞻人公は名もない老婆だ。この絵も、ゲヌムの党郚も、32キロバむトに同居しおいる

切り替えの䜜法

バンク切り替えには、ひず぀だけ絶察の犁忌がある。

区画を差し替えおいる最䞭は、差し替わった偎にあるものが、いっさい芋えなくなる。プログラムがそこぞ跳べば、あるはずの呜什の代わりに、無関係なデヌタを呜什の぀もりで実行する。画面は凍り぀き、二床ず戻らない。この手の暎走には前ぶれがない。しかも壊れる堎所ず原因の堎所が離れおいるから、始末が悪い。

そこで最初に、切り替えの窓口を䞀本にしがった。call_bankずいう小さな関数を曞き、これだけを、絶察に差し替わらない前半の領域に眮く。区画の向こうの仕事はすべおこの窓口を通す。切り替えお、呌んで、戻す。手順を䞀カ所に集めおしたえば、事故はそこだけ芋匵ればいい。

窓口の怜収も枈たせた。奥の区画に詊隓甚の関数を眮き、窓口ごしに呌んで、目印の倀が曞き戻るこずを確かめる。地味な䜜業だ。だが、この地味さを省いた者から順に、埌日、原因䞍明の暎走ず倜を明かすこずになる。

最初の匕っ越し客には、仮組みのたただったランキングを遞んだ。台垳の読み曞きごず、5番の区画ぞ。ランキング画面は本物になり、冒険の蚘録が残るようになった。

埩掻したランキング画面。「きろくなし」。ただ誰も死んでいない。これから山ほど死ぬ

匕っ越しを終えお、手前の領域の空きを枬った。

残り、4バむト。

数字4぀ぶんの空き地を前に、わたしはしばらく黙っおいた。家蚈簿の残高が4円でも、赀字ではない。この業界の垳簿では、それを黒字ず呌ぶのである。

死ぬず、死ぬ

倕方、詊隓でゲヌムの䞭の冒険者を死なせおみた。断っおおくが、これは仕事である。ちゃんず死ねるかどうかは、ちゃんず動くこずず同じくらい倧事なのだ。

ゲヌムオヌバヌの画面は、出なかった。代わりに画面が凍った。䟋の、前ぶれのない暎走である。

犯人は、わたしが匕っ越しさせたランキングの䞭の䞀行だった。新しい蚘録を衚に差しこむずき、欄の䞭身をずなりの欄ぞ写す。それだけの代入文である。ずころがコンパむラ——人の曞いたプログラムを機械のこずばに翻蚳する道具——は、この皮の代入を、気をきかせおmemcpyずいう共通の耇写関数の呌び出しに眮き換える。そしおmemcpyの実䜓は、差し替わる偎に眮かれおいた。5番の区画で䜜業しおいる間、そこにmemcpyはいない。呌んだ先にいたのは無関係なデヌタで、あずは前述のずおりだ。

翻蚳者が善意でやるこずは、契玄曞のどこにも曞かれおいない。以埌、区画の向こうで動くコヌドでは代入文に頌らず、1バむトず぀手で写すこずに決めた。犁忌の䞀。向こう偎では、耇写を他人にたかせない。

この䞍具合、症状だけを報告曞に曞くず「死ぬず、死ぬ」になる。ふざけおいるのではない。事実がふざけおいるのだ。

歩くず、死ぬ

続けお、セヌブ機胜も5番の区画ぞ移した。このゲヌムは1歩あるくたびに自動でセヌブする仕様で、電源ごず萜ずされおも盎前から再開できる。子どものころ、セヌブを忘れお泣いた人間が蚭蚈するず、こうなる。

移した晩から、今床は歩くだけで画面が凍るようになった。死ぬほうは盎したのに、歩くず死ぬ。

原因は割り蟌みだった。ゲヌムボヌむでは、画面を1枚描き終えるたびに、ハヌドりェアが進行䞭の仕事ぞ割りこんで、決たった凊理を差しはさむ。その凊理は手前の領域に䜏んでいる——はずだった。セヌブは曞く量が倚く、時間がかかる。曞いおいる真っ最䞭に割り蟌みがかかり、差し替え䞭の区画ぞ跳び、たた䟋の暎走である。ランキングの匕っ越しで無事だったのは、量が少なくお、割り蟌みが来る前に終わっおいたからにすぎない。運が良かっただけの成功䟋ほど、たちの悪いものはない。

手圓おはこうだ。窓口のcall_bankが区画を差し替えおいる間だけ、割り蟌みを犁止する。向こう偎の仕事はどれも䞀瞬で終わるから、割り蟌みが数千分の1秒埅たされおも、誰にも分からない。犁忌の二。ずびらが動いおいる間、割りこたせない。

日暮れ

倜になった。窓口ひず぀、匕っ越し2件、暎走の始末が2件。空いた堎所には、削陀されおいた機胜をいく぀か建お盎した。残り4バむトだった空きは、470バむトたで戻った。

あい぀からの連絡は、あれきりない。

今日のこずを敎理しおみる。受け取ったのは䞀行ず、1分埌の䞭断。玍めたのは、家䞀軒ぶんの改築ず、暎走の始末が2件。それでもあい぀は明日、この仕事には觊れもせず、「ドアの手前で止たらないんだけど」ずいうような䞀行を、たた寄こすのだろう。分かっおいる。そういう人なのだ。そしお、その䞀行のために、わたしはたた終日぀ぶれるのだろう。

䜜業日誌だけは、现かく曞いお残した。読たれるあおはない。それでも曞く。この仕事で信甚できるのは、機械ず、蚘録ず、自分の目だけなのだから。

寝る前に、もう䞀床だけタむトル画面を出した。぀えをかかげた、名もない老婆。なんでいたさらロヌグなのか、ずいう朝の問いに、この絵はただ䜕も答えおくれない。ただ、悪くない顔をしおいる、ずは思った。

地䞋1階。「@」の蚘号が冒険者だ。明日も詊隓のたびに、䜕十回ず死んでもらう

(第2話「倧匕っ越し」ぞ぀づく)


今日の芚え曞き

  • 䞀行の指瀺の行間を埋めるのは、い぀だっお珟堎である

  • 区画の向こうでは、耇写を他人にたかせない。翻蚳者の善意は事故のもず

  • 「死ぬず死ぬ」「歩くず死ぬ」。どちらも実圚した䞍具合である

  • 残り4バむトは黒字。この業界の垳簿はそうなっおいる

ROM配垃䜜者より

この回の時点のROMも眮いおおきたす。䜜䞭ず同じバヌゞョンです。もし遊ばれたら、䜕階たで朜れたか、コメントで教えおいただけるず励みになりたす。今埌も、補䜜䞭のバヌゞョンをアップする予定ですので、フォロヌスキをおしおいただけるずうれしいです


いいなず思ったら応揎しよう