Hello, my name is pornanime.

スーファミプログラミング近況・今年買った物

スーファミプログラミング近況

ローカル変数の使い方がわかって、かなり楽にプログラムが書けるようになった。今まで書いたつらいプログラムは捨てる。

お前は何を言っているんだと思われそうなので補足しておくと、初代ファミコンのCPU 6502ではおそらくローカル変数は使えなくて、全ての変数をグローバルにぶちまけて、衝突しないよう気を使いながらプログラムを書いていた、と思う(そんなことはない、という情報があればお教えください)

しかしスーパーファミコンのCPU(65816)の仕様をよく調べると、スタックの中身をロード・ストア可能になっていて、つまり現代の一般的なCPUと同じ機構でローカル変数が使える。これとは別に、ファミコン時代に使っていたグローバル領域(zero pageと呼ばれる)のアドレスをオフセットしていく方法もあって、初代ファミコンのプログラミングに慣れていた人たちはこれを使っていたのではないかと想像している。

現代のプログラミング環境に慣れた身からすると、ローカル変数なしでプログラムを書けと言われたら精神に異常をきたしそうになるが、昔の行番号BASICにはグローバル変数しかなかったので、それでプログラミングを覚えた人々にとっては、アセンブリで同じことをするのに疑問を抱くことすらなかったのではないか。

参考 http://www.wizforest.com/diary/150209.html;p1

今年買った物

f:id:gyuque:20151212155836j:plain

I/Oとベーマガ

I/Oとベーマガは割と最近まで実家にあったんだけど、ある年帰るときれいに消滅していた。15年前なら泣き叫んでいたかもしれないが、この歳になると感情が希薄になり国会図書館で見ればいいか、と思って再入手もしなかった。

しかし去年、一時ライターをされていた方にベーマガを一冊譲っていただいたのをきっかけにまた読んでみたくなり、ちょうど開店した秋葉原BEEPベーマガを何冊か買ってみた。I/Oの方は駿河屋だけど。

スーファミのゲームができたらどっかで雑誌と一緒に展示したい。もっとも、雑誌を来場者に読ませるために置くと著作権の問題があるので、あくまでオブジェとして置いといて、でも来場者が勝手に手に取って読んじゃうのは仕方ないよね、みたいな白々しいことを言う用意がある。

f:id:gyuque:20151212155940j:plain

ブラウン管テレビとファミコン

ブラウン管テレビは以前書いた通り、1975年製のもの。ほとんど使われていなかったようで40年ものとは思えないほど発色が良いのだが、埃が溜まって発火すると怖いので普段はカバーをかけてプラグも抜いてある。

で、このテレビと組み合わせてファミコンをするんだけど、昔のゲームってこまめにセーブしながらちまちま進めるみたいなことができないので一気にやるしかない。しかしボロいテレビを長時間稼働させたくないので結局永遠にクリアできないみたいな事になっている。ロックマン5とか完全に酷くて、ゲーム全体の半分ぐらいの所がパスワードで記録できる最終地点になっている。