- kanata0954
- 1598
- 3
- 0
- 0
マリオを走らせてジャンプできた!ファミリーベーシックのスプライトのアニメ周りの仕様はだいぶ酷いので、小学生の頃はこれすらどうやればいいかわからず、30年越しでようやく実装できた。タイムマシンで当時の自分にやり方を教えに行きたい… pic.twitter.com/mqqUgQKN4b
2019-10-19 12:06:31ここまで動かすのに3時間くらいかかった…。MOVE命令だとアニメに合わせて勝手に動いくので制御しづらい。SPRITE命令でアニメを切り替えようとすると、どうやってもちらつくのが避けられない。仕方なくMOVEで自動移動をキャンセル+移動方向切り替え時のちらつきをなくそうとして、だいぶ試行錯誤してた
2019-10-19 12:12:49小学生の頃とまったく同じ思考過程で「このやり方だとダメなのか…」と順番に同じ罠にハマって、当時の記憶がいろいろ蘇ってきた。スプライト周りの仕様が酷すぎて、せっかくマリオのアニメパターンが入ってるのにちゃんと動かすのが困難でもったいない。当時の自分が諦めた理由がよくわかった
2019-10-19 12:19:44付属品や説明書もちゃんと入ってた。昔は理解できなかったドキュメントの内容も今ならわかるので、「古文書にあったとおりだ!読める、読めるぞ!」とムスカみたいな気分になってくる pic.twitter.com/6InOu97LXe
2019-10-19 12:48:22当時と違ってファミコンのハードの内部情報も豊富にあるので、POKE命令で好きなメモリを直に書き換えられるはず。手始めにPPU制御レジスタの0x2000に0x80を書き込むと、BG用キャラテーブルがスプライトのものになって文字が読めなくなった。ちゃんとI/Oレジスタにアクセスできてる! pic.twitter.com/XQvcwLIY7C
2019-10-19 13:19:50試しに$2004からPPUのスプライトRAMに書き込んでみたらノイズは出るけど絵が変わらなかったので、DMAで上書きされてるっぽい。DMA転送元は$200らしいのでループで適当な値を書き込んだらスプライトが画面にいっぱい出た。これだ!ここを弄ればスプライトを直に制御できそう。 pic.twitter.com/wC1vMLn9dy
2019-10-19 13:52:40