diff --git a/src/raddbg/generated/raddbg.meta.c b/src/raddbg/generated/raddbg.meta.c index 66f40040..617c766f 100644 --- a/src/raddbg/generated/raddbg.meta.c +++ b/src/raddbg/generated/raddbg.meta.c @@ -329,7 +329,7 @@ RD_NameSchemaInfo rd_name_schema_info_table[17] = {str8_lit_comp("disasm"), str8_lit_comp("x:\n{\n 'arch': arch,\n 'syntax': dasm_syntax,\n 'size': code_string,\n @default(1) 'show_addresses': bool,\n @default(0) 'show_code_bytes': bool,\n @default(1) 'show_source_lines': bool,\n @default(1) 'show_symbol_names': bool,\n @default(1) 'show_line_numbers': bool,\n}\n")}, {str8_lit_comp("memory"), str8_lit_comp("x:\n{\n 'size': code_string,\n @default(16) 'num_columns': @range[1, 64] u64,\n}\n")}, {str8_lit_comp("bitmap"), str8_lit_comp("x:\n{\n @order(0) 'w': code_string,\n @order(1) 'h': code_string,\n 'fmt': tex2dformat,\n}\n")}, -{str8_lit_comp("geo3d"), str8_lit_comp("x:\n{\n 'count': code_string,\n 'vtx': code_string,\n 'vtx_size': code_string,\n 'yaw': code_string,\n 'pitch': code_string,\n 'zoom': code_string,\n}\n")}, +{str8_lit_comp("geo3d"), str8_lit_comp("x:\n{\n 'count': code_string,\n 'vtx': code_string,\n 'vtx_size': code_string,\n 'yaw': f32,\n 'pitch': f32,\n 'zoom': f32,\n}\n")}, {str8_lit_comp("target"), str8_lit_comp("@commands(enable_cfg, launch_and_run, launch_and_step_into, remove_cfg)\n@collection_commands(add_target)\nx:\n{\n 'label': code_string,\n 'executable': path,\n 'arguments': string,\n 'working_directory': path,\n 'entry_point': code_string,\n 'stdout_path': path,\n 'stderr_path': path,\n 'stdin_path': path,\n 'environment': query,\n 'debug_subprocesses': bool,\n @no_expand @default(0) 'enabled': bool,\n}\n")}, {str8_lit_comp("breakpoint"), str8_lit_comp("@commands(enable_cfg, remove_cfg)\n@collection_commands(toggle_breakpoint, add_breakpoint, add_address_breakpoint)\nx:\n{\n 'label': code_string,\n 'condition': code_string,\n 'source_location': path_pt,\n 'address_location': code_string,\n 'hit_count': u64,\n 'address_range_size': @or(0, 1, 2, 4, 8) u64,\n 'break_on_write': bool,\n 'break_on_read': bool,\n 'break_on_execute': bool,\n @no_expand @default(1) 'enabled': bool,\n}\n")}, {str8_lit_comp("watch_pin"), str8_lit_comp("@commands(remove_cfg)\n@collection_commands(add_watch_pin)\nx:\n{\n 'expression': code_string,\n 'view_rule': code_string,\n 'source_location': path_pt,\n 'address_location': code_string,\n}\n")}, diff --git a/src/raddbg/raddbg.mdesk b/src/raddbg/raddbg.mdesk index 73cf294b..10d2e7d0 100644 --- a/src/raddbg/raddbg.mdesk +++ b/src/raddbg/raddbg.mdesk @@ -227,9 +227,9 @@ RD_VocabTable: 'count': code_string, 'vtx': code_string, 'vtx_size': code_string, - 'yaw': code_string, - 'pitch': code_string, - 'zoom': code_string, + 'yaw': f32, + 'pitch': f32, + 'zoom': f32, } ``` } diff --git a/src/raddbg/raddbg_core.c b/src/raddbg/raddbg_core.c index 217d83e0..5f2828d8 100644 --- a/src/raddbg/raddbg_core.c +++ b/src/raddbg/raddbg_core.c @@ -1648,6 +1648,16 @@ rd_eval_space_read(void *u, E_Space space, void *out, Rng1U64 range) try_u64_from_str8_c_rules(value_string, &value); read_data = push_str8_copy(scratch.arena, str8_struct(&value)); } + else if(str8_match(child_type_name, str8_lit("f32"), 0)) + { + String8 value_string = cfg->first->string; + if(value_string.size == 0) + { + value_string = md_tag_from_string(child_schema, str8_lit("default"), 0)->first->string; + } + F32 value = (F32)f64_from_str8(value_string); + read_data = push_str8_copy(scratch.arena, str8_struct(&value)); + } } // rjf: perform read @@ -1812,6 +1822,21 @@ rd_eval_space_write(void *u, E_Space space, void *in, Rng1U64 range) } result = 1; } + else if(str8_match(child_type_name, str8_lit("f32"), 0)) + { + if(range.max == range.min) + { + rd_cfg_release(rd_cfg_child_from_string(root_cfg, child_key)); + } + else + { + F32 value = 0; + MemoryCopy(&value, in, dim_1u64(range)); + RD_Cfg *child = rd_cfg_child_from_string_or_alloc(root_cfg, child_key); + rd_cfg_new_replacef(child, "%f", value); + } + result = 1; + } } scratch_end(scratch); diff --git a/src/raddbg/raddbg_eval.c b/src/raddbg/raddbg_eval.c index 9cfcc3cb..2f50af59 100644 --- a/src/raddbg/raddbg_eval.c +++ b/src/raddbg/raddbg_eval.c @@ -369,6 +369,10 @@ E_TYPE_ACCESS_FUNCTION_DEF(schema) { child_type_key = e_type_key_basic(E_TypeKind_U64); } + else if(str8_match(child_schema->first->string, str8_lit("f32"), 0)) + { + child_type_key = e_type_key_basic(E_TypeKind_F32); + } else if(str8_match(child_schema->first->string, str8_lit("bool"), 0)) { child_type_key = e_type_key_basic(E_TypeKind_Bool);