連載
» 2012年12月07日 10時00分 UPDATE

プチコンで始めるBASIC新世代育成“虎の穴”(8):見せてもらおうかMSX2+の性能とやらを!! (1/3)

プチコンとMSX2+規格のホームコンピュータ「FS-A1WSX」とで、グラフィックス命令を使った簡単なベンチマークテストをしてみた。結果は想像通りだが、なるほど、グラフィックス命令よ、なかなか使えるな!

[スマイルブーム マイコン部,MONOist]

他人のプログラムを見て、初めて気が付く奥深さ

 皆さん、「プチコン大喜利」をご存じでしょうか。

 私たちスマイルブームが開催(2012年8月3日〜9月30日)した“「プチコンmkII」限定のプログラミングコンテスト”のことです。ニンテンドーDSi/3DSでBASICプログラミングを実現するプチコンを題材にしたコンテストだけあって、寄せられたプログラム作品もなかなかユニークなものばかりでした。

 特に多くの作品でみられたのが、グラフィックス命令(スプライトやBG機能によらない、ピクセル座標によるビットマップ描画)を使ったリアルタイム描画です。中には、開発元の私たちが「こんなこと(使い方)できるんだ……」と、うなるような作品もありました。ちなみに、グラフィックス命令については、連載第3回「可能性は無限! コンソールだけで『ギャルゲー』もいける!?」で解説しています。覚えていますか? えっ、覚えてないって!?

HOPPERPetit Run mkII (左)画像1 作品例(1):遠くなら小さく、近くなら大きく、足場がグングン迫っては離れていく「HOPPER」/(右)画像2 作品例(2):ラスタースクロール状の地形を手動で1行ずつ描いている「Petit Run mkII」

 他人のプログラムを見て、初めて気が付くのもおかしな話ですが、無理もありません。なにしろグラフィックス機能の使い方が、かつてのマイコン時代とは大きく違っているのです。当時、グラフィックス命令といえば、四角形1つ描くのにもそれなりのフレームを消費しましたから、リアルタイムのアクションゲームに使うにはかなり無理がありました。


ハカセ

ふむ。いまさらながらいい時代になったもんじゃ……。


インテリ

スプライトBG機能は高速で便利な半面、制約も多いので、スピードが確保できるなら、「グラフィックス命令で描画する」というのも1つの方法なわけですね。


神崎

確かに、サイズや枚数制限を気にしないで済むものね。まぁ、1フレームごとに書き換え続けるのはラクじゃないけど……。


ハカセ

ふむ。この新しい可能性に、ワシもだまってはおれん!! 1つグラフィックス命令を駆使したプログラムを見せつけてやろうぞ。題して……、「自動モンドリアン生成プログラム」じゃ!



例えばこんな画像が生成されます 画像3 例えばこんな画像が生成されます
それっぽく見えても、それは気のせいです 画像4:それっぽく見えても、それは気のせいだと思います
神崎

……。


インテリ

……。ええと、読者の皆さんに説明しておくと、ピエト・モンドリアンは抽象絵画の第一人者的な画家で、ニューヨーク近代美術館のコレクションにも収録されている『コンポジション』シリーズなどが有名ですが……。


ワンパク

イイかげんにしろ!



CLEAR:CLS:GCLS
G=48 'ク゛リット゛サイス゛
 
FOR X=0 TO 256 STEP G
FOR Y=0 TO 192 STEP G
 
'イロ カクリツ
CR=RND(100)
C=15 'シロ
IF CR<35 THEN C=14 'クロ
IF CR<30 THEN C=12 'キ
IF CR<20 THEN C=4  'アオ
IF CR<10 THEN C=2  'アカ
 
'サ゛ヒョウ
X1=X+4
Y1=Y+4
X2P=RND(3)+1 'ハハ゛ ユレ
Y2P=RND(3)+1 'ナカ゛サ ユレ
X2=X+(G*X2P)
Y2=Y+(G*Y2P)
 
'カサネカ゛キ ホ゛ウシ
IF X1>256 OR Y1>192 THEN @SKIP
IF GSPOIT(X1,Y1) THEN @SKIP
FOR I=1 TO Y2P
IF GSPOIT(X1,Y+(G*I)) THEN Y2=Y+G
NEXT
 
'ヒ゛ョウカ゛
GFILL X1,Y1,X2,Y2,C
 
@SKIP
 
NEXT Y
NEXT X
ソースコード1 汎用性を考えている当たりが余計鼻につきます

QR1 ソースコード1のQRコード

ワンパク

まったく! 前回からランダムで自動生成とか、そんなのばっかりかヨ!


ハカセ

気に入らんか、ワンパクよ。自動生成アルゴリズムには美大卒のデザイナーの意見も採り入れたのじゃが……。唯一の気掛かりといえば、『モンドリアンは、こういうことじゃないです』と冷めた目で言われたことぐらいじゃろうかの。


ワンパク

ケッ、根本的にダメじゃねェか!


インテリ

描画の前に座標を「GSPOIT」命令でサーチして、既に描画されていたらスキップかサイズ縮小、というのは確かに「GSPOIT」命令のない昔のマイコンBASICには難しい方法ですが……。


神崎

同じようなことは、プチコンじゃなくてもできるんじゃないのかな?


ハカセ

そうとも言えるし、そうでないとも言える。やはり、キーポイントは“速度”じゃな。プチコンの速度なら一瞬で1画面丸ごと描画されるから、いかにも抽象画っぽく見えるのじゃよ。描いている経過が見えると興ざめじゃ。


インテリ

そう言いますが、そこまで遅いものだったんですか? そこがボクらの世代だとピンとこないんですが……。


ハカセ

甘いぞインテリ、そうくると思っておったわい! そこで、今回は現物を用意したのじゃ。ホレ!!


ワンパク

!?



       1|2|3 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.