Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/NDP/NDP_DRV/NDP.s
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
;; _NDP_NDPINI == NDPINI ;ドライバ初期化 (タイマ割り込みフックにドライバを接続)
_NDP_MSTART == MSTART ;演奏開始 (ワークエリアをゼロクリアし演奏開始。フックは操作しない)
_NDP_MSTOP == MSTOP ;演奏停止 (演奏停止してPSGレジスタを初期化。フックは操作しない)
_NDP_INTRPT == INTRPT ;割り込み処理 (フックに接続せずに自前で割り込みルーチンを呼ぶ際に使用)
;; _NDP_INTRPT == INTRPT ;割り込み処理 (フックに接続せずに自前で割り込みルーチンを呼ぶ際に使用) ※ドライバ内で退避した旧フックと共に実行
;; _NDP_U_ADR == U_ADR ;(※)曲データ開始アドレス設定 (引数で指定。デフォルトの04000Hなら設定不要)
;; _NDP_U_OFF1 == U_OFF1 ;(※)Ch.A 一時ミュート (ミュートするフレーム数を引数で指定 [2~255])
;; _NDP_U_OFF2 == U_OFF2 ;(※)Ch.B 〃
Expand All @@ -69,7 +69,7 @@
_NDP_SYSVER == SYSVER ;ドライバのバージョン番号→HL (L=小数点以下、H=整数部。整数部が0なら0.9として扱う)
;; _NDP_NDPOFF == NDPOFF ;ドライバ終了 (タイマ割り込みフックからドライバを切り離して発音停止)
;; _NDP_SETHF == SETHF ;タイマ割り込みフック接続フラグ←A
;; _NDP_KSSPLY == KSSPLY ;退避したH.TIMIをRETで潰して演奏開始 (KSSプレイヤー用)
_NDP_IMAIN == IMAIN ;割り込み処理・メイン部 (旧フックのCALLは行わずに割り込みルーチン本体のみ処理) ※DI状態のままRET

;; C APIs for libmsx
_NDP_fadeout == _NDP_MFOSET ; void NDP_fadeout(uint8_t wait)
Expand Down
36 changes: 19 additions & 17 deletions src/NDP/NDP_DRV/NDP_DRV.ASM
Original file line number Diff line number Diff line change
Expand Up @@ -35,13 +35,6 @@

.area _CODE

;------ KSS用にフックを無効化して再生

;; KSSPLY:
;; LD A,#0x0C9
;; LD (OLDTH),A
;; JP MSTART

;------ 曲データのアドレス設定

;USR関数用 (HL<-曲データをアドレスを格納しているメモリのアドレス-2)
Expand Down Expand Up @@ -425,7 +418,7 @@ RDLOOP:
;------ バージョン取得

SYSVER:
LD HL,#0x0100 ;v1.00
LD HL,#0x0101 ;v1.01

;上位バイトがメジャーバージョン、下位バイトがマイナーバージョン
;上位バイトが0なら0.9として扱い、下位バイトはビルドバージョンとする
Expand Down Expand Up @@ -486,9 +479,15 @@ WPSG:

RET

;------ タイマ割り込みルーチン
;------ タイマ割り込みルーチン呼び出し&旧フックコール

;; INTRPT:
;; CALL IMAIN
;; CALL OLDTH
;; EI
;; RET

INTRPT:
IMAIN:
;; DI

;; PUSH AF
Expand All @@ -514,9 +513,9 @@ MINT:
MLOOP:
PUSH BC

LD A,+10(IX) ;チャンネル有効ならMAINを呼ぶ
LD A,+10(IX) ;チャンネル有効ならNMAINを呼ぶ
OR A
CALL NZ,MAIN
CALL NZ,NMAIN

LD DE,#WSIZE ;CHワークのインデックスをワークサイズ分進める
ADD IX,DE
Expand Down Expand Up @@ -570,7 +569,7 @@ SINT:
LD B,#CHNUM-1
LD IX,#SE1WRK
SECHK1:
LD A,+10(IX) ;チャンネル有効ならMAINを呼ぶ
LD A,+10(IX) ;チャンネル有効ならSE用MAINを呼ぶ
OR A
CALL NZ,MAINSE

Expand All @@ -588,9 +587,6 @@ INTEND:
;; POP BC
;; POP AF

;; CALL OLDTH

;; EI
RET

;------ ドライバ本体
Expand All @@ -599,7 +595,7 @@ MAINSE:
LD HL,#SECNT
INC (HL) ;効果音の使用トラック数を加算

MAIN:
NMAIN:
CP #2 ;トラック有効フラグを確認 (IX+10の内容がAに入ってくる)
JR C,MAIN01 ;2未満なら通常処理にジャンプ

Expand Down Expand Up @@ -1643,7 +1639,13 @@ RHYOFF:

LD A,(RVREG) ;リズム発音前の音量に戻す
LD E,A
LD A,(MVOL)
LD C,A
LD A,(RSVOL)
SUB C
JR NC,RHYOFM
XOR A
RHYOFM:
CALL WPSGM

CP #16 ;音量が16(ハードエンベ)なら
Expand Down
2 changes: 1 addition & 1 deletion src/NDP/NDP_DRV/NDP_WRK.ASM
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@
;; JP NDPOFF
;; JP SETHF

;; JP KSSPLY
;; JP IMAIN

;------ ワークエリア
.area _DATA
Expand Down
2 changes: 1 addition & 1 deletion src/NDP/NDP__internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ struct NDP_ {

extern struct NDP_ NDP_;

extern void NDP_INTRPT(void);
extern void NDP_IMAIN(void);
extern void NDP_ADRSET(void * ptr);

extern void NDP__set_song_ptr(uint8_t bank, void * ptr);
Expand Down
2 changes: 1 addition & 1 deletion src/NDP/NDP_play.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,5 @@

void NDP_play(void) {
if (NDP_.paused) return;
NDP_INTRPT();
NDP_IMAIN();
}
4 changes: 2 additions & 2 deletions src/NDP/NDP_play_bmem.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@ void NDP_play_bmem(void) {
// Play the song in MegaROM
const uint8_t bank = bmem_get_bank();
bmem_set_bank(NDP_.song_bank);
NDP_INTRPT();
NDP_IMAIN();
bmem_set_bank(bank);
}
else {
NDP_INTRPT();
NDP_IMAIN();
}
}