リソースtoデータ by 反動

再生

 プチコンではBGやスプライトなどのリソースデータはそれぞれ独自にセーブできるが、プログラムリストとして公開するには向いていない。そこで便利なのがこの実用プログラムだ。
 プログラムを実行して、リソースデータを読み込むと画面上部にそのデータが一覧表示される。カーソルを十字ボタンで動かして、データ化したい画像の上に乗せると(見づらいリソースデータであれば1行目に表示される座標値を手がかりにしよう)、キャラクタ情報が表示されるぞ。
 左リンクのサンプル動画では、最初にプチコン付属の「CHRED」でデフォルトのリソースデータを保存するところから撮影されているので参考になるだろう。プログラム再起動時に同じファイル名を読み込むのであれば、「0」を指定すればファイル名は省略できるぞ。

私が作りました

反動

サークル反動冥土の反動と申します。
ベーマガ世代ですので、プチコンに見事ハマっています。
豊富にキャラクター文字があるのでそれを使ってもいいのですが折角なのでドット絵のゲームも配信して欲しいと思い、このツールを作りました。
昔ベーマガを見ながらひたすらDATA文のデータを打ち込んでいた苦行を思い出してくださいw


 CHECK POiNT 

ワンパク
使ってみたら数字がズラッと並んでるが、つまりこれはどういうこったこのヤロー!

博士
そこからか。ズバリ言ってしまうと、それはCHRSET命令に使う〈画像文字列〉じゃな。詳しくはマニュアル参照じゃが、このまま書き写すだけでプログラムの中にリソースデータを含めることができるのじゃからリスト公開派のショクンには有用なツールじゃぞ。

インテリ
そのままCHRSET命令の中に入れるのもいいけど、数が多いようならDATA文に列記して、READ命令で読み出すのがやっぱり基本かな。

ワンパク
しかし8×8ドットのために64文字とは長ったらしいもんだぜ、ファック! だいたいコレ、表示されるのはわかったけどよォ、どうやってプログラムにコピペすりゃいいんだ?

神崎
うーん……地道に書き写すしかないだろうね。ケータイのカメラで撮るのが一番手近かな。

ワンパク
シット! 公開するのも打ち込むのもヘビーじゃねえか!

インテリ
もっと短くしたいなら、データ圧縮のアルゴリズムを組むことになるね。かなり研究の進んでいる分野だから、いろいろ参考になる情報も多いんじゃないかな。

博士
かつて某誌にぴゅ●太の野球拳プログラムが載ったときは、絵といっしょに「まずこのごほうび絵を描いてください」から始まっておって、何がごほうびなんだかわからんことになっておったものじゃ。これは一例じゃが、プログラムの中にデータで含めることができるというのは重要じゃぞ。

プログラムリスト

  1. ’***RTD2***
  2. @J
  3. CLS:SPCLR
  4. LOCATE 0,8
  5. FN1$=FN$
  6. INPUT”FILENAME(0-”+FN$+”)”;FN$
  7. IF FN$==”0” THEN FN$=FN1$
  8. INPUT”1)SPU 2)BGU”;A
  9. IF A==1 THEN RN$=”SPU0”:GOTO @J1
  10. IF A==2 THEN RN$=”BGU0”:GOTO @J1
  11. GOTO @J
  12. @J1
  13. INPUT”PALET”;PL
  14. IF PL<0 OR PL>15 THEN @J1
  15. RN1$=RN$+”:”+FN$
  16. LOAD RN1$,FALSE
  17. N=0
  18. IF A==2 THEN @LOOP
  19. GOTO @LOOP2
  20. ’***SPRITE
  21. @LOOP2
  22. FOR Y=0 TO 3
  23.  FOR X=0 TO 15
  24.   SPSET N,N,PL,0,0,3
  25.   SPOFS N,X*16,Y*16
  26.   N=N+1
  27.  NEXT
  28. NEXT
  29. X=0:Y=0
  30. @J2
  31. CLS
  32. BT=BUTTON()
  33. X=X+(BT == 8)-(BT == 4)
  34. Y=Y+(BT == 2)-(BT == 1)
  35. IF BT AND 16 THEN @J
  36. IF X>15 THEN X=15
  37. IF X<0  THEN X=0
  38. IF Y>3 THEN Y=3
  39. IF Y<0 THEN Y=0
  40. CHRNO=X*4+Y*64
  41. LOCATE 0,8:? STR$(X)+”,”+STR$(Y)
  42. J=9
  43. FOR I=CHRNO TO CHRNO+3
  44.  CHRREAD(RN$,I),C$
  45.  LOCATE 0,J:?C$
  46.  J=J+2
  47. NEXT
  48. XX=X*2:YY=Y*2
  49. COLOR RND(7)
  50. LOCATE XX,YY:  ?”╂╂”
  51. LOCATE XX,YY+1:?”╂╂”
  52. COLOR &HF
  53. VSYNC(5)
  54. GOTO @J2
  55. ’***BGCHR
  56. @LOOP
  57. N=0
  58. FOR Y=0 TO 7
  59.  FOR X=0 TO 31
  60.   GPUTCHR X*8,Y*8,”BGU0”,N,PL,1
  61.   N=N+1
  62.  NEXT
  63. NEXT
  64. X=0:Y=0
  65. @J3
  66. CLS
  67. BT=BUTTON()
  68. X=X+(BT == 8)-(BT == 4)
  69. Y=Y+(BT == 2)-(BT == 1)
  70. IF BT AND 16 THEN @J
  71. IF X>31 THEN X=31
  72. IF X<0 THEN X=0
  73. IF Y>7 THEN Y=7
  74. IF Y<0 THEN Y=0
  75. COLOR RND(7)
  76. LOCATE X,Y:?”╂”
  77. COLOR &HF
  78. LOCATE 0,8:? STR$(X)+”,”+STR$(Y)
  79. LOCATE 0,9:CHRREAD(RN$,X+(Y*32)),C$
  80. ? C$
  81. VSYNC(5)
  82. GOTO @J3