もっと見る

おおー。はじめて配信みたよ! おもしろい!

FreeBSDでRubyのコンパイルおわんねーなぜじゃーと思っていたら、仮想マシンに256MBしかメモリ割り当ててなかったというオチ(ちゃんと待っていたら終わったからエライ)

私はベーマガで育ったクチで、MSXファンの人もいると思う。

ファミコンのハードウェアとかマシン語は、すべて断空我さんの連載記事のおかげで覚えたモノ。

プログラムを投稿して採用されると、たぶん10%ぐらい源泉徴収されて9,000円とか7,000円とかもらえたと思う。ああいうのに投稿するのも楽しみの一つだったよね。

勢い余って、ベーマガ投稿者が集まっていたサークルの門を叩いたこともある。主催していた人が連絡とれなくなっちゃって解散するんだけど、会誌が発行されていたりして交流があって楽しかった。あの頃のやりとりは、要するに文通だったね。

テクノポリスのおにたまさんの記事があって、同人ソフトの世界が開けたりもした。めちゃくちゃ勉強になった。

音美ちゃんとか同人ハードも栄えていた。パソケットに買いに行った気がする。

私の昔語り、やりすぎると迷惑なのでほどほどにしときますがw、他の人も語ってもらえると嬉しいよね。聞きたい。

のえる :cava_red: DTP鯖管 さんがブースト

ワイトフォローしたけどTLが豊かになるな

のえる :cava_red: DTP鯖管 さんがブースト

でもこういうローレベルさわる環境、いまは今でわりとりある印象。RasPiでベアメタルとか

のえる :cava_red: DTP鯖管 さんがブースト

8bit PCもわりとmemory mapped IOだったね。あの時代は回路図やアドレスとIOの対応表がなぜか雑誌に載ってたりした。CRTCの特定ポートに特定の値書き込むと同期のタイミングがずれてハードウェア的にスムーズスクロールできる、なんてのもBASICからでもできた(POKEとかで

のえる :cava_red: DTP鯖管 さんがブースト

無印の自分で作るナンをバターチキンカレーでいただきまーす!!

のえる :cava_red: DTP鯖管 さんがブースト

ケダマの好きなブロック崩し、貼っときますね。

yubais.net/game/bkbreakdown/

ファミコンって、Memory-maped I/Oって言って、指定したアドレスに書き込んだり読み出したりすると、ハードウェアに指示ができたり、状態を取得したりできたのね。
ja.wikipedia.org/wiki/%E3%83%A

だから、メモリを、アドレスを指定してアクセスするっていうのを覚えるのは早かった。ベーシックの段階でそれを使っていた。

ベーシックでできることに限界を感じた頃、マシン語に手を出すんだけど、これも少ないCPUのレジスタをやりくりしながら、メモリから読み出して、計算したり判定して、メモリに書き込むっていうロジックを延々と書くモノだった。

ゼロページを駆使して、そこにインデックスでアクセスする。

そういうのをやってから、C言語を覚えたので、MASMをさらに高性能にした、簡単にマシン語が書ける凄い言語という認識で、構造体とか配列とかポインタというのも、シンタックスシュガーだという認識だった。

いまは、こういう順序でC言語に触れるのは無理だと思うので、自分達の世代の優位点だな、と思っている。

のえる :cava_red: DTP鯖管 さんがブースト

プログラミングは、ハックからはじめた方が身につくような気がする。UserScriptとか、セーブデータ改造とか。

あるとき、弾のスピードをあげるために、ループ毎に足す値を大きくしたんだけど、今度は敵をすり抜けちゃうようになったw

さあ、どうやったら交差して場所が入れ替わる敵と弾が衝突した判定ができるんだ?

という感じで延々と続くんですが、こういうことを無我夢中で考えていた。

これを、よくわからないけど、面白そうって思うかどうか。

ファミリーベーシックでのプログラミングは、まず、ノートに実現したいことをスケッチして、変数の値がループ毎にどう移り変わるか、罫線を引いて表を作って数字を埋めて、頭の中で動かしてみて、最後にBASICで書いた。

これは、今でも通用するやり方だと思う。

さっきの斜めの動きなんかは、担任の先生に聞いたりしたけど、あまり有意なヒントは得られなかった。大人にも難しいことはあるのかと思った。それで、自力で頑張ることにした。

当時、何にも知識は無かったけど、最強のパラメータが一つあった。それは、時間を忘れて熱中できること。今は、もうあそこまでの熱意と集中力を発揮することは難しい。(短時間なら多少はできる)

パワーアップシューティングって格好良かったよね。シングルだった自機の弾が、ダブルになったり、3Wayになったり。

あと、連射できると嬉しい。

そういうのがやりたかったので、そういう動きをするプログラムを必死で書いた。

ファミコンのスプライト(キャラクターを描画する機能)は、画面端にいくと反対側から出てきちゃうので、どこまでいったら画面から消すか。

連射ってことは、画面上に自機の弾が沢山でてこなくちゃいけない。どうやって複数の弾のデータを管理すればいいのか。

画面に3発まで撃てるようにしたんんだけど、チュン!チュン!チュン!………………チュン!チュン!チュン!…………というリズムになる。画面上に貼り付くとすごい連射できるけど、下の方にいると、消えるまで続きが撃てないw

データ構造とアルゴリズム。予想外の動きと、開き直って仕様にしちゃう。バグったらそれはバグ技w

ファミリーベーシック、整数演算しかできないのね。

2Dシューティングゲームつくろうとして、敵が自機に向かって弾を撃ってくるようにしたいんだけど、その計算がわからない! どうやって斜めに移動させればいいの?

そこで、縦と横のより大きい方を1ずつ動かして、小さい方は、条件を満たしたら1動かすことにした。

弾の初期位置はEX=0, EY=0
自機はMX=100, MY=150
その差、XX=100, YY=150

EYは、ループ毎に1ずつ増やす。EXは、カウンターにXXを足し続けて、条件を満たすまで増やさない。

合計がYYを超えたらEXを1増やしてカウンターからYYを引く。

そうやって、斜めの軌跡を計算することにした。

これで、ちゃんと弾が斜めに飛んでくる。速度がおかしいんだけど、そこはご愛敬w

そうやって、問題を解決する仕組みを考えるということを学習した。アルゴリズムは楽しい。三角関数とかはまだ知らない。小学4年生の頃の話。

ファミリーベーシックで覚えたんだよ、プログラミング。

あれさ、命令文一つでマリオとかシェルクリーパーが歩き出すんだよ。コントローラーの入力に反応して、処理を分岐できるんだよ。

とりあえず、取扱説明書に書いてあるサンプルコードは全部やってみた。紙の冊子は本当にすり切れた。実に面白かった。

なんかね、自分で面白いゲームが作れるんだ、っていうイメージを持っていて、疑わなかったね。

あのとき、ファミリーベーシックを作った大人達には、自分がコードを書くこと、誰かにプログラミングの楽しさを伝えていくことで恩返ししていきたい。

のえる :cava_red: DTP鯖管 さんがブースト

どうやって復活したことを知らしめようかな。。。

のえる :cava_red: DTP鯖管 さんがブースト

最近、jemallocすげーってなってると思うけど、FreeBSDはそれがネイティブなのよね。

あと、jail中心の構成になって、Dockerとはまた違って面白い。

よし、FreeBSDでもだいたいMastodon動かせるようになったぞ。手順をまとめて、外部に再設置しよう。

もっと見る

のえる :cava_red: DTP鯖管 によるおすすめ:

DTP-Mstdn.jp

DTP-Mstdn.jpは、DTP・デザイン・印刷に関わる人々のためのMastodonインスタンスです。特定分野の専門インスタンスですので、日々のつぶやき、耳寄りな情報の共有、ディスカッション、質問とその回答、役立つスクリプトなど、他では投稿しづらい内容も、思う存分トゥートしましょう!