rework assert, wasm_alert, wasm_clear, expect
This commit is contained in:
@@ -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);
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user