コミュニティアイコン プチコン 非公式コミュニティ トピック

アバター
しんいち ◆lHy.hAWXbthn
2020/8/17 22:53
質問
【プチコン4】 テキストスクリーンのキャラ(文字)配置範囲を調べるDEFを速くしたい
現状思い付いてるのがスクショのやつ。前(3号/BIG)までは、1ライン毎に配列に入れてMAX,MIN使ってキャラ置かれてるかどうか調べることができてて、それだとループ数は幅+高さで済んでたんだけど、プチコン4ではTARRAYの構成が変わっちゃって(1マスがATTR+文字コードと、色コードの2要素になっちゃって)その手が使えず、幅×高さの2重ループの方法しか思い付かなかったんですよね。そして結構重い。

そこで、これより速い方法を募集。何か良い方法思い付いたら教えて下さい。ATTRとCOLORは無視して文字コードが0であれば置いてない、とします。

配列の偶数要素だけ取り出すとか、奇数要素だけ0にするとかをサクっとできれば楽なんですけどね。

コメント

アバター
こういち 2020/8/17 23:24 ◆.Id/aHiU36hu
ARYOPを知っていますか?僕は知っています。

作戦としては、要素が0,1の配列を用意して乗算。(確か足りない要素は繰り返されたはず)
ATTRが邪魔なら65536で割って-65536を掛けてTARRAYと足せば良いと思います。
(実際出来るかどうかはやってみないと分からない)
アバター
Na 2020/8/17 23:50 ◆QoELVrBXBQCI
要素数が2倍ある配列A(長さL*2)があったとして、
いらないページに
GLOAD 0,0,2,L,A,0 (幅2高さLの画像とする)
GSAVE 0,0,1,L,B (幅1高さLの画像とする)
とすればBに1つ飛ばしのデータが入ると思います。

TLOADにバグがあったときにGLOAD/GSAVEで配列操作してた人がいたなーと思いだして。(今回のとは違いますが)
http://petitverse.hosiken.jp/community/petitcom/topic/?read=1480&ukey=0
ちなみにその後TLOADバグは修正されたらしいです
アバター
しんいち 2020/8/18 1:02 ◆lHy.hAWXbthn
>こういちさん
ARYOP良くご存じですよ〜。長さ2の配列でARYOPとは、思い付きませんでした(@_@;)
試してみよう。

>Naさん
GRPを作業領域にする方法ですね。これは一瞬考えたんですが、テキストスクリーンが超細長くて(4096×8とか)GRPに収まりきらないことがあると面倒だなぁと思って保留にしてました^^;
でも速いかもしれないのでこれも試してみよう。

助言ありがとうございました。
#早く試したいのに、F12押したらプチコン落ちて後戻りの復旧に追われる始末orz
アバター
キルル2 2020/8/19 21:02 ◆rGE712Ruejv7
ATTR、文字コード、色コードをそれぞれ格納する配列を使って以前と同じ手法やるのはダメなんですか
アバター
しんいち 2020/8/20 7:07 ◆lHy.hAWXbthn
今MAPエディタ作ってて、それ用の処理として考えてたのですが、最初はMAP作るのにCOLORで所々色変えるなんて(私は)やらないから、いっそ-1固定にしてATTR+文字コードだけにしようかなぁなんて考えたこともありました。
別の配列にするのも良いかもしれないなぁ。色々シンプルになるかも。

とりあえず、ARYOPとGRPの方法、両方試してどっちもかなり速くなることを確認できました(GRPの方がちょっと速かったけどサイズ2048まで限定)。
アバター
Na 2020/8/20 21:02 ◆QoELVrBXBQCI
TARRAYをリファレンスで調べたんですが、
1要素目は上16bitが表示属性、下16bitが文字コード、
2要素目は32bitで表示色なんですね。
表示属性はATTRの説明によれば必ず4bitっぽい。
表示色は特に透明とか使わなければ不透明度は255(上8bitが1)ですよね。
それならTLOADの結果を整数型配列に入れれば、1要素目は必ず正、2要素目は必ず負になりそう。
配列をSORTすれば色コードと属性&文字コードが配列の前半と後半にちょうど分かれるのでは?
アバター
しんいち 2020/8/20 21:51 ◆lHy.hAWXbthn
不透明前提ならそれもアリかな。今のところは手軽に速くなるARYOPでの実装を考えてますが、コピペ時に回転・反転とか可能にしようとすると、やっぱり別配列の方が楽かもと思ったり。まだ色々と検討中の段階です。

COLORも編集可能にしようとすると、お絵かきツール並のカラーピッカーとか必要かなぁ、とか考えてクラクラしてるところ^^;

コメントを書く

  • こちらは「プチコン3号」「プチコンBIG」など、プチコンシリーズに関する話題を扱ったコミュニティです
  • プチコンシリーズにまったく関係ない書き込みはご遠慮下さい。削除の対象となります
  • こちらにはその他のゲームや雑談のコミュニティはなく、作る予定もありません (ひとりで管理できないため)。ごめんなさい
  • ユーザー登録なしで書き込みができます
  • 秘密の合い言葉は成りすましの防止 (トリップ機能)、書き込みの編集時の本人認証に使用します
  • 秘密の合い言葉に他人に推測されやすい言葉、他サービスと同じパスワードは入力しないでください。
  • 書き込むと、投稿時に入力したお名前と秘密の暗号が記憶され、ログイン状態になります

- WEB PATIO -