音楽関連

  

  ホントにタダの仕様の補足のみ。

 

 音長バグ

  次の音を鳴らすまでの時間=テンポ×音長ごとの定数 を計算して保管する。

  ここから毎フレーム4ずつ減算して、時間が0になったときに音を鳴らす。

  音長40は定数が02、付点60は定数が06のため、

  テンポが奇数の場合、音長40や付点60を使うと割り切れず、

  ループしてしまうためにそこで音が止まってしまう。

 

 容量節約

  巷で言われてるものの抜粋含む。

 

  04命令のループ回数カウント法則は、

 

  ループ回数指定=0の場合

   無条件に指定位置にジャンプ。回数を0に戻す

  ループ回数指定≠0の場合

   指定回数>現在のループ回数 の場合

    現在のループ回数を1増やして指定位置にジャンプ

   指定回数=現在のループ回数 の場合

    ループ回数を0に戻してスルー

   指定回数<現在のループ回数 の場合

    ループ回数を1にして指定位置にジャンプ

 

 という感じなので、ループの中にループを作ると無限にループしてしまいます。

  

 せいぜいの節約方法

 04でのループ命令を利用して

 

  ○○○○××××△△△△××××□□□□

 

 というパターンで演奏したい場合、

 

  ○○○○(04命令で×の始めにジャンプ。ループ回数は0で)△△△△

  ××××(04命令で△の始めにジャンプ。ループ回数は任意)□□□□

 

 とすると、容量が節約できるが、あまりに共有部分が少ないと節約にならない場合もある。

 一応共有部が04命令2個分の8バイトを越えると節約にはなるはず…。

 

 他にも…

 3C000〜のメインバンクの空き領域を使う予定が無ければ、そこに追加してしまっても大丈夫だと思います。

 実アドレスを間違えないようにご注意を。

 

  トップへ

1