Path: chuka.playstation.co.uk!chuka.playstation.co.uk!news1.scei.co.jp!usenet From: "einsiedler" Newsgroups: playstation.ny.program.beginner Subject: =?ISO-2022-JP?B?UmU6IEJHGyRCJEglXSVqJTQlc0k9PCgbKEo=?= Date: 23 Sep 1997 09:07:19 GMT Organization: Playstation Net Yarouze Lines: 76 Message-ID: <6080s7$40n@news1.scei.co.jp> References: <19970923020230radheeth@fa2.so-net.or.jp> NNTP-Posting-Host: 210.132.203.200 Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit X-Newsreader: Microsoft Internet News 4.70.1161 einsiedler です。 書きながら自分で混乱して意図していたのと別内容と なっていたので(さらに間違い地獄)記事をキャンセルしました。 Saizo wrote > SCE提供のBG.LZHは、*.bgdファイルや *.celファイルがついててよくわか > らない。これらのファイルに関する情報も何もないし、作り方がわからな > いので自分のプログラムに組み込めない。 十分しらべてないんですが、BG.lzh について main.c とか見ながら思ったことです。 > int MapIndex[8] = { 0, 1, 2, 3, 1, 2, 3, 1 }; なぜ8つなのか理解不能でした。4つでも動きます。 模様の順番をかえたかったのでしょうか? > GsSortFixBg16(BGData+i, BGWork[i], BGData+i は &BGData[i] と表記しても同じです。 さて、バイナリファイルは(16進表示) sample.cel の先頭 8 byte はヘッダのようです。 変数 ncell は 2 byte で セル数のようです。 初めの 4byte はなんだったのか? 知らないのは僕だけで しょうけど、GsMAPフォーマット の情報はどこで入手? ncell 初めの 8 byte 22 03 00 C0 04 00 04 01 と、その続き u v cba flag tpage 00 00 00 78 00 00 0A 00 10 00 00 78 00 00 0A 00 20 00 00 78 00 00 0A 00 30 00 00 78 00 00 0A 00 BGMap[i].base は上の部分の最初の cba の後部のアドレスが はいるようです。1行( 8 byte )で 1 つのセルデータです。 付属の TIM を見れば予想できますが、それぞれのセルは u が 違って 16 bit 参照域がずれています。 別経由でフレームバッファに送った TIM を示すのでしょう。 sample0.bgd sample1.bgd などは先頭 8 byte が同じで、 プログラム中で飛ばしている最初の 4byte は不明ですけど ncellw ncellh cellw cellh 23 00 00 C0 0A 08 10 10 また、これらのファイル 9 byte目以降は、short でそれぞれ 00 00、01 00、02 00、03 00 が80個並んだもので、さらに その後に 00 00 が80個あり、1ファイル全部で 328 byte ある? 計160個の先頭アドレスが Library Ref. によると GsMAP.index で参照され、 ncellw x ncellh = 10(=0A) * 8 = 80 並んでる とのことなので後半の 00 00 の 80個は不要? この 160個の値は 純粋に u_short でセル番号 0、1、2、3 が並 んでおり、この番号で参照される cell が画面に出ます。この番 号で内部で BGMap[i].base[番号] でアクセスするでしょう。 単純な模様がループするだけなら、ncellw = ncellh = 1 にし、 sample.cel も短くていいと思います。タイリングされるので・・ //訂正後// 表示に関してですが、sample.cel の内容を u_short の配列の [ncellh][ncellw] があるかのように(逆かも)扱うようなので プログラム中で配列を用意してもよさそうです。(予想です。) どうも何かのツールで作ったものの様な気がしてなりません。 また、initBG()関数の最後で BGData[i].w、BGData[i].h を 指定しても変化がみられないのですが、どうしてでしょうか? _ _____________________________________________ _ _ __ einsiedler __ einsidle@cb3.so-net.or.jp __ _