rework assert, wasm_alert, wasm_clear, expect

This commit is contained in:
krzosa
2024-12-30 19:48:40 +01:00
parent 578fa33605
commit 46084a3412
16 changed files with 150 additions and 95 deletions

View File

@@ -2,8 +2,11 @@
#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);
fn_wasm_import f64 wasm_measure_text(isize str, i32 len, isize font_str, i32 font_len, i32 font_size);
@@ -27,13 +30,16 @@ 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) {
assertf(end_unused == NULL, "second parameter should be null!!");
assert(end_unused == NULL);
return wasm_parse_float((isize)str, str_len((char *)str));
}
@@ -183,14 +189,17 @@ fn_wasm_export void wasm_key_up(char *key, b32 ctrl, b32 shift, b32 alt, b32 met
fn_wasm_export void wasm_update(f64 time, f64 width, f64 height, f64 dpr) {
f64 delta_time = (time - wasm_last_time);
v2f32_t window_size = (v2f32_t){width / dpr, height / dpr};
for (i32 i = 0; i < wasm_events.len; i += 1) {
wasm_events.data[i].dpr = dpr;
wasm_events.data[i].window_size = (v2f32_t){width / dpr, height / dpr};
wasm_events.data[i].window_size = window_size;
wasm_events.data[i].time = time;
wasm_events.data[i].delta_time = delta_time;
}
wasm_dpr = 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);
wasm_events.len = 0;
@@ -199,12 +208,24 @@ 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;
{
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));
debugf("on_init, __builtin_wasm_memory_size(0) = %d(%d)", page_count, memory_size);
}