From 7965ead6392e960c6f12be9eaa054320baee93cf Mon Sep 17 00:00:00 2001 From: Ry Date: Tue, 7 Feb 2023 18:45:19 -0800 Subject: [PATCH] bindings: More bindings --- gcc/bindings.c | 15 ++++++++++++++- gcc/bindings.kts | 18 +++++++++++++++--- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/gcc/bindings.c b/gcc/bindings.c index 440ec67..c501c8f 100644 --- a/gcc/bindings.c +++ b/gcc/bindings.c @@ -724,8 +724,21 @@ static inline void new_window_event(void) { call(0x00000C18); } -static inline void get_next_window_event(void) { +static inline struct return8 get_next_window_event( + unsigned char* window_struct +) { + struct return8 result_0; + parameter(0, window_struct); call(0x00000C1C); + ret(0, result_0.return0); + ret(1, result_0.return1); + ret(2, result_0.return2); + ret(3, result_0.return3); + ret(4, result_0.return4); + ret(5, result_0.return5); + ret(6, result_0.return6); + ret(7, result_0.return7); + return result_0; } static inline void draw_title_bar_to_window( diff --git a/gcc/bindings.kts b/gcc/bindings.kts index 383119c..f76aea9 100755 --- a/gcc/bindings.kts +++ b/gcc/bindings.kts @@ -34,6 +34,9 @@ class Function(val address: UInt, val name: String) { fun returns(index: Int, type: Type) { returns[index] = Variable(type, "result_${index}", false) } + fun returnstruct(suffix: String, type: Type) { + returnstruct(returns.indexOfFirst { it == null }, suffix, type) + } fun returnstruct(index: Int, suffix: String, type: Type) { returns[index] = Variable(type, "result_0.${suffix}", true) } @@ -166,9 +169,9 @@ comment("fox32rom definitions") comment("system jump table") define(0xF0040000U, "get_rom_version") { - returnstruct(0, "return0", Type("struct return3")) - returnstruct(1, "return1", Type("struct return3")) - returnstruct(2, "return2", Type("struct return3")) + returnstruct("return0", Type("struct return3")) + returnstruct("return1", Type("struct return3")) + returnstruct("return2", Type("struct return3")) } define(0xF0040004U, "system_vsync_handler") { } @@ -534,6 +537,15 @@ define(0x00000C14U, "destroy_window") { define(0x00000C18U, "new_window_event") { } define(0x00000C1CU, "get_next_window_event") { + parameter(Byte.ref, "window_struct") + returnstruct("return0", Type("struct return8")) + returnstruct("return1", Type("struct return8")) + returnstruct("return2", Type("struct return8")) + returnstruct("return3", Type("struct return8")) + returnstruct("return4", Type("struct return8")) + returnstruct("return5", Type("struct return8")) + returnstruct("return6", Type("struct return8")) + returnstruct("return7", Type("struct return8")) } define(0x00000C20U, "draw_title_bar_to_window") { parameter(Byte.ref, "window_struct")