platform files, core_init

This commit is contained in:
krzosa
2024-12-30 21:49:19 +01:00
parent 46084a3412
commit ea6cba3946
21 changed files with 492 additions and 435 deletions

View File

@@ -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));
}