プチコンまとめWiki (初代/mkII)

BGについてすごく簡単に書くページ

概要

  • 適当ながら作ってみました。いいタイトル思いつかない。
  • なんかまとまりが無いので小さい項目を増やしてもう少しまとめるべきかも。
  • どちらかと言うとあくまでリソースを誰でも簡単に使うためのページです。
  • 特に、こういう事がしたい時は何をどう使えばいいのかを考えるのが主な目的です。
  • すみません。専門的なことを書いてしまいました。
  • 元々知識の無かった初心者が手探りで調べたイメージで書いています。適切でない表現があるかもしれません。あんまりだと思った箇所は直してください。
  • このページは誰でも自由に情報や項目を追加・修正してくださってけっこうです。

BGの事

  • BG面(バックグラウンド面)は、ごく簡単に言えば8x8ドットの小さい絵や字をマス目上に配置できる面。
  • CHRリソース(画像)とCOLリソース(色)を使う。
  • SCRリソースは、マス目上の配置を記憶する。
  • 描画関連ではBGの他にスプライト(SP)やグラフィック(GRP)があります。

CHR関係

CHR(リソースの実体)

  • キャラクターの略で、大抵は「キャラ」か「チャー」って読むみたい。
  • 最小単位が8x8ドットの小さい画像の集まりみたいの。
  • BGにも使うけど、スプライトにも使う。
  • プチコンに初めから入っているCHREDで編集できる。
    • このCHREDの中で、上画面に1度に表示できるキャラの1まとまり(1バンク)が1個分のCHRリソースで、 それぞれ別に読み込みと保存ができる。
  • 色に関しては、後に書くCOLで決めた全256色を16色ずつに分けた16パレットのうちの1パレットを使える。
    • パレットを変える事で色を動的に変更できる。
    • 各パレットの色0番は必ず透明。

BGF(リソースの読み込み先)

  • コンソールの文字の面。キーボードで文字を打ったり、PRINTで表示している文字。
  • 8x8ドットの文字の書かれたCHR(いわゆるフォント素材)が1バンク(つまり1つのCHR)だけ読み込める。
  • 画面の一番手前にある。
  • 1画面に32x24キャラ分ある。
  • 上画面と下画面に別々にあり、末尾にU、Lを付けて上下画面を区別。
    • なので例えばLOAD”BGFU:ファイルメイ”で上画面にフォントを読み込み。
    • 末尾のU、Lは、あらかじめBGPAGE 0で上画面、またはBGPAGE 1で下画面を指定していれば省略できる。
  • BGFはたぶんバックグラウンド・フォントの略。
    • やっぱりバックグラウンド・フロントかも
  • CHREDでは「BF」のアイコンになっているのがこれ。

実は正式名称が「BGUF」みたいだけど、LOAD等する時は「BGF」じゃないと駄目?

BGU(リソースの読み込み先)

  • こっちは、簡単に言えば8x8ドットの絵のCHRを配置してゲームで床のタイルに使ったりするBG。
  • BGF(文字のほう)と違って、
    • 全体をなめらかにスクロールできる。
    • 縦横64x64キャラ分ある。画面上に入りきっているのは32x24キャラだけで、スクロールして見える。
    • BGU0からBGU3まで4バンクある。
  • BGFよりも後ろに見える。
  • 上画面と下画面に別々に4バンクあり、末尾にU、Lを付けて上下を区別する。
    • 例えばLOAD”BGU0U:ファイルメイ”で上画面のBGのバンク0にCHRを読み込む。
    • 末尾のU、Lは、あらかじめBGPAGE 0で上画面、またはBGPAGE 1で下画面を指定していれば省略できる。
  • BGUの面は手前と奥の2枚があり重なっている。
    • 前景と背景の2つに分けられるという事。別々にスクロールできる。
  • BGUはたぶんバックグラウンド・ユーザーの略。
  • CHREDでは、「BU」と書かれたアイコンをタッチして編集できる。

4バンクあるので、カタカナの他にひらがな、漢字などをどうしても表示したい場合は 文字用にBGUの前景を1枚使う事も検討してみてもいいかもしれない。

ただしPRINT文は無いので自分で1文字ずつ配置しないといけない。

BGD(リソースの読み込み先)

  • 全体の後ろにあり、背景色や、BGFの文字の背景色、下画面ではキーボードの背景やファイル保存時の確認画面等で使われているみたい。
  • 2バンクある。
  • ユーザーが編集できるけど、普通はたぶん変更しない。
  • 何の略かわからないです。
  • CHR編集プログラム(uxtuno_さんの「UX_CHRED」など)のアイコンでは「BD」になっている。

COL関係

COL(リソースの実体)

  • 256色の色の定義。
  • カラーの略。

RGB値ですが、SDカードに保存してファイルの中身を見てみると赤青それぞれ5bitずつ(32段階)、緑は6bit(64段階)のようです。 赤緑青に自由に0から255を指定できないと思ったらこれでした。

COL(リソースの読み込み先)

  • COL0でBG色。COL1でスプライトの色。COL2でグラフィックの色を表して、それぞれ別々に読み込み・保存ができる。
    • これらの末尾にUを付けると上画面のもの、Lを付けると下画面のものを指定できる。
      • 例えば、COL0Uで上画面のBGの色を指定できる。
      • ただしBGPAGESPPAGEGPAGEであらかじめ上下画面を指定していれば、U、Lは省略できる。

SCR関係

SCR(リソースの実体)

  • これはBG面の64x64キャラの状態を記憶するリソース。
  • プチコンに入っているSCREDで編集できる。
  • スクリーンの略(byキービィ)

ゲームのステージのデータをこれに記録してもいいけど、 64x64キャラより広い(長い)ステージを作りたい場合は、 これではなく別の方法で(DATA文やGRPリソースなどに)記録しておいて、 BG面をスクロールするたびにBGの画面外でキャラを自分で配置していくなどの必要がありそう。

SCU(リソースの読み込み先)

  • SCU0で手前のBG面、SCU1で奥のBG面。末尾のU、Lで上下画面を区別。
    • 末尾のU、LはあらかじめBGPAGE 0BGPAGE 1で上下画面を指定していれば無くてもいい(はず)。

その他(上級者向け)

スクリーンデータ

BGPUT,BGFILLで使えるキャラ番号、パレット番号、横反転、縦反転の4つの情報を1つにまとめた16ビット値。(これをHEX$(値,4)で4桁の16進数にしたものをスクリーンデータ文字列という。)
4つの情報はビット単位で区別される。ビットの割り当ては以下の通り。

ビット用途
0~5キャラ番号
6横反転
7縦反転
8~15パレット番号

実際に使うときは以下のような形になる。

  1. BGPUT 0,0,0,4097

この場合4097 AND 1023=1でキャラ番号は1番、(4097 AND 61440)/4096=1でパレット番号は1番、(4097 AND 1024)/1024=(4097 AND 2048)/2048=0なので縦、横とも反転なし。

基本書式からスクリーンデータに変形する式

基本書式を以下のようにすると

  1. BGPUT L,X,Y,C,P,H,V

スクリーンデータにするなら以下のようになる

  1. BGPUT L,X,Y,C+P*4096+H*1024+V*2048

コメント

  • ページで訂正したい箇所はページ右上の「編集」から編集してください。それ以外の事はこのコメント欄へ・・・。
  • Lv100 : キャラクタの使い方について書いてほしいです。 (2012/07/04 (水) 17:58:41)
  • カービィ★KIRBY : BGD変えると、プチコンを自分好みのデザインに変えれますね。 (2012/07/05 (木) 10:26:33)
  • hata0401 : そうですね! (2012/08/02 (木) 15:36:45)
  • ウイング : DATA文で2×2等のBGを表示させたいのですが (2012/08/02 (木) 19:47:07)
  • 燻製 : ↑それはfor文でbgputすればよくない? 俺はみんながスプライトとbgの当たり判定をどうやってるか聞きたい (地面に着くとキャラがそれ以上落ないようにする等) (2012/08/02 (木) 20:03:41)
  • ウイング : ↑それが分からないんですよ・・・ (2012/08/02 (木) 20:14:45)
  • 燻製 : たとえばデータ文で文字を取得してFOR 文で描写するとした場合タテヨコ2ます描いたらFOR文のxを2進めるとか   って説明がむずい (2012/08/02 (木) 20:56:18)
  • 燻製 : ↑訂正xじゃなくてy (2012/08/02 (木) 20:57:03)
  • バイカウントメルビル : 例えばスプライトの座標が(X,Y)だったとする。とすると、スプライトの前後にあるBGは(FLOOR(X/8),FLOOR(X/8))になる。その位置にあるBGを、BGREADで調べればあたり判定ができるので、私はいつもそれを使っています (2012/08/02 (木) 21:11:29)
  • 燻製 : なるほどわからん (2012/08/02 (木) 21:27:42)
  • ぜあ : バイカウントメルビルさんはBGとの当たり判定について書いています‥wあと(FLOOR(X/8),FLOOR(Y/8))です。スクロール付きだと、XやYに足し引きが必要になります。2×2のBGキャラは、1回に自分で4個分配置するしかありません。DATA文から読み出す場合は、1文字読んだら4個BG配置する具合です。それらについてちょっとページに加筆するかもしれません。 (2012/08/02 (木) 23:36:46)
  • ぜあ : ああなんか話の流れ混乱してたw (2012/08/02 (木) 23:40:04)
  • バイカウントメルビル : ↑↑↑↑訂正xじゃなくてy (2012/08/03 (金) 00:00:46)
  • 燻製 : メルビルsの言ってることはなんとなく理解できるけどぜあsのスクロールのくだりがわからん大乱闘よりマリオの方がbgのデータの取得が面倒いと? (2012/08/03 (金) 00:02:09)
  • 燻製 : ↑2 ちょい前の俺と同じようなこといっちょるw (2012/08/03 (金) 00:03:08)
  • 燻製 : ↑2 ちょい前の俺と同じようなこといっちょるw (2012/08/03 (金) 00:03:08)
  • 燻製 : 誤更新orz (2012/08/03 (金) 00:04:10)
  • バイカウントメルビル : まあ確かにスクロールしないのに比べると面倒いけど別に特別面倒な作業でもない (2012/08/03 (金) 00:10:36)
  • バイカウントメルビル : 適当にダメもとでいろいろやってるとたまに思った通りの動きをすることがある。なんで成功したんかなーって考えると「あぁ、だからか!」って理解できるはず。私はそうやってプログラムを覚えていきm(黙 (2012/08/03 (金) 00:15:24)
  • ぜあ : 面倒というか、最初は少し考えるの大変かも。例えばマリオのようにすごく横に長いステージで、プレイヤーキャラの横位置の変数がステージ全体のうちの座標(ステージ左端から何ドット右に進んだか)だとすると、実際の地形との当たり判定は横64個しかないBG上のキャラの取得なので、割り算(少数切り捨て)や割り算のあまりをうまく使わないといけない。なので固定画面の判定に慣れてきてからチャレンジでいいかもw (2012/08/03 (金) 01:04:10)
  • 名無しさん : 5bitずつなのはDSが20万食位しか表示できないからだっけ (2012/08/03 (金) 09:49:02)
  • 燻製 : えーと、スクロールゲームの場合はスクロールした数を変数にいれてスプライトキャラの現在地とたしたのをFLOORしてbgの座標を出せば?? 混乱してきた (2012/08/03 (金) 10:20:52)
  • ぜあ : 以前そうやった事もありますが、逆に難しかったので‥スクロールした位置はあくまで「カメラの位置」として、プレイヤーの位置とは別に考えたほうが良かった。 (2012/08/03 (金) 15:50:34)
  • 名無しさん : 26 万色か (2012/08/03 (金) 15:55:55)
  • 燻製 : ↑見事な五並びで (2012/08/03 (金) 16:31:45)
  • 名無しさん : 20万食ってドンだけ食べるんだよ (2012/08/13 (月) 16:19:59)
  • 252色 : 緑だけ6bitの65536色のようだ。モノクロ256階調にして縦線を引くと緑とピンクの縞模様が出る (2012/08/16 (木) 00:11:14)
  • 天郷思音 : 32*64*32=65536ほんとだ (2013/03/03 (日) 16:18:51)
  • 天郷思音 : スクリーンデータについてまとめてみました。 (2013/03/17 (日) 16:32:58)
  • E.T : BGREADでスプライトとBGのあたり判定はどうしますか?? (2013/04/04 (木) 16:12:17)
  • いぬまろ : 質問掲示板に当たり判定を書きましたので見て下さい (2013/04/04 (木) 21:47:09)
  • NK : スプライトとBGの座標を合わせるところ (2013/11/29 (金) 20:48:59)
  • NK : スプライトとBGの座標を合わせたいんですが...スプライトの座標が8で割れない時BGREADを使うと出した値が整数になってしまうせいで当たり判定をしたいところではないところに当たり判定が起きてしまいます (2013/11/29 (金) 20:53:30)
  • 天郷思音 : 四捨五入で改善しない? (2013/11/30 (土) 10:21:21)
  • NK : ロールプレイングを作りたいのにこれでは壁にそって歩いたりできません。。。BGREADで少数点以下の値を使うことは可能でしょうか??? (2013/11/29 (金) 20:57:22)
  • 名無しさん : 無理。てかここ質問するところじゃない (2013/11/29 (金) 22:58:51)
  • 名無しさん : すみせんでした… (2013/11/30 (土) 11:20:16)
  • 名無しさん : でも解決できました…ありがとうございます (2013/11/30 (土) 11:54:52)
  • 名無しさん : w (2017/12/02 (土) 09:30:18)

表示モード : [ スマホ・3DS対応表示 | クラシック表示 ]
PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL. Based on "PukiWiki" 1.3 by yu-ji
ページの処理時間 : 0.141 秒 | このページの最終更新 : 2022/09/20 (火) 12:43:59 (565d) | ログイン
Copyright(C) 2011-2014 プチコンまとめWiki ◆1sxkymI8ji30