Please, add "cartidge reset" api call #473
This commit is contained in:
parent
0e997f5d33
commit
2eacc2bf34
10
src/jsapi.c
10
src/jsapi.c
|
@ -715,6 +715,15 @@ static duk_ret_t duk_sync(duk_context* duk)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static duk_ret_t duk_reset(duk_context* duk)
|
||||||
|
{
|
||||||
|
tic_machine* machine = getDukMachine(duk);
|
||||||
|
|
||||||
|
machine->state.initialized = false;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static const char* const ApiKeywords[] = API_KEYWORDS;
|
static const char* const ApiKeywords[] = API_KEYWORDS;
|
||||||
static const struct{duk_c_function func; s32 params;} ApiFunc[] =
|
static const struct{duk_c_function func; s32 params;} ApiFunc[] =
|
||||||
{
|
{
|
||||||
|
@ -753,6 +762,7 @@ static const struct{duk_c_function func; s32 params;} ApiFunc[] =
|
||||||
{duk_clip, 4},
|
{duk_clip, 4},
|
||||||
{duk_music, 4},
|
{duk_music, 4},
|
||||||
{duk_sync, 3},
|
{duk_sync, 3},
|
||||||
|
{duk_reset, 0},
|
||||||
};
|
};
|
||||||
|
|
||||||
s32 duk_timeout_check(void* udata)
|
s32 duk_timeout_check(void* udata)
|
||||||
|
|
11
src/luaapi.c
11
src/luaapi.c
|
@ -774,6 +774,15 @@ static s32 lua_sync(lua_State* lua)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static s32 lua_reset(lua_State* lua)
|
||||||
|
{
|
||||||
|
tic_machine* machine = getLuaMachine(lua);
|
||||||
|
|
||||||
|
machine->state.initialized = false;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static s32 lua_memcpy(lua_State* lua)
|
static s32 lua_memcpy(lua_State* lua)
|
||||||
{
|
{
|
||||||
s32 top = lua_gettop(lua);
|
s32 top = lua_gettop(lua);
|
||||||
|
@ -1075,7 +1084,7 @@ static const lua_CFunction ApiFunc[] =
|
||||||
lua_rectb, lua_spr, lua_btn, lua_btnp, lua_sfx, lua_map, lua_mget,
|
lua_rectb, lua_spr, lua_btn, lua_btnp, lua_sfx, lua_map, lua_mget,
|
||||||
lua_mset, lua_peek, lua_poke, lua_peek4, lua_poke4, lua_memcpy,
|
lua_mset, lua_peek, lua_poke, lua_peek4, lua_poke4, lua_memcpy,
|
||||||
lua_memset, lua_trace, lua_pmem, lua_time, lua_exit, lua_font, lua_mouse,
|
lua_memset, lua_trace, lua_pmem, lua_time, lua_exit, lua_font, lua_mouse,
|
||||||
lua_circ, lua_circb, lua_tri, lua_textri, lua_clip, lua_music, lua_sync
|
lua_circ, lua_circb, lua_tri, lua_textri, lua_clip, lua_music, lua_sync, lua_reset
|
||||||
};
|
};
|
||||||
|
|
||||||
STATIC_ASSERT(api_func, COUNT_OF(ApiKeywords) == COUNT_OF(ApiFunc));
|
STATIC_ASSERT(api_func, COUNT_OF(ApiKeywords) == COUNT_OF(ApiFunc));
|
||||||
|
|
|
@ -95,12 +95,6 @@ static void tick(Run* run)
|
||||||
if (getStudioMode() != TIC_RUN_MODE)
|
if (getStudioMode() != TIC_RUN_MODE)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if(!run->init)
|
|
||||||
{
|
|
||||||
run->tickData.start = run->tickData.counter(),
|
|
||||||
run->init = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
run->tic->api.tick(run->tic, &run->tickData);
|
run->tic->api.tick(run->tic, &run->tickData);
|
||||||
|
|
||||||
enum {Size = sizeof(tic_persistent)};
|
enum {Size = sizeof(tic_persistent)};
|
||||||
|
@ -193,7 +187,6 @@ void initRun(Run* run, Console* console, tic_mem* tic)
|
||||||
.console = console,
|
.console = console,
|
||||||
.tick = tick,
|
.tick = tick,
|
||||||
.exit = false,
|
.exit = false,
|
||||||
.init = false,
|
|
||||||
.tickData =
|
.tickData =
|
||||||
{
|
{
|
||||||
.error = onError,
|
.error = onError,
|
||||||
|
|
|
@ -33,7 +33,6 @@ struct Run
|
||||||
tic_tick_data tickData;
|
tic_tick_data tickData;
|
||||||
|
|
||||||
bool exit;
|
bool exit;
|
||||||
bool init;
|
|
||||||
|
|
||||||
s32 persistent[TIC_PERSISTENT_SIZE];
|
s32 persistent[TIC_PERSISTENT_SIZE];
|
||||||
|
|
||||||
|
|
|
@ -1593,9 +1593,11 @@ static void api_tick(tic_mem* memory, tic_tick_data* data)
|
||||||
|
|
||||||
if(done)
|
if(done)
|
||||||
{
|
{
|
||||||
|
data->start = data->counter();
|
||||||
|
|
||||||
machine->state.scanline = memory->script == tic_script_js ? callJavascriptScanline : callLuaScanline;
|
machine->state.scanline = memory->script == tic_script_js ? callJavascriptScanline : callLuaScanline;
|
||||||
machine->state.ovr.callback = memory->script == tic_script_js ? callJavascriptOverlap : callLuaOverlap;
|
machine->state.ovr.callback = memory->script == tic_script_js ? callJavascriptOverlap : callLuaOverlap;
|
||||||
machine->state.initialized = true;
|
machine->state.initialized = true;
|
||||||
}
|
}
|
||||||
else return;
|
else return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -115,7 +115,7 @@
|
||||||
#define API_KEYWORDS {"TIC", "scanline", "OVR", "print", "cls", "pix", "line", "rect", "rectb", \
|
#define API_KEYWORDS {"TIC", "scanline", "OVR", "print", "cls", "pix", "line", "rect", "rectb", \
|
||||||
"spr", "btn", "btnp", "sfx", "map", "mget", "mset", "peek", "poke", "peek4", "poke4", \
|
"spr", "btn", "btnp", "sfx", "map", "mget", "mset", "peek", "poke", "peek4", "poke4", \
|
||||||
"memcpy", "memset", "trace", "pmem", "time", "exit", "font", "mouse", "circ", "circb", "tri", "textri", \
|
"memcpy", "memset", "trace", "pmem", "time", "exit", "font", "mouse", "circ", "circb", "tri", "textri", \
|
||||||
"clip", "music", "sync"}
|
"clip", "music", "sync", "reset"}
|
||||||
|
|
||||||
#define TIC_FONT_CHARS 128
|
#define TIC_FONT_CHARS 128
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue