スプライトとBGグラフィックの処理はbg_get()やsp_bghit()で書き込みはbg_putやbg_fillで簡潔に処理できますがそれ以上の複雑な処理をする時等にこの関数を使用します。取得した値はそのままbg_fillに使用できます。スプライト4番の座標の位置のBGグラフィックに16のデータを書き込みます。BGスクロールで新たに出現したパーツ番号の羅列を取得し、スプライトキャラクターの出現を補助します。BG_GENE(n)[説明]BG画面のスクロールで特定位置でスプライトを発生させたい時にBGにデータを埋め込んで使用します。画面が四方にスクロールした時に16Pixel毎に一度、縦または横一列に新たなパーツ群が発生します。(表示サイズが256Pixelの場合は16パーツ+α個発生します)そこから得られるパーツ番号に応じてスプライトキャラクターを発生させるプログラムを組むことができます。バッファでのパーツ番号=左(0)からの位置+上(0)からの位置x256nの値:0~4までが情報、5以降が実際のパーツ番号になります。0:出現したパーツの数1:最初のパーツのX座標2:最初のパーツのY座標3:横方向スクロールの時0、縦方向の時は1を返します。4:縦方向スクロールの時0、横方向の時は1を返します。5以降:出現したパーツ番号を返します5から4+bg_gene(0)の位置までデータが収まります。この最終位置が読み出されたと同時にbg_gene(0)の値はクリアされ0になります。縦横同時スクロールで横方向と縦方向のパーツが同時に発生している場合はまず横スクロールで得られるデータが取得されて(パーツの並びは縦一列)その後最終値取得でbg_gene(0)の値はクリアされずにすぐに縦スクロールの情報が取得されます。この2回目の縦の最終値を取得するとbg_gene(0)の値は0になります。横スクロールではパーツの出現は左か右側でパーツの描画は縦に走るので得られるのは縦一列のデータになります。縦スクロールではパーツの出現は上か下側でパーツの描画は横に走るので得られるのは横一列のデータになります。左スクロールでは最初のパーツは左上側で下に向かって16Pixelの間隔で次のパーツが並んでいきます。最初のパーツの座標は(bg_gene(1),bg_gene(2))ですがi番目のパーツの座標を求めるにはx=bg_gene(1)+i*16*bg_gene(3)y=bg_gene(2)+i*16*bg_gene(4)がパーツの左上角の座標となります。bg_gene(3)とbg_gene(4)が横か縦方向のどちらかによって、xかyの値の増幅を打ち消しています。他の各方向は以下のようになります。*スプライト発生に割り当てているパーツ番号のバッファの場所は無地にしておくのが実際の用法になります。これは発生するスプライトの種類を示すもので実際表示されるスプライトパターンとは異なるためです。lp01:四角はBGのブロックで○はスプライトの発生になります。青の○は何度も出現します。赤の○はbg_gdsetで出現時にマップから消されるので2周目以降は出現しません。BG_GENEで出現したスプライトが繰り返し出ないように出現と同時にマップから消去させるそのパーツ番号の範囲を指定します。[,SP_OUTの縦拡張範囲][説明]BGスクロールで一度出現したスプライトが再度出ないように出現と同時にマップ上から0でクリアさせることができます。そのパーツ番号の範囲を指定します。SP_OUTの画面範囲の広がりを第3(横方向)、第4(縦方向)パラメータでpixel単位で指定できます。この設定と連携しているSP_OUTも参照して下さい。3,103から10までの番号のパーツがスクロールで現れるとbg_geneにデータを残してBGマップ上からは0でクリアされます。スプライトのバックグラウンドグラフィックに対する衝突判定値を返します。方向Y])[説明]'BG_BORDER'で指定した衝突判定のあるパーツが指定方向の側面にあるかどうか調べます。側面はその方向の'SP_MARGIN'の判定位置+'SP_BGHIT'の各方向指定量です。