ひとしれずひっそり

主にソフトに関することをメモしていきます。過程をそのまま書いていたりするので間違いが含まれます。鵜呑みしない様に。

game

Space Invaders(11) - ビーム処理 3

RAMの0x2025で処理が分かれていて2まで説明した。 が、2の続きがあってビームが当たった場合alienIsExploding(0x2002)に当たり判定の結果を書き込んで終わっている。 0x2025を3にする処理がないので、爆発の表示をするところでされるのではないかと思われる…

Space Invaders(10) - ビーム処理 2

当たり判定のコードを起こしてみた。 コードはあまり綺麗ではないが当たり判定の雰囲気を視覚化した。 game_obj1.rb · GitHub movからgifにするのにAdobe Expressを使った。 MOV動画をGIFに変換|Adobe Express

r8080でゲーム機のエミュレート 5

前回は当たり判定がされてないというところで終わっていたが、当たり判定の箇所がわかったので、原因の特定は簡単だった。 Space Invaders(9) - ビーム処理 - ひとしれずひっそり VRAMを読み出して比較するのだが、VRAMの書き込みはできていたのに読み込みが…

Space Invaders(9) - ビーム処理

rst1割り込みの最初に処理されるのがビームの様なのでこちらから見ていく。 割り込みはrst1とrst2の2種類があり、画面上下それぞれのブラウン管の掃引が終わったタイミングで入る様だ。 正確には半分ではなくて上は96ラインの所らしい。X*1は224ラインあるの…

Space Invaders(8) - キャラクター処理のループ

割り込みが入ってキャラクターの処理ループに移るがその部分を読んでみた。 ここら辺になる。 computerarcheology.com フローとか書いてみたがrubyで書き直した方がわかりやすそうなので書いてみた。 gist.github.com 処理内容 データの0バイト目(上位)と1バ…

Space Invaders(7) - UFOの得点

0x1D54からUFOの得点表になっている。 https://computerarcheology.com/Arcade/SpaceInvaders/Code.html#SaucerScrTab ; Thus the one and only 300 comes up every 15 shots (after an initial 8). 1D54: 10 05 05 10 15 10 10 05 30 10 10 10 05 15 10 05 …

Space Invaders(6) - データ

データはROMに初期値がありそれをコピーしている。 https://computerarcheology.com/Arcade/SpaceInvaders/Code.html#CopyRAMMirror CopyRAMMirror: ; Block copy ROM mirror 1B00-1BBF to initialize RAM at 2000-20BF. ; 01E4: 06 C0 LD B,$C0 ; Number of…

r8080でゲーム機のエミュレート 4

IOの実装を進めた。 色々あるのだけと一番大きいのはシフトレジスタだ。 参考になるのはこのページで computerarcheology.com 最初は理解できなかったが16bitのシフトレジスタがあってout portの4番に書き込むと上位8bitにセットされる。 更に書き込むと前回…

r8080でゲーム機のエミュレート 3

キャラクターデータが繰り返しノイズの様に表示される現象が解決した。 CPI命令の処理が間違っていたのが原因だ。 CPI命令は次の1バイトとAレジスタを比較するが、次の2バイトが指し示すデータメモリーと比較していた。 2バイト命令を3バイト命令として扱っ…

r8080でゲーム機のエミュレート 2

割り込みを実装してみた。 途中までうまく行っていたが 10ポイントキャラの表示でおかしくなっている。 キャラクターデータが繰り返しノイズの様に表示される現象がでている。 今のところ全く見当が付いていないのと、実機の割り込みは60Hz毎に入るらしいが…

r8080でゲーム機のエミュレート 1

TK-80 save / load 実装 - ひとしれずひっそり あのゲームが動くのか? というのに手を出している。 i8080で動いているのでr8080で動かせるはずだ。 CPU部はすでに実装済みなのでゲーム固有のハードを実装すればうごくはずだ。 ただ、実行速度とか心配なとこ…

DXOpalでなんか表示したい (4)

katsuyoshi.hatenadiary.com で調べたところまで実装できた。 流石に動画はまずいかなと思うのでスクショだけ。 DXOpalのテスト · GitHub

Space Invaders(5) - 説明画面

SCOREなどの文字表示の後は説明画面を処理してる様だ。 Space Invaders Code $0AEAから見てみる。 コメントを追っていくと 1秒待つ PLAYを一文字ずつ表示 splashAnimateが0なら上下逆さまになっているYを使う splashAnimateが1なら普通のYを使う SPACE INVAD…

DXOpalでなんか表示したい (3)

作ることはないとか書いてたんだけどやっぱりやりたくなってしまった。 Space Invaders(1) - ひとしれずひっそり Space Invaders(3) - DrawStatus / ClearScreen - ひとしれずひっそり Space Invaders(4) - DrawScoreHead - ひとしれずひっそり のDrawStatus…

Space Invaders(4) - DrawScoreHead

次はDrawScoreHead https://computerarcheology.com/Arcade/SpaceInvaders/Code.html#DrawScoreHead ここはコメントから" SCORE HI-SCORE SCORE "を表示する様だ。 ここの部分だ " SCORE<1> HI-SCORE SCORE<2> ".length.to_s(16) #=> "1c" $1c(28)文字がルー…

Space Invaders(3) - DrawStatus / ClearScreen

次はDrawStatus https://computerarcheology.com/Arcade/SpaceInvaders/Code.html#DrawStatus ここはcallでサブルーチンの呼び出しが続いている。 まずはClearScreen https://computerarcheology.com/Arcade/SpaceInvaders/Code.html#ClearScreen ここでは$2…

Space Invaders(2) - DrawShield

ソースコード少し読んでみた。 まずはinitから. https://computerarcheology.com/Arcade/SpaceInvaders/Code.html#init RAMの初期値をROMからコピーしていて、その下にトーチカの初期化があったので元に戻らずそのまま読んだ。 DrawShieldPl1 https://comput…

Space Invaders(1)

マイコンに興味を持ったのはスペースインベーダーがキッカケなんだけど作ったことはなかった。 多分こんな作りだろうというのはある程度予想はつくのだが、なんで自爆するのかとかシェルターの壊れ方とか完全に再現できないだろうと思うのもあって、手を出し…