2017-01-06 00:14:12 +00:00
2022-01-24 19:26:11 +00:00
var Module = typeof Module !== 'undefined' ? Module : { } ;
2017-01-06 00:14:12 +00:00
2022-01-24 19:26:11 +00:00
if ( ! Module . expectedDataFileDownloads ) {
Module . expectedDataFileDownloads = 0 ;
}
Module . expectedDataFileDownloads ++ ;
( function ( ) {
// When running as a pthread, FS operations are proxied to the main thread, so we don't need to
// fetch the .data bundle on the worker
if ( Module [ 'ENVIRONMENT_IS_PTHREAD' ] ) return ;
var loadPackage = function ( metadata ) {
2017-01-06 00:14:12 +00:00
2022-01-24 19:26:11 +00:00
var PACKAGE _PATH = '' ;
if ( typeof window === 'object' ) {
PACKAGE _PATH = window [ 'encodeURIComponent' ] ( window . location . pathname . toString ( ) . substring ( 0 , window . location . pathname . toString ( ) . lastIndexOf ( '/' ) ) + '/' ) ;
} else if ( typeof process === 'undefined' && typeof location !== 'undefined' ) {
// web worker
PACKAGE _PATH = encodeURIComponent ( location . pathname . toString ( ) . substring ( 0 , location . pathname . toString ( ) . lastIndexOf ( '/' ) ) + '/' ) ;
}
var PACKAGE _NAME = '/home/pzp/8bitworkshop-compilers/output/fs/fs65-nes.data' ;
var REMOTE _PACKAGE _BASE = 'fs65-nes.data' ;
if ( typeof Module [ 'locateFilePackage' ] === 'function' && ! Module [ 'locateFile' ] ) {
Module [ 'locateFile' ] = Module [ 'locateFilePackage' ] ;
err ( 'warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)' ) ;
}
var REMOTE _PACKAGE _NAME = Module [ 'locateFile' ] ? Module [ 'locateFile' ] ( REMOTE _PACKAGE _BASE , '' ) : REMOTE _PACKAGE _BASE ;
var REMOTE _PACKAGE _SIZE = metadata [ 'remote_package_size' ] ;
var PACKAGE _UUID = metadata [ 'package_uuid' ] ;
function fetchRemotePackage ( packageName , packageSize , callback , errback ) {
if ( typeof process === 'object' && typeof process . versions === 'object' && typeof process . versions . node === 'string' ) {
require ( 'fs' ) . readFile ( packageName , function ( err , contents ) {
if ( err ) {
errback ( err ) ;
} else {
callback ( contents . buffer ) ;
}
} ) ;
return ;
}
var xhr = new XMLHttpRequest ( ) ;
xhr . open ( 'GET' , packageName , true ) ;
xhr . responseType = 'arraybuffer' ;
xhr . onprogress = function ( event ) {
var url = packageName ;
var size = packageSize ;
if ( event . total ) size = event . total ;
if ( event . loaded ) {
if ( ! xhr . addedTotal ) {
xhr . addedTotal = true ;
if ( ! Module . dataFileDownloads ) Module . dataFileDownloads = { } ;
Module . dataFileDownloads [ url ] = {
loaded : event . loaded ,
total : size
} ;
} else {
Module . dataFileDownloads [ url ] . loaded = event . loaded ;
}
var total = 0 ;
var loaded = 0 ;
var num = 0 ;
for ( var download in Module . dataFileDownloads ) {
var data = Module . dataFileDownloads [ download ] ;
total += data . total ;
loaded += data . loaded ;
num ++ ;
}
total = Math . ceil ( total * Module . expectedDataFileDownloads / num ) ;
if ( Module [ 'setStatus' ] ) Module [ 'setStatus' ] ( 'Downloading data... (' + loaded + '/' + total + ')' ) ;
} else if ( ! Module . dataFileDownloads ) {
if ( Module [ 'setStatus' ] ) Module [ 'setStatus' ] ( 'Downloading data...' ) ;
2017-01-06 00:14:12 +00:00
}
2022-01-24 19:26:11 +00:00
} ;
xhr . onerror = function ( event ) {
throw new Error ( "NetworkError for: " + packageName ) ;
2017-01-06 00:14:12 +00:00
}
2022-01-24 19:26:11 +00:00
xhr . onload = function ( event ) {
if ( xhr . status == 200 || xhr . status == 304 || xhr . status == 206 || ( xhr . status == 0 && xhr . response ) ) { // file URLs can return 0
var packageData = xhr . response ;
callback ( packageData ) ;
} else {
throw new Error ( xhr . statusText + " : " + xhr . responseURL ) ;
}
} ;
xhr . send ( null ) ;
2017-01-06 00:14:12 +00:00
} ;
2022-01-24 19:26:11 +00:00
function handleError ( error ) {
console . error ( 'package error:' , error ) ;
2017-01-06 00:14:12 +00:00
} ;
2022-01-24 19:26:11 +00:00
var fetchedCallback = null ;
var fetched = Module [ 'getPreloadedPackage' ] ? Module [ 'getPreloadedPackage' ] ( REMOTE _PACKAGE _NAME , REMOTE _PACKAGE _SIZE ) : null ;
2017-01-06 00:14:12 +00:00
2022-01-24 19:26:11 +00:00
if ( ! fetched ) fetchRemotePackage ( REMOTE _PACKAGE _NAME , REMOTE _PACKAGE _SIZE , function ( data ) {
if ( fetchedCallback ) {
fetchedCallback ( data ) ;
fetchedCallback = null ;
} else {
fetched = data ;
}
} , handleError ) ;
function runWithFS ( ) {
2017-01-06 00:14:12 +00:00
2022-01-24 19:26:11 +00:00
function assert ( check , msg ) {
if ( ! check ) throw msg + new Error ( ) . stack ;
}
Module [ 'FS_createPath' ] ( "/" , "include" , true , true ) ;
Module [ 'FS_createPath' ] ( "/include" , "em" , true , true ) ;
Module [ 'FS_createPath' ] ( "/include" , "geos" , true , true ) ;
Module [ 'FS_createPath' ] ( "/include" , "tgi" , true , true ) ;
Module [ 'FS_createPath' ] ( "/include" , "mouse" , true , true ) ;
Module [ 'FS_createPath' ] ( "/include" , "joystick" , true , true ) ;
Module [ 'FS_createPath' ] ( "/include" , "sys" , true , true ) ;
Module [ 'FS_createPath' ] ( "/" , "asminc" , true , true ) ;
Module [ 'FS_createPath' ] ( "/" , "cfg" , true , true ) ;
Module [ 'FS_createPath' ] ( "/" , "lib" , true , true ) ;
Module [ 'FS_createPath' ] ( "/" , "target" , true , true ) ;
Module [ 'FS_createPath' ] ( "/target" , "nes" , true , true ) ;
Module [ 'FS_createPath' ] ( "/target/nes" , "drv" , true , true ) ;
Module [ 'FS_createPath' ] ( "/target/nes/drv" , "joy" , true , true ) ;
Module [ 'FS_createPath' ] ( "/target/nes/drv" , "tgi" , true , true ) ;
/** @constructor */
function DataRequest ( start , end , audio ) {
this . start = start ;
this . end = end ;
this . audio = audio ;
}
DataRequest . prototype = {
requests : { } ,
open : function ( mode , name ) {
this . name = name ;
this . requests [ name ] = this ;
Module [ 'addRunDependency' ] ( 'fp ' + this . name ) ;
} ,
send : function ( ) { } ,
onload : function ( ) {
var byteArray = this . byteArray . subarray ( this . start , this . end ) ;
this . finish ( byteArray ) ;
} ,
finish : function ( byteArray ) {
var that = this ;
Module [ 'FS_createDataFile' ] ( this . name , null , byteArray , true , true , true ) ; // canOwn this data in the filesystem, it is a slide into the heap that will never change
Module [ 'removeRunDependency' ] ( 'fp ' + that . name ) ;
this . requests [ this . name ] = null ;
}
} ;
var files = metadata [ 'files' ] ;
for ( var i = 0 ; i < files . length ; ++ i ) {
new DataRequest ( files [ i ] [ 'start' ] , files [ i ] [ 'end' ] , files [ i ] [ 'audio' ] || 0 ) . open ( 'GET' , files [ i ] [ 'filename' ] ) ;
}
function processPackageData ( arrayBuffer ) {
assert ( arrayBuffer , 'Loading data file failed.' ) ;
assert ( arrayBuffer instanceof ArrayBuffer , 'bad input to processPackageData' ) ;
var byteArray = new Uint8Array ( arrayBuffer ) ;
var curr ;
// Reuse the bytearray from the XHR as the source for file reads.
DataRequest . prototype . byteArray = byteArray ;
var files = metadata [ 'files' ] ;
for ( var i = 0 ; i < files . length ; ++ i ) {
DataRequest . prototype . requests [ files [ i ] . filename ] . onload ( ) ;
}
Module [ 'removeRunDependency' ] ( 'datafile_/home/pzp/8bitworkshop-compilers/output/fs/fs65-nes.data' ) ;
2017-05-18 02:33:56 +00:00
2022-01-24 19:26:11 +00:00
} ;
Module [ 'addRunDependency' ] ( 'datafile_/home/pzp/8bitworkshop-compilers/output/fs/fs65-nes.data' ) ;
if ( ! Module . preloadResults ) Module . preloadResults = { } ;
Module . preloadResults [ PACKAGE _NAME ] = { fromCache : false } ;
if ( fetched ) {
processPackageData ( fetched ) ;
fetched = null ;
2017-01-06 00:14:12 +00:00
} else {
2022-01-24 19:26:11 +00:00
fetchedCallback = processPackageData ;
2017-01-06 00:14:12 +00:00
}
2022-01-24 19:26:11 +00:00
2017-01-06 00:14:12 +00:00
}
2022-01-24 19:26:11 +00:00
if ( Module [ 'calledRun' ] ) {
runWithFS ( ) ;
} else {
if ( ! Module [ 'preRun' ] ) Module [ 'preRun' ] = [ ] ;
Module [ "preRun" ] . push ( runWithFS ) ; // FS is not initialized yet, wait for it
2017-01-06 00:14:12 +00:00
}
2022-01-24 19:26:11 +00:00
Module [ 'removeRunDependency' ] ( 'fs65-nes.js.metadata' ) ;
}
function runMetaWithFS ( ) {
Module [ 'addRunDependency' ] ( 'fs65-nes.js.metadata' ) ;
var REMOTE _METADATA _NAME = Module [ 'locateFile' ] ? Module [ 'locateFile' ] ( 'fs65-nes.js.metadata' , '' ) : 'fs65-nes.js.metadata' ;
var xhr = new XMLHttpRequest ( ) ;
xhr . onreadystatechange = function ( ) {
if ( xhr . readyState === 4 && xhr . status === 200 ) {
loadPackage ( JSON . parse ( xhr . responseText ) ) ;
}
}
xhr . open ( 'GET' , REMOTE _METADATA _NAME , true ) ;
xhr . overrideMimeType ( 'application/json' ) ;
xhr . send ( null ) ;
}
if ( Module [ 'calledRun' ] ) {
runMetaWithFS ( ) ;
} else {
2017-01-06 00:14:12 +00:00
if ( ! Module [ 'preRun' ] ) Module [ 'preRun' ] = [ ] ;
2022-01-24 19:26:11 +00:00
Module [ "preRun" ] . push ( runMetaWithFS ) ;
}
} ) ( ) ;