スターフォース
STAR FORCE / MEGA FORCE

2026年6月23日更新

ファイナルスターの移動
色々
技術資料
リンク

かにかにクラブ > スターフォース

ファイナルスターの移動
●ジョイスティックの内部構造
ジョイスティックの内部には、{↑},{→},{↓},{←}の計4箇所を検知するスイッチが付いている。
水平・垂直は、その方向のためのスイッチが素直にオンになる。
斜めは、それらのうち隣り合う2個のスイッチが一緒にオンになる。
例えば、{↗}ならば {↑} と {→} が一緒にオンになる。
●移動速度
●パーサーなしの場合
左右の水平移動は、1フレームあたり、X成分に 1.5ピクセル 加減算する。
上下の垂直移動は、1フレームあたり、Y成分に 1.5ピクセル 加減算する。
斜めは、それらを単純に同時に処理するだけで、X成分・Y成分両方に 1.5ピクセル 加減算。
斜めは直角二等辺三角形の斜辺であるため、水平・垂直に対して √2倍 (1.41421356倍) の速さである。
●パーサーありの場合
パーサーなしの処理のうち、Y成分に加減算するピクセル数が、2ピクセルに変化する。
それ以外はパーサーなしと同じ。
●移動のアルゴリズム
(アルゴリズムを解読したのではなく、実際の挙動を見ながらそのような結果が出るアルゴリズムを推理しているだけなので、誤解しないで欲しい。)
●アルゴリズムの大雑把な説明
1.5 をそのまま扱えるような小数の管理はされていない。
1フレームごとに 1ピクセル と 2ピクセル を交互に繰り返すことで、整数だけでも 1.5ピクセル と同等の速度を出している。

次回の移動量を 1 にするか 2 にするか の目印が保管してある。
その目印を [nxt] と書くことにする。

スイッチを監視して移動が発生したら [nxt] に従って 1 か 2 の移動をし、最後に、次回のための [nxt] をもう片方側に変更する。
これを繰り返す。

書かなくてもわかると思うが、パーサーありのYの2ピクセル移動には [nxt] は不使用。
●ちょっとだけ詳細な補足説明
大雑把な説明では [nxt] を単品で解説したが、実際は2つある。
左移動と右移動とで共有する、X成分を担当するもの、以降は [nxtX] とする。
上移動と下移動とで共有する、Y成分を担当するもの、以降は [nxtY] とする。
[nxtX] と [nxtY] はお互いに干渉しない。

左右の水平移動を処理する部分と、上下の垂直移動を処理する部分があり、斜め移動はそれらを両方組み合わせて処理する。
●今後の考察に使えるかもしれないメモ
上左右端で移動が止まると、逆方向移動は必ず 1 ピクセルから始まる。
しかし、下端で止まって上移動は 1 の時と 2 の時がある。
●特殊な入力による独特な移動
(説明中、横は左を「-」方向・右を「+」方向、縦は上を「-」方向・下を「+」方向、とする。)
●交互入力
一例として、{←}と{→}を、1フレームずつ交互に傾ける場合を考える。
移動を始める直前の [nxtX] の状態は、普通はわからない。
[nxtX]=1だった場合、
移動量は、
 {-1, +2, -1, +2, -1, +2, ……}
となり、座標の移動開始前からの相対位置は、
 {-1, 1, 0, 2, 1, 3, ……}
となり、相対速度は、
 1フレームあたり 0.5ピクセル
となる。
レバーを交互に同じ時間入力しているのに、始めの位置からどんどん移動する、という現象が発生する。

なお、ジョイスティックを傾ける時間が1フレームであることが重要で、どちらにも傾けていない時間の長さは不問。

(横パターン L1)
[nxtX]1, 2, 1, 2, 1, 2, ……
入力順←, →, ←, →, ←, →, ……
移動量順-1, +2, -1, +2, -1, +2, ……
相対位置-1, +1, 0, +2, +1, +3, ……
相対速度0.5 ピクセル/フレーム
(横パターン L2)
[nxtX]2, 1, 2, 1, 2, 1, ……
入力順←, →, ←, →, ←, →, ……
移動量順-2, +1, -2, +1, -2, +1, ……
相対位置-2, -1, -3, -2, -4, -3, ……
相対速度-0.5 ピクセル/フレーム
(横パターン R1)
[nxtX]1, 2, 1, 2, 1, 2, ……
入力順→, ←, →, ←, →, ←, ……
移動量順+1, -2, +1, -2, +1, -2, ……
相対位置+1, -1, 0, -2, -1, -3, ……
相対速度-0.5 ピクセル/フレーム
(横パターン R2)
[nxtX]2, 1, 2, 1, 2, 1, ……
入力順→, ←, →, ←, →, ←, ……
移動量順+2, -1, +2, -1, +2, -1, ……
相対位置+2, +1, +3, +2, +4, +3, ……
相対速度0.5 ピクセル/フレーム
(L1とR2は実質的に同一内容。L2とR1も同様。)

(縦パターン U1)
[nxtY]1, 2, 1, 2, 1, 2, ……
入力順↑, ↓, ↑, ↓, ↑, ↓, ……
移動量順-1, +2, -1, +2, -1, +2, ……
相対位置-1, +1, 0, +2, +1, +3, ……
相対速度0.5 ピクセル/フレーム
(縦パターン U2)
[nxtY]2, 1, 2, 1, 2, 1, ……
入力順↑, ↓, ↑, ↓, ↑, ↓, ……
移動量順-2, +1, -2, +1, -2, +1, ……
相対位置-2, -1, -3, -2, -4, -3, ……
相対速度-0.5 ピクセル/フレーム
(縦パターン D1)
[nxtY]1, 2, 1, 2, 1, 2, ……
入力順↓, ↑, ↓, ↑, ↓, ↑, ……
移動量順+1, -2, +1, -2, +1, -2, ……
相対位置+1, -1, 0, -2, -1, -3, ……
相対速度-0.5 ピクセル/フレーム
(縦パターン D2)
[nxtY]2, 1, 2, 1, 2, 1, ……
入力順↓, ↑, ↓, ↑, ↓, ↑, ……
移動量順+2, -1, +2, -1, +2, -1, ……
相対位置+2, +1, +3, +2, +4, +3, ……
相対速度0.5 ピクセル/フレーム
(U1とD2は実質的に同一内容。U2とD1も同様。)
●相反同時入力
普通のジョイスティックならありえない、左右同時または上下同時のスイッチオンでも独特な移動をする。
一例として、{←}と{→}を両方ともオンにし続ける場合を考える。
{←}と{→}の処理を同時にするわけだが、厳密には必ず片方ずつ順番に処理される。
どちらが先か断定できないが、{→}が先と仮定して話を進める。
[nxtX]=1だった場合、
移動量は、
 {(+1-2), (+1-2), (+1-2), (+1-2), (+1-2), (+1-2), ……}
となり、座標の移動開始前からの相対位置は、
 {-1, -2, -3, -4, -5, -6, ……}
となり、相対速度は、
 1フレームあたり 1ピクセル
となる。

(横パターン RL1)
[nxtX]1, 1, 1, 1, 1, 1, ……
入力順→+←, →+←, →+←, →+←, →+←, →+←, ……
移動量順+1-2, +1-2, +1-2, +1-2, +1-2, +1-2, ……
相対位置-1, -2, -3, -4, -5, -6, ……
相対速度-1 ピクセル/フレーム
(横パターン RL2)
[nxtX]2, 2, 2, 2, 2, 2, ……
入力順→+←, →+←, →+←, →+←, →+←, →+←, ……
移動量順+2-1, +2-1, +2-1, +2-1, +2-1, +2-1, ……
相対位置+1, +2, +3, +4, +5, +6, ……
相対速度+1 ピクセル/フレーム
({→}が先、{←}が後、に処理されると仮定する)

(縦パターン UD1)
[nxtY]1, 1, 1, 1, 1, 1, ……
入力順↑+↓, ↑+↓, ↑+↓, ↑+↓, ↑+↓, ↑+↓, ……
移動量順-1+2, -1+2, -1+2, -1+2, -1+2, -1+2, ……
相対位置+1, +2, +3, +4, +5, +6, ……
相対速度+1 ピクセル/フレーム
(縦パターン UD2)
[nxtY]2, 2, 2, 2, 2, 2, ……
入力順↑+↓, ↑+↓, ↑+↓, ↑+↓, ↑+↓, ↑+↓, ……
移動量順-2+1, -2+1, -2+1, -2+1, -2+1, -2+1, ……
相対位置-1, -2, -3, -4, -5, -6, ……
相対速度-1 ピクセル/フレーム
({↑}が先、{↓}が後、に処理されると仮定する)
●画面外へ移動
ファイナルスターの移動範囲は、上下左右端にそれぞれ制限が設けられている。
それをはみ出す事はできないのが当たり前だが、上記の「特殊な入力による独特な移動」を使用すると、下方向の制限を突破できてしまうプログラムミスがある。

それが可能になる特殊な入力は、上記のパターンのうち、U1 と D2 と UD1 である。

なお、あまりにも下へ行き過ぎると画面上に瞬間移動する。
おそらく、255の次が256ではなく0になる、という古いゲームでよく見られる現象がY座標の管理で発生している。
そこから逆に上から下への瞬間移動はできない。
●U1,D2を使用する場合
上記では交互入力の説明のため {↑} も {↓} も 1フレーム だった。
しかし、画面下端に限っては、{↓}は 1フレーム(2ピクセル) だけ受け入れられ、それ以上は自動的に止まるので、長すぎるほうには全然気にする必要はない。
{↑} を 1フレーム(1ピクセル) で止めることだけに気を配ればいい。
大きく移動するためには、これを繰り返す。
●UD1を使用する場合
こちらで下方向へ移動する場合は、スイッチをオンにしている限りは、止まらずスムーズに移動できる。
ただし、下に下がりすぎて上に瞬間移動した場合は、ファイナルスターのグラフィックが1ピクセル見える高さで止まる。
●籠城(無敵)
ファイナルスターのグラフィックの上端が、画面下の黒い横長の帯に完全に隠れるまで移動すると、敵や敵弾に衝突しなくなる、いわゆる無敵状態になる。
下に下がりすぎて上に瞬間移動した場合は、衝突するようになる。

(「交互入力が正しい!」「同時入力が正しい!」という論争を見たことがあるが、どちらも正しい)
(「スティックを下へ小刻みに入力すればいい」という説は、リバウンドが酷いスティックであれば可能。リバウンドが酷い、とは、傾けたのを放すと直後の一瞬逆方向に入ってしまうことが多く発生しやすいこと)

色々
●エリアターゲットの初動の方向
エリアターゲットは、スコアの100の桁によって動きが決まる。
奇数の場合は左からスタート、偶数の場合は右からスタート。
●隠しボーナス「スペシャルボーナス」(ラリオスボーナス)
ラリオスを、その中央が光ってから合体が完了するまでの間に破壊する。
成功すれば、50000点。
ラリオスの耐久力は8だが、光る前に弾を当てると、それと同数が耐久力に加算されてしまう。
●隠しボーナス「グレートボーナス」(ジムダボーナス)
縦に連続して配置されているジムダを、同じ列だけを下から順番に、連続で破壊する。
最初は16個、同じ列で続けるなら次からは15個破壊する。
成功すれば、80000点。

エリアターゲットが登場して中断される、
重なって上がりながら撃って、途中を抜かして破壊する、
重なって下がりながら撃って、下方のを破壊する、
といったものは、16個の最初の1個から数え直しになる。
●隠しボーナス「フォーチューンボーナス」(クレオパトラボーナス)
特定の場所に隠れているクレオパトラを破壊する。
成功すれば、1000000点。
●スペシャルボーナスとグレートボーナスが重なると…
順番がどちらが先でも同じ。
先に獲得したボーナスのメッセージと音楽は、後のボーナスを獲得すると同時に一瞬で消え、後のものがすぐに表示・演奏される。
●スペシャルボーナスとフォーチューンボーナスが重なると…
●スペシャルボーナスが先の場合
スペシャルボーナスのメッセージは左方向へ退場する。
●フォーチューンボーナスが先の場合
画面右から入ってくるフォーチューンボーナスのメッセージは、途中でスペシャルボーナスを獲得すると、すでに画面内に入っていた部分が消え、残りの部分がスペシャルボーナスのものと一緒に入ってくる。
音楽はフォーチューンボーナスのものが演奏されるが、音色が普通と異なる。
●フォーチューンボーナスの表示中はミスしても中断されない
クレオパトラを破壊した後、ファイナルスターがミスをした場合、次の出撃画面(またはゲームオーバー画面)に切り替わるのは、フォーチューンボーナスの表示が終わるまで待たされる。

待たされている間の、敵からの狙いは画面左上角になる。
●エリアターゲットの音楽演奏中はフォーチューンボーナスの表示は後回しにされる
エリアターゲットの音楽が流れている時、クレオパトラを破壊した場合、フォーチューンボーナスの表示が始まるのは、エリアターゲットの後の通常マップに戻るまで待たされる。
●ミスとエリアターゲットとフォーチューンボーナスが重なると…
エリアターゲットの音楽が流れている時にクレオパトラを破壊し、フォーチューンボーナスの表示が始まる前にファイナルスターがミスをしたとする。
次の出撃画面(またはゲームオーバー画面)に切り替わるのは、エリアターゲットが終わって、フォーチューンボーナスの表示も終わってからになる。

要するに、上記2項目が重複しているだけなのだが、ミスした瞬間から音楽が止まったまま暫く待たされるので、知らなかったり忘れていたりすると非常に不安になると思われる。
●ラリオスを見えなくして停止させる
ラリオスが画面内に浮遊中にエリアターゲットが出現すると、その瞬間からラリオスのグラフィックが見えなくなる。
ラリオスは見えなくなっているが、その場で停止して残っている。

見えないラリオスには、ファイナルスターが衝突する時もあるし、しない時もある。
ファイナルスターの弾が衝突するが、倒せる時もあるし、倒せない時もある。
倒した時に何も表示されない時もあるし、全然関係ない場所で爆炎が表示される時もある。

どういう条件でどの状態になるのかは研究中。
●空中敵を出現しなくさせる
見えないラリオスが残っている状態で、エリアターゲットを倒さずやり過ごす。
すると、通常マップに戻って空中敵が1〜3編隊だけ登場するが、その後続く空中敵は登場しなくなる。

その状態で再びエリアターゲットを出現させた場合は、それもやり過ごせば、空中敵が1〜3編隊登場した後に登場しなくなるところから、繰り返しになる。

エリアターゲットを倒す、見えないラリオスを倒す、ファイナルスターがミスする、といった行為で、正常に出現するように直る。
●残機の27機目は右端角に表示される
画面下部の残機が表示される場所には、残機が10機以上になっても記号が10個しか表示されない。
しかし、どんどん増やしていくと、27機目で右端にも記号が1個表示される。
その後、その記号は、どんなに残機を減らしても、ゲームオーバーになっても、次のプレイを始めても、何をしても電源を切らない限り消えずに残り続ける。
●残機を30機に増やすとゲームオーバーの後にプログラムが再起動する
残機を30機に増やしてからゲームオーバーになると、ネームエントリーが終了した後に、プログラムが再起動する。
(スコアランキングに入れなくてネームエントリーが無かった場合は未確認。)
●残機を31機に増やすとプログラムが暴走する
残機を31機に増やすとその瞬間にプログラムが暴走する。
何が起こるかは不明。

見たことがある面白い例は、突然「PLAYER1 START」の画面になったかと思ったらスコアに数字ではない英字が並んでプレイが続行できた。
●ジョイスティックを高速で左右に往復すると…
マクロ機能や連射装置などで、ジョイスティックを1フレームずつ左右に高速で振ると、不思議な現象が発生する。

■ファイナルスターを狙う敵や敵弾が遥か左か右を狙う
左右どちらになるかは、狙いが決まる瞬間のジョイスティックを傾けた方向。
敵や弾の速度によって、狙われる場所が異なる。
遅いと遠く、速いと近い。
狙われる位置の距離は、128, 64, 32, 16ピクセルの4段階。
もしもジョイスティックを傾けたままならその行先に衝突するように先読みを意図していると考えられる。

■垂直方向へ直進する敵が少し左か右へそれる
左右どちらになるかは、ジョイスティックを傾けたのと逆の方向。
それる速度は、背景の横スクロールと同じ 0.5 ピクセル/フレーム。
ジョイスティックの監視は1フレームおきに行われて1ピクセルずつ移動する設計なので、普通の横移動ならそれで綺麗に背景に追随して垂直に見えたはずが、普通ではない入力のせいで想定外の動作になってしまったと考えられる。
●ジョイスティックの左右を一緒にオンにすると…
正常なジョイスティックでは絶対にありえない事だが、左右とも一緒にオンしてそれを維持し続けると、不思議な現象が発生する。

■ファイナルスターを狙う敵や敵弾が遥か左を狙う
上記の「高速で左右に…」とほぼ同じだが、必ず左である、という違いがある。

■垂直方向へ直進する敵が少し左へそれる
これも同上で、必ず左である。

■背景が常に左端に寄る
ファイナルスターは左に行く場合と右に行く場合があるが、どちらであっても背景は常に左端になる。

■エリアターゲット後のタイルの後の背景が壊れる
256ピクセルの横ズレ?
ファイナルスターがミスしないと直らない。

技術資料
ディップスイッチ
↓ DIP SWITCH 1 ↓
項目内容12345678備考
COIN11COIN - 1PLAYoffoff工場標準設定
2COIN - 1PLAYONoff
1COIN - 2PLAYoffON
1COIN - 3PLAYONON
COIN21COIN - 1PLAYoffoff工場標準設定
2COIN - 1PLAYONoff
1COIN - 2PLAYoffON
1COIN - 3PLAYONON
ファイナルスターの数
THE NUMBER OF FINAL STAR
3offoff工場標準設定
4ONoff
5offON
2ONON
タイプ
TYPE
テーブル
COCKTAIL TABLE
off工場標準設定
アップライト
UPRIGHT
ON
デモンストレーション音
DEMONSTRATION SOUND
音有
SOUND
off工場標準設定
音無
NON SOUND
ON
↑ DIP SWITCH 1 ↑
↓ DIP SWITCH 2 ↓
項目内容12345678備考
エクステンド
EXTEND
50000, 200000, 500000offoffoff工場標準設定
100000, 300000, 800000ONoffoff
50000, 200000offONoff
100000, 300000ONONoff
50000offoffON
100000ONoffON
200000offONON
NoONONON
難易度
DIFFICULTY
NORMALoffoffoff工場標準設定
DIFFICULT1ONoffoff
DIFFICULT2offONoff
DIFFICULT3ONONoff
DIFFICULT4offoffON
DIFFICULT5ONoffON
NOT USEDoffONON
NOT USEDONONON
(未使用)offoff工場標準設定
↑ DIP SWITCH 2 ↑
配線(ゲーム基板)
半田面36ピン
エッジ
部品面
2P RIGHT12P LEFT
2P UP22P DOWN
2P FIRE SW3
4
1P RIGHT51P LEFT
1P UP61P DOWN
1P FIRE SW7
8
1P START92P START
COIN SW110COIN SW2
GND11GND
GND12GND
GND13GND
SPEAKER (+)14SPEAKER (-)
+12V15+12V
16
+5V17+5V
+5V18+5V
6ピン
1BLUE
2GREEN
3RED
4GND
5SYNC
6GND
クロスハッチについて
画面調整のためにクロスハッチの画面で止めたい場合は、クロスハッチが表示されている時にプレイヤー1のショットボタンを押す。
用が済んだらもう1回押せばタイトル画面に進む。

リンク
個人・ファンサイト
鹿野八丁目 > スターフォースいろいろ 運営:鹿野橋(かのばし)さん

© 2000-2026 KANIKANI