tmpfs wip

This commit is contained in:
minjaesong
2023-05-05 20:44:34 +09:00
parent 9adcce746b
commit b6fb9acd6a
4 changed files with 131 additions and 7 deletions

View File

@@ -12,7 +12,7 @@ exports.Texture = function(w, h, bytes) {
this.texData = bytes;
if (!Array.isArray(bytes) && !bytes.toString().startsWith("[B")) {
throw "Texture data is not an instance of array";
throw Error("Texture data is not an instance of array");
}
};
exports.MonoTex = function(w, h, bits) {
@@ -21,7 +21,7 @@ exports.MonoTex = function(w, h, bits) {
this.texData = bits;
if (!Array.isArray(bits) && !bits.toString().startsWith("[B")) {
throw "Texture data is not an instance of array";
throw Error("Texture data is not an instance of array");
}
};
exports.SpriteSheet = function(tilew, tileh, tex) {
@@ -30,18 +30,18 @@ exports.SpriteSheet = function(tilew, tileh, tex) {
this.texture = tex;
if (!tex instanceof exports.Texture) {
throw "Texture is not an instance of exports.Texture";
throw Error("Texture is not an instance of exports.Texture");
}
this.getOffX = function(x) { // THIS, or: exports.SpriteSheet.prototype.getOffX
let tx = this.tileWidth * (x|0);
if (tx + this.tileWidth > this.texture.width) throw "Sprite x-offset of "+tx+" is greater than sprite width "+this.texture.width;
if (tx + this.tileWidth > this.texture.width) throw Error("Sprite x-offset of "+tx+" is greater than sprite width "+this.texture.width);
return tx;
};
this.getOffY = function(y) {
let ty = this.tileHeight * (y|0);
if (ty + this.tileHeight > this.texture.height) throw "Sprite y-offset of "+ty+" is greater than sprite height "+this.texture.height;
if (ty + this.tileHeight > this.texture.height) throw Error("Sprite y-offset of "+ty+" is greater than sprite height "+this.texture.height);
return ty;
};
};

View File

@@ -0,0 +1,27 @@
/*
Loads files into the memory and returns their respective pointers. If the file was failed to load (file not found or
out of memory), `null` will be used instead.
The path must be an absolute path including drive letter.
This program is not meant to be used by the end user, but the creators of packaged apps where the simple and easy way of
pre-loading resources (e.g. graphical assets) into the memory is desirable.
This library requires TVDOS.SYS to be loaded.
*/
exports = function mload(paths) {
return paths.map(path => {
let f = files.open(path)
let flen = f.size
try {
let p = sys.malloc(flen)
f.pread(p, flen, 0)
return p
}
catch (e) {
return null
}
})
}