2012年3月31日土曜日

アルフォスのキャラクター

マップを作ったときにキャプチャーしたので、せっかくなんでキャラクター紹介

ニーモニック号
地球防衛軍有人戦闘機。
2機の量子砲を装備しヘリウム爆弾を搭載している。エアロ・ダナミクサーにより、最大マッハ10で前後左右に速かな移動可能。

ファルコン
アルフォス軍有人戦闘機。
奇怪な編隊を組みながらの攻撃は、獲物に群がるハイエナのようだ。体当り覚悟のファイトは地球防衛軍の脅威。

ボスネザー
アルフォス軍有人爆撃機。
空対空電磁ビーム砲を装備し、これを発射した後反転しながら飛んで行くいやな奴。

スピナー
アルフォス軍無人戦闘機。
ファルコン同様、編隊を組み期待を回転しながら量子砲を避け体当りしてくるのでてこずる相手である。

トライアングルフリーク
無人攻撃機。
ファイティングベースのレーザー誘導により、旋回しながら体当りしてくる。動きが早いので要注意。

ジュデアス
空中爆雷。
アルフォスの周りに幾重にも張り巡らされ、攻撃能力はないが、わずかなショックでも爆発する。量子砲もきかないこの包囲をかいくぐるテクニックがアルフォス攻撃の必要条件だ!

 ゲモラス
無人戦車。
サテライト・ベースのレーザー誘導によりコントロールされる。動きは鈍いが寸断なく発射される陽子砲はなかなか強力であなどりは禁物。

オクトパスベース
攻撃要塞。
地上からの攻撃の主役。要塞中央の中心より発射されるサイクロイド爆弾は赤い炎をあげなから執拗においかけてくる。

ゼクスベース
レーダー要塞。
敵探知を目的とする要塞。攻撃能力は弱い。爆破すると敵の攻撃が一瞬たじろぐ。

スキャークロベース
爆薬要塞。
地下に隠れているためめったに発見できない。

サテライトベース
アルフォス陸軍主要基地。
高射砲を多数装備し、サイクロイド砲を複数発射できる。こいつを破壊することにより、敵の攻撃は弱まる。

ファイティングベース
アルフォス空母基地。
サイクロイド砲を持つが本来は攻撃機の格納基地のため、攻撃はサテライト・ベースより劣る。

以上、代表的な登場キャラクターです。

が、このゲームはさらに、どんなキャラクターが?!・・・・・・
そして、アルフォスとは一体何物?!・・・・・・


とのこと。。。
その他あったキャラクターは、

バキュラみたいなくるくるまわるやつ
破壊不可。

まるいやつ
後半のステージで、けっこうでてくる。

ペケ 
出てきたのを見たことない。ボツキャラ?

スキャークロベース(ゼビウスのソルのようなもの?)も、どこに出現するのかさっぱり。。
キャラクターは、きっとこれだと思う。

2012年3月28日水曜日

アルフォスマップ

せっかくなんで(?)、アルフォスのマップをつくってみる
手で打ち込むのは厳しいので、Excel VBAで。
Private Sub CommandButton1_Click()
    Dim sheet As Worksheet
    Dim inputFn As Long
    Dim buffer() As Byte
    Dim file As String
    Dim row As Long
    Dim column As Integer
    Dim value As String
    Dim count As Long
    Dim index As Long

    Set sheet = ThisWorkbook.Worksheets("Map")

    file = ThisWorkbook.Path & "\alpmap.bin"
    inputFn = FreeFile
    Open file For Binary As #inputFn
        ReDim buffer(LOF(inputFn))
        Get #inputFn, , buffer
    Close #inputFn
    
    count = UBound(buffer)
    For row = 1 To (count / 12) + 2
        For column = 1 To 12
            index = count - (((row - 1) * 12) + column)
            If (index > 0) Then
                value = Right("0" & Hex(buffer(index)), 2)
                sheet.Cells(row, column).value = value
                file = ThisWorkbook.Path & "\" & value & ".png"
                sheet.Cells(row, column).Select
                If (Dir(file) <> "") Then
                    sheet.Pictures.Insert (file)
                End If
            End If
        Next column
    Next row
End Sub
For~Nextとか、なつかしすぎる

alpmapをバイナリ化して、「alpmap.bin」としてExcelと同じフォルダに保存
各バイトデータに対応した画像データ(32x32pix)を、「00.png」のようにHex形式のファイル名で同じフォルダに用意しとく
Excelのセルフォーマットをちょっと変更して、上記VBAを実行するとマップが完成

ステージ1

ステージ2

ステージ3

ステージ4

ステージ5

ステージ6

ステージ7

ステージ8

ステージ8の白抜けのところがアルフォスね。
赤枠は、他の背景とバイトデータが違う所。なんだろ?ボム落としても何も出てこないし。。

2012年3月24日土曜日

アルフォス

アルフォスのコメントをもらいましたので紹介

パソピア7版のパッケージ

パッケージの裏には、森田さんの顔写真と紹介文。当時在籍中の大学名まで出てる。
Wikiにもでてるが、、、

同梱のマニュアル。もうホチキスがさびさび。30年。。


いつも通り、テープイメージからRAMPACに保存。32KBに収まらないため、2つに分けて保存
BASICの「BLOAD#-1,"..."」を「BLOAD"..."」に変更
ファイル名の前にスロット1の場合「5:」、スロット2の場合「6:」をセットしておく
バイナリファイルは、以下のアドレスとサイズなので、BSAVEでスロット1か2に保存しておく
"alpdat", &H0000, &H6800
"alpmap", &H9000, &H2A00
"alpobj", &HC800, &H2200
あとは、RUN "ALPHOS"で実行できるようになる。

クレジット画面。
森田さんの技術はすばらしい。。将棋もすごいけど。

キー操作

ゲーム画面。ここにもナムコ

動画だとモアレとか残像がでてるが動画圧縮の問題。エミュは綺麗な画面がでてる

2012年3月23日金曜日

パソピア7でつくってみた

20年ほど前につくったあれをエミュで動かしてみた
ちゃんと動いた。

BASICとマシン語だが、キャラクタ表示はBIOSコールだったので、それほど速くないし、ちらつく。
テキストベタ塗りなので、純正のCRTだと色が滲んで見にくかった。


アセンブラは、ペーパーウェアPASOPIAに掲載されていたPTA-7を使用
当時、とても重宝した。ハンドアセンブルに比べたら雲泥の差。特にジャンプ系が。

動画

作った当時は98全盛期で、そんな中パソピア使ってるのは自分ひとりじゃないかと思っていた。
今も同じ気持ち

2012年3月20日火曜日

スターウォーズと博物館

初めてスターウォーズをみた。エピソード1の3D版。
3D映画も初めてで、字幕が浮き出て見えるのに妙に感動。

入場者プレゼントでもらったカード
アナキン・スカイウォーカーとクイーン・アミダラ

せっかくなんで、3Dメガネもエピソード1のやつ買ってみた。右は普通の

裏には、PODRACINGのロゴ。うんうん、よく出来てる。

話は変わるが、映画の翌日、岩見沢郷土科学館へ。
1階のコンピュータと遊ぼうのコーナー

PC-8801FE2が、モニター台に。。。
画面とマウスは後ろのPC。
88は完全に台。

もっと酷いのが、PC-9801VM
ファミコンのTV台?
コンピュータと遊ぼうというテーマには沿ってるかもしれんが、いろんな意味でおかしくない?

2階の郷土資料はなかなか。ポイント切り替えは床置き。


そして、獅子舞。ショーケース横の子供たちの写真をみて、何かを感じた。(フォース?)
白粉の顔に口紅とほっぺたに丸い紅。。。
クイーン・アミダラじゃないか。

2012年3月19日月曜日

パソピア7のデモプログラム

今度はパソピア7のデモプログラムをエミュレータで動かしてみる

Side A
1. サンプル1 "SAMPL1"
2. サンプル2 "SAMPL2"
3. FD初期化 "FORMAT"
4. FDコピー "FDCOPY"
5. FD比較 "FDCOMP"
6. プログラム変換 "PCONV"
7. 漢字印刷サブルーチン "KANJI"
8. パソピアT-BASIC "TBASIC"

Side B
1. パソピアT-BASIC "TBASIC"
2. プログラム変換 "PCONV"
3. 漢字印刷サブルーチン "KANJI"
4. FD初期化 "FORMAT"
5. FDコピー "FDCOPY"
6. FD比較 "FDCOMP"
7. サンプル3 "SAMPL3"
8. サンプル4 "SAMPL4"

サンプル1

サンプル2

サンプル3
あみだがみねじゃないよ。

サンプル4

2012年3月18日日曜日

パソピアのデモプログラム

パソピアのデモプログラムをエミュレータで動かしてみる

1. 音階 "DOREMI"
2. ネオン・サイン "NEON"
3. LCD用 "LCD"
4. レースあみ "DRAW1"
5. 八角形 "DRAW2"
6. 立体図形 "DRAW3"
7. RAM初期化 "FORMAT"

まずはDOREMI。音は動画の方で。

NEON。東芝の歌は、ちょっと引く。。。

DRAWは、こんなかんじ



最後のDRAW3は10分以上かかるので、エミュレータのCPUを16倍速で早送り。
動画。全部見るのは忍耐が必要。。

2012年3月17日土曜日

パソピア7のV-RAM

ついでに、パソピア7のV-RAMについても書いとく

初代ほどではないが、7のV-RAM配置もちょっと独特

アドレスは8000hからキャラクタ単位で配置されていて、80文字分右端まで行くと次の行に移る。
例えば画面の一番左上8x8ドットの場合、
8000h
8001h
8002h
8003h
8004h
8005h
8006h
8007h
の8バイトにデータを書き込むことになる
キャラクタ単位で処理する場合は便利だが。。。

V-RAMにアクセスするためには、3Chポートの2bitをONにする
7bit6bit5bit4bit3bit2bit1bit0bit
(Reserved)I/O MemoryV-RAMRAMBIOS

アセンブラはこんなかんじ
LD A,4
OUT (3Ch),A
パソピア7の場合、V-RAMはR・G・Bの3プレーンがあって、0Chポートで切り替える
7bit6bit5bit4bit3bit2bit1bit0bit
メモリープレーンデータプレーン
(Reserved)Green/TextRedBlue(Reserved)Green/TextRedBlue
下位0~3bitはデータプレーンの選択。各bitがONの場合、そのV-RAMデータバスとCPUデータバス間のデータ交換が有効に。
上位4~7bitはメモリプレーンの選択。各bitがONの場合、そのV-RAMへのCPUアクセスが有効に

このポートに書き込むデータは、上位・下位ビットをセットで指定し、
00h11h22h33h44h55h66h77h
水色

Text用のV-RAMはGreenと共用してて、書き込むデータがグラフィックのドットパターンなのかテキストなのかは、0Dhの3bitで指定
0がテキストで、1がグラフィック

2012年3月16日金曜日

パソピアのV-RAM

今回は、パソピアのV-RAMについて備忘録

武田さんもいってますが、V-RAMのアドレス配置は変態的

一番左端1バイトは、色を指定するためのアトリビュートエリアで、1ライン81バイトの領域。
8ラインで1文字だが、V-RAMは0800h単位で跳び番。
こんな配置なので、07E9h~07FFhなど未使用部分があって、そこはアクセスしても何も起きない

例えば画面の一番左上8x8ドットの場合、
0001h
0801h
1001h
1801h
2001h
2801h
3001h
3801h
の8バイトにデータを書き込むことになる
書き込むデータは、スクリーンモードによって異なる。

Screen 0の場合
V-RAMには、アスキーコードを書き込む。色を指定するアトリビュートキャラクターは以下の通り
コード
F8h
F9h
FAh
FBh
FCh
FDh水色
FEh
FFh
アトリビュートはライン単位で有効で、ラインの途中にアトリビュート・キャラクタがあると、それ以降の文字色が変化する

Screen 1/1.5の場合
8255-1のCポート(=0Ah)7bitで、V-RAMのデータタイプを指定
7bitデータタイプ書き込むデータ
0テキストScreen 0と同じように、アスキーコードを書き込む
1グラフィック1バイトで2ドット分の色を指定(1ドット分の色は4bitで指定)
Screen 1では1バイトで2ライン分の指定になり、Screen 1.5では1バイトで1ライン分の指定

Screen 2の場合
8255-1のCポート(=0Ah)7bitで、V-RAMのデータタイプを指定
7bitデータタイプ書き込むデータ
0テキストScreen 0と同じように、アスキーコードを書き込む
1グラフィック1バイトで8ドット分のパターンを指定。表示される色は単色で、そのラインのアトリビュートキャラクターに依存。

V-RAMを直接読み書きできるプログラムで試したところ、ライン単位でアトリビュートを指定できる。
色が飛んで見にくいが、実機でのScreen 2画面
アトリビュートキャラクターを書き込んだ8ドット分は抜けてしまうが、ラインの途中でも色を変更できる

Screen 1の場合は、2ライン単位で変化する

テキストとグラフィックが重なった場合、ライン単位でグラフィックかテキストが表示される

エミュレータも、この辺を対応して再現できるように



特に初代パソピアのゲームは、このV-RAM特性を活かしたゲームがあったりするので。