在瀏覽器裡直接還原任天堂紅白機(Famicom / NES)的 2A03 聲音晶片,播放 .nsf 多軌音樂檔,不需外掛或伺服器。
—
請先載入一個 .nsf 檔案。
本頁面的播放引擎(6502 CPU 模擬、2A03 音源晶片、NSF 解析)都封裝在下方 <script> 區塊裡,並統一掛在全域物件 window.NSFPlayer 上。把整個 <script> 區塊複製到其他網頁,再接上你自己的介面元素,即可重用:
// 載入 NSF(接受 File 物件或 ArrayBuffer),回傳 Promise<metadata>
await NSFPlayer.loadNSF(fileObjectOrArrayBuffer);
// 選擇要播放的音軌(0-based 索引)
NSFPlayer.selectTrack(0);
// 播放 / 暫停 / 繼續
NSFPlayer.play();
NSFPlayer.pause();
NSFPlayer.resume();
// 停止(重置到尚未初始化狀態)
NSFPlayer.stop();
// 設定或讀取「是否重複播放本曲」
NSFPlayer.setLoop(true);
NSFPlayer.isLoop(); // -> true / false
// 讀取目前曲目資訊 / 引擎狀態
NSFPlayer.getMetadata(); // { name, artist, copyright, totalSongs, currentTrack, startSong }
NSFPlayer.getState(); // { loaded, playing, loop, currentTrack }
// 訂閱狀態變化(載入、切換音軌、播放/暫停皆會觸發)
NSFPlayer.onStateChange(state => console.log(state));