Quicjs optimizes similar to engine; objects lerp from their prototype
This commit is contained in:
parent
7ddf807efd
commit
e78e673576
5
Makefile
5
Makefile
|
@ -23,6 +23,7 @@ endif
|
||||||
ifeq ($(DBG),1)
|
ifeq ($(DBG),1)
|
||||||
CFLAGS += -g
|
CFLAGS += -g
|
||||||
INFO += dbg
|
INFO += dbg
|
||||||
|
LDFLAGS += -g
|
||||||
else
|
else
|
||||||
CFLAGS += -DNDEBUG
|
CFLAGS += -DNDEBUG
|
||||||
LDFLAGS += -s
|
LDFLAGS += -s
|
||||||
|
@ -149,11 +150,11 @@ $(DISTDIR)/$(DIST): $(BIN)/$(NAME) source/shaders/* $(SCRIPTS) assets/*
|
||||||
@$(PKGCMD)
|
@$(PKGCMD)
|
||||||
|
|
||||||
$(BIN)/libengine.a: $(OBJS)
|
$(BIN)/libengine.a: $(OBJS)
|
||||||
@$(AR) r $@ $^
|
@$(AR) rcs $@ $^
|
||||||
|
|
||||||
$(BIN)/libquickjs.a:
|
$(BIN)/libquickjs.a:
|
||||||
make -C quickjs clean
|
make -C quickjs clean
|
||||||
make -C quickjs libquickjs.a libquickjs.lto.a CC=$(CC)
|
make -C quickjs OPT=$(OPT) libquickjs.a libquickjs.lto.a CC=$(CC)
|
||||||
cp quickjs/libquickjs.* $(BIN)
|
cp quickjs/libquickjs.* $(BIN)
|
||||||
|
|
||||||
$(OBJDIR)/%.o:%.c
|
$(OBJDIR)/%.o:%.c
|
||||||
|
|
|
@ -110,7 +110,7 @@ endif
|
||||||
CFLAGS+=$(DEFINES)
|
CFLAGS+=$(DEFINES)
|
||||||
CFLAGS_DEBUG=$(CFLAGS) -O0
|
CFLAGS_DEBUG=$(CFLAGS) -O0
|
||||||
CFLAGS_SMALL=$(CFLAGS) -Os
|
CFLAGS_SMALL=$(CFLAGS) -Os
|
||||||
CFLAGS_OPT=$(CFLAGS) -Oz
|
CFLAGS_OPT=$(CFLAGS) -O2
|
||||||
CFLAGS_NOLTO:=$(CFLAGS_OPT)
|
CFLAGS_NOLTO:=$(CFLAGS_OPT)
|
||||||
LDFLAGS=-g
|
LDFLAGS=-g
|
||||||
ifdef CONFIG_LTO
|
ifdef CONFIG_LTO
|
||||||
|
@ -132,6 +132,14 @@ else
|
||||||
LDEXPORT=-rdynamic
|
LDEXPORT=-rdynamic
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(OPT), small)
|
||||||
|
USEFLAGS = $(CFLAGS_SMALL)
|
||||||
|
else ifeq ($(OPT), 1)
|
||||||
|
USEFLAGS = $(CFLAGS_OPT)
|
||||||
|
else
|
||||||
|
USEFLAGS = $(CFLAGS_DEBUG)
|
||||||
|
endif
|
||||||
|
|
||||||
PROGS=qjs$(EXE) qjsc$(EXE) run-test262
|
PROGS=qjs$(EXE) qjsc$(EXE) run-test262
|
||||||
ifneq ($(CROSS_PREFIX),)
|
ifneq ($(CROSS_PREFIX),)
|
||||||
QJSC_CC=gcc
|
QJSC_CC=gcc
|
||||||
|
|
|
@ -126,7 +126,6 @@ struct sFont *MakeFont(const char *fontfile, int height) {
|
||||||
snprintf(fontpath, 256, "fonts/%s", fontfile);
|
snprintf(fontpath, 256, "fonts/%s", fontfile);
|
||||||
|
|
||||||
unsigned char *ttf_buffer = slurp_file(fontfile, NULL);
|
unsigned char *ttf_buffer = slurp_file(fontfile, NULL);
|
||||||
YughWarn("TTF BUFFER P IS %p", ttf_buffer);
|
|
||||||
unsigned char *bitmap = malloc(packsize * packsize);
|
unsigned char *bitmap = malloc(packsize * packsize);
|
||||||
|
|
||||||
stbtt_packedchar glyphs[95];
|
stbtt_packedchar glyphs[95];
|
||||||
|
|
|
@ -146,7 +146,7 @@ char *strdup(const char *s) {
|
||||||
return new;
|
return new;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned char *slurp_file(const char *filename, long *size)
|
unsigned char *slurp_file(const char *filename, size_t *size)
|
||||||
{
|
{
|
||||||
if (cdb_find(&game_cdb, filename, strlen(filename))) {
|
if (cdb_find(&game_cdb, filename, strlen(filename))) {
|
||||||
unsigned vlen, vpos;
|
unsigned vlen, vpos;
|
||||||
|
@ -154,6 +154,7 @@ unsigned char *slurp_file(const char *filename, long *size)
|
||||||
vlen = cdb_datalen(&game_cdb);
|
vlen = cdb_datalen(&game_cdb);
|
||||||
char *data = malloc(vlen);
|
char *data = malloc(vlen);
|
||||||
cdb_read(&game_cdb, data, vlen, vpos);
|
cdb_read(&game_cdb, data, vlen, vpos);
|
||||||
|
if (size) *size = vlen;
|
||||||
return strdup(data);
|
return strdup(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -165,9 +166,9 @@ unsigned char *slurp_file(const char *filename, long *size)
|
||||||
if (!f) return NULL;
|
if (!f) return NULL;
|
||||||
|
|
||||||
fseek(f, 0, SEEK_END);
|
fseek(f, 0, SEEK_END);
|
||||||
long fsize = ftell(f);
|
size_t fsize = ftell(f);
|
||||||
fseek(f, 0, SEEK_SET);
|
rewind(f);
|
||||||
unsigned char *slurp = malloc(fsize + 1);
|
void *slurp = malloc(fsize);
|
||||||
fread(slurp, fsize, 1, f);
|
fread(slurp, fsize, 1, f);
|
||||||
fclose(f);
|
fclose(f);
|
||||||
|
|
||||||
|
@ -178,37 +179,13 @@ unsigned char *slurp_file(const char *filename, long *size)
|
||||||
|
|
||||||
char *slurp_text(const char *filename)
|
char *slurp_text(const char *filename)
|
||||||
{
|
{
|
||||||
if (cdb_find(&game_cdb, filename, strlen(filename))) {
|
size_t len;
|
||||||
unsigned vlen, vpos;
|
char *str = slurp_file(filename, &len);
|
||||||
vpos = cdb_datapos(&game_cdb);
|
char *retstr = malloc(len+1);
|
||||||
vlen = cdb_datalen(&game_cdb);
|
memcpy(retstr, str, len);
|
||||||
char *data = malloc(vlen);
|
retstr[len] = 0;
|
||||||
cdb_read(&game_cdb, data, vlen, vpos);
|
free(str);
|
||||||
return strdup(data);
|
return retstr;
|
||||||
}
|
|
||||||
|
|
||||||
FILE *f;
|
|
||||||
char *buf;
|
|
||||||
|
|
||||||
jump:
|
|
||||||
f = fopen(filename, "r");
|
|
||||||
|
|
||||||
if (!f) {
|
|
||||||
YughWarn("File %s doesn't exist.", filename);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
long int fsize;
|
|
||||||
fseek(f, 0, SEEK_END);
|
|
||||||
fsize = ftell(f);
|
|
||||||
buf = malloc(fsize + 1);
|
|
||||||
rewind(f);
|
|
||||||
size_t r = fread(buf, sizeof(char), fsize, f);
|
|
||||||
buf[r] = '\0';
|
|
||||||
|
|
||||||
fclose(f);
|
|
||||||
|
|
||||||
return buf;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int slurp_write(const char *txt, const char *filename) {
|
int slurp_write(const char *txt, const char *filename) {
|
||||||
|
@ -245,7 +222,7 @@ static int ftw_pack(const char *path, const struct stat *sb, int flag)
|
||||||
|
|
||||||
if (!pack) return 0;
|
if (!pack) return 0;
|
||||||
|
|
||||||
long len;
|
size_t len;
|
||||||
void *file = slurp_file(path, &len);
|
void *file = slurp_file(path, &len);
|
||||||
cdb_make_add(&cdbm, &path[2], strlen(&path[2]), file, len);
|
cdb_make_add(&cdbm, &path[2], strlen(&path[2]), file, len);
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ char *make_path(const char *file);
|
||||||
|
|
||||||
char *strdup(const char *s);
|
char *strdup(const char *s);
|
||||||
|
|
||||||
unsigned char *slurp_file(const char *filename, long *size);
|
unsigned char *slurp_file(const char *filename, size_t *size);
|
||||||
char *slurp_text(const char *filename);
|
char *slurp_text(const char *filename);
|
||||||
int slurp_write(const char *txt, const char *filename);
|
int slurp_write(const char *txt, const char *filename);
|
||||||
|
|
||||||
|
|
|
@ -45,8 +45,6 @@ void script_startup() {
|
||||||
|
|
||||||
for (int i = 0; i < 100; i++)
|
for (int i = 0; i < 100; i++)
|
||||||
num_cache[i] = int2js(i);
|
num_cache[i] = int2js(i);
|
||||||
|
|
||||||
script_dofile("scripts/engine.js");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
JSValue num_cache[100] = {0};
|
JSValue num_cache[100] = {0};
|
||||||
|
|
|
@ -87,6 +87,7 @@ static float timescale = 1.f;
|
||||||
|
|
||||||
static int sim_play = SIM_PLAY;
|
static int sim_play = SIM_PLAY;
|
||||||
|
|
||||||
|
|
||||||
#ifdef __TINYC__
|
#ifdef __TINYC__
|
||||||
int backtrace(void **buffer, int size) {
|
int backtrace(void **buffer, int size) {
|
||||||
extern uint64_t *__libc_stack_end;
|
extern uint64_t *__libc_stack_end;
|
||||||
|
@ -148,6 +149,8 @@ void c_init() {
|
||||||
render_init();
|
render_init();
|
||||||
|
|
||||||
script_evalf("initialize();");
|
script_evalf("initialize();");
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int frame_fps() {
|
int frame_fps() {
|
||||||
|
@ -289,6 +292,25 @@ double get_timescale()
|
||||||
return timescale;
|
return timescale;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static sapp_desc start_desc = {
|
||||||
|
.width = 720,
|
||||||
|
.height = 1080,
|
||||||
|
.high_dpi = 0,
|
||||||
|
.sample_count = 1,
|
||||||
|
.fullscreen = 1,
|
||||||
|
.window_title = "Yugine",
|
||||||
|
.enable_clipboard = false,
|
||||||
|
.clipboard_size = 0,
|
||||||
|
.enable_dragndrop = true,
|
||||||
|
.max_dropped_files = 1,
|
||||||
|
.max_dropped_file_path_length = 2048,
|
||||||
|
.init_cb = c_init,
|
||||||
|
.frame_cb = c_frame,
|
||||||
|
.cleanup_cb = c_clean,
|
||||||
|
.event_cb = c_event,
|
||||||
|
.logger.func = sg_logging,
|
||||||
|
};
|
||||||
|
|
||||||
sapp_desc sokol_main(int argc, char **argv) {
|
sapp_desc sokol_main(int argc, char **argv) {
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
|
@ -324,6 +346,8 @@ sapp_desc sokol_main(int argc, char **argv) {
|
||||||
|
|
||||||
script_startup();
|
script_startup();
|
||||||
|
|
||||||
|
script_dofile("scripts/engine.js");
|
||||||
|
|
||||||
int argsize = 0;
|
int argsize = 0;
|
||||||
for (int i = 1; i < argc; i++) {
|
for (int i = 1; i < argc; i++) {
|
||||||
argsize += strlen(argv[i]);
|
argsize += strlen(argv[i]);
|
||||||
|
@ -343,22 +367,9 @@ sapp_desc sokol_main(int argc, char **argv) {
|
||||||
sound_init();
|
sound_init();
|
||||||
input_init();
|
input_init();
|
||||||
|
|
||||||
return (sapp_desc){
|
start_desc.width = mainwin.width;
|
||||||
.width = mainwin.width,
|
start_desc.height = mainwin.height;
|
||||||
.height = mainwin.height,
|
start_desc.fullscreen = 0;
|
||||||
.high_dpi = 0,
|
|
||||||
.sample_count = 8,
|
return start_desc;
|
||||||
.fullscreen = 0,
|
|
||||||
.window_title = "Yugine",
|
|
||||||
.enable_clipboard = false,
|
|
||||||
.clipboard_size = 0,
|
|
||||||
.enable_dragndrop = true,
|
|
||||||
.max_dropped_files = 1,
|
|
||||||
.max_dropped_file_path_length = 2048,
|
|
||||||
.init_cb = c_init,
|
|
||||||
.frame_cb = c_frame,
|
|
||||||
.cleanup_cb = c_clean,
|
|
||||||
.event_cb = c_event,
|
|
||||||
.logger.func = sg_logging,
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -477,7 +477,8 @@ Object.defineProperty(Array.prototype, 'lerp', {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Object.lerp = function(to, t) {
|
Object.defineProperty(Object.prototype, 'lerp',{
|
||||||
|
value: function(to, t) {
|
||||||
var self = this;
|
var self = this;
|
||||||
var obj = {};
|
var obj = {};
|
||||||
|
|
||||||
|
@ -486,7 +487,7 @@ Object.lerp = function(to, t) {
|
||||||
});
|
});
|
||||||
|
|
||||||
return obj;
|
return obj;
|
||||||
};
|
}});
|
||||||
|
|
||||||
/* MATH EXTENSIONS */
|
/* MATH EXTENSIONS */
|
||||||
Object.defineProperty(Number.prototype, 'lerp', {
|
Object.defineProperty(Number.prototype, 'lerp', {
|
||||||
|
@ -496,12 +497,6 @@ Object.defineProperty(Number.prototype, 'lerp', {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Math.lerp = function(from, to, t) {
|
|
||||||
var v = (to - from) * t + from;
|
|
||||||
v = Math.clamp(v, from, to);
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
Math.clamp = function (x, l, h) { return x > h ? h : x < l ? l : x; }
|
Math.clamp = function (x, l, h) { return x > h ? h : x < l ? l : x; }
|
||||||
|
|
||||||
Math.random_range = function(min,max) { return Math.random() * (max-min) + min; };
|
Math.random_range = function(min,max) { return Math.random() * (max-min) + min; };
|
||||||
|
|
|
@ -104,6 +104,11 @@ Cmdline.register_cmd("e", function(pawn) {
|
||||||
Game.quit();
|
Game.quit();
|
||||||
}, "Print input documentation for a given object in a markdown table." );
|
}, "Print input documentation for a given object in a markdown table." );
|
||||||
|
|
||||||
|
Cmdline.register_cmd("t", function() {
|
||||||
|
Log.warn("Testing not implemented yet.");
|
||||||
|
Game.quit();
|
||||||
|
}, "Test suite.");
|
||||||
|
|
||||||
function run(file)
|
function run(file)
|
||||||
{
|
{
|
||||||
var modtime = cmd(119, file);
|
var modtime = cmd(119, file);
|
||||||
|
@ -1142,18 +1147,12 @@ var Window = {
|
||||||
set height(h) { cmd(126, h); },
|
set height(h) { cmd(126, h); },
|
||||||
get width() { return cmd(48); },
|
get width() { return cmd(48); },
|
||||||
get height() { return cmd(49); },
|
get height() { return cmd(49); },
|
||||||
dimensions:[0,0],
|
get dimensions() { return [this.width, this.height]; },
|
||||||
};
|
};
|
||||||
|
|
||||||
Window.icon = function(path) { cmd(90, path); };
|
Window.icon = function(path) { cmd(90, path); };
|
||||||
Window.icon.doc = "Set the icon of the window using the PNG image at path.";
|
Window.icon.doc = "Set the icon of the window using the PNG image at path.";
|
||||||
|
|
||||||
Signal.register("window_resize", function(w, h) {
|
|
||||||
Window.width = w;
|
|
||||||
Window.height = h;
|
|
||||||
Window.dimensions = [w, h];
|
|
||||||
});
|
|
||||||
|
|
||||||
var IO = {
|
var IO = {
|
||||||
exists(file) { return cmd(65, file);},
|
exists(file) { return cmd(65, file);},
|
||||||
slurp(file) {
|
slurp(file) {
|
||||||
|
|
Loading…
Reference in a new issue