プレイ日記
Kirin Kirin-3DS.WiiU
質問です。 BG表示の方法についてなのですが、MAPデータを配列に読み込む方法はどのようなものなのでしょうか?TXTファイルの読み込みしか見つからなかった… また、MAPデータではなくDATA文で読み込むことは可能でしょうか?
6そうだね
プレイ済み
返信[1]
親投稿
あきと SideBurnsM
スマイルツールで作ったMAPデータを表示するだけなら私のプレイ日記で説明しています。
0そうだね
プレイ済み
返信[2]
親投稿
Kirin Kirin-3DS.WiiU
BGSCREENデータは少し大きくなるそうなので、出来ればMAPデータに格納したいんですよね(我が儘) もっと言うとDATA文とかTXTファイルでMAPデータと同じことができないかなと。4MB制限が意外とすぐ引っかかってびっくりしてまして… 教えを請う立場にあるにもかかわらず、上から目線ですみません。
0そうだね
プレイ済み
返信[3]
親投稿
あきと SideBurnsM
じゃあこっちで。 読み込むファイル名は自分で保存した名前に変えてください。
0そうだね
プレイ済み
返信[4]
親投稿
Kirin Kirin-3DS.WiiU
おお!すごく良くわかったような気がする。 ありがとうございます、とりあえず解読に勤しみます。
0そうだね
プレイ済み
返信[5]
親投稿
Kirin Kirin-3DS.WiiU
FOR N=0 TO 3 ってのはレイヤーだと思うんですが、 14~17行目がわからないです…
0そうだね
プレイ済み
返信[6]
親投稿
あきと SideBurnsM
理解するためにはMAPツールでセーブした時に作られるMAPデータの構造を理解しないといけないです。 とりあえずLOAD命令でMAPデータをMAPWORKという配列に読み込んだとして、 ・MAPWORK[264]からBG0スクリーンデータが32*64個分入っています。 ・MAPWORK[264+32*64]からBG1が、 ・MAPWORK[264+32*64*2]からBG2が、 ・MAPWORK[264+32*64*3]からBG3が入っています。 配列一つにはスクリーンデータ2つ分が入っているので、別々に取り出してBGWORK配列に格納しなおしています。 実はBGWORK配列の構造はマップツールで「SCSAVE」した時と同じになります。 SCSAVEした時と同じデータなのでBGLOADでそのまま転送できるという事になります。
0そうだね
プレイ済み
返信[7]
親投稿
あきと SideBurnsM
Kirinさんが書いてるようにNはレイヤーを指しています。 このMAPデータは拡張できたりするわけではないので、これを書けばBGが表示できるぐらいの理解でもいいんじゃないかなとも思います。 目的はSCSAVEで作成されるデータが大きいのでBGデータそのままで表示してデータの節約をしたいわけですよね? いつかこっちのデータの表示方法もプレイ日記に書きたいとは思ってるんですが、MAPデータの構造を説明するのが面倒でなかなか書けないままです。
0そうだね
プレイ済み
返信[8]
親投稿
Kirin Kirin-3DS.WiiU
なるほど、なんとなく使えました。 ちなみに、BGデータをDATA文か何かのテキストにすることって理論的にはできますか?全部テキストにすれば少ない容量で行けるのではないか?と思ってたりします←
0そうだね
プレイ済み
返信[9]
親投稿
あきと SideBurnsM
文字列にすることはできます。私のソースのBGLOADする直前の行に注目すると「BGWORK」という配列にはレイヤー一つ分のBMAPデータが格納されているので64*64個分文字列に書き出してSAVEすればテキストファイルにできます。 本当小さくしたいのであればDATAに書き出すよりもDATデータの使わないところをカットしてしまった方が小さくなります。 レイヤー4つぶんを2つにカットできればサイズも半分です。
0そうだね
プレイ済み
返信[10]
親投稿
あきと SideBurnsM
×→BMAP ○→MAP
0そうだね
プレイ済み
返信[11]
親投稿
Kirin Kirin-3DS.WiiU
…つまり、DATAに書き出してカットすれば良いわけですか? 難しい← そのカットの仕方、教えていただけませんか?コメント数もあるでしょうし、本当にできればで良いのですが…
0そうだね
プレイ済み
返信[12]
親投稿
あきと SideBurnsM
レイヤーをいくつ使うのかで切り出すデータ量が変わります。 一つ取り出すのであれば DIM MAPWORK[8192] 'MAPデータを読み込む配列 DIM MAP[32*64] '切り出すMAPデータを格納する配列 LOAD "DAT:MAPDATA" '自分で保存したMAPデータ FOR I=0 TO 32*64-1 'レイヤー0の部分を切り出す。 MAP[I]=MAPWORK[264+I] NEXT SAVE "DAT:LAYER0.DAT" '保存
0そうだね
プレイ済み
返信[13]
親投稿
あきと SideBurnsM
読み込むときはこうですね。 一番最初のソースのFOR文が一つ無くなってるだけですが。 DIM MAP[32*64] '切り出したMAPデータを読み込む配列 DIM WORK[64*64] 'BGLOADするためにデータ整形に使う配列 LOAD "DAT:LAYER0",FALSE FOR I=O TO 32*64-1 WORK[I*2 ]=WORK[I] AND &HFFFF WORK[I*2+1]=WORK[I] >> 16 NEXT BGLOAD 0,0,0,64,64,WORK
0そうだね
プレイ済み
返信[14]
親投稿
あきと SideBurnsM
2つ上の書き込み、 SAVE "DAT:LAYER0.DAT",MAP ですね。 後ろに配列名をつけるの忘れてました。
0そうだね
プレイ済み