proper CPU timing; ur type extensions

This commit is contained in:
2023-09-11 07:46:12 +00:00
parent b5b7f3f0e2
commit 35c0337837
13 changed files with 235 additions and 98 deletions

View File

@@ -51,8 +51,8 @@ void mYughLog(int category, int priority, int line, const char *file, const char
snprintf(buffer, ERROR_BUFFER, "%s:%d: %s, %s: %s\n", file, line, logstr[priority], catstr[category], msgbuffer);
log_print(buffer);
if (category == LOG_SCRIPT && priority >= 2)
js_stacktrace();
// if (category == LOG_SCRIPT && priority >= 2)
// js_stacktrace();
}
#endif
}

View File

@@ -22,6 +22,9 @@
#include "yugine.h"
#include <assert.h>
#include "resources.h"
#include <sokol/sokol_time.h>
#include <glob.h>
#include "render.h"
@@ -56,6 +59,14 @@ JSValue js_getpropidx(JSValue v, uint32_t i)
return p;
}
uint64_t js2uint64(JSValue v)
{
int64_t i;
JS_ToInt64(js, &i, v);
uint64_t n = i;
return n;
}
int js2int(JSValue v) {
int32_t i;
JS_ToInt32(js, &i, v);
@@ -70,6 +81,24 @@ JSValue str2js(const char *c) {
return JS_NewString(js, c);
}
JSValue strarr2js(const char **c, int len)
{
JSValue arr = JS_NewArray(js);
for (int i = 0; i < len; i++)
JS_SetPropertyUint32(js, arr, i, JS_NewString(js, c[i]));
return arr;
}
JSValue glob2js(char *pat)
{
glob_t mglob;
glob(pat, GLOB_NOSORT, NULL, &mglob);
JSValue arr = strarr2js(mglob.gl_pathv, mglob.gl_pathc);
globfree(&mglob);
return arr;
}
double js2number(JSValue v) {
double g;
JS_ToFloat64(js, &g, v);
@@ -1050,6 +1079,9 @@ JSValue duk_cmd(JSContext *js, JSValueConst this, int argc, JSValueConst *argv)
return num2js(get_timescale());
break;
case 122:
str = JS_ToCString(js, argv[1]);
ret = glob2js(str);
break;
case 123:
@@ -1070,6 +1102,23 @@ JSValue duk_cmd(JSContext *js, JSValueConst this, int argc, JSValueConst *argv)
case 126:
mainwin.height = js2int(argv[2]);
break;
case 127:
ret = JS_NewInt64(js, stm_now());
break;
case 128:
YughWarn("%g",stm_ms(9737310));
ret = JS_NewFloat64(js, stm_ns(js2uint64(argv[1])));
break;
case 129:
ret = JS_NewFloat64(js, stm_us(js2uint64(argv[1])));
break;
case 130:
ret = JS_NewFloat64(js, stm_ms(js2uint64(argv[1])));
break;
}
if (str)

View File

@@ -13,6 +13,8 @@
#include <unistd.h>
#include "font.h"
#include <glob.h>
#include <fcntl.h>
#include "cdb.h"
@@ -155,7 +157,7 @@ unsigned char *slurp_file(const char *filename, size_t *size)
char *data = malloc(vlen);
cdb_read(&game_cdb, data, vlen, vpos);
if (size) *size = vlen;
return strdup(data);
return data;
}
FILE *f;
@@ -183,7 +185,7 @@ char *slurp_text(const char *filename, size_t *size)
char *str = slurp_file(filename, &len);
char *retstr = malloc(len+1);
memcpy(retstr, str, len);
retstr[len] = 0;
retstr[len] = '\0';
free(str);
if (size) *size = len;
return retstr;
@@ -198,23 +200,26 @@ int slurp_write(const char *txt, const char *filename) {
return 0;
}
static int glob_err(const char *epath, int errno)
{
return 0;
}
#ifndef __EMSCRIPTEN__
static struct cdb_make cdbm;
static const char *pack_ext[] = {".qoi", ".qoa", ".js", ".wav", ".mp3", ".png", ".sf2", ".midi", ".lvl", ".glsl"};
static const char *pack_ext[] = {".qoi", ".qoa", ".js", ".wav", ".mp3", ".png", ".sf2", ".midi", ".lvl", ".glsl", ".ttf"};
static int ftw_pack(const char *path, const struct stat *sb, int flag)
{
if (flag != FTW_F) return 0;
int pack = 0;
char *ext = strrchr(path, '.');
if (!ext)
return 0;
for (int i = 0; i < 6; i++) {
for (int i = 0; i < 11; i++) {
if (!strcmp(ext, pack_ext[i])) {
pack = 1;
break;

View File

@@ -169,17 +169,11 @@ struct wav *make_sound(const char *wav) {
return NULL;
}
YughWarn("%s opened with %d ch, %d samplerate, %d frames", ext, mwav.ch, mwav.samplerate, mwav.frames);
if (mwav.samplerate != SAMPLERATE) {
YughWarn("Changing samplerate of %s from %d to %d.", wav, mwav.samplerate, SAMPLERATE);
if (mwav.samplerate != SAMPLERATE)
mwav = change_samplerate(mwav, SAMPLERATE);
}
if (mwav.ch != CHANNELS) {
YughWarn("Changing channels of %s from %d to %d.", wav, mwav.ch, CHANNELS);
if (mwav.ch != CHANNELS)
mwav = change_channels(mwav, CHANNELS);
}
mwav.gain = 1.f;
struct wav *newwav = malloc(sizeof(*newwav));
@@ -187,8 +181,6 @@ struct wav *make_sound(const char *wav) {
if (shlen(wavhash) == 0) sh_new_arena(wavhash);
shput(wavhash, wav, newwav);
YughWarn("Channels %d, sr %d", newwav->ch,newwav->samplerate);
return newwav;
}