カテゴリー「自作ソフト」の記事

2012年2月18日 (土)

レトロペイントBASICジェネレータ バージョン2

レトロペイントBASICジェネレータをバージョンアップ
今まで(初期バージョン)のは、遅くて使いづらかった。

詳細はコチラ

・・・で、以前手を抜いて描いたヤマト(バージョン1で作成)

20111218yamato

初期バージョンだと、拡大表示(&描画)や背景は単なる透過機能だけだったので、細かな箇所を書くのが苦手でした。

バージョン2で、拡大と背景読込が可能となり精密な絵を描けるようになりました。

・・・・で、実際に描いてみた。

しかし、レトロパソコン(今回もFM77AV用F-BASIC3.4)では、今回のはメモリ不足で読めません。

F-BASIC3.4の使用可能メモリを計算すると、800行程度しか読めないようです。
今回、描いたヤマトは1251行でした。全然足りませんね。
(マルチステートメントにしたところで、たかが知れています)

そんな「ヤマトの描画プログラム」をダウンロード

せっかく描いたモノが(レトロパソコンで)見れないのは残念すぎる・・・・

なので、レトロペイントBASICジェネレータ(以下「自作ツール」)で保存された別ファイル(CSVファイル)を直接読み取りながら描画を行う方法にしました。

以下はF-BASICで作ったです。(多分、どのBASICでも殆ど変更なしで動くような気がしています)

「DREWCSV.txt」をダウンロード

このプログラムによって描画を行いました。
(ファイルからの読み取りなので、遅いです)

20120218yamato

結構、良く描けている・・とは思いますが、良く見ると結果が違っていたりします。
(紫の点が所々ありますね。これは自作ツールを使用した場合にはありません)

これは、自作ツールでの線描画と、F-BASICでの線描画のアルゴリズム(や計算)の違いによるものです。

以下は自作ツールで描いたヤマト

20120218yamato2

始点と終点は一致していますが、それへのルートが微妙に異なる訳です。
これによって、塗られるべき箇所が塗られなかったり、その逆もあったりします。

この辺りは、もう「しようがない」とあきらめ・・・・る?

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

2012年1月29日 (日)

デジタル8色で描く その2

繰り返しになりますが、デジタル8色(黒・青・赤・紫・緑・水色・黄・白)によるお絵かきです。
光の3原色(RGB)の組み合わせですね。

黒=光っていない。
青=B
赤=R
紫=B+R
緑=G
水=B+G
黄=R+G
白=B+R+G


元画像はコレ

2010050214340000vga

これを8階調にグレースケール化し、8色にしてみます。
これをモノクロモニターで見たら、結構良い感じになるはずです。
上記の8色は(黒→白)の順序で輝度が明るくなっているからなのです。

2010050214340000vga8

これを、赤部分とそれ以外で、タイルペイントを駆使しながら、描いてみます。
(描く・・と言うよりもも、塗ると言った方が良いかな)

2010050214340000vga8_2

どうも、センスが無いな~

メタリック部分(銀色)は、水色っぽくなり、黒(暗い色)は青が強い。
8色+灰色(白の輝度の半分)があると結構良くなりそうなんだけどね。

デジタル8色の本当の実力はどこまであるのか!?

以下は、フリーソフトの「色さがし」を使用し減色させたものです。
ですから、以下の画像は「お絵かき」ではなく「画像変換」です。

2010050214340000vga8_4 

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

2012年1月22日 (日)

デジタル8色で描く

某友人Fさんの乗るバイク(と同じだと思われる)を描いてみましたよ。

なお、レトロパソコンでも表現できる8色のみで表現しています。
(黒、青、赤、紫、緑、水色、黄、白)

前回のは、テスト的に作ってみたので、かなり赤っぽい感じ
(手抜きとも言える)

Ninjya


やはり赤が強いですね。
なぜ、こんな事(今さらな事)をしているのかはコチラに書いてあります。

で、描き直してみました。

Ninja

「結構、良くなったんでないの?・・・・」

いずれは、これと同等のモノをレトロパソコンのBASICで描かせてみたいのです。
(自作ソフト「レトロペイントBASICジェネレータ」の機能アップを検討中)

現在、BMPファイルを読み込ませて「縁取りツール」なるモノを作成中です。
画像の境界線を自動的に検出して、線(LINE命令)を描かせる機能なのです。

これで、手作業で複雑な線を描くという作業が軽減できるハズ。

テスト的に作ったツールで、線を描かせてみました。

8色に減色させてモノネタは以下の画像です。

Ae850

で、この画像を読み込ませて、縁取ったのが次の画面です。

2

正確に縁取りが可能なのですが、LINEも命令が多すぎてしまい、レトロパソコンでは、メモリ不足となりそうです。

次の画面は、精度を低く設定した縁取りです。

Photo

上の例では正確な縁取りの場合は、4746個のLINE命令になりますが、この場合は、511個と圧縮されます。

まだまだ、検出結果に不満があるので、もう少し考えてみましょう。

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

2011年12月29日 (木)

自作ペイントソフトで絵を描いてみた【200ライン対応】 その5

BASICによるお絵かきです。

まずは、640×400で描いたモノ

05

これは、自作ペイントソフトからBASIC出力したものです。

次は640×200ドットでの出力にしてみます。

06

この出力はY座標だけを50%にして出力させるだけの簡易200ライン対応なのです。

・・・・で出力されたBASICで描いたもの

07

肌色の濃淡の境目(赤色)がスゴク気になります。
200ラインになると(400ラインではあまり目立たなかった)アラがよく分かりますね。

やはり、境界色もタイリング対応させないとダメですね

・・・・で、やってみた。

072

境界色タイリングについては、サブルーチン処理としています。(以下のコード)

10000 X1=248:Y1=163:X2=252:Y2=163:C1=7:C2=2:GOSUB 60300
59999 END
60300 LINE(X1,Y1)-(X2,Y2),PSET,C1:IF C1<>C2 THEN X3=X1:Y3=Y1:XP=(X2-X1):YP=(Y2-Y1):IF ABS(XP)>ABS(YP) THEN GOSUB 60400 ELSE GOSUB 60500
60320 RETURN
60400 YP=YP/ABS(XP):XP=SGN(XP):FOR X3=X1 TO X2 STEP XP
60410 X4=INT(X3*10)-INT(X3)*10:IF X4<5 THEN X4=0 ELSE X4=1
60420 Y4=INT(Y3*10)-INT(Y3)*10:IF Y4<5 THEN Y4=0 ELSE Y4=1
60430 IF (INT(X3+X4) MOD 2+INT(Y3+Y4) MOD 2)=1 THEN PSET(INT(X3+X4),INT(Y3+Y4),C2)
60440 Y3=Y3+YP:NEXT
60450 RETURN
60500 XP=XP/ABS(YP):YP=SGN(YP):FOR Y3=Y1 TO Y2 STEP YP
60510 X4=INT(X3*10)-INT(X3)*10:IF X4<5 THEN X4=0 ELSE X4=1
60520 Y4=INT(Y3*10)-INT(Y3)*10:IF Y4<5 THEN Y4=0 ELSE Y4=1
60530 IF (INT(X3+X4) MOD 2+INT(Y3+Y4) MOD 2)=1 THEN PSET(INT(X3+X4),INT(Y3+Y4),C2)
60540 X3=X3+XP:NEXT
60550 RETURN



・・・・・しかし、境界色タイリングはうまく処理されていますが、他の箇所が塗れきれていませんね。(青が少し残ってしまっている)
やはり、単なる座標変換だけでは(400→200)正常に動作しないです。
「作成画面自体を200ライン対応にしなければ無理だな」


なお、以下の画面は400ラインで、境界線をタイリング処理したものです。

Amuro34

BASICソースはコチラ (F-BASIC用)

http://homepage3.nifty.com/ae85fcmxs/retro-pc05/amuro3-4.txt

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

2011年12月23日 (金)

自作ペイントソフトで絵を描いてみた【タイリング対応】その4

タイリングのパターンを増やしてみた。

詳しくは、こちらに書きました。

http://homepage3.nifty.com/ae85fcmxs/02-info-retro05.html

実行画面の動画

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

2011年12月15日 (木)

自作ペイントソフトで絵を描いてみた【タイリング対応】その3

前の記事で、

「レトロパソコンのメモリよりも処理速度を優先させ、実際には「ペイント」処理はさせず、始点と終点を大量に吐き出す

・・・としました。

しかし、FM77AVに読み込ませたところ、メモリ不足になってしまいました。

タイルペイント対応のBASICならば、その記述で吐き出すのが一番ですね。
そうすると、機種制限が大分ありそう。

とりあえず、F-BASIC(V3.3以降)の記述方法でBASICプログラムを出力させてみました。

http://www.youtube.com/watch?v=YvLPnyzeKxI

もうちょっと考えてみよう。

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

2011年12月11日 (日)

自作ペイントソフトで絵を描いてみた【タイリング対応】

自作ペイントソフト

http://homepage3.nifty.com/ae85fcmxs/02-info-retro03.html

前記事で、タイリングペイントは対応していない・・・と書きましたが、(一応)対応してみました。

BASICソースの出力については、思案した結果
(どのレトロパソコンのBASICでも、”ある程度”は対応出来る様に)

・タイリングペイントはサブルーチンを加えて出力させる。
・レトロパソコンのメモリよりも処理速度を優先させ、実際には「ペイント」処理はさせず、始点と終点を大量に吐き出す。

(ペイントは機械語でなければ実用に耐えられないだろうと思いまして)

・・・で、変更前の画像

本当は水色箇所はグレーにしたかった。

Gundam01_2

変更後

Gundam02

結構、良くなった??
とりあえず、まだ黒との組み合わせだけのタイルペイントです。

ソフト自体の使用感はイマイチなので、もうちょっと改善したらダウンロードできるようにするカモ・・・・

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

2011年12月 5日 (月)

自作ペイントソフトで絵を描いてみた

自作ペイントソフト

http://homepage3.nifty.com/ae85fcmxs/02-info-retro03.html

これで、ヤマトを描いてみましたが、中間色が表現できないので、途中で断念してしまいました。
(まだ、タイリングペイント機能が無い)

原色で、ある程度表現できるモノ

「ガンダム」がいいかな?


早速、描いてみた。

BASICを使って絵を描いてみた【ガンダム】

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

2011年11月26日 (土)

パピコンPC-6001とFM77AVとWindows

前記事で、PC6001(通称パピコン)のBASICプログラムをActiveBasic(Windows)に変換して実行してみました。

あやおりさんのソースです)


しかし、ウェイト処理を入れてもPAINTやLINEを実行するとWindowsAPIにて処理を移してしまっているので、「あっと言う間」に描画が終了してしまいます。

「レトロパソコンみたく描画が見えるように出来ないかな?」

ActiveBasicで用意されているPAINTやLINEを使用せず、それらを作ってしまいましょうか。

「しかし、どうやって作るんだっけ?」
LINEはすぐ思いつく。PAINTって結構、面倒ですよね。
兎に角、最適なPAINTルーチンで無くても良いのでまずは作ってみました。
(今回は、速いプログラムでは無く、遅いプログラムにする訳なので・・・・・)

当時のPAINTは遅かったのですが、8ビットですからね。
結構頑張っていたんだろうな。

・・・で、出来たのが、コレ

ダウンロード

ソース

うーん、ずいぶん強引かつ汚いソースです。特にPAINT処理。
2時間で作ったモノなので勘弁して下さい。←単に能力が無いだけの言い訳

Pc60012

とりあえず、自作PAINT命令もバク無く動作していそう。
もちろん、ウェイト処理をかけています。


次は、FM77AVのBASIC

このBASICの描画命令は当時、かなり速いものでした。
(確か、FM77AVはハードウェア描画だったような記憶があります)

それで、作ったらどうなるのか・・・・興味がわいてきました。


で、作ってみました(と言うかあやおりさんのソースを変換したにすぎません)

FM77AV BASICの描画【動画】

上記はエミュレータで実行していますが、実機の速度もこの程度なのでしょう。
当時は、「スゴク速い(驚速)」と思っていましたが、「普通」ですね。

もっと速かったと思っていたんだけどな~
「思い出補正」が掛かっていたようです。

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

2011年6月19日 (日)

3D対応 その2 (ワイド版)

今回は、もうちょっと手前の背景を広げて、自機の動きによって横へもスクロールできるようにしてみます。

(・・・で、ワイド版という訳です)

詳しくはココ(↓)に書きました
DXライブラリを使用してゲームを作る その4 ~擬似3Dスクロール ワイド版~

プレイ動画は↓

【ニコニコ動画】ゼビウスみたいなゲームを作ってみた【擬似3D-ワイド版】

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