From 008f39a5f4070332d547ad554088fc23d8936dd2 Mon Sep 17 00:00:00 2001 From: Dylan Muller Date: Tue, 5 Sep 2023 23:37:23 +0200 Subject: emu8910: core: Add demo files Add demo files. --- fym.js | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 fym.js (limited to 'fym.js') diff --git a/fym.js b/fym.js new file mode 100644 index 0000000..8ee4cc3 --- /dev/null +++ b/fym.js @@ -0,0 +1,66 @@ +FYMReader = function(buffer) { + var psgDump = pako.inflate(new Uint8Array(buffer)); + var ptr = 0; + var frame = 0; + + function getInt() { + var r = 0; + for(var i = 0; i < 4; i++) r += psgDump[ptr++] << (8*i); + return r; + } + + function getStr() { + var c, r = ''; + while(c = psgDump[ptr++]) r += String.fromCharCode(c); + return r; + } + + var offset = getInt(); + + var frameCount = getInt(); + this.getFrameCount = function() { + return frameCount; + } + + var loopFrame = getInt(); + this.getLoopFrame = function() { + return loopFrame; + } + + var clockRate = getInt(); + this.getClockRate = function() { + return clockRate; + } + + var frameRate = getInt(); + this.getFrameRate = function() { + return frameRate; + } + + var trackName = getStr(); + this.getTrackName = function() { + return trackName; + } + + var authorName = getStr(); + this.getAuthorName = function() { + return authorName; + } + + var loopCount = 0; + this.getLoopCount = function() { + return loopCount; + } + + this.getNextFrame = function() { + var regs = []; + for(var r = 0; r < 14; r++) { + regs[r] = psgDump[r * frameCount + frame + offset]; + } + if(++frame >= frameCount) { + loopCount++; + frame = loopFrame; + } + return regs; + } +} -- cgit v1.2.3-70-g09d2