[decomp] target-handler (#2027)

This commit is contained in:
water111
2022-11-20 09:21:25 -05:00
committed by GitHub
parent bf83f2442d
commit e0ebc5a68e
36 changed files with 4379 additions and 1106 deletions
+8 -2
View File
@@ -730,8 +730,14 @@ void merge_infos(
* the none variables
*/
void SSA::make_vars(const Function& function, const DecompilerTypeSystem& dts) {
bool event_handler_hack =
function.ir2.env.version > GameVersion::Jak1 && function.guessed_name.is_event_handler();
bool event_handler_hack = false;
if (function.ir2.env.version == GameVersion::Jak2) {
event_handler_hack = function.guessed_name.is_event_handler() ||
function.guessed_name.to_string() == "target-generic-event-handler" ||
function.guessed_name.to_string() == "target-standard-event-handler";
}
for (int block_id = 0; block_id < int(blocks.size()); block_id++) {
const auto& block = blocks.at(block_id);
const TypeState* init_types = &function.ir2.env.get_types_at_block_entry(block_id);
File diff suppressed because it is too large Load Diff
+54 -2
View File
@@ -110,7 +110,6 @@
"draw-inline-array-instance-shrub",
"target-land-effect",
"target-standard-event-handler",
"(method 12 effect-control)",
"(method 11 effect-control)",
"(method 10 effect-control)",
@@ -393,7 +392,60 @@
"(method 24 grid-hash)": [39, 35, 22, 15],
"(method 12 flow-control)": [11, 12, 13, 14, 15, 18, 20, 22, 29],
"(method 19 process-drawable)": [0, 2, 3, 7, 10, 11, 30],
"find-offending-process-focusable": [16, 19]
"find-offending-process-focusable": [16, 19],
"target-standard-event-handler": [
5, // fwd L31/7
6, // to 152
7, // fwd L38
20, // to 152
21, // fwd L39
22, // to 152
23, // to L40
24, // to 152
25, // to L45
43, // to l152
44, // to 46
45, // to l152
46, // to l114
190, // to l152
191, // to 121
210,
211,
212,
213,
214,
224,
225,
226,
227,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
255,
256,
269,
270,
285,
286,
287,
288,
289,
290
]
},
// Sometimes the game might use format strings that are fetched dynamically,
+29 -3
View File
@@ -3390,7 +3390,8 @@
[681, "v1", "fact-info-target"],
[699, "v1", "fact-info-target"],
[866, "v1", "(state target)"],
[894, "a0", "process"]
[894, "a0", "process"],
[517, "v1", "float"]
],
"target-dangerous-event-handler": [
[9, "v1", "fact-info-target"],
@@ -3515,7 +3516,8 @@
"(code special-contents-die crate)": [[42, "v1", "collide-shape-moving"]],
"target-send-attack": [
["_stack_", 96, "symbol"],
[16, "s4", "process-focusable"]
[16, "s4", "process-focusable"],
[[429, 444], "t1", "sound-name"]
],
"(method 36 crate)": [
[6, "a0", "collide-shape-moving"],
@@ -4905,5 +4907,29 @@
[360, "a0", "(pointer uint128)"]
],
"(method 13 editable-face)": [[[31, 84], "s3", "(inline-array vector)"]],
"(method 13 editable-plane)": [[[37, 90], "s3", "(inline-array vector)"]]
"(method 13 editable-plane)": [[[37, 90], "s3", "(inline-array vector)"]],
"target-standard-event-handler": [
[45, "v1", "(pointer process)"],
[93, "a0", "vector"],
[203, "a0", "process"],
[205, "v1", "(pointer process)"],
[228, "a0", "process"],
[230, "v1", "(pointer process)"],
[250, "a0", "process"],
[252, "v1", "(pointer process)"],
[343, "s5", "process"],
[345, "v1", "(pointer process)"],
[369, "a0", "process"],
[371, "v1", "(pointer process)"],
[392, "a0", "process"],
[394, "v1", "(pointer process)"],
[439, "a0", "process"],
[441, "v1", "(pointer process)"],
[461, "a0", "process"],
[463, "v1", "(pointer process)"],
[640, "a0", "process"],
[642, "v1", "(pointer process)"],
[698, "v1", "(pointer process)"],
[68, "a0", "vector"]
]
}
+1 -1
View File
@@ -38,7 +38,7 @@ class GLDisplay : public GfxDisplay {
int get_screen_rate(int vmode_idx) override;
int get_screen_vmode_count() override;
int get_monitor_count() override;
std::tuple<double, double> get_mouse_pos();
std::tuple<double, double> get_mouse_pos() override;
void set_size(int w, int h) override;
void update_fullscreen(GfxDisplayMode mode, int screen) override;
void render() override;
-1
View File
@@ -184,7 +184,6 @@ int sql_query_sync(Ptr<String> string_in) {
break;
}
std::this_thread::sleep_for(std::chrono::milliseconds(1));
/*
iVar2 = 99999;
do {
bVar1 = iVar2 != 0;
-3
View File
@@ -16,7 +16,6 @@ struct Cache {
u64 execute(void* ctxt) {
auto* c = (ExecutionContext*)ctxt;
bool bc = false;
u32 call_addr = 0;
c->load_symbol2(v1, cache.math_camera); // lw v1, *math-camera*(s7)
c->load_symbol2(a0, cache.sky_work); // lw a0, *sky-work*(s7)
c->daddiu(a0, a0, 1008); // daddiu a0, a0, 1008
@@ -293,8 +292,6 @@ struct Cache {
u64 execute(void* ctxt) {
auto* c = (ExecutionContext*)ctxt;
c->copy_vfs_from_other(&ocean_regs_vfs);
bool bc = false;
u32 call_addr = 0;
c->mov64(v1, a0); // or v1, a0, r0
get_fake_spad_addr2(t4, cache.fake_scratchpad_data, 0, c);// lui t4, 28672
c->ori(t4, t4, 12288); // ori t4, t4, 12288
-4
View File
@@ -12,7 +12,6 @@ struct Cache {
u64 execute(void* ctxt) {
auto* c = (ExecutionContext*)ctxt;
bool bc = false;
u32 call_addr = 0;
c->mtc1(f0, a2); // mtc1 f0, a2
c->cvtws(f0, f0); // cvt.w.s f0, f0
c->mfc1(t1, f0); // mfc1 t1, f0
@@ -198,7 +197,6 @@ namespace method_15_ocean {
u64 execute(void* ctxt) {
auto* c = (ExecutionContext*)ctxt;
bool bc = false;
u32 call_addr = 0;
// nop // sll r0, r0, 0
c->mov64(v1, a1); // or v1, a1, r0
c->mov64(a0, a2); // or a0, a2, r0
@@ -511,7 +509,6 @@ block_5:
goto block_13;
}
block_7:
c->lui(a0, 16288); // lui a0, 16288
c->mtc1(f0, a0); // mtc1 f0, a0
c->lwc1(f1, 4, v1); // lwc1 f1, 4(v1)
@@ -528,7 +525,6 @@ block_9:
goto block_13;
}
block_11:
c->lui(a0, 16288); // lui a0, 16288
c->mtc1(f0, a0); // mtc1 f0, a0
c->lwc1(f1, 8, v1); // lwc1 f1, 8(v1)
@@ -8,7 +8,6 @@ namespace method_18_grid_hash {
u64 execute(void* ctxt) {
auto* c = (ExecutionContext*)ctxt;
bool bc = false;
u32 call_addr = 0;
c->lh(v1, 10, a0); // lh v1, 10(a0)
c->lb(a3, 24, a0); // lb a3, 24(a0)
c->mult3(a3, a3, v1); // mult3 a3, a3, v1
@@ -49,7 +48,6 @@ u64 execute(void* ctxt) {
goto block_3;
}
block_2:
c->dsubu(a2, r0, a2); // dsubu a2, r0, a2
c->dsrav(a1, a1, a2); // dsrav a1, a1, a2
@@ -117,7 +115,6 @@ namespace method_19_grid_hash {
u64 execute(void* ctxt) {
auto* c = (ExecutionContext*)ctxt;
bool bc = false;
u32 call_addr = 0;
c->lh(v1, 10, a0); // lh v1, 10(a0)
c->lb(a3, 24, a0); // lb a3, 24(a0)
c->mult3(a3, a3, v1); // mult3 a3, a3, v1
@@ -158,7 +155,6 @@ u64 execute(void* ctxt) {
goto block_3;
}
block_2:
c->dsubu(a2, r0, a2); // dsubu a2, r0, a2
c->dsrav(a1, a1, a2); // dsrav a1, a1, a2
@@ -226,7 +222,6 @@ namespace method_20_grid_hash {
u64 execute(void* ctxt) {
auto* c = (ExecutionContext*)ctxt;
bool bc = false;
u32 call_addr = 0;
c->daddiu(sp, sp, -48); // daddiu sp, sp, -48
c->sd(ra, 0, sp); // sd ra, 0(sp)
c->sq(s5, 16, sp); // sq s5, 16(sp)
@@ -357,8 +352,6 @@ namespace Mips2C::jak2 {
namespace method_22_grid_hash {
u64 execute(void* ctxt) {
auto* c = (ExecutionContext*)ctxt;
bool bc = false;
u32 call_addr = 0;
// nop // sll r0, r0, 0
// nop // sll r0, r0, 0
c->lq(v1, 0, a2); // lq v1, 0(a2)
@@ -507,7 +500,6 @@ u64 execute(void* ctxt) {
goto block_4;
}
block_3:
c->dsubu(a3, r0, a3); // dsubu a3, r0, a3
c->dsrav(a3, t2, a3); // dsrav a3, t2, a3
@@ -647,7 +639,6 @@ u64 execute(void* ctxt) {
goto block_3;
}
block_2:
c->dsubu(t3, r0, t3); // dsubu t3, r0, t3
c->dsrav(t1, t1, t3); // dsrav t1, t1, t3
@@ -1220,7 +1211,6 @@ u64 execute(void* ctxt) {
goto block_6;
}
block_5:
c->dsubu(a1, r0, a1); // dsubu a1, r0, a1
c->dsrav(a0, a0, a1); // dsrav a0, a0, a1
@@ -1464,7 +1454,6 @@ u64 execute(void* ctxt) {
goto block_6;
}
block_5:
c->dsubu(a1, r0, a1); // dsubu a1, r0, a1
c->dsrav(a0, a0, a1); // dsrav a0, a0, a1
@@ -1738,7 +1727,6 @@ u64 execute(void* ctxt) {
goto block_3;
}
block_2:
c->dsubu(t0, r0, t0); // dsubu t0, r0, t0
c->dsrav(t0, t2, t0); // dsrav t0, t2, t0
@@ -1899,7 +1887,6 @@ u64 execute(void* ctxt) {
goto block_4;
}
block_3:
c->dsubu(a3, r0, a3); // dsubu a3, r0, a3
c->dsrav(a3, t2, a3); // dsrav a3, t2, a3
@@ -2249,7 +2236,6 @@ u64 execute(void* ctxt) {
goto block_4;
}
block_3:
c->dsubu(a1, r0, a1); // dsubu a1, r0, a1
c->dsrav(a0, a0, a1); // dsrav a0, a0, a1
@@ -2611,7 +2597,6 @@ u64 execute(void* ctxt) {
goto block_30;
}
block_12:
c->lwc1(f0, 16, gp); // lwc1 f0, 16(gp)
c->lwc1(f1, 0, t0); // lwc1 f1, 0(t0)
c->lwc1(f2, 12, t0); // lwc1 f2, 12(t0)
@@ -2629,7 +2614,6 @@ u64 execute(void* ctxt) {
goto block_30;
}
block_16:
c->lwc1(f0, 4, t0); // lwc1 f0, 4(t0)
c->lwc1(f1, 12, t0); // lwc1 f1, 12(t0)
c->adds(f0, f0, f1); // add.s f0, f0, f1
@@ -2647,7 +2631,6 @@ u64 execute(void* ctxt) {
goto block_30;
}
block_20:
c->lwc1(f0, 20, gp); // lwc1 f0, 20(gp)
c->lwc1(f1, 4, t0); // lwc1 f1, 4(t0)
c->lwc1(f2, 12, t0); // lwc1 f2, 12(t0)
@@ -2665,7 +2648,6 @@ u64 execute(void* ctxt) {
goto block_30;
}
block_24:
c->lwc1(f0, 8, t0); // lwc1 f0, 8(t0)
c->lwc1(f1, 12, t0); // lwc1 f1, 12(t0)
c->adds(f0, f0, f1); // add.s f0, f0, f1
@@ -2683,7 +2665,6 @@ u64 execute(void* ctxt) {
goto block_30;
}
block_28:
c->lwc1(f0, 24, gp); // lwc1 f0, 24(gp)
c->lwc1(f1, 8, t0); // lwc1 f1, 8(t0)
c->lwc1(f2, 12, t0); // lwc1 f2, 12(t0)
@@ -182,11 +182,11 @@
(time-of-last-debug-float time-frame :offset 5944)
(danger-mode symbol :offset 5984)
(target-attack-id uint32 :offset 5988)
(unknown-attack-id00 int32 :offset 5992)
(attacked-by-id int32 :offset 5992)
(bomb-scale float :offset 5996)
(attack-count uint64 :offset 6000)
(unknown-dword06 handle :offset 6008)
(unknown-time-frame000 time-frame :offset 6016)
(send-attack-dest handle :offset 6008)
(send-attack-time time-frame :offset 6016)
(unknown-combo-tracker00 combo-tracker :inline :offset 6032)
(unknown-time-frame21 time-frame :offset 6072)
(unknown-dword07 int64 :offset 6096)
@@ -765,14 +765,12 @@
(the-as object (deactivate self))
)
((= v1-0 'do-effect)
(when (and (nonzero? (-> self skel)) (-> self skel effect))
(let ((t9-46 (method-of-object (-> self skel effect) effect-control-method-10)))
(-> event param 0)
(-> event param 1)
-1
(the-as object (t9-46))
(if (and (nonzero? (-> self skel)) (-> self skel effect))
(the-as
object
(do-effect (-> self skel effect) (the-as symbol (-> event param 0)) (the-as float (-> event param 1)) -1)
)
)
)
)
(else
(if (-> self cur-event-hook)
+16
View File
@@ -23,6 +23,22 @@
(bit-12 12)
)
(defenum vehicle-type
:type int32
(bikea 0)
(bikeb 1)
(bikec 2)
(cara 3)
(carb 4)
(carc 5)
(guard-bike 6)
(hellcat 7)
(evan-test-bike 8)
(test-bike 9)
(test-car 10)
)
(declare-type race-mesh basic)
;; NOTE - for cam-start
@@ -60,9 +60,9 @@
(:methods
(new (symbol type process-drawable) _type_ 0)
(effect-control-method-9 (_type_) none 9)
(effect-control-method-10 () none 10)
(do-effect (_type_ symbol float int) none 10)
(effect-control-method-11 () none 11)
(effect-control-method-12 (_type_ symbol float int basic sound-name) int 12)
(play-effect-sound (_type_ symbol float int basic sound-name) int 12)
(set-channel-offset! (_type_ int) none 13)
(effect-control-method-14 () none 14)
)
+1 -1
View File
@@ -331,7 +331,7 @@
:flag-assert #xc000000a0
(:methods
(attack-info-method-9 (_type_ attack-info process-drawable process-drawable) none 9)
(attack-info-method-10 (_type_ object process-drawable process touching-shapes-entry) attack-info 10)
(compute-intersect-info (_type_ object process-drawable process touching-shapes-entry) attack-info 10)
(combine! (_type_ attack-info process-drawable) attack-info 11)
)
)
@@ -14,7 +14,7 @@
(define-extern can-play-stance-amibent? (function symbol :behavior target))
(define-extern ja-blend-eval (function int :behavior process-drawable))
(define-extern spawn-projectile (function type projectile-init-by-other-params process-tree dead-pool (pointer process)))
(define-extern target-attacked (function symbol attack-info process process (state symbol attack-info target) object :behavior target))
(define-extern target-attacked (function symbol attack-info process touching-shapes-entry (state symbol attack-info target) object :behavior target))
(define-extern target-clone-anim (state handle target))
(define-extern clone-anim (function handle symbol string none :behavior process-drawable))
(define-extern lightning-probe-callback (function lightning-tracker none))
@@ -2558,7 +2558,7 @@
event-type
(the-as attack-info (-> event param 1))
proc
(the-as process (-> event param 0))
(the-as touching-shapes-entry (-> event param 0))
target-hit
)
)
@@ -1059,20 +1059,10 @@
)
)
(spawn (-> self board part-control) (-> self control trans))
(let ((t9-26 (method-of-object (-> self skel effect) effect-control-method-10)))
'effect-board-poof
0
-1
(t9-26)
)
(when (< (-> self board shock-offset) -2048.0)
(let ((t9-27 (method-of-object (-> self skel effect) effect-control-method-10)))
'effect-board-poof
0
-1
(t9-27)
(do-effect (-> self skel effect) 'effect-board-poof 0.0 -1)
(if (< (-> self board shock-offset) -2048.0)
(do-effect (-> self skel effect) 'effect-board-poof 0.0 -1)
)
)
)
(vector-lerp! (-> self board slow-transv) (-> self board slow-transv) (-> self control transv) 0.2)
(if (< (-> self board slow-transv y) 0.0)
+1 -1
View File
@@ -3217,7 +3217,7 @@
(set! (-> obj control current-surface name) 'current)
(set! (-> obj control current-surface active-hook) nothing)
(set! (-> obj control current-surface touch-hook) nothing)
(set! (-> obj control unknown-dword06) (the-as handle #f))
(set! (-> obj control send-attack-dest) (the-as handle #f))
(dotimes (v1-84 8)
(set! (-> obj attack-info-old v1-84 attacker) (the-as handle #f))
)
@@ -710,7 +710,7 @@
((arg0 (pointer float)) (arg1 (pointer uint64)) (arg2 (pointer uint64)))
(let ((s4-0 (the-as process-focusable (combo-tracker-method-13
(-> self control unknown-combo-tracker00)
(-> self control unknown-dword06)
(-> self control send-attack-dest)
(-> self control trans)
24576.0
(-> self control c-R-w vector 2)
@@ -950,7 +950,7 @@
)
)
(let ((t1-3 (make-u128 (the-as uint #x7469682d6863) (the-as uint #x6e75702d6b616a64))))
(effect-control-method-12
(play-effect-sound
(-> self skel effect)
'punch
-1.0
+17 -1
View File
@@ -82,7 +82,6 @@
(define-extern target-hit-ground-anim (function symbol symbol none :behavior target))
(define-extern are-still? (function symbol :behavior target))
(define-extern *attack-end-mods* surface)
(define-extern target-send-attack (function process uint uint int int uint symbol :behavior target))
(define-extern target-dangerous-event-handler (function process int symbol event-message-block object :behavior target))
(define-extern target-start-attack (function none :behavior target))
(define-extern target-danger-set! (function symbol symbol none :behavior target))
@@ -160,6 +159,20 @@
(define-extern target-death (state symbol target))
(define-extern *float-mods* surface)
(define-extern target-send-attack (function process symbol touching-shapes-entry int int uint symbol :behavior target))
(define-extern target-powerup-effect (function symbol none :behavior target))
(define-extern target-load-wait (state target))
(define-extern target-board-start (state object target))
(define-extern target-pilot-start (state handle target))
(define-extern target-mech-start (state handle target))
(define-extern target-turret-get-on (state handle target))
(define-extern target-play-anim (state string handle target))
(define-extern target-edge-grab (state target))
(define-extern target-pilot-edge-grab (state target))
(define-extern target-pole-cycle (state handle target))
(define-extern target-slide-down-to-ground (state target))
;; og:ignore-form:(new 'static 'boxed-array
;; DECOMP BEGINS
@@ -251,6 +264,9 @@
target-indax-start
(target-warp-in vector vector target)
(target-warp-out vector vector target)
(target-racing-start handle)
(target-flut-start handle)
(target-tube-start handle)
)
)
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -1578,7 +1578,7 @@
)
)
(defmethod attack-info-method-10 attack-info ((obj attack-info) (arg0 object) (arg1 process-drawable) (arg2 process) (arg3 touching-shapes-entry))
(defmethod compute-intersect-info attack-info ((obj attack-info) (arg0 object) (arg1 process-drawable) (arg2 process) (arg3 touching-shapes-entry))
(when (and arg3 arg1)
(let ((a1-2 (prims-touching? arg3 (the-as collide-shape (-> arg1 root)) (the-as uint -1))))
(when a1-2
+23 -60
View File
@@ -2094,8 +2094,8 @@
)
(when (target-send-attack
proc
(the-as uint (-> self control danger-mode))
(-> event param 0)
(-> self control danger-mode)
(the-as touching-shapes-entry (-> event param 0))
(the-as int (-> self control target-attack-id))
(the-as int (-> self control attack-count))
(the-as uint (-> self control penetrate-using))
@@ -2234,12 +2234,7 @@
(when (and (= (-> (the-as fact-info-target (-> self fact-override)) eco-type) 2)
(>= (-> (the-as fact-info-target (-> self fact-override)) eco-level) 1.0)
)
(let ((s5-1 (method-of-object (-> self skel effect) effect-control-method-10)))
'group-red-eco-spinkick
(ja-frame-num 0)
38
(s5-1)
)
(do-effect (-> self skel effect) 'group-red-eco-spinkick (ja-frame-num 0) 38)
(cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1))
(talker-spawn-func (-> *talker-speech* 328) *entity-pool* (target-pos 0) (the-as region #f))
)
@@ -2355,8 +2350,8 @@
)
(let ((gp-1 (target-send-attack
proc
(the-as uint (-> self control danger-mode))
(-> event param 0)
(-> self control danger-mode)
(the-as touching-shapes-entry (-> event param 0))
(the-as int (-> self control target-attack-id))
(the-as int (-> self control attack-count))
(the-as uint (-> self control penetrate-using))
@@ -2542,12 +2537,7 @@
(when (and (= (-> (the-as fact-info-target (-> self fact-override)) eco-type) 2)
(>= (-> (the-as fact-info-target (-> self fact-override)) eco-level) 1.0)
)
(let ((s5-1 (method-of-object (-> self skel effect) effect-control-method-10)))
'group-red-eco-spinkick
(ja-frame-num 0)
22
(s5-1)
)
(do-effect (-> self skel effect) 'group-red-eco-spinkick (ja-frame-num 0) 22)
(cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1))
(talker-spawn-func (-> *talker-speech* 328) *entity-pool* (target-pos 0) (the-as region #f))
)
@@ -2748,7 +2738,7 @@
)
)
)
(effect-control-method-12
(play-effect-sound
(-> self skel effect)
'punch
-1.0
@@ -2991,12 +2981,7 @@
(when (and (= (-> (the-as fact-info-target (-> self fact-override)) eco-type) 2)
(>= (-> (the-as fact-info-target (-> self fact-override)) eco-level) 1.0)
)
(let ((s5-0 (method-of-object (-> self skel effect) effect-control-method-10)))
'group-red-eco-spinkick
(ja-frame-num 0)
31
(s5-0)
)
(do-effect (-> self skel effect) 'group-red-eco-spinkick (ja-frame-num 0) 31)
(cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1))
(talker-spawn-func (-> *talker-speech* 328) *entity-pool* (target-pos 0) (the-as region #f))
)
@@ -3291,12 +3276,7 @@
(when (and (= (-> (the-as fact-info-target (-> self fact-override)) eco-type) 2)
(>= (-> (the-as fact-info-target (-> self fact-override)) eco-level) 1.0)
)
(let ((s5-0 (method-of-object (-> self skel effect) effect-control-method-10)))
'group-red-eco-spinkick
(ja-frame-num 0)
22
(s5-0)
)
(do-effect (-> self skel effect) 'group-red-eco-spinkick (ja-frame-num 0) 22)
(cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1))
)
(if (and (= (-> self control danger-mode) 'uppercut)
@@ -3500,16 +3480,11 @@
)
)
(cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.5))
(when (and (= (-> (the-as fact-info-target (-> self fact-override)) eco-type) 2)
(>= (-> (the-as fact-info-target (-> self fact-override)) eco-level) 1.0)
)
(let ((s4-0 (method-of-object (-> self skel effect) effect-control-method-10)))
'group-red-eco-strike-ground
(ja-frame-num 0)
0
(s4-0)
(if (and (= (-> (the-as fact-info-target (-> self fact-override)) eco-type) 2)
(>= (-> (the-as fact-info-target (-> self fact-override)) eco-level) 1.0)
)
(do-effect (-> self skel effect) 'group-red-eco-strike-ground (ja-frame-num 0) 0)
)
)
(let ((v1-56 (process-spawn touch-tracker :init touch-tracker-init (-> self control trans) #x45800000 30 :to self))
)
(send-event
@@ -3530,17 +3505,11 @@
(when (and (= (-> (the-as fact-info-target (-> self fact-override)) eco-type) 2)
(>= (-> (the-as fact-info-target (-> self fact-override)) eco-level) 1.0)
)
(let* ((gp-2 (-> self skel effect))
(s5-2 (method-of-object gp-2 effect-control-method-10))
)
'group-red-eco-spinkick
(ja-frame-num 0)
(if (rand-vu-percent? 0.5)
22
18
)
(s5-2)
)
(do-effect (-> self skel effect) 'group-red-eco-spinkick (ja-frame-num 0) (if (rand-vu-percent? 0.5)
22
18
)
)
(cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1))
)
(when (and (not (-> self control danger-mode))
@@ -3753,17 +3722,11 @@
)
(< (- (-> self clock frame-counter) (-> self state-time)) (seconds 0.25))
)
(let* ((gp-0 (-> self skel effect))
(s5-0 (method-of-object gp-0 effect-control-method-10))
)
'group-red-eco-spinkick
(ja-frame-num 0)
(if (rand-vu-percent? 0.5)
22
18
)
(s5-0)
)
(do-effect (-> self skel effect) 'group-red-eco-spinkick (ja-frame-num 0) (if (rand-vu-percent? 0.5)
22
18
)
)
(cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1))
)
(let ((v1-37 (ja-group)))
+1 -1
View File
@@ -481,7 +481,7 @@
(defmacro process->ppointer (proc)
"safely get a (pointer process) from a process, returning #f if invalid."
`(let ((the-proc ,proc))
`(let ((the-proc (the-as process ,proc)))
(if the-proc (-> the-proc ppointer))
)
)
+2 -2
View File
@@ -116,8 +116,8 @@
)
(defmacro process->ppointer (proc)
;"safely get a (pointer process) from a process, returning #f if invalid."
`(let ((the-proc ,proc))
"safely get a (pointer process) from a process, returning #f if invalid."
`(let ((the-proc (the-as process ,proc)))
(if the-proc (-> the-proc ppointer))
)
)
+3 -3
View File
@@ -177,11 +177,11 @@
(time-of-last-debug-float time-frame :offset 5944)
(danger-mode symbol :offset 5984)
(target-attack-id uint32 :offset 5988)
(unknown-attack-id00 int32 :offset 5992)
(attacked-by-id int32 :offset 5992)
(bomb-scale float :offset 5996)
(attack-count uint64 :offset 6000)
(unknown-dword06 handle :offset 6008)
(unknown-time-frame000 time-frame :offset 6016)
(send-attack-dest handle :offset 6008)
(send-attack-time time-frame :offset 6016)
(unknown-combo-tracker00 combo-tracker :inline :offset 6032)
(unknown-time-frame21 time-frame :offset 6072)
(unknown-dword07 int64 :offset 6096)
+5 -7
View File
@@ -1049,14 +1049,12 @@
(the-as object (deactivate self))
)
((= v1-0 'do-effect)
(when (and (nonzero? (-> self skel)) (-> self skel effect))
(let ((t9-46 (method-of-object (-> self skel effect) effect-control-method-10)))
(-> event param 0)
(-> event param 1)
-1
(the-as object (t9-46))
(if (and (nonzero? (-> self skel)) (-> self skel effect))
(the-as
object
(do-effect (-> self skel effect) (the-as symbol (-> event param 0)) (the-as float (-> event param 1)) -1)
)
)
)
)
(else
(if (-> self cur-event-hook)
+9 -2
View File
@@ -1,5 +1,7 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type effect-control
(deftype effect-control (basic)
((process process-drawable :offset-assert 4)
(flags effect-control-flag :offset-assert 8)
@@ -16,14 +18,15 @@
(:methods
(new (symbol type process-drawable) _type_ 0)
(effect-control-method-9 (_type_) none 9)
(effect-control-method-10 () none 10)
(do-effect (_type_ symbol float int) none 10)
(effect-control-method-11 () none 11)
(effect-control-method-12 (_type_ symbol float int basic sound-name) int 12)
(play-effect-sound (_type_ symbol float int basic sound-name) int 12)
(set-channel-offset! (_type_ int) none 13)
(effect-control-method-14 () none 14)
)
)
;; definition for method 3 of type effect-control
(defmethod inspect effect-control ((obj effect-control))
(when (not obj)
(set! obj obj)
@@ -42,6 +45,7 @@
obj
)
;; definition for method 0 of type effect-control
(defmethod new effect-control ((allocation symbol) (type-to-make type) (arg0 process-drawable))
(cond
((res-lump-struct (-> arg0 draw jgeo extra) 'effect-name structure)
@@ -57,10 +61,13 @@
)
)
;; definition for method 13 of type effect-control
;; WARN: Return type mismatch int vs none.
(defmethod set-channel-offset! effect-control ((obj effect-control) (arg0 int))
(set! (-> obj channel-offset) arg0)
0
(none)
)
;; failed to figure out what this is:
0
+1 -1
View File
@@ -306,7 +306,7 @@
:flag-assert #xc000000a0
(:methods
(attack-info-method-9 (_type_ attack-info process-drawable process-drawable) none 9)
(attack-info-method-10 (_type_ object process-drawable process touching-shapes-entry) attack-info 10)
(compute-intersect-info (_type_ object process-drawable process touching-shapes-entry) attack-info 10)
(combine! (_type_ attack-info process-drawable) attack-info 11)
)
)
+1 -1
View File
@@ -2559,7 +2559,7 @@
event-type
(the-as attack-info (-> event param 1))
proc
(the-as process (-> event param 0))
(the-as touching-shapes-entry (-> event param 0))
target-hit
)
)
+3 -13
View File
@@ -1043,20 +1043,10 @@
)
)
(spawn (-> self board part-control) (-> self control trans))
(let ((t9-26 (method-of-object (-> self skel effect) effect-control-method-10)))
'effect-board-poof
0
-1
(t9-26)
)
(when (< (-> self board shock-offset) -2048.0)
(let ((t9-27 (method-of-object (-> self skel effect) effect-control-method-10)))
'effect-board-poof
0
-1
(t9-27)
(do-effect (-> self skel effect) 'effect-board-poof 0.0 -1)
(if (< (-> self board shock-offset) -2048.0)
(do-effect (-> self skel effect) 'effect-board-poof 0.0 -1)
)
)
)
(vector-lerp! (-> self board slow-transv) (-> self board slow-transv) (-> self control transv) 0.2)
(if (< (-> self board slow-transv y) 0.0)
+1 -1
View File
@@ -3278,7 +3278,7 @@
(set! (-> obj control current-surface name) 'current)
(set! (-> obj control current-surface active-hook) nothing)
(set! (-> obj control current-surface touch-hook) nothing)
(set! (-> obj control unknown-dword06) (the-as handle #f))
(set! (-> obj control send-attack-dest) (the-as handle #f))
(dotimes (v1-84 8)
(set! (-> obj attack-info-old v1-84 attacker) (the-as handle #f))
)
+2 -2
View File
@@ -710,7 +710,7 @@
((arg0 (pointer float)) (arg1 (pointer uint64)) (arg2 (pointer uint64)))
(let ((s4-0 (the-as process-focusable (combo-tracker-method-13
(-> self control unknown-combo-tracker00)
(-> self control unknown-dword06)
(-> self control send-attack-dest)
(-> self control trans)
24576.0
(-> self control c-R-w vector 2)
@@ -950,7 +950,7 @@
)
)
(let ((t1-3 (make-u128 (the-as uint #x7469682d6863) (the-as uint #x6e75702d6b616a64))))
(effect-control-method-12
(play-effect-sound
(-> self skel effect)
'punch
-1.0
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -1743,7 +1743,7 @@
)
;; definition for method 10 of type attack-info
(defmethod attack-info-method-10 attack-info ((obj attack-info) (arg0 object) (arg1 process-drawable) (arg2 process) (arg3 touching-shapes-entry))
(defmethod compute-intersect-info attack-info ((obj attack-info) (arg0 object) (arg1 process-drawable) (arg2 process) (arg3 touching-shapes-entry))
(when (and arg3 arg1)
(let ((a1-2 (prims-touching? arg3 (the-as collide-shape (-> arg1 root)) (the-as uint -1))))
(when a1-2
+23 -60
View File
@@ -2118,8 +2118,8 @@
)
(when (target-send-attack
proc
(the-as uint (-> self control danger-mode))
(-> event param 0)
(-> self control danger-mode)
(the-as touching-shapes-entry (-> event param 0))
(the-as int (-> self control target-attack-id))
(the-as int (-> self control attack-count))
(the-as uint (-> self control penetrate-using))
@@ -2258,12 +2258,7 @@
(when (and (= (-> (the-as fact-info-target (-> self fact-override)) eco-type) 2)
(>= (-> (the-as fact-info-target (-> self fact-override)) eco-level) 1.0)
)
(let ((s5-1 (method-of-object (-> self skel effect) effect-control-method-10)))
'group-red-eco-spinkick
(ja-frame-num 0)
38
(s5-1)
)
(do-effect (-> self skel effect) 'group-red-eco-spinkick (ja-frame-num 0) 38)
(cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1))
(talker-spawn-func (-> *talker-speech* 328) *entity-pool* (target-pos 0) (the-as region #f))
)
@@ -2381,8 +2376,8 @@
)
(let ((gp-1 (target-send-attack
proc
(the-as uint (-> self control danger-mode))
(-> event param 0)
(-> self control danger-mode)
(the-as touching-shapes-entry (-> event param 0))
(the-as int (-> self control target-attack-id))
(the-as int (-> self control attack-count))
(the-as uint (-> self control penetrate-using))
@@ -2568,12 +2563,7 @@
(when (and (= (-> (the-as fact-info-target (-> self fact-override)) eco-type) 2)
(>= (-> (the-as fact-info-target (-> self fact-override)) eco-level) 1.0)
)
(let ((s5-1 (method-of-object (-> self skel effect) effect-control-method-10)))
'group-red-eco-spinkick
(ja-frame-num 0)
22
(s5-1)
)
(do-effect (-> self skel effect) 'group-red-eco-spinkick (ja-frame-num 0) 22)
(cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1))
(talker-spawn-func (-> *talker-speech* 328) *entity-pool* (target-pos 0) (the-as region #f))
)
@@ -2774,7 +2764,7 @@
)
)
)
(effect-control-method-12
(play-effect-sound
(-> self skel effect)
'punch
-1.0
@@ -3019,12 +3009,7 @@
(when (and (= (-> (the-as fact-info-target (-> self fact-override)) eco-type) 2)
(>= (-> (the-as fact-info-target (-> self fact-override)) eco-level) 1.0)
)
(let ((s5-0 (method-of-object (-> self skel effect) effect-control-method-10)))
'group-red-eco-spinkick
(ja-frame-num 0)
31
(s5-0)
)
(do-effect (-> self skel effect) 'group-red-eco-spinkick (ja-frame-num 0) 31)
(cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1))
(talker-spawn-func (-> *talker-speech* 328) *entity-pool* (target-pos 0) (the-as region #f))
)
@@ -3323,12 +3308,7 @@
(when (and (= (-> (the-as fact-info-target (-> self fact-override)) eco-type) 2)
(>= (-> (the-as fact-info-target (-> self fact-override)) eco-level) 1.0)
)
(let ((s5-0 (method-of-object (-> self skel effect) effect-control-method-10)))
'group-red-eco-spinkick
(ja-frame-num 0)
22
(s5-0)
)
(do-effect (-> self skel effect) 'group-red-eco-spinkick (ja-frame-num 0) 22)
(cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1))
)
(if (and (= (-> self control danger-mode) 'uppercut)
@@ -3533,16 +3513,11 @@
)
)
(cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.5))
(when (and (= (-> (the-as fact-info-target (-> self fact-override)) eco-type) 2)
(>= (-> (the-as fact-info-target (-> self fact-override)) eco-level) 1.0)
)
(let ((s4-0 (method-of-object (-> self skel effect) effect-control-method-10)))
'group-red-eco-strike-ground
(ja-frame-num 0)
0
(s4-0)
(if (and (= (-> (the-as fact-info-target (-> self fact-override)) eco-type) 2)
(>= (-> (the-as fact-info-target (-> self fact-override)) eco-level) 1.0)
)
(do-effect (-> self skel effect) 'group-red-eco-strike-ground (ja-frame-num 0) 0)
)
)
(let ((v1-56 (process-spawn touch-tracker :init touch-tracker-init (-> self control trans) #x45800000 30 :to self))
)
(send-event
@@ -3563,17 +3538,11 @@
(when (and (= (-> (the-as fact-info-target (-> self fact-override)) eco-type) 2)
(>= (-> (the-as fact-info-target (-> self fact-override)) eco-level) 1.0)
)
(let* ((gp-2 (-> self skel effect))
(s5-2 (method-of-object gp-2 effect-control-method-10))
)
'group-red-eco-spinkick
(ja-frame-num 0)
(if (rand-vu-percent? 0.5)
22
18
)
(s5-2)
)
(do-effect (-> self skel effect) 'group-red-eco-spinkick (ja-frame-num 0) (if (rand-vu-percent? 0.5)
22
18
)
)
(cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1))
)
(when (and (not (-> self control danger-mode))
@@ -3787,17 +3756,11 @@
)
(< (- (-> self clock frame-counter) (-> self state-time)) (seconds 0.25))
)
(let* ((gp-0 (-> self skel effect))
(s5-0 (method-of-object gp-0 effect-control-method-10))
)
'group-red-eco-spinkick
(ja-frame-num 0)
(if (rand-vu-percent? 0.5)
22
18
)
(s5-0)
)
(do-effect (-> self skel effect) 'group-red-eco-spinkick (ja-frame-num 0) (if (rand-vu-percent? 0.5)
22
18
)
)
(cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1))
)
(let ((v1-37 (ja-group)))
+3 -1
View File
@@ -191,7 +191,9 @@
"(method 10 joint-control)",
"entity-lookup-part-group",
"process-drawable-shock-skel-effect" // stack array
"process-drawable-shock-skel-effect", // stack array
"target-send-attack"
],
"skip_compile_states": {