PCエンジンでスーファミのコントローラーを使ってスーパースターソルジャーで50万点を目指す


PCエンジンminiを買ってから、スーパースターソルジャーばっかやっていました。

以前から不思議に思っていたのですが、PCエンジンのスーパースターソルジャーを何故か持っています。
本当に当時プレイした記憶もクリアした記憶も全くなく、何故ウチにあるんだろうと思っていました。
ところが、PCエンジンminiを買ってから思い出しました。

当時、キャラバンステージの2分間モードで50万点に挑戦していたのですが、全然うまくいかず諦めたようです。
しかも、メインのゲームも全くやらずに。

という訳で、20数年ぶりにまた挑戦してみようと思います。
まずはPCエンジンminiです。
苦労に苦労を重ね、プレステ2の最速連射とSaveのおかげで何とか50万点超できました。

次はいよいよ実機でリベンジです。
...と思ったのですが電源が入らなくなり、修理しました。

もう一度仕切り直し。

当時、ノーマルターボパッドを使って挑戦していたようで、
連射が遅すぎて(秒間16連射程度)、これではどうやっても50万点いかないんですよね(強者なら出せるかもしれませんが)。

ということで、各種miniシリーズと同様にAVRマイコンを使ってスーファミのコントローラーで最速連射を実装することにします。
とりあえず、ATtiny26Lを実装してサクッとコードを書きました。

が、うまく動きません。
やはりSELECT信号の切り替えにマイコンの処理が追い付かないようです。
INT0の割り込み処理がやはり遅いようで、push/popに時間がかかっているようです。
逆アセンブルしたら、以下のようになりました。

[Cコード]
ISR(INT0_vect)
{
PORTA |= 0xf0;
PORTA &= ( IN_SELECT_PIN & IN_SELECT_BIT ? port_cond1 : port_cond2 );
}

[アセンブラ]
0108 : 921F E_INT0: PUSH R1 ;
0109 : 920F PUSH R0 ;
010A : B60F IN R0,SREG ;
010B : 920F PUSH R0 ;
010C : 2411 CLR R1 ;
010D : 938F PUSH R24 ;
010E : 939F PUSH R25 ;
010F : B38B IN R24,PORTA ;
0110 : 6F80 ORI R24,$F0 ;
0111 : BB8B OUT PORTA,R24 ;
0112 : B39B IN R25,PORTA ;
0113 : 9BB6 SBIS PINB,6 ;
0114 : C003 RJMP L0118 ;

0115 : 9180 0062 LDS R24,S0062 ;
0117 : C002 RJMP L011A ;
0118 : 9180 0063 L0118: LDS R24,S0063 ;
011A : 2389 L011A: AND R24,R25 ;
011B : BB8B OUT PORTA,R24 ;
011C : 919F POP R25 ;
011D : 918F POP R24 ;
011E : 900F POP R0 ;
011F : BE0F OUT SREG,R0 ;
0120 : 900F POP R0 ;
0121 : 901F POP R1 ;
0122 : 9518 RETI ;

gccが賢いのでさすがに全レジスタを退避はしていないのですが、avrアセンブラを知らない私でもえらいことになっているのが分かります。
これではSELECT信号を受けて信号を返す間に次のSELECTになってしまいます。

ということで、以前作成した操縦桿ジョイスティック流用して、ハードウェア連射で挑戦します。
連射回路の抵抗を220kΩから100kΩに替えて高速化します。
操縦桿では操作しにくいので、通常のレバーでスーファミ用に作ったものを使いました。

さて、どうでしょうか。
...駄目です。
可変抵抗による連射スピード切り替えでは、いい塩梅の連射スピードが分かりません。
また、ジョイスティックではパッドのように操作できません。
49万点を超えるのも至難の業です。
やはり、操作性ももちろんですが、ソフトウェアで60Hzギリギリの連射を行わないといけないようです。

仕方がないので、再度スーファミのコントローラーを使います。
今度はロジックICとマイコンをコンボにします。
PCエンジン本体側にはマルチプレクサ 74HC158 を使い、スーファミのコントローラーはATtiny26Lで処理します。
電力が不安なので、LED等は一切付けません。

さて、どうでしょうか。
うまくいきました。

やはり使い慣れたスーファミのコントローラーと60Hzの連射で、動作テストでいきなり497100を出しました。
これで、20数年越しの50万点だっ!

紆余曲折で、やっと実機でも50万点超えました。
やはり序盤の1000点と、3つの丸いでかい硬い奴が出る所で地上を全て破壊することが50万点超えのポイントのようです。

実機の連射スピードを比較してみたのですが、やはり標準のターボパッドって遅いんですね。
20数年前、できないことをやろうと無駄な努力をしていたようです。

しかし、当時の標準スコアが52万点って...。
みんなすごいですね。

【追記】
まだやってるし...。
PCエンジンminiで何とか標準スコアいきました。
ボスと相打ちからのリスタートってアリなのかな。

技術はもちろんですが、どこでどんなことをするかでスコアが大幅に変わるんですね。
結局、シューティングというよりパズルに近い感じがします。
あと、液晶とブラウン管による遅延の差もあります。






















戻る