"Ootake" Nonsupport BBS ノンサポート掲示板 管理:ソフト開発グループ「Finath(ファイナス)」
現在までに、8454人の方が、この書き込みをご覧になっています。
17/08/28(月)13:03 ひろ
Re)ADPCMの動作について
こんにちは
Yuna - HuVideo CD (J)では
ADPCM関連の処理の流れは下記のようで
ADPCM_WriteBuffer 134Byte書き込み
ADPCM_SetLength 0x8001
ADPCM_SetFreq 16kHz
割り込みマスク設定 ADPCM_STATE_HALF_PLAYED
ADPCM_Repeat Enable
割り込み待ちとなる。
実機のIRQ2の割り込み周期が16m秒程度なので
128Byteで割り込みかと思われます。
_LengthCountが0x8001で動作を切り替える場合は
下記の様になると思われます。
makeSample関数 変更願います
else if (_LengthCount == 0x8001) //HuVideo再生時。テスト
{
if (_PlayAddr == _PlayHalfAddr)
{
_PlayHalfAddr += 0x80;
if (_pfnNotification != NULL) _pfnNotification(ADPCM_STATE_HALF_PLAYED);
}
}
ADPCM_Reset関数 追加願います。
_PlayLength = 0;
ADPCM_Play関数の初めに追加願います。
if (_bRepeat && _LengthCount == 0x8001)
{
_PlayAddr = _ReadAddr;
_PlayHalfAddr = 0x01;
_PlayedSampleCount = 0;
ad_sample = 0;
_DecodeBuffer = decode(_Ram[_PlayAddr] >> 4);
_bLowNibble = TRUE;
_Phase = 0;
_CDDAAjustCount = 0;
_bPlay = TRUE;
}
else if (bPlay)
メッセージ一覧へ戻る
Copyright(C)1997-2007 Kitao Nakamura.
|