platform files, core_init
This commit is contained in:
@@ -1,11 +1,3 @@
|
||||
#define glb_wasm_export __attribute__((visibility("default")))
|
||||
#define fn_wasm_export __attribute__((visibility("default")))
|
||||
#define fn_wasm_import
|
||||
|
||||
fn_wasm_import void wasm_alert(isize ptr, i32 len);
|
||||
fn_wasm_import f64 wasm_parse_float(isize str, i32 len);
|
||||
fn_wasm_import void wasm_write_to_console(isize str, i32 len);
|
||||
|
||||
fn_wasm_import void wasm_clear();
|
||||
fn_wasm_import void wasm_draw_text(isize str, i32 len, f64 x, f64 y, isize font_str, i32 font_len, i32 font_size, f32 r, f32 g, f32 b, f32 a);
|
||||
fn_wasm_import void wasm_draw_rect(f64 x, f64 y, f64 w, f64 h, f32 r, f32 g, f32 b, f32 a);
|
||||
@@ -18,8 +10,6 @@ glb_wasm_export i32 wasm_temp_buff1_len = 127;
|
||||
glb_wasm_export char wasm_temp_buff2[128] = {[127] = 0x13};
|
||||
glb_wasm_export i32 wasm_temp_buff2_len = 127;
|
||||
|
||||
extern char __heap_base;
|
||||
glb ma_arena_t wasm_perm_arena;
|
||||
glb char *font_face = "fira";
|
||||
glb i32 font_face_len = 4;
|
||||
glb f64 wasm_dpr;
|
||||
@@ -28,20 +18,7 @@ glb STACK(app_event_t, 64) wasm_events;
|
||||
glb b32 wasm_event_failed_to_queue;
|
||||
glb f64 wasm_last_time = 0;
|
||||
|
||||
fn void app_update(ma_arena_t *perm_arena, app_event_t *events, i32 event_count);
|
||||
|
||||
fn void alert(s8_t string) {
|
||||
wasm_alert((isize)string.str, (i32)string.len);
|
||||
}
|
||||
|
||||
fn void puts(const char *string) {
|
||||
wasm_write_to_console((isize)string, (i32)str_len((char *)string));
|
||||
}
|
||||
|
||||
fn double strtod(const char *str, char **end_unused) {
|
||||
assert(end_unused == NULL);
|
||||
return wasm_parse_float((isize)str, str_len((char *)str));
|
||||
}
|
||||
fn void app_update(app_event_t *events, i32 event_count);
|
||||
|
||||
fn void set_clip(r2f64_t rect) {
|
||||
wasm_set_clip(wasm_dpr * rect.min.x, wasm_dpr * rect.min.y, wasm_dpr * (rect.max.x - rect.min.x), wasm_dpr * (rect.max.y - rect.min.y));
|
||||
@@ -200,7 +177,7 @@ fn_wasm_export void wasm_update(f64 time, f64 width, f64 height, f64 dpr) {
|
||||
|
||||
wasm_clear();
|
||||
draw_rect(r2f64(0, 0, window_size.x, window_size.y), white_color_global);
|
||||
app_update(&wasm_perm_arena, wasm_events.data, wasm_events.len);
|
||||
app_update(wasm_events.data, wasm_events.len);
|
||||
|
||||
wasm_events.len = 0;
|
||||
wasm_last_time = time;
|
||||
@@ -208,24 +185,6 @@ fn_wasm_export void wasm_update(f64 time, f64 width, f64 height, f64 dpr) {
|
||||
}
|
||||
|
||||
fn_wasm_export void wasm_init(void) {
|
||||
{
|
||||
isize page_size = kib(64);
|
||||
isize page_count = __builtin_wasm_memory_size(0);
|
||||
u8 *memory = (u8 *)&__heap_base;
|
||||
usize memory_size = page_count * (page_size) - (isize)memory;
|
||||
wasm_perm_arena.data = memory;
|
||||
wasm_perm_arena.commit = wasm_perm_arena.reserve = memory_size;
|
||||
|
||||
// init core
|
||||
{
|
||||
ma_push_arena_ex(&wasm_perm_arena, &core_desc.scratch[0], mib(1));
|
||||
ma_push_arena_ex(&wasm_perm_arena, &core_desc.scratch[1], kib(256));
|
||||
ma_push_arena_ex(&wasm_perm_arena, &core_desc.scratch[2], kib(64));
|
||||
}
|
||||
|
||||
debugf("on_init, __builtin_wasm_memory_size(0) = %d(%d)", page_count, memory_size);
|
||||
}
|
||||
|
||||
wasm_input_text_arena = ma_push_arena(&wasm_perm_arena, kib(1));
|
||||
|
||||
core_init();
|
||||
wasm_input_text_arena = ma_push_arena(&tcx.perm, kib(1));
|
||||
}
|
||||
Reference in New Issue
Block a user