よく、フラグという言葉を聞き&使いますが 結局フラグとはなんなのでしょうか? 分かり難い説明ですが読んで見て下さい(苦笑) フラグの語源は「フラッグ=旗」と言われています フラグが「立つ」というのは語源が旗だからですね ある程度ゲームが進み、次にイベントなどを起こす時に そのタイミングを示す目印という事で旗なんだとか・・・ ゲーム中でのフラグには大きく分けて2種類あります 1つは「01010101」そしてもう1つは「FFFFFFFF」です 特殊なフラグでは無い限り 01010101とFFFFFFFFのどちらかを使いますが FFFF〜の方が難しいのでこっちを重点的に説明します 一応こちらも説明をします 「01010101」 と書き込まれる方ですが、これは動作も簡単で 普通に01をsbでストアして立てています おまけ要素などでこの形式のフラグを使った場合 01で1つのオマケが出現します つまり01010101では4つ出現するという事です 実際に使われたゲームを例に挙げると BITTERSWEET FOOLS ニンジャアサルト などがあります。 しかし、このページの説明のメインである FFFFFFFF というタイプのフラグは動作が特殊です 01010101で4つ出現するオマケも FFFFFFFFならば32のオマケが出現します 何故こんなに出現数に違いが出るかと言うと Fという1ケタの数値が「1,2,4,8」の 4つの数値(フラグ)で構成されているからです FFFF〜はほとんどのゲームで使用されます。 AIR 鬼武者2 デビルメイクライ ビートマニアUDXシリーズ ファイナルファンタジー10(インター) などなど・・・ AIRで使用されていますのでこれを例に説明すると 1ならば1枚目のCGのみ入手 2ならば2枚目のCGのみ入手 4ならば3枚目のCGのみ入手 8ならば4枚目のCGのみ入手 となります。 もし1枚目と2枚目のCGを同時に入手したい場合は 1+2=3で、3を入力すれば入手出来ます 同じように、2枚目と4枚目を同時に入手したい場合は 2+8=Aで、Aを入力すれば入手出来ます 4枚全てを入手したければ1+2+4+8=Fになります つまり、この4つの数値を組み合わせて その合計値によってCGのフラグが立つと言う事です。 Fが1ケタで4つのフラグを管理しているので 「FFFFFFFF=32個のフラグが立つ」という事になります プログラム内ではこのフラグを立てる時には or命令(論理和)を使用して計算します 「そんな普段聞かない様な原理を使わなくても 普通に数値を加算すれば良いじゃん」 と実際に言われた事があるのですが(笑) 普通に加算すれば3で2枚のCGがある時に 1を加算すると4=3枚目のCGのみになってしまいます しかし、この論理和は 「4つのフラグのどれかがすでに存在していれば 同じ数値は増やさない」という物です つまり3に1か2は絶対加算しないという事です もっと詳しく書くと微妙に難しくなりますが トップのR5900命令表にも書いてある通り 論理和などはビット演算、つまりビット単位で計算します ぞれぞれ、1,2,4,8を2進数(ビット)で表すと 1=0001 2=0010 4=0100 8=1000 になります。 鋭い人は見た瞬間に気づいたと思いますが 4ビット中同じケタに1は存在せず しかもどの数値も1が1つしかありません 「すでに存在していれば同じ数値は増やさない」 これは「ビット上に1が存在すればそのケタは無視」 という事になります、なので 3=0011には1=0001と2=0010 は加算されず無視されるという事ですが 逆に1が無いビット、つまり 4=0100と8=1000 は加算することが可能です。 FFFFのフラグの説明をだーっとやりましたが 多分くどい感じの説明で分かり難かったと思います(汗) もっと簡単に説明出来れば良いんですが・・・