カテゴリー「レトロパソコン・BASIC」の記事

2016年7月18日 (月)

X1 TurboZ の4096色中8色×2画面合成テスト

昨日、「4096色同時発色 【X1 Turbo Z】でサンプルプログラム」を作りましたので、どうせなら、「何かを表示したい」ではありませんか。

今回は、4096色中8色×2画面合成 にて(プログラム的には4画面合成が可能になっています)描画プログラムを作ってみました。

 
X1r_0017
 
 
アンドア・ジェネシスと、テラジを描画
画像データは、X1版NEWゼビウスの流用なので、2プレーン分しかありません。
ですから、8色・・と書きましたが、実は4色しか表現出来ていません。
 
それでも、灰色が表現出来ているので、デジタル8色と比較すると、随分と雰囲気が出ています。
 
ちなみに、アンドア・ジェネシスと、テラジ(空中キャラ)のパレットは微妙に違う色合いにしています。
(アンドアジェネシスは少し、灰色が黄色がかっています)
 
 
なお、テラジを動かして、アンドア・ジェネシスと重なりますが、重ね合せ処理はしていません。
アナログ色での表現が出来ると、やはり「見た目」が違いますね。

| | コメント (0) | トラックバック (0)

2016年7月17日 (日)

4096色同時発色 【X1 Turbo Z】でサンプルプログラム

「4096色同時発色」と言えば、(私の中では) FM77AVなのです。
(X1の次に購入したのもFM77AVですし)

 
FM77AVでも、マシン語(6809)の学習はしましたが、現在はすっかり忘れてしまっています。
(Z80も同様に忘却の彼方でした)
そんなFM77AVで最後に作ったのは、テトリスだったと記憶しております。
それ以降は、プログラミングの世界から遠ざかっていたので、当時「X1 Turbo」は知っていましたが、「Turbo Z」の知りませんでした。
(Turbo・・・あくまでも「知っていた」というレベルで、マシン語でプログラミングした事はありません)

Turbo Zって4096色同時発色が出来たんですね。
 
 
X1エミュレータの"Xmillennium"は、TurboZの互換ROM(なの?)が標準で動作するので、TurboZによる、4096色サンプルを作ってみました。
 
X1r_0010
 
パレットの設定次第で、(4096色1画面モード時に) 4096色中8色×4画面合成なんてのも、出来たりして、動作させる(描画される)プレーン数を(2~3枚とかに)限定にすれば、かなりゲームに活用出来るんじゃないかな?
これは、FM77AVでも同様に感じていた事です。
 【FM77AVの曖昧な記憶】
 
 記憶がかなり希薄なのですが、FM77AVも12枚のVRAMプレーンをバンク切り替えで描画していました。
 MMRって言ったかな・・・・
 X1とは違って、メモリでの操作(しかも素直なVRAM配列だった?)が出来たので、6809では作り易かった。
動作確認では、エミュレータを使用していますが、残念なのは、"Xmillennium"の現時点での最新版060は、TurboZに対応していない事でしょうか。
それ以外のバージョンだと、CRTCの設定が正しく反映されないのです。
「次はTurbo Zで何かを作りたくなってきましたよ。」
(Turbo Zを入手せねば・・・)

| | コメント (0) | トラックバック (0)

2014年10月11日 (土)

レトロプログラミング 疑似スプライトルーチンの作成【ポケコン】

今回は、ポケコン(PC-G850)によるプログラム内容なのですが、”共通の技法”として多くの8ビットパソコンが同様のプログラムにて画像(グラフィック)を表示させていたのではないでしょうか?
 
20数年前振りに、このような機械語プログラミングをしてみました。
 
・・・いや、ホント懐かしいものです。
   (しかし、Z80プログラミングにおいてはリハビリ中のようなものです。かなり忘れてしまっています)
 
「仮想VRAM値とマスク画像との値をANDし、それに対し画像データ値とをORすれば良い」   
・・・要するに、たったの「これだけ」の事です。 
 
しかし、ドット単位でキャラクタを動かす(描画)するにはビットシフトもせねばなりません。
そして、背景もあった方が、キャラの重ね合わせの効果が分かりやすいと思い背景も描いてみました。
ついで(?)にスクロールも・・・・
 
Xevious1
 
 
まぁ、そんな、(当時としては)当たり前のプログラミング技法の事を長々と書いてしまいましたよ。
(サンプルプログラムを作るよりも記事を書く方が時間が掛かってしまっている)
   
 
そんな駄文(詳細)はこちらです。
 
実行動画
 
 
 
  2014/10/12 追加
 
 実機で動かしてみました。
 
 
 
キャプチャした動画を確認したら、60FPSで動作しているようです。
キャラの移動が速過ぎて、液晶の反応が間に合っていない感じ。

うまく、作れば3階調で表現させる事も出来るかもしれません。
(現段階では、静止画ならば3階調も出来ています)

| | コメント (2) | トラックバック (0)

2014年8月15日 (金)

ほとんど機械語になった【ポケコン版リバーシ(オセロ)】

27年前に、使っていた(プログラミングしていた)Z80
少しづつではありますが思い出してきました。

 
前回、着手位置の判定と反転処理を機械語で作りましたが、今回はCPU側の処理の全てを機械語に作り変えてみました。

それによる速度向上はどの程度のものなのでしょうか?

Hikaku
 
「なんと(初手では) 46倍速くなりました!」
この速度ならば、「もうちょっと凝った評価関数も実装できそうです」
「Z80のプログラミングが楽しくなってきたよ~!!」

ハタッと思う。「オレ何してんの??」 (←2回目)

詳細(とソース)はこちらに書きました。


| | コメント (0) | トラックバック (0)

2014年8月 9日 (土)

BASIC+機械語で作ってみた【ポケコン版リバーシ(オセロ)】

ポケコン(PC-G850)の搭載CPUは、懐かしのZ80です!
最後にZ80(の機械語での)プログラミングをしたのは、1987年頃だったんじゃないかな。
だとすると、27年前の事なのです。
 
そんなZ80を、私は憶えているのでしょうか????
 
 
Rev04  
 
しかし、強さ(弱さ)は想定内でしたが、速度が想像以上に遅いのでした。
 
よって、多くの処理回数を行う、着手の可否と石の反転を機械語にしてみます。
 
当時1987年頃までは、アセンブラ(ソフト)を使用しておらず、紙にコードを書いて、ハンドアセンブルをしていたのです。
かなり、当時はバリバリと作っていましたので、Z80機械語プログラミングの後期(それが1987年頃)になるとダイレクトに16進数が頭に浮かんで来る位のレベルになっていました。
 
・・・・・しかし、かなり忘れてしまっていました。
 
こんな私でも作ることが出来るのでしょうか?
 
詳細はこちらに書きました。
 
いまさら、Z80やってる・・・・
ハタッと思う。「オレ何してんの??」

| | コメント (2) | トラックバック (0)

2014年8月 5日 (火)

ポケコン風リバーシ for Windows 【改版】

ポケコン(PC-G850)でリバーシ(オセロ)を作った後に、それをWindowsに移植してみましたが・・・・・

↓やっつけ仕事のポケコン風
 
Wrev01_2

 
「古いモノクロ液晶」という感じは出ていますが、ポケコン(PC-G850)のそれか?と言われると「かなり違います」
ドット間の隙間があり過ぎるのと、ちょっと縦長でした。
 
ポケコン(PB-100)風のデジタルインベーダーの作成時には「まさにPB-100」という感じに仕上げました。
 
Screenshot01  
 
なので、今回も、もっとポケコン(PC-G850) らしい画面にしてみようと思ったのです。
 
Wrev201_2
 
「そう、そう、こんな感じ!」
 
ダウンロードはこちら
 
 
「コンピュータが弱くてすぎてつまらん」・・・という方は以下も是非お試し下さい。
    対人間であるならば、弱すぎる・・・という事は無いと思います。
    (リバーシソフト全般からすれば弱いと思いますが)

【8/6追記】
実機と比較してみました。
Rev05_2
 
Wrev04
 
 

| | コメント (0) | トラックバック (0)

2014年8月 3日 (日)

久しぶりの早朝プログラミング【ポケコン風味のソフト第2弾】

サンデープログラミングしてみました!

この週末の2日間で、イチから作って完成できそうな良い題材が無いかと思案し
「オセロ(リバーシ)のポケコン版を作ってみよう」
と思い立った訳です。

ポケコン(PC-G850)のBASICなので、速度は期待出来ません。
評価関数はテーブル参照のみであり、1手先読みだけです。

かなり、"弱そうな仕様"ですが、やってみましょう。
(この仕様については、こちらに(少しだけ)書いてあります)

実機で、ポチポチと作っていった訳では無く、PC(Windowsマシン)+エミュレータ(G800)を使用して作りました。(ポケコン エミュレータによるクロス開発

PC-G850のBASICの仕様として、(現代で言えば)使いづらいのが大きく2点

・変数名が2文字まで
・ラベルは使用できるが、行番号は必須

そして、便利なフリーソフトを発見しました。
BASIC用行番号 自動生成ソフト AutoNum  (リンク先はVectorです)

こう云うのも自分で作ろうと思っていたモノですが、同じような事を考える人っているんですね。
そして・・・
   ↓

「いきなり、完成!」
Rev01
 
 
Rev03
 

オセロプログラムは何度か作っていましたが、こんなにシンプルなものはスゴク久しぶりです。
ポケコン(PB-700)で作った以来です。
(なお、PB-700は、激遅ポケコンなので、コレ(今回の)よりも低レベルです)

Rev04

「思った通りの強さ(弱さ)です」
しかも、予想以上に遅い。


作っておいて、思ったけど(作る前に普通は気づく)コレって誰もプレイ出来ないですよね。
(このリバーシのソースを公開したとしてもです)
 
なぜなら

・このポケコン(PC-G850)を持っている人
・ポケコンに転送出来る環境を持っている人 (または入力する根気のある人)
・この過疎サイトに訪れる人
 
これではかなり絞られてしまいます。

ならば、コイツ(ポケコンのプログラム)をWindowsで動かせるようにしてみようかな。
 
・・・んで、作ってみた!
(作ってみたって書いたけど、ActiveBasicで動作するように小変更だけで済みました。
「LOCATE」「PRINT」「LINE」を独自関数として作った程度)
※今度(ActiveBasicでは)は速すぎるので、ウェイト処理をかけてあります。
 
Wrev02  
 
ダウンロードはこちら

ポケコン風味のソフト第2弾です。
今後、(風味では無く)ポケコン版リバーシは、処理が遅すぎるので(多分、作りが悪い)ちょっと改善するかもしれません。
機械語かなぁ・・・いや、そこまでやるか?

| | コメント (6) | トラックバック (0)

2014年5月18日 (日)

フロッピィディスクの復元【FM77AV】

FM77AV対応の「FMグラフィックエディタ」で、お絵描きをしていました。(すっかり、忘れていましたが)
 
それ以前の機種はX1だったので、ドット単位で8色しか表示(描画)出来ず、ゲームを作るにしても、タイルペイント(市松模様のようなもの)を駆使して中間色を表現していたのでした。
それがFM77AVになると、ドット単位に4096色※も描画が可能なのですから、お絵描きでもしてみたくなるのが人情でしょう(そうかな?)
 
特に、肌色の表現は8色ではかなり困難だったので(黄色と白の組み合わせ)人物画なんかも描いてみたくなった(のだと思います・・・・遠い記憶なので何とも)
 
はたして、どんなヘタクソな絵が格納されているのでしょうか???
 
01
 
続きは、こちらに書きました。

| | コメント (2) | トラックバック (0)

2014年5月11日 (日)

懐かしのパソコンネタ【FM77AV】

以前(2008年)FM77AV版オセロソフトをコンバートした時にはFM TOWNSを使用して、FM7フロッピィのイメージ化をしました。
しかし、FM TOWNSフロッピィディスクドライブの調子が悪かったのか完全復元はなりませんでした。
(完全復元出来たのは、自作テトリスだけでした)
 
今更なのですが、AT互換機を使用してもFM7フロッピィのイメージ化は出来るもよう。
PC-88エミュレータM88 emulator用のディスクイメージを作成するツールDITTを利用してもFM7ファイルが作成できるようです。
拡張子はD88では無くD77にしておくようにします。
 
実家に行ってFM7フロッピィを持って帰ってきました。
 
00
 
残念ながら、そのほとんどが復元出来ませんでしたし、復元できたものもサンプルプログラム程度のモノしか動かず、「ゴミのようなモノ」だけでした。
(しかし、懐かしい想いには浸れました)
 
そんな、ゴミプログラムを晒してみます。
 
詳細はこちらに書きました。その1 (実行動画あり)
 →   FM77AVのフロッピィディスクを復元してみた その1
      ~自作キャラクタエディタとスプライト機能~
 
A03
 
 

詳細はこちらに書きました。その2 (実行動画あり)

             ~3D迷路ほか~
 
D03
 
 
E01b
 
 
・・・・あぁ、S氏の作ったOUTRUNのBGM(BASICで作成)が復元したかった。とても残念です。
(実を言えばソレを探して復元したかったのです)

| | コメント (2) | トラックバック (0)

2013年5月26日 (日)

久しぶりにBASICでお絵かき

「久しぶりにBASICでお絵かき」・・・と言っても、私が描いた訳ではありません。

(リンクしていただいている)あやおりさんのブログモトネタ(PC-8001mk2自由研究その1) なのですが、それがPC-8001mk2用だったのでActiveBasicのN88BASICモードで動作できるように、コンバートしただけなのです。
 
PC-8001mk2で描かれたオリジナル画像
B30526_2
スゴイ。肌色がタイリングペイントで表現されている。
 
「PC-8001MK2ってタイリングペイントって出来たんだ??」
 
ざっとプログラムリスト(PAINTコマンド)を見ても、それらしき記述が無い。
・・・と良くみたら、最初の方に、LINEでタイリングを表現していました。
 
単純にコンバートしただけだと・・・・・
 
Pc8001_ab1_2
 
「ああああぁぁぁ」・・・・想像していたけど、「ホラー」になっちゃった。
 
ActiveBasicでパレットがあれば、楽だったのですが、カラーコードを直接記述するのではなく、変数にして色を変えて(元のイメージ通りに)してみました。
 
Pc8001_ab2
 
結構、あやおりさんのオリジナルに近づきました。
 
しかし、CIRCLEの動作が、PC-8001のBASICとActiveBasicとで異なっているみたい。
 
一応、ActiveBasicのプログラムリストはこちら
 
BASICでコレを描けるってスゴイなぁ
いやいや、手でも描けない。
 
 

| | コメント (2) | トラックバック (0)