投稿
ASA fusuian
リクエストのあった、BGがループするサンプルやっとできました! マップは25x64で、頭とお尻の一画面分は同じ画像にしなくちゃいけないシバリがあり、イマイチ? Bボタンで弾が出ます。(ただし敵は出ない)
20そうだね
プレイ済み
返信[1]
親投稿
ASA fusuian
1/3 おなじみのTINYさん+でんぺんさんのLOADBGです。 マップファイルはあとでキーを上げます。
0そうだね
プレイ済み
返信[2]
親投稿
ASA fusuian
2/3 BGとスプライトを設定し、メインループへ。
0そうだね
プレイ済み
返信[3]
親投稿
ASA fusuian
3/3 Bボタンで弾をうちます。 実はサンプルの肝はMOVEBGです。
0そうだね
プレイ済み
返信[4]
親投稿
ASA fusuian
MOVEBGで、BGOFSのYが0を割ったら、BGOFSでお尻まで巻き戻しています。頭とお尻の一画面分は、両方とも森なので巻き戻していることはわかりません。
0そうだね
プレイ済み
返信[5]
親投稿
ASA fusuian
サンプルマップファイルの公開キーはVKX8XE3Yです。
0そうだね
プレイ済み
返信[6]
親投稿
nyannzi CornedBeef
公開キーのサンプルマップを同じフォルダーに入れて実行してみたのですが、illegal fuction callになってしまいます 何処がいけないか予想つきますか?
0そうだね
プレイ済み
返信[7]
親投稿
Tome3 kiiroimimisen
自分は全部入力できてちゃんと動きました。行番号も示してくれるとわかるかと思いますが…
0そうだね
プレイ済み
返信[8]
親投稿
ASA fusuian
nyannziさん、とめ3さん、打ち込んでくれてありがとう! イリーガル・ファンクション・コールということは引数の打ちミスかも知れないけれど、それだけではわかりません。エラーの出る行に打ちミスがあるのはほぼ間違いないので、よく見比べて、それでもわからなかったらエラーの出る行のまわりのプログラムリストを貼ってください。
0そうだね
プレイ済み
返信[9]
親投稿
nyannzi CornedBeef
ありがとうございます このエラーの番号も行数だったのですねやっと見つかりました.を,と見間違えてました これでやっと落ち着いて勉強できる
1そうだね
プレイ済み
返信[10]
親投稿
nyannzi CornedBeef
ごめんなさい見事なまでにさっぱりです解説頂けると助かります DIM B[0] まずコレなのですがこの後0の部分にPが入って0より大きな数字になりますよね?なぜ大丈夫なのですか? P=8+32*8コレは何の大きさですか? LOAD FN$,B,FALSEこの行の意味もわからないですFN$をロードその後のBと0は何ですか? まずはここまで教えて頂けると助かります
1そうだね
プレイ済み
返信[11]
親投稿
横の場合で、座標が正の数の場合はどうするのですか?
0そうだね
未プレイ
返信[12]
親投稿
0そうだね
未プレイ
返信[13]
親投稿
ASA fusuian
nyannziさん、お答えします。 はじめに、4〜16行のDEF LOADBGはユーザー定義命令の設定なので、すぐには実行されません。 プログラムが実際の仕事を始めるのは29行のACLSからです。 そして31行めにLOADBG "TOPVIEW.MAP"が呼ばれます。ここでさっき定義したLOADBGの内容が実行されます。 このときFN$には、"TOPVIEW.MAP"が入ることになります。 だから6行のLOAD文が実際に呼ばれたときには、"TOPVIEW.MAP"が読み込まれます。そして同時に、大きさ0で作った配列Bが拡張されて、その中に"TOPVIEW.MAP"のマップデータがピッタリ収まります。 最後の0は、ファイル読み込み確認のダイアログを出さずに、黙って読み込めという指示です。
0そうだね
プレイ済み
返信[14]
親投稿
ASA fusuian
そして、Pはよく見ると配列じゃない、普通の数値変数の宣言です。プチコン3号ではDIMとVARは同じ意味なのです。 これが8+32*8となっているのは、ファイルから読み込んだ配列Bの、頭からこれだけの分は飛ばして読むということです。 本当ならここにマップデータのレイヤーが何枚とか、縦横のキャラ数がいくつとか、そういうデータが入っているはずなんですが、結局全部のマップファイルが4レイヤーで64×64キャラなので、飛ばしても一緒なのです。 そして配列B[P]には、二つ分のキャラ情報が詰め込まれているので、これを10,11行でM[I]とM[I+1]に分けています。
0そうだね
プレイ済み
返信[15]
親投稿
ASA fusuian
ゆったりmgおかピーさん、横で正の方向に動かす場合は、MOVEBGを改造します。 と言っても25行をX=X+Hにして、59行のMOVEBG -2を2にするだけです。 ただ、マップツールで作るマップデータは横64×縦64キャラ固定なので、森に横25キャラずつ使うと間が14キャラしかありません。横長のマップを作るには、マップツールを改造するか、自作する必要がありそうです。
0そうだね
プレイ済み
返信[16]
親投稿
nyannzi CornedBeef
解説ありがとうございます 配列Bが拡張されるのはなんとなく理解できたのですが8+32*8がやはりわからないです。4レイヤーで64*64とばすと言う事なのですよね?4*64*64じゃないの?(*0*)とわからなくってます。 二つ分のキャラ情報とはレイヤー0とレイヤー2と言う事ですか? 後>>これの働きがわからないです。 説明書から右に16ビットシフトらしいのは解ったのですがなんのこっちゃ的な 申し訳ないですが再度解説お願いします。
0そうだね
プレイ済み
返信[17]
親投稿
ASA fusuian
まず16ビットシフトから説明しましょう。SYS/SBMAPのセーブルーチンSAVESUBの最後を見ると、整数型配列W%をセーブしているのがわかります。説明書によると整数型変数は32ビット符号ありと書いてあります。 SBMAPは、この32ビット変数ひとつを、上の16ビット整数と下の16ビット整数に分けて二つのBGキャラを納めています。 16ビットの整数は、0から65,535までの値を記録できます。この65,535を、16進数で表すと&HFFFFになります。 ?HEX$(65535) ?VAL("&HFFFF") 16進数の一ケタは、2進数の4ケタ=4ビットなので、&HFFFFは2進数では1111111111111111です。長いけど1が16個並んでいます。
0そうだね
プレイ済み
返信[18]
親投稿
ASA fusuian
さて、32ビット整数に、16ビットずつに分かれた二つの整数が入っています。 仮に元の値A%が&H12345678だとします。下の&H5678を取り出すためには、A% AND &HFFFF を計算します。 ダイレクトモードで試してみましょう。 A%=&H12345678 ?A% ?A% AND &HFFFF ?HEX$(A% AND &HFFFF) 次に上の16ビットを取り出すために、シフト演算子>>を使って、上の16ビットを下の16ビットにズラします。(シフトとはずらすこと) ?A% >> 16 ?HEX$(A% >> 16) ?HEX$((A% >> 16) AND &HFFFF)
0そうだね
プレイ済み
返信[19]
親投稿
ASA fusuian
ちなみにシフト演算子には上シフト<<もあります。 ?1<<1 ?1<<2 ?1<<3 上シフトするたびに値が2倍になっています。 逆に一ケタずつ下シフトすると、値が1/2になっていきます。 ?8>>1 ?4>>1 ?2>>1
0そうだね
プレイ済み
返信[20]
親投稿
ASA fusuian
8+32*8というのは、ヘッダ情報(8の方)とアトリビュート情報(32*8の方)を読み飛ばすということですね。 そのあとに、0〜3レイヤーのBGキャラ情報が入っているのを読み取っています。 アトリビュート情報に何が入っているのかは、まだ読めてません^^; マップツールの反転・回転情報かな、と見当つけています。
0そうだね
プレイ済み
返信[21]
親投稿
nyannzi CornedBeef
ありがとうございます。自分の頭がメモリーエラーです。正直現状よくわからないと言うのが分りました。HFFFが当たり判定のマスクじゃないとわかったのと16もシフトするとめっちゃ数が変わるってのが分っただけでも良とします。 丁寧な解説ありがとうございました。 べ、べつに諦めたんじゃないんだからまた戻ってくるんだからね(><)
0そうだね
プレイ済み
返信[22]
親投稿
ASA fusuian
なんか説明がガチ過ぎましたね、今全部わからなくてもLOADBGは動くし、全然OKですよ! むしろSBMAPがむずかしいデータを吐くのが悪い(笑) ちょっとプログラムを見たら、やっぱりすごいちゃんとできてるんですよ。ゲームのプロが作ったプログラムだから。 でも初心者はBGLOADでサクッと読めないと困りますよね。
0そうだね
プレイ済み
返信[23]
親投稿
0そうだね
未プレイ
返信[24]
親投稿
実際は点線までスクロールして、それが消えそうになったらまた、0の座標にあった者を(→スクロールの場合)右端に表示するみたいな・・・できれば急ぎ目にお願いします
0そうだね
未プレイ
返信[25]
親投稿
訂正で、→スクロールじゃなくて、右側へスクロールです。
0そうだね
未プレイ
返信[26]
親投稿
ASA fusuian
要するにBGOFSの使い方次第かな、書いてみたら簡単なんじゃないかな…という気はするのだけど、今月思ったより忙しいのでご希望に応えられるかわからないです。 BG素材の公開キーがあったらちょろっと試せるかな?
0そうだね
プレイ済み
返信[27]
親投稿
お願いします
0そうだね
未プレイ
返信[28]
親投稿
すみません。あとどれくらいでできそうですか?
0そうだね
未プレイ
返信[29]
親投稿
ASA fusuian
とりあえず作ってみますが、BGは単なる塗り潰しでいいですか?
0そうだね
プレイ済み
返信[30]
親投稿
ループする6~7ぐらい前後のところからを、分かりやすいように別のbgにしてください。 あとbgはdataで揃えているのでそこはだいじょうぶです。
0そうだね
未プレイ
返信[31]
親投稿
Frog IK2525
BGスクロールについて教えて下さい
0そうだね
プレイ済み
返信[32]
親投稿
ASA fusuian
では、あらためてシンプルなやつから始めましょうか。
0そうだね
プレイ済み
返信[33]
親投稿
Frog IK2525
はい!
0そうだね
プレイ済み
返信[34]
親投稿
Frog IK2525
明日から教えてください!よろしくお願いします!
0そうだね
プレイ済み
返信[35]
親投稿
ASA fusuian
新しいトピック立てたから、そっちを見てくださいね〜。
0そうだね
プレイ済み