diff --git a/extensions/cobor_vm_extension/.sconsign.dblite b/extensions/cobor_vm_extension/.sconsign.dblite index d036a46..59c1f60 100644 Binary files a/extensions/cobor_vm_extension/.sconsign.dblite and b/extensions/cobor_vm_extension/.sconsign.dblite differ diff --git a/extensions/cobor_vm_extension/__pycache__/methods.cpython-312.pyc b/extensions/cobor_vm_extension/__pycache__/methods.cpython-312.pyc index 7145fa9..339bf08 100644 Binary files a/extensions/cobor_vm_extension/__pycache__/methods.cpython-312.pyc and b/extensions/cobor_vm_extension/__pycache__/methods.cpython-312.pyc differ diff --git a/extensions/cobor_vm_extension/bin/linux/libcobor_vm_extension.linux.template_debug.x86_64.so b/extensions/cobor_vm_extension/bin/linux/libcobor_vm_extension.linux.template_debug.x86_64.so index cbed03c..7762e13 100755 Binary files a/extensions/cobor_vm_extension/bin/linux/libcobor_vm_extension.linux.template_debug.x86_64.so and b/extensions/cobor_vm_extension/bin/linux/libcobor_vm_extension.linux.template_debug.x86_64.so differ diff --git a/extensions/cobor_vm_extension/cobor_vm/include/cobor_virtual_machine.hpp b/extensions/cobor_vm_extension/cobor_vm/include/cobor_virtual_machine.hpp index 9d4179b..fa2caef 100644 --- a/extensions/cobor_vm_extension/cobor_vm/include/cobor_virtual_machine.hpp +++ b/extensions/cobor_vm_extension/cobor_vm/include/cobor_virtual_machine.hpp @@ -24,6 +24,7 @@ namespace CoborVM godot::String set_registers(int size, godot::PackedInt32Array preloaded_values); godot::PackedInt32Array get_registers(); int get_program_counter(); + int get_program_size(); godot::String run_step(); godot::String run_all(); diff --git a/extensions/cobor_vm_extension/cobor_vm/src/cobor_virtual_machine.cpp b/extensions/cobor_vm_extension/cobor_vm/src/cobor_virtual_machine.cpp index c0fca68..a8fa59c 100644 --- a/extensions/cobor_vm_extension/cobor_vm/src/cobor_virtual_machine.cpp +++ b/extensions/cobor_vm_extension/cobor_vm/src/cobor_virtual_machine.cpp @@ -8,6 +8,7 @@ void CoborVM::CoborVirtualMachine::_bind_methods() godot::ClassDB::bind_method(godot::D_METHOD("set_registers", "size", "preloaded_values"), &CoborVirtualMachine::set_registers); godot::ClassDB::bind_method(godot::D_METHOD("get_registers"), &CoborVirtualMachine::get_registers); godot::ClassDB::bind_method(godot::D_METHOD("get_program_counter"), &CoborVirtualMachine::get_program_counter); + godot::ClassDB::bind_method(godot::D_METHOD("get_program_size"), &CoborVirtualMachine::get_program_size); godot::ClassDB::bind_method(godot::D_METHOD("run_step"), &CoborVirtualMachine::run_step); godot::ClassDB::bind_method(godot::D_METHOD("run_all"), &CoborVirtualMachine::run_all); } @@ -59,13 +60,10 @@ godot::String CoborVM::CoborVirtualMachine::set_registers(int size, godot::Packe if (size <= 0) return godot::String("Size must be one or higher"); register_memory = std::vector(size); - int i = 0; + preloaded_values.resize(size); for (int value : preloaded_values) { - if (i >= size) - break; register_memory[i] = value; - i++; } return godot::String(); } @@ -85,6 +83,11 @@ int CoborVM::CoborVirtualMachine::get_program_counter() return register_memory[0]; } +int CoborVM::CoborVirtualMachine::get_program_size() +{ + return program.size(); +} + godot::String CoborVM::CoborVirtualMachine::run_step() { if (program.empty()) diff --git a/extensions/cobor_vm_extension/cobor_vm/src/cobor_virtual_machine.os b/extensions/cobor_vm_extension/cobor_vm/src/cobor_virtual_machine.os deleted file mode 100644 index d10fa26..0000000 Binary files a/extensions/cobor_vm_extension/cobor_vm/src/cobor_virtual_machine.os and /dev/null differ diff --git a/extensions/cobor_vm_extension/cobor_vm/src/register_types.os b/extensions/cobor_vm_extension/cobor_vm/src/register_types.os index b2cf56b..279beaf 100644 Binary files a/extensions/cobor_vm_extension/cobor_vm/src/register_types.os and b/extensions/cobor_vm_extension/cobor_vm/src/register_types.os differ