投稿
XSCREENをすると、以前にSPSETをしていても、以降SPOFSがエラーになるなどします。 これは、XSCREENが色々な要素を初期化するためだと思うのですが、 具体的にはどういったものが初期化されているのでしょうか。 ご存知の方がおられましたらご教授ください。 出来れば、XSCREENの初期化要素を個々の命令に分けて記述するとどうなるかも教えていただきたいです。
0そうだね
プレイ済み
返信[1]
親投稿
あきと SideBurnsM
XSCREENは上下画面を使用するかの切り替えの他にスプライト512個を下画面に何個割り当てるか、BG4面をいくつ割り当てるかを決定することができます。 はるきさんはSPSETしてからXSCREENを使ったらエラーが出たと書いていますが、スプライトを表示してから画面モードを切り替えるというのは割と珍しい使い方のような気がします。先に画面モードを決めてから使用開始する方がほとんどです。 またXSCREENはACLSと違って他の命令に置き換えることはできないですね。(個別に画面モードを切り替えたり、スプライト・BGの使用割り振りを切り替える命令は存在していない)
2そうだね
プレイ済み
返信[2]
親投稿
>あきとさん ご回答ありがとうございます。 確かに、僕のXSCREENの使い方はあまり適切ではないと思います。そもそもなぜこのような使い方をしているかといいますと、  僕がゲームで使うステージを作成する際、 文字列変数の配列でステージを描き、MID$,VALを使ってY=0~14,X=0~24まで読み取ってBGPUTする、としています。  これはよいのですが、ステージを変更しようと配列にステージの情報を上書きすると、BGPUTでout of rangeが出ます。配列の番号を新たに増やす、BGCLRするなどしてみましたが、 ACLSもしくはXSCREENをしない限りBGPUTは動いてくれません。これをするとSPSETなどをやり直さなければならないので、出来れば避けたいのです。 こういう事情で、とりあえずXSCREENを使っているというのが自分の現状です。 何が原因なのでしょうか・・・。
0そうだね
プレイ済み
返信[3]
親投稿
みむ*mim hidemimtp
XSCREENを使う場面ではなさそうですね。 ソースがないので何ともいえませんが、データを配列にPUSHしているようなやり方の場合は、 WHILE LEN(配列名):A=POP(配列名):WEND などして配列をクリアする必要があるかも?
1そうだね
プレイ済み
返信[4]
親投稿
あきと SideBurnsM
Out of rangeはBGPUTで出てるんですか? なんとなくREAD文に対してDATAが足りなくてエラーがでているように思えますが。 もしくはBGPUTするときのx,yを初期化しなおしていない?
0そうだね
プレイ済み
返信[5]
親投稿
>みむさん、あきとさん お二人のアドバイスを参考にしながら修正を試みたところ、解決できました! ありがとうございます。 ただ、原因は指摘していただいたところではなく、ゲームをクリアしたというメッセージを表示するためにDISPLAY1をしたのを、ステージの上書き・読み取りまで引き継いでしまったことによるものでした。これでXSCREENを使うと解決するのも合点がいきます。 このようなつまらないミスで、ご迷惑をおかけしました。 ありがとうございます。
2そうだね
プレイ済み