ゲームで感じた疑問。実はプログラミング言語と深い関係があった!!
こんにちは、TF's appsです。
今回は【ゲーム】と【プログラミング】についての記事です。
ふと、なつゲーのYouTubeを見ていて思い出した事があったので書いてみました。
私の少年時代はゲームそのものでした。
ドラクエ6をその日初めてプレイして、その日のうちにムドーを倒すところまで進めた事を未だに覚えています。朝から晩までずっとゲームしていたと思います。
子供の時に「何でだろう?」っと思っていた事が、今では「なるほどなぁ」と思うことがあったのです。そんな事を紹介したいと思います。
ファイナルファンタジー4
従兄に教えてもらったアイテム増幅の裏技「た5」
特定の操作をすることでアイテムが1個→255個に増えます。
世に1本しかない聖剣エクスカリバーを「た5=255個」にして、エッジに毎回のように「なげる」コマンドを使用させ、聖剣をそこら辺の石ころのように投げ、モンスターに9999ダメージを与えていた頃を思います。
子供の頃、なぜ255なんだろう?と思っていました。上限は99個じゃないの?
プログラムとして、アイテムの上限数は99ですが、メモリとしては「unsigned char=1byte」で確保されていたのでしょう。
第四次スーパーロボット大戦
主人公(Lv90)をスーパーロボット系にして、精神「奇跡」を使用し、最終強化した計都羅睺剣・暗剣殺(けいとらごうけん・あんけんさつ)を使用して、ラスボスに65535ダメージ(カンスト)を与えたことを覚えています。
子供ながら、なぜ65535という中途半端はダメージなのか?99999ではないの?
おそらくダメージは「unsigned int=2byte」でメモリ確保されているのでしょう。
どちらもスーパーファミコンのソフトです。
スーパーファミコンは16bitのCPUマシンです。
私の本業は組み込み系のソフト技術者です、15年程前の低スペックマシンのプログラムを実装する場合は、メモリを最小限に抑える事や、全体のプログラム容量を抑えることに気を遣いながら設計しています。union(共用体)を駆使して1bit単位にメモリ定義したものです。
今はそんな心配をしなくて良いような時代が来ていますが....
今となっては当たり前のように感じることですが、上記2つはどちらも子供の頃は不思議で不思議でどこからその数字が来るのか?と思っていました。
大学生になりプログラミングを覚えると、あ~なるほどと感じたことを今でも覚えています。
子供頃にプレイしたなつゲーをプログラマー目線でプレイしてみると、意外とまだまだ裏技が出てくるのかもしれませんね(笑)
ではまた次回お会いしましょう♪