音楽関連
ホントにタダの仕様の補足のみ。
音長バグ
次の音を鳴らすまでの時間=テンポ×音長ごとの定数 を計算して保管する。
ここから毎フレーム4ずつ減算して、時間が0になったときに音を鳴らす。
音長40は定数が02、付点60は定数が06のため、
テンポが奇数の場合、音長40や付点60を使うと割り切れず、
ループしてしまうためにそこで音が止まってしまう。
容量節約
巷で言われてるものの抜粋含む。
04命令のループ回数カウント法則は、
ループ回数指定=0の場合
無条件に指定位置にジャンプ。回数を0に戻す
ループ回数指定≠0の場合
指定回数>現在のループ回数 の場合
現在のループ回数を1増やして指定位置にジャンプ
指定回数=現在のループ回数 の場合
ループ回数を0に戻してスルー
指定回数<現在のループ回数 の場合
ループ回数を1にして指定位置にジャンプ
という感じなので、ループの中にループを作ると無限にループしてしまいます。
せいぜいの節約方法
04でのループ命令を利用して
○○○○××××△△△△××××□□□□
というパターンで演奏したい場合、
○○○○(04命令で×の始めにジャンプ。ループ回数は0で)△△△△
××××(04命令で△の始めにジャンプ。ループ回数は任意)□□□□
とすると、容量が節約できるが、あまりに共有部分が少ないと節約にならない場合もある。
一応共有部が04命令2個分の8バイトを越えると節約にはなるはず…。
他にも…
3C000〜のメインバンクの空き領域を使う予定が無ければ、そこに追加してしまっても大丈夫だと思います。
実アドレスを間違えないようにご注意を。