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

アバター
bはかせ ◆fgfPl6qLuzIU
2018/7/15 21:28
質問
GSPOITの戻り値
グラフィック系命令をいろいろ試しているのですが、
GSPOITの戻り値の、ARGB各8ビットの色コード
ってのがよく分かりません
真っ白な所をGSPOITすると
255255255 みたいな数値が戻るのかなと思いましたが
-460552 という数値が戻って来ました
どういう事でしょうか?教えてください

コメント

アバター
bはかせ 2018/7/15 21:31 ◆fgfPl6qLuzIU
余談
グラフィック系命令に文字を回転させる命令が欲しい
(方法は思い付いたけど処理が多そう)
アバター
こういち 2018/7/15 21:52 ◆ou0jbJnEJ0Kb
ビットっていうのがあってですね。
…長くなりそうなので先に二つ目の質問に答えましょう。
「スプライトを使うのら〜」
GPAGE OUT VP,WP
GPAGE VP,SPPAGE()
GCLS
GPUTCHAR 0,0,"A",1,1
SPDEF 0,0,0,8,8
SPSET 0,0
SPROT 0,90
スプライトを使いたくない場合は…気合のGSAVEとごり押しのFOR二重ループを使いましょう。
アバター
こういち 2018/7/15 22:08 ◆ou0jbJnEJ0Kb
ビットの話に戻ります。
コンピュータは数値を内部で二進数で管理しているわけですが、
プチコンで整数は「符号付き32ビット整数型」という形式で表されます。
これはつまり整数は内部で32桁の二進数で管理されているという意味です。
32ビットなので、ARGBを表すには左から8ビットづつ区切って
&b AAAAAAAA RRRRRRRR GGGGGGGG BBBBBBBB
みたいに表されます。
白の場合Aが255でRGBがそれぞれ248で、
255は二進数で&b11111111
248は二進数で&b11111000なので
&b 11111111 11111000 11111000 11111000
って感じです。(ちなみに二進数が分かってる前提で話を進めているのでもしわからなかったらコメントしていただければ詳しく解説します)

続く
アバター
こういち 2018/7/15 22:31 ◆ou0jbJnEJ0Kb
この
&b11111111111110001111100011111000
が符号付き32ビット整数だと
-460552
になるわけですが、
符号付き整数は左端のビットは「符号ビット」と呼ばれ、数の正負を表すのに使われます。
左端のビットが1だと負の数、0だと正の数って感じです。
負の数の場合、0のビットに重みが生じて1が引かれます。
白の場合
1番目、2番目、3番目、9番目、10番目、11番目、17番目、18番目、19番目のビットが0なので、
-(1+2+4+256+512+1024+65536+131072+262144)-1
で-460552になるわけです。
または、一番左端のビットに-2147483648の重みがあると捉えることもできますが結果は同じなので省略。
アバター
突然でてきたBAKA!! 2018/7/15 23:13 ◆EfKewrRlmOns
よく短くしたなぁ〜(感心
アバター
あきと 2018/7/16 0:43 ◆7TEpcjb/rk2E
細かい事を省くとGSPOITで取得した値をRGBREADで分解してやれば欲しかった値が求められると思いますよ。
アバター
SquidSky 2018/7/16 7:13 ◆qhyT2aHAyMJC
勝手にまとめちゃいます。
GSPOIT()は数値形式のRGBコードが返ってきます。それを
RGBREAD GSPOIT(100,100) OUT R,G,B
とすることでRGB値を取り出すことができます。
ただし、GSPOITで返る値は、RGBそれぞれ-2の誤差があります。分岐判定などで使う場合は注意です。
例えば、白のドット部分をGSPOIT()で読み取ると、普通は255,255,255ですが、返ってくるのは248,248,248となります。※後日指摘を受けて編集済み

コメントを書く

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

- WEB PATIO -