プチコンでMSXのタイトル画面 その1のつづき。
絵は描けたので、次は表示のしかた。
MSX2は縦スクロール、2+は横スクロールし、いずれも1ドット単位。 GRAPHIC画面にはスクロール機能はないので、スクロール機能があるBGを使う。
(キャラクタを画面に敷きつめておき、パターンを書き換えする力技もあるにはある)
なのでGRPからBGを作成。
8x8ドット分GSPOITで読み取り、CHRSETの画像文字列にする。 これでいけるはずだったが、作ってみるとエラーになった。
BGU0のキャラ数256個では足りなかったのが原因。
黒い部分は(23,43)-(234,123)。
同じ位置に表示させるため、8ドット区切りにすると(16,40)-(240,128)。
つまり28x11=308キャラ必要だった。
絵は描けたので、次は表示のしかた。
MSX2は縦スクロール、2+は横スクロールし、いずれも1ドット単位。 GRAPHIC画面にはスクロール機能はないので、スクロール機能があるBGを使う。
(キャラクタを画面に敷きつめておき、パターンを書き換えする力技もあるにはある)
なのでGRPからBGを作成。
8x8ドット分GSPOITで読み取り、CHRSETの画像文字列にする。 これでいけるはずだったが、作ってみるとエラーになった。
BGU0のキャラ数256個では足りなかったのが原因。
黒い部分は(23,43)-(234,123)。
同じ位置に表示させるため、8ドット区切りにすると(16,40)-(240,128)。
つまり28x11=308キャラ必要だった。
意外と大きいタイトルロゴ |
対策は2つ。
- BGU0に収まらない分はBGU1にいれる。プチコンは1024個BGキャラが作れるので余裕。
- なんとかして256キャラ以内に(BGU0)におさめる。
黒や白だけのマスを2つ定義しておけば、必要なキャラ数が減るのでは! (BGキャラを並べるのがめんどくさくなるけど)
- あらかじめ、真っ黒と真っ白BGキャラは定義しておく
- 左上から右下に向けてGRAPHIC画面からちまちま画像文字列を作成
- 真っ黒か真っ白のBGキャラなら、BGキャラ定義しない
- 真っ黒でも真っ白でもなかったら、BGキャラ定義
- BGキャラ定義した場合、そのBGキャラコードをキャラ表示用配列に記録
- BGキャラ定義しない場合、真っ黒/真っ白コードをキャラ表示用配列に記録
ここまでできると、BGに"MSX"と表示し、BGOFSで好きにスクロールできる。
MSX2タイトル画面は、画面中央くらいから、MSXのロゴがせり上がってくるので、BGCLIPで表示範囲を制限して、縦スクロールさせれば完成。
MSX2+タイトル画面は、1ラインおきの画面が左右から横スクロールし、合成される。 (動画後半参照)
どうしたかというと、
- GRAPHIC画面からの読取結果を偶数ラインならBGU0に、奇数ラインならBGU1に、BGキャラ定義
- BGキャラ表示用配列に従ってBGPAGE0にBGU0のBGキャラ、BGPAGE1にBGU1のBGキャラを配置 0,1ページとも256ドット左右にスクロールさせておく
- 適当なスピードで0,1ページともBGOFSでスクロール表示