diff --git a/decompiler/IR2/FormExpressionAnalysis.cpp b/decompiler/IR2/FormExpressionAnalysis.cpp index 2d454e5faa..a3d88a2671 100644 --- a/decompiler/IR2/FormExpressionAnalysis.cpp +++ b/decompiler/IR2/FormExpressionAnalysis.cpp @@ -655,8 +655,8 @@ void SimpleExpressionElement::update_from_stack_float_2(const Env& env, auto type0 = env.get_types_before_op(m_my_idx).get(m_expr.get_arg(0).var().reg()); auto type1 = env.get_types_before_op(m_my_idx).get(m_expr.get_arg(1).var().reg()); throw std::runtime_error( - fmt::format("Floating point math attempted on invalid types: {} and {} in op {}.", - type0.print(), type1.print(), to_string(env))); + fmt::format("[OP: {}] - Floating point math attempted on invalid types: {} and {} in op {}.", + m_my_idx, type0.print(), type1.print(), to_string(env))); } } diff --git a/decompiler/config/all-types.gc b/decompiler/config/all-types.gc index b818b32cec..33df434de0 100644 --- a/decompiler/config/all-types.gc +++ b/decompiler/config/all-types.gc @@ -22035,9 +22035,9 @@ (:methods (rigid-body-platform-idle () none 20) ;; state (rigid-body-platform-float () none 21) ;; state - (dummy-22 (_type_ vector) none 22) ;; TODO - weird state handling, not completely done yet - (dummy-23 (_type_) none 23) ;; TODO - missing arg that is passed to 24 - (TODO-RENAME-24 (_type_ rigid-body-control-point) none 24) ;; TODO - there is an unused 3rd arg + (TODO-RENAME-22 (_type_ vector basic) float 22) ;; TODO - basic is seemingly unused + (TODO-RENAME-23 (_type_ basic) none 23) ;; TODO - basic is seemingly unused + (TODO-RENAME-24 (_type_ rigid-body-control-point basic) none 24) ;; TODO - basic is seemingly unused (TODO-RENAME-25 (_type_) none 25) (TODO-RENAME-26 (_type_) none 26) (TODO-RENAME-27 (_type_ vector) none 27) @@ -22055,7 +22055,7 @@ ;; - Functions (define-extern matrix-3x3-triple-transpose-product (function matrix matrix matrix matrix)) -(define-extern rigid-body-platform-event-handler function) +(define-extern rigid-body-platform-event-handler (function process int symbol event-message-block object :behavior rigid-body-platform)) (define-extern rigid-body-platform-post (function int :behavior rigid-body-platform)) ;; - Unknowns diff --git a/decompiler/config/jak1_ntsc_black_label/anonymous_function_types.jsonc b/decompiler/config/jak1_ntsc_black_label/anonymous_function_types.jsonc index f4e5caeb84..6b895ebc73 100644 --- a/decompiler/config/jak1_ntsc_black_label/anonymous_function_types.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/anonymous_function_types.jsonc @@ -597,5 +597,9 @@ [6, "(function process int symbol event-message-block process-mask :behavior water-anim)"] ], + "plat-eco": [ + [9, "(function none :behavior plat-eco)"] + ], + "placeholder-do-not-add-below": [] } diff --git a/decompiler/config/jak1_ntsc_black_label/stack_structures.jsonc b/decompiler/config/jak1_ntsc_black_label/stack_structures.jsonc index 3028669f54..31f4c13580 100644 --- a/decompiler/config/jak1_ntsc_black_label/stack_structures.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/stack_structures.jsonc @@ -869,5 +869,9 @@ [16, "vector"] ], + "(anon-function 9 plat-eco)": [ + [16, "event-message-block"] + ], + "placeholder-do-not-add-below!": [] } diff --git a/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc b/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc index fde1e2c549..14627808b7 100644 --- a/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc @@ -1787,10 +1787,6 @@ "draw-ocean-transition": [[255, "v1", "ocean-mid-mask"]], - // "ocean-trans-mask-ptrs-bit?": [ - // [[32, 41], "a0", "(pointer ocean-trans-mask)"] - // ], - "(anon-function 6 water-anim)": [ [6, "a0", "vector"] ], @@ -1799,28 +1795,14 @@ [2, "v1", "(state none)"] ], - "rigid-body-platform-post": [ - [[0, 999], "s6", "rigid-body-platform"] - ], - "(anon-function 8 rigid-body)": [ - [[0, 999], "s6", "rigid-body-platform"], [[16, 21], "t9", "(function object)"] ], - "(anon-function 7 rigid-body)": [ - [[0, 999], "s6", "rigid-body-platform"] - ], - "(anon-function 6 rigid-body)": [ - [[0, 999], "s6", "rigid-body-platform"], [[16, 21], "t9", "(function object)"] ], - "(anon-function 5 rigid-body)": [ - [[0, 999], "s6", "rigid-body-platform"] - ], - "(method 34 rigid-body-platform)": [ [[0, 5], "t9", "(function object)"] ], @@ -1832,7 +1814,31 @@ ], "(method 25 water-anim)": [ - [[27, 45], "v1", "transform"] // mostly a guess, manipulating a trsqv + [[27, 45], "v1", "transform"] + ], + + "(method 22 rigid-body-platform)": [ + [26, "f0", "float"] + ], + + "rigid-body-platform-event-handler": [ + [28, "v1", "process-drawable"], + [83, "v1", "process-drawable"], + [119, "v1", "process-drawable"], + [125, "v1", "process-drawable"], + [158, "v1", "vector"], + [170, "v1", "vector"], + [184, "v1", "symbol"] + ], + + "(anon-function 9 plat-eco)": [ + [23, "v1", "(state symbol none)"], + [58, "v1", "(state symbol none)"] + ], + + "(method 7 rigid-body-platform)": [ + [5, "v1", "int"], + [14, "t9", "(function process-drawable int process-drawable)"] ], "placeholder-do-not-add-below": []