From 57508009dfbc77a728982a66819d0db2295148b7 Mon Sep 17 00:00:00 2001 From: Tyler Wilding Date: Mon, 17 Apr 2023 21:26:46 -0500 Subject: [PATCH] d/jak2: decompile missing function in `whack` (#2521) --- decompiler/config/jak2/all-types.gc | 2 +- decompiler/config/jak2/ntsc_v1/hacks.jsonc | 1 - .../config/jak2/ntsc_v1/type_casts.jsonc | 11 +- goal_src/jak2/levels/hiphog/whack.gc | 54 +- .../reference/jak2/levels/hiphog/whack_REF.gc | 2959 +++++++++++++++++ test/offline/config/jak2/config.jsonc | 1 + 6 files changed, 3012 insertions(+), 16 deletions(-) create mode 100644 test/decompiler/reference/jak2/levels/hiphog/whack_REF.gc diff --git a/decompiler/config/jak2/all-types.gc b/decompiler/config/jak2/all-types.gc index 24fbcc8ba2..dd617b8ebe 100644 --- a/decompiler/config/jak2/all-types.gc +++ b/decompiler/config/jak2/all-types.gc @@ -43579,7 +43579,7 @@ ) ) -(define-extern birth-func-whack-score (function int sparticle-cpuinfo sparticle-launchinfo none)) +(define-extern birth-func-whack-score (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d sparticle-launcher sparticle-launch-state none)) (define-extern *mole-data* (array (array hip-mole-event))) (define-extern hip-mole-init (function handle int none :behavior hip-mole)) (define-extern whack-a-metal-init (function entity-actor none :behavior whack-a-metal)) diff --git a/decompiler/config/jak2/ntsc_v1/hacks.jsonc b/decompiler/config/jak2/ntsc_v1/hacks.jsonc index c506a63b2e..622ee21952 100644 --- a/decompiler/config/jak2/ntsc_v1/hacks.jsonc +++ b/decompiler/config/jak2/ntsc_v1/hacks.jsonc @@ -741,7 +741,6 @@ "generic-warp-dest", "generic-warp-envmap-dest", "generic-no-light-proc" - ], "mips2c_jump_table_functions": {}, diff --git a/decompiler/config/jak2/ntsc_v1/type_casts.jsonc b/decompiler/config/jak2/ntsc_v1/type_casts.jsonc index 7c92d02b09..ef55884b9b 100644 --- a/decompiler/config/jak2/ntsc_v1/type_casts.jsonc +++ b/decompiler/config/jak2/ntsc_v1/type_casts.jsonc @@ -9859,7 +9859,6 @@ ], "generic-vu1-init-buf": [[[24, 32], "v1", "dma-packet"]], "generic-vu1-init-buf-special": [[[27, 37], "v1", "dma-packet"]], - "(method 11 drill-wall)": [ [159, "v0", "(pointer actor-group)"], ["_stack_", 16, "res-tag"] @@ -11269,18 +11268,15 @@ [78, "v1", "generic-work"], [80, "v1", "generic-work"], [95, "a0", "generic-work"], - [143, "v1", "generic-work"], [145, "v1", "generic-work"], [147, "v1", "generic-work"] ], - "generic-work-init": [ [4, "a0", "generic-work"], [[9, 19], "a0", "generic-work"], [23, "a1", "generic-work"] ], - "generic-initialize-without-sync": [ [8, "a0", "generic-work"], [21, "a0", "generic-work"] @@ -11293,9 +11289,6 @@ [1, "v1", "generic-work"], [4, "v1", "generic-work"] ], - "generic-warp-source": [ - [2, "at", "generic-work"] - ] - - + "generic-warp-source": [[2, "at", "generic-work"]], + "birth-func-whack-score": [[[0, 29], "v1", "(array int32)"]] } diff --git a/goal_src/jak2/levels/hiphog/whack.gc b/goal_src/jak2/levels/hiphog/whack.gc index 7fa2b6bbfb..75cb3cd8d0 100644 --- a/goal_src/jak2/levels/hiphog/whack.gc +++ b/goal_src/jak2/levels/hiphog/whack.gc @@ -114,6 +114,50 @@ ) ) +(defun birth-func-whack-score ((arg0 sparticle-system) + (arg1 sparticle-cpuinfo) + (arg2 sprite-vec-data-3d) + (arg3 sparticle-launcher) + (arg4 sparticle-launch-state) + ) + (let ((v1-0 (the-as (array int32) (-> arg1 user-float)))) + (when (nonzero? v1-0) + (+ (-> v1-0 length) -3) + (let* ((a0-4 (-> v1-0 0)) + (v1-2 (-> v1-0 (+ (mod + (the int (/ (-> *game-info* score) (cond + ((= a0-4 1) + 10.0 + ) + ((= a0-4 2) + 100.0 + ) + ((= a0-4 3) + 1000.0 + ) + (else + 1.0 + ) + ) + ) + ) + 10 + ) + 3 + ) + ) + ) + ) + (if (nonzero? v1-2) + (particle-adgif-callback (-> arg1 adgif) (the-as texture-id v1-2)) + ) + ) + ) + ) + 0 + (none) + ) + (defpart 3337 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x49 :page #x3e6)) (sp-func spt-birth-func 'birth-func-whack-score) @@ -1390,14 +1434,14 @@ ) ) -(defskelgroup skel-hip-mole hip-mole 0 3 - ((1 (meters 999999))) +(defskelgroup skel-hip-mole hip-mole hip-mole-lod0-jg hip-mole-up-ja + ((hip-mole-lod0-mg (meters 999999))) :bounds (static-spherem 0 1 0 1.5) :origin-joint-index 3 ) -(defskelgroup skel-big-bopper big-bopper 0 2 - ((1 (meters 999999))) +(defskelgroup skel-big-bopper big-bopper big-bopper-lod0-jg big-bopper-idle-ja + ((big-bopper-lod0-mg (meters 999999))) :bounds (static-spherem 0 0 0 2) :origin-joint-index 3 ) @@ -2115,7 +2159,7 @@ ) (send-event (handle->process (-> self hud-goal)) 'hide-and-die) (remove-setting! 'entity-name) - (if (and *target* (logtest? (-> *target* focus-status) (focus-status grabbed))) + (if (and *target* (focus-test? *target* grabbed)) (process-release? *target*) ) (send-event *target* 'draw #t) diff --git a/test/decompiler/reference/jak2/levels/hiphog/whack_REF.gc b/test/decompiler/reference/jak2/levels/hiphog/whack_REF.gc new file mode 100644 index 0000000000..d545a91382 --- /dev/null +++ b/test/decompiler/reference/jak2/levels/hiphog/whack_REF.gc @@ -0,0 +1,2959 @@ +;;-*-Lisp-*- +(in-package goal) + +;; failed to figure out what this is: +(defpartgroup group-whack-scoreboard-misses + :id 765 + :duration (seconds 0.017) + :linger-duration (seconds 2) + :flags (use-local-clock) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 3334 :flags (is-3d launch-asap bit6 bit7) :period 80 :length 9) (sp-item 3335 :flags (bit6))) + ) + +;; failed to figure out what this is: +(defpart 3335 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 1.75)) + (sp-flt spt-rot-x 204.8) + (sp-flt spt-scale-y (meters 2.5)) + (sp-rnd-flt spt-r 64.0 64.0 1.0) + (sp-flt spt-g 255.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 12.0 4.0 1.0) + (sp-flt spt-omega 248627.2) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 1024.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 3334 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x1b :page #x3d3)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters -0.01)) + (sp-flt spt-z (meters 0.01)) + (sp-flt spt-scale-x (meters 1.03)) + (sp-flt spt-rot-x 16520.533) + (sp-flt spt-scale-y (meters 0.603)) + (sp-flt spt-r 255.0) + (sp-flt spt-g 0.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 48.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 left-multiply-quat) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 + 5 + 1 + 0 + #x3e605800 + #x3e605900 + #x3e605a00 + #x3e605b00 + #x3e605c00 + #x3e605d00 + #x3e605e00 + #x3e605f00 + #x3e606000 + #x3e606100 + #x3e606200 + #x3e605300 + #x3e605400 + #x3e605500 + #x3e605600 + #x3e605700 + ) + ) + (sp-func spt-func 'sparticle-texture-animate) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 3336 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x63 :page #x3e6)) + (sp-flt spt-num 1.0) + (sp-rnd-int-flt spt-x (meters -0.3) 4 614.4) + (sp-rnd-int-flt spt-y (meters -0.225) 3 614.4) + (sp-flt spt-z (meters 0.01)) + (sp-flt spt-scale-x (meters 0.125)) + (sp-flt spt-rot-x 16384.0) + (sp-flt spt-rot-y (degrees 0.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 64.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 255.0 1.0) + (sp-flt spt-a 255.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-flt spt-userdata 4096.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-whack-scoreboard-points + :id 766 + :duration (seconds 0.017) + :linger-duration (seconds 2) + :flags (use-local-clock) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 3337 :flags (is-3d bit7)) + (sp-item 3338 :flags (is-3d bit7)) + (sp-item 3339 :flags (is-3d bit7)) + (sp-item 3340 :flags (is-3d bit7)) + (sp-item 3334 :flags (is-3d launch-asap bit6 bit7) :period 80 :length 9) + (sp-item 3335 :flags (bit6)) + ) + ) + +;; definition for function birth-func-whack-score +;; WARN: Return type mismatch int vs none. +(defun birth-func-whack-score ((arg0 sparticle-system) + (arg1 sparticle-cpuinfo) + (arg2 sprite-vec-data-3d) + (arg3 sparticle-launcher) + (arg4 sparticle-launch-state) + ) + (let ((v1-0 (the-as (array int32) (-> arg1 user-float)))) + (when (nonzero? v1-0) + (+ (-> v1-0 length) -3) + (let* ((a0-4 (-> v1-0 0)) + (v1-2 (-> v1-0 (+ (mod + (the int (/ (-> *game-info* score) (cond + ((= a0-4 1) + 10.0 + ) + ((= a0-4 2) + 100.0 + ) + ((= a0-4 3) + 1000.0 + ) + (else + 1.0 + ) + ) + ) + ) + 10 + ) + 3 + ) + ) + ) + ) + (if (nonzero? v1-2) + (particle-adgif-callback (-> arg1 adgif) (the-as texture-id v1-2)) + ) + ) + ) + ) + 0 + (none) + ) + +;; failed to figure out what this is: +(defpart 3337 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x49 :page #x3e6)) + (sp-func spt-birth-func 'birth-func-whack-score) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.36)) + (sp-flt spt-z (meters 0.01)) + (sp-flt spt-scale-x (meters 0.2)) + (sp-flt spt-rot-x 16384.0) + (sp-flt spt-rot-y (degrees 0.0)) + (sp-flt spt-scale-y (meters 0.4)) + (sp-flt spt-r 64.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 255.0 1.0) + (sp-flt spt-a 255.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 + 3 + 0 + 0 + #x3e604900 + #x3e604a00 + #x3e604b00 + #x3e604c00 + #x3e604d00 + #x3e604e00 + #x3e604f00 + #x3e605000 + #x3e605100 + #x3e605200 + ) + ) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 3338 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x49 :page #x3e6)) + (sp-func spt-birth-func 'birth-func-whack-score) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.12)) + (sp-flt spt-z (meters 0.01)) + (sp-flt spt-scale-x (meters 0.2)) + (sp-flt spt-rot-x 16384.0) + (sp-flt spt-rot-y (degrees 0.0)) + (sp-flt spt-scale-y (meters 0.4)) + (sp-flt spt-r 64.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 255.0 1.0) + (sp-flt spt-a 255.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 + 2 + 0 + 0 + #x3e604900 + #x3e604a00 + #x3e604b00 + #x3e604c00 + #x3e604d00 + #x3e604e00 + #x3e604f00 + #x3e605000 + #x3e605100 + #x3e605200 + ) + ) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 3339 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x49 :page #x3e6)) + (sp-func spt-birth-func 'birth-func-whack-score) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.12)) + (sp-flt spt-z (meters 0.01)) + (sp-flt spt-scale-x (meters 0.2)) + (sp-flt spt-rot-x 16384.0) + (sp-flt spt-rot-y (degrees 0.0)) + (sp-flt spt-scale-y (meters 0.4)) + (sp-flt spt-r 64.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 255.0 1.0) + (sp-flt spt-a 255.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 + 1 + 0 + 0 + #x3e604900 + #x3e604a00 + #x3e604b00 + #x3e604c00 + #x3e604d00 + #x3e604e00 + #x3e604f00 + #x3e605000 + #x3e605100 + #x3e605200 + ) + ) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 3340 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x49 :page #x3e6)) + (sp-func spt-birth-func 'birth-func-whack-score) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.36)) + (sp-flt spt-z (meters 0.01)) + (sp-flt spt-scale-x (meters 0.2)) + (sp-flt spt-rot-x 16384.0) + (sp-flt spt-rot-y (degrees 0.0)) + (sp-flt spt-scale-y (meters 0.4)) + (sp-flt spt-r 64.0) + (sp-flt spt-g 255.0) + (sp-rnd-flt spt-b 0.0 255.0 1.0) + (sp-flt spt-a 255.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 + 0 + 0 + 0 + #x3e604900 + #x3e604a00 + #x3e604b00 + #x3e604c00 + #x3e604d00 + #x3e604e00 + #x3e604f00 + #x3e605000 + #x3e605100 + #x3e605200 + ) + ) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-whack-miss + :id 767 + :duration (seconds 0.067) + :linger-duration (seconds 2) + :flags (use-local-clock) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 3341 :flags (bit7) :period 150 :length 5)) + ) + +;; failed to figure out what this is: +(defpart 3341 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :page #xc)) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 3600.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 0.0 64.0 1.0) + (sp-copy-from-other spt-g -1) + (sp-copy-from-other spt-b -1) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.16) + (sp-flt spt-accel-y -1.3653333) + (sp-rnd-flt spt-friction 0.8 0.12 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 3600.0) 1.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-whack-hit + :id 768 + :duration (seconds 0.067) + :linger-duration (seconds 2) + :flags (use-local-clock) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 3342 :flags (bit7) :period 150 :length 10) + (sp-item 3343 :flags (bit7) :period 150 :length 10) + (sp-item 3344 :flags (is-3d bit7) :period 150 :length 15) + (sp-item 3345 :flags (is-3d bit7) :period 150 :length 15) + (sp-item 3346 :flags (bit7) :period 150 :length 15) + (sp-item 3347 :period 150 :length 5) + ) + ) + +;; failed to figure out what this is: +(defpart 3347 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 0)) + (sp-flt spt-scale-x (meters 1)) + (sp-flt spt-rot-x 122.88) + (sp-flt spt-scale-y (meters 3)) + (sp-rnd-flt spt-r 32.0 64.0 1.0) + (sp-flt spt-g 0.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 64.0) + (sp-flt spt-scalevel-x (meters 0.04)) + (sp-flt spt-fade-a -2.56) + (sp-int spt-timer 25) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 4096.0) + ) + ) + +;; failed to figure out what this is: +(defpart 3342 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :page #xc)) + (sp-flt spt-num 32.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 3600.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 0.0 64.0 1.0) + (sp-copy-from-other spt-g -1) + (sp-copy-from-other spt-b -1) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.16) + (sp-flt spt-accel-y -1.3653333) + (sp-rnd-flt spt-friction 0.8 0.12 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 3600.0) 1.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 3343 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :page #xc)) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-scale-x (meters 0.25) (meters 0.125) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 3600.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 0.0 64.0 1.0) + (sp-copy-from-other spt-g -1) + (sp-copy-from-other spt-b -1) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.02) 1.0) + (sp-flt spt-scalevel-x (meters 0.0016666667)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.21333334) + (sp-flt spt-accel-y -1.3653333) + (sp-rnd-flt spt-friction 0.9 0.02 1.0) + (sp-int spt-timer 150) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 3600.0) 1.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpart 3344 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x47 :page #x3e6)) + (sp-func spt-birth-func 'birth-func-texture-group) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-scale-x (meters 0.025) (meters 0.075) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 32.0) + (sp-rnd-flt spt-g 32.0 16.0 1.0) + (sp-rnd-flt spt-b 48.0 16.0 1.0) + (sp-flt spt-a 128.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.04) 1.0) + (sp-rnd-flt spt-rotvel-x (degrees -4.8) (degrees 9.6) 1.0) + (sp-rnd-flt spt-rotvel-y (degrees -4.8) (degrees 9.6) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -4.8) (degrees 9.6) 1.0) + (sp-rnd-flt spt-accel-y -13.653334 6.826667 1.0) + (sp-rnd-flt spt-friction 0.92 0.04 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags sp-cpuinfo-flag-2) + (new 'static 'sp-field-init-spec + :field (sp-field-id spt-userdata) + :flags (sp-flag plain-v2) + :object (new 'static 'boxed-array :type int32 40 1 0 #x3e604700 #x3e604600 #xb09b00) + ) + (sp-int-plain-rnd spt-next-time 25 149 1) + (sp-launcher-by-id spt-next-launcher 3348) + (sp-rnd-flt spt-conerot-x (degrees 40.0) (degrees 40.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 3600.0) 1.0) + (sp-flt spt-rotate-y (degrees 0.0)) + (sp-rnd-flt spt-conerot-radius (meters 0) (meters 0.1) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpart 3345 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x9b :page #xb)) + (sp-func spt-birth-func 'birth-func-texture-group) + (sp-flt spt-num 4.0) + (sp-rnd-flt spt-scale-x (meters 0.025) (meters 0.175) 1.0) + (sp-rnd-flt spt-scale-y (meters 0.025) (meters 0.175) 1.0) + (sp-rnd-flt spt-r 16.0 8.0 1.0) + (sp-copy-from-other spt-g -1) + (sp-rnd-flt spt-b 24.0 8.0 1.0) + (sp-flt spt-a 128.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.04) 1.0) + (sp-rnd-flt spt-rotvel-x (degrees -4.8) (degrees 9.6) 1.0) + (sp-rnd-flt spt-rotvel-y (degrees -4.8) (degrees 9.6) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -4.8) (degrees 9.6) 1.0) + (sp-rnd-flt spt-accel-y -13.653334 6.826667 1.0) + (sp-rnd-flt spt-friction 0.92 0.04 1.0) + (sp-int spt-timer 300) + (sp-int-plain-rnd spt-next-time 25 149 1) + (sp-launcher-by-id spt-next-launcher 3349) + (sp-rnd-flt spt-conerot-x (degrees 40.0) (degrees 40.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 3600.0) 1.0) + (sp-flt spt-rotate-y (degrees 0.0)) + (sp-rnd-flt spt-conerot-radius (meters 0) (meters 0.1) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpart 3349 + :init-specs ((sp-rnd-flt spt-r 32.0 16.0 1.0) + (sp-copy-from-other spt-g -1) + (sp-flt spt-b 64.0) + (sp-rnd-flt spt-vel-y (meters 0.0033333334) (meters 0.013333334) 1.0) + (sp-int-plain-rnd spt-next-time 5 14 1) + (sp-launcher-by-id spt-next-launcher 3350) + ) + ) + +;; failed to figure out what this is: +(defpart 3350 + :init-specs ((sp-rnd-flt spt-r 16.0 8.0 1.0) (sp-copy-from-other spt-g -1) (sp-rnd-flt spt-b 24.0 8.0 1.0)) + ) + +;; failed to figure out what this is: +(defpart 3346 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x48 :page #x3e6)) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-scale-x (meters 0.025) (meters 0.025) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 32.0) + (sp-rnd-flt spt-g 32.0 16.0 1.0) + (sp-rnd-flt spt-b 48.0 16.0 1.0) + (sp-flt spt-a 128.0) + (sp-rnd-flt spt-omega 1.024 1.024 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.04) 1.0) + (sp-rnd-flt spt-accel-y -13.653334 6.826667 1.0) + (sp-rnd-flt spt-friction 0.92 0.04 1.0) + (sp-int spt-timer 150) + (sp-cpuinfo-flags sp-cpuinfo-flag-2) + (sp-func spt-func 'sparticle-motion-blur) + (sp-int-plain-rnd spt-next-time 25 149 1) + (sp-launcher-by-id spt-next-launcher 3348) + (sp-rnd-flt spt-conerot-x (degrees 40.0) (degrees 40.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 3600.0) 1.0) + (sp-flt spt-rotate-y (degrees 0.0)) + (sp-rnd-flt spt-conerot-radius (meters 0) (meters 0.1) 1.0) + ) + ) + +;; failed to figure out what this is: +(defpart 3348 + :init-specs ((sp-rnd-flt spt-r 64.0 32.0 1.0) + (sp-rnd-flt spt-g 96.0 32.0 1.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-vel-y (meters 0.0033333334) (meters 0.013333334) 1.0) + (sp-int-plain-rnd spt-next-time 5 14 1) + (sp-launcher-by-id spt-next-launcher 3351) + ) + ) + +;; failed to figure out what this is: +(defpart 3351 + :init-specs ((sp-flt spt-r 32.0) (sp-rnd-flt spt-g 32.0 16.0 1.0) (sp-rnd-flt spt-b 48.0 16.0 1.0)) + ) + +;; failed to figure out what this is: +(defpartgroup group-whack-shock + :id 769 + :duration (seconds 0.1) + :linger-duration (seconds 2) + :flags (use-local-clock) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 3352 :flags (launch-asap bit6) :period 150 :length 5) + (sp-item 3353 :flags (launch-asap bit6) :period 150 :length 5) + (sp-item 3354 :flags (bit7) :period 150 :length 10) + ) + ) + +;; failed to figure out what this is: +(defpart 3352 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 0)) + (sp-flt spt-scale-x (meters 3)) + (sp-flt spt-rot-x 122.88) + (sp-flt spt-scale-y (meters 5)) + (sp-flt spt-r 255.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 64.0) + (sp-flt spt-scalevel-x (meters 0.04)) + (sp-flt spt-fade-a -1.28) + (sp-int spt-timer 50) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 4096.0) + ) + ) + +;; failed to figure out what this is: +(defpart 3353 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 0)) + (sp-flt spt-scale-x (meters 1)) + (sp-flt spt-rot-x 122.88) + (sp-flt spt-scale-y (meters 2)) + (sp-flt spt-r 255.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 255.0) + (sp-flt spt-scalevel-x (meters 0.00625)) + (sp-flt spt-scalevel-y (meters 0.01875)) + (sp-flt spt-fade-g 0.8) + (sp-flt spt-fade-b -1.6) + (sp-flt spt-fade-a -3.1875) + (sp-int spt-timer 160) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow) + (sp-flt spt-userdata 4096.0) + ) + ) + +;; failed to figure out what this is: +(defpart 3354 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc)) + (sp-flt spt-num 32.0) + (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.05) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 3600.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 32.0 96.0 1.0) + (sp-flt spt-omega 4.096) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.02) 1.0) + (sp-flt spt-scalevel-x (meters -0.0018750001)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-friction 0.85 0.02 1.0) + (sp-int spt-timer 80) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3) + (sp-func spt-func 'sparticle-motion-blur) + (sp-rnd-flt spt-conerot-x (degrees 50.000004) (degrees 35.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 3600.0) 1.0) + (sp-flt spt-rotate-y (degrees 0.0)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-mole-dizzy + :id 770 + :duration (seconds 4) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 3356 :flags (launch-asap) :binding 3355) + (sp-item 3355 :flags (start-dead launch-asap)) + (sp-item 3355 :flags (start-dead launch-asap)) + (sp-item 3355 :flags (start-dead launch-asap)) + (sp-item 3355 :flags (start-dead launch-asap)) + (sp-item 3355 :flags (start-dead launch-asap)) + (sp-item 3355 :flags (start-dead launch-asap)) + (sp-item 3355 :flags (start-dead launch-asap)) + (sp-item 3355 :flags (start-dead launch-asap)) + (sp-item 3355 :flags (start-dead launch-asap)) + (sp-item 3355 :flags (start-dead launch-asap)) + (sp-item 3355 :flags (start-dead launch-asap)) + (sp-item 3355 :flags (start-dead launch-asap)) + (sp-item 3355 :flags (start-dead launch-asap)) + (sp-item 3355 :flags (start-dead launch-asap)) + (sp-item 3355 :flags (start-dead launch-asap)) + (sp-item 3355 :flags (start-dead launch-asap)) + (sp-item 3355 :flags (start-dead launch-asap)) + (sp-item 3355 :flags (start-dead launch-asap)) + (sp-item 3355 :flags (start-dead launch-asap)) + (sp-item 3355 :flags (start-dead launch-asap)) + (sp-item 3355 :flags (start-dead launch-asap)) + (sp-item 3355 :flags (start-dead launch-asap)) + (sp-item 3355 :flags (start-dead launch-asap)) + (sp-item 3355 :flags (start-dead launch-asap)) + (sp-item 3355 :flags (start-dead launch-asap)) + (sp-item 3355 :flags (start-dead launch-asap)) + (sp-item 3355 :flags (start-dead launch-asap)) + (sp-item 3355 :flags (start-dead launch-asap)) + (sp-item 3355 :flags (start-dead launch-asap)) + (sp-item 3355 :flags (start-dead launch-asap)) + (sp-item 3355 :flags (start-dead launch-asap)) + (sp-item 3355 :flags (start-dead launch-asap)) + (sp-item 3355 :flags (start-dead launch-asap)) + (sp-item 3355 :flags (start-dead launch-asap)) + (sp-item 3355 :flags (start-dead launch-asap)) + (sp-item 3355 :flags (start-dead launch-asap)) + (sp-item 3355 :flags (start-dead launch-asap)) + (sp-item 3355 :flags (start-dead launch-asap)) + (sp-item 3355 :flags (start-dead launch-asap)) + (sp-item 3355 :flags (start-dead launch-asap)) + ) + ) + +;; failed to figure out what this is: +(defpart 3356 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc)) + (sp-flt spt-num 32.0) + (sp-flt spt-scale-x (meters 1)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-a 0.0) + (sp-int spt-timer 1200) + (sp-cpuinfo-flags sp-cpuinfo-flag-3) + (sp-func spt-func 'part-tracker-track-root) + ) + ) + +;; failed to figure out what this is: +(defpart 3355 + :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbc :page #xc)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0)) + (sp-rnd-flt spt-y (meters -1.3333334) (meters 2.6666667) 1.0) + (sp-rnd-flt spt-z (meters 0.25) (meters 0.25) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.05) (meters 0.025) 1.0) + (sp-flt spt-rot-x 409.6) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-rnd-flt spt-g 32.0 92.0 1.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-omega 0.0 655360.0 1.0) + (sp-rnd-int-flt spt-vel-x (meters -0.053333335) 1 436.90668) + (sp-flt spt-vel-y (meters 0)) + (sp-flt spt-vel-z (meters 0.00083333335)) + (sp-flt spt-fade-a 0.42666668) + (sp-int spt-timer 3200) + (sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 ready-to-launch glow) + (sp-flt spt-userdata 0.0) + (sp-int-plain-rnd spt-next-time 75 224 1) + (sp-launcher-by-id spt-next-launcher 3357) + ) + ) + +;; failed to figure out what this is: +(defpart 3357 + :init-specs ((sp-flt spt-fade-a 0.0) + (sp-int-plain-rnd spt-next-time 225 224 1) + (sp-launcher-by-id spt-next-launcher 3358) + ) + ) + +;; failed to figure out what this is: +(defpart 3358 + :init-specs ((sp-rnd-flt spt-fade-a -0.42666668 -0.42666668 1.0)) + ) + +;; definition of type hip-mole-event +(deftype hip-mole-event (structure) + ((min-time uint16 :offset 0) + (max-time uint16 :offset 2) + (mode uint8 :offset 4) + ) + :method-count-assert 9 + :size-assert #x5 + :flag-assert #x900000005 + ) + +;; definition for method 3 of type hip-mole-event +(defmethod inspect hip-mole-event ((obj hip-mole-event)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" obj 'hip-mole-event) + (format #t "~1Tmin-time: ~D~%" (-> obj min-time)) + (format #t "~1Tmax-time: ~D~%" (-> obj max-time)) + (format #t "~1Tmode: ~D~%" (-> obj mode)) + (label cfg-4) + obj + ) + +;; definition for symbol *mole-data*, type (array (array hip-mole-event)) +(define *mole-data* (the-as (array (array hip-mole-event)) + (new 'static 'boxed-array :type array + (new 'static 'boxed-array :type hip-mole-event + (new 'static 'hip-mole-event :min-time #x258 :mode #x8) + (new 'static 'hip-mole-event :min-time #x2ee :mode #x9) + (new 'static 'hip-mole-event :min-time #x2ee :mode #x8) + (new 'static 'hip-mole-event :min-time #x2ee :mode #x9) + (new 'static 'hip-mole-event :min-time #x2ee :mode #x8) + (new 'static 'hip-mole-event :min-time #x258 :mode #x9) + (new 'static 'hip-mole-event :min-time #x258 :mode #x8) + (new 'static 'hip-mole-event :min-time #x258 :mode #x9) + (new 'static 'hip-mole-event :min-time #x258 :mode #x8) + (new 'static 'hip-mole-event :min-time #x384 :mode #x9) + (new 'static 'hip-mole-event :min-time #x384 :mode #x9) + (new 'static 'hip-mole-event :min-time #x258 :mode #x8) + (new 'static 'hip-mole-event :min-time #x258 :mode #x9) + (new 'static 'hip-mole-event :min-time #x258 :mode #x8) + (new 'static 'hip-mole-event :min-time #x258 :mode #x9) + (new 'static 'hip-mole-event :min-time #x258 :mode #x8) + (new 'static 'hip-mole-event :min-time #x258 :mode #xa) + (new 'static 'hip-mole-event :min-time #x258 :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #xb) + (new 'static 'hip-mole-event :min-time #x258 :mode #x8) + (new 'static 'hip-mole-event :min-time #x258 :mode #x9) + (new 'static 'hip-mole-event :min-time #x258 :mode #x9) + (new 'static 'hip-mole-event :min-time #x258 :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :max-time #x12c :mode #xa) + (new 'static 'hip-mole-event :min-time #x12c :max-time #x12c :mode #xb) + (new 'static 'hip-mole-event :min-time #x258 :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :max-time #x12c :mode #x9) + (new 'static 'hip-mole-event :min-time #x12c :max-time #x12c :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :max-time #x12c :mode #x9) + (new 'static 'hip-mole-event :min-time #x12c :max-time #x12c :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :max-time #x12c :mode #xa) + (new 'static 'hip-mole-event :min-time #x12c :max-time #x12c :mode #x9) + (new 'static 'hip-mole-event :min-time #x12c :max-time #x12c :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :max-time #x12c :mode #x9) + (new 'static 'hip-mole-event :min-time #x12c :max-time #x12c :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :max-time #x12c :mode #x9) + (new 'static 'hip-mole-event :min-time #x12c :max-time #x12c :mode #x9) + (new 'static 'hip-mole-event :min-time #x12c :max-time #x12c :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :max-time #x12c :mode #xa) + (new 'static 'hip-mole-event :min-time #x12c :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #x9) + (new 'static 'hip-mole-event :min-time #x1c2 :mode #x8) + (new 'static 'hip-mole-event :min-time #x5dc) + (new 'static 'hip-mole-event :min-time #x5dc :mode #x1) + (new 'static 'hip-mole-event :min-time #x5dc :mode #x2) + (new 'static 'hip-mole-event :min-time #x5dc :mode #x3) + (new 'static 'hip-mole-event :min-time #x5dc :mode #x4) + (new 'static 'hip-mole-event :min-time #x5dc :mode #x5) + (new 'static 'hip-mole-event :min-time #x5dc :mode #x6) + (new 'static 'hip-mole-event :min-time #x5dc :mode #x7) + ) + (new 'static 'boxed-array :type hip-mole-event + (new 'static 'hip-mole-event :min-time #x5dc :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #x9) + (new 'static 'hip-mole-event :min-time #x12c :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #x9) + (new 'static 'hip-mole-event :min-time #x12c :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #x9) + (new 'static 'hip-mole-event :min-time #x12c :mode #xa) + (new 'static 'hip-mole-event :min-time #x12c :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #x9) + (new 'static 'hip-mole-event :min-time #x12c :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #x9) + (new 'static 'hip-mole-event :min-time #x12c :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #x9) + (new 'static 'hip-mole-event :min-time #x12c :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #xa) + (new 'static 'hip-mole-event :min-time #x12c :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #x9) + (new 'static 'hip-mole-event :min-time #x12c :mode #xa) + (new 'static 'hip-mole-event :min-time #x1c2 :mode #xb) + (new 'static 'hip-mole-event :min-time #x258 :max-time #x12c :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #xa) + (new 'static 'hip-mole-event :min-time #x12c :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #x9) + (new 'static 'hip-mole-event :min-time #x12c :mode #xa) + (new 'static 'hip-mole-event :min-time #x12c :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #xb) + (new 'static 'hip-mole-event :min-time #x12c :mode #xa) + (new 'static 'hip-mole-event :min-time #x12c :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #xa) + (new 'static 'hip-mole-event :min-time #x12c :mode #xa) + (new 'static 'hip-mole-event :min-time #x12c :mode #x9) + (new 'static 'hip-mole-event :min-time #x12c :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #x9) + (new 'static 'hip-mole-event :min-time #x12c :mode #x9) + (new 'static 'hip-mole-event :min-time #x12c :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #x9) + (new 'static 'hip-mole-event :min-time #x12c :mode #xb) + (new 'static 'hip-mole-event :min-time #x12c :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #x9) + (new 'static 'hip-mole-event :min-time #x12c :mode #xa) + (new 'static 'hip-mole-event :min-time #x10e :mode #x9) + (new 'static 'hip-mole-event :min-time #x10e :mode #x9) + (new 'static 'hip-mole-event :min-time #x10e :mode #x8) + (new 'static 'hip-mole-event :min-time #x10e :mode #xb) + (new 'static 'hip-mole-event :min-time #x10e :mode #xa) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x8) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x9) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x9) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x8) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x9) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x9) + (new 'static 'hip-mole-event :min-time #x258 :mode #x8) + (new 'static 'hip-mole-event :min-time #x4b0 :mode #x9) + (new 'static 'hip-mole-event :min-time #x4b0 :mode #xa) + (new 'static 'hip-mole-event :min-time #x4b0 :mode #x9) + (new 'static 'hip-mole-event :min-time #x4b0 :mode #xa) + (new 'static 'hip-mole-event :min-time #x4b0 :mode #x9) + (new 'static 'hip-mole-event :min-time #x4b0 :mode #x9) + (new 'static 'hip-mole-event :min-time #x4b0 :mode #xa) + (new 'static 'hip-mole-event :min-time #x4b0 :mode #x9) + ) + (new 'static 'boxed-array :type hip-mole-event + (new 'static 'hip-mole-event :min-time #x546 :mode #x8) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x9) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x8) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x9) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x8) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x9) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x8) + (new 'static 'hip-mole-event :min-time #xf0 :mode #xa) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x8) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x9) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x9) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x8) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x9) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x9) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x8) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x9) + (new 'static 'hip-mole-event :min-time #xf0 :mode #xa) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x8) + (new 'static 'hip-mole-event :min-time #xf0 :mode #xb) + (new 'static 'hip-mole-event :min-time #xf0 :mode #xa) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x8) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x9) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x9) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x9) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x8) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x9) + (new 'static 'hip-mole-event :min-time #xf0 :mode #xa) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x8) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x9) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x8) + (new 'static 'hip-mole-event :min-time #x258 :mode #x9) + (new 'static 'hip-mole-event :min-time #x258 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :max-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x258 :mode #x9) + (new 'static 'hip-mole-event :min-time #x258 :mode #xa) + (new 'static 'hip-mole-event :min-time #x1c2 :max-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x258 :max-time #x258 :mode #x9) + (new 'static 'hip-mole-event :min-time #x5a :mode #x8) + (new 'static 'hip-mole-event :min-time #x258 :max-time #x258 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :max-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :max-time #x258 :mode #x9) + (new 'static 'hip-mole-event :min-time #x12c :max-time #x258 :mode #xa) + (new 'static 'hip-mole-event :min-time #x12c :max-time #x258 :mode #xa) + (new 'static 'hip-mole-event :min-time #x12c :max-time #x258 :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :max-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :max-time #x12c :mode #x9) + (new 'static 'hip-mole-event :min-time #x12c :max-time #x12c :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :max-time #x12c :mode #xb) + (new 'static 'hip-mole-event :min-time #x96 :max-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :max-time #x12c :mode #x9) + (new 'static 'hip-mole-event :min-time #x12c :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :max-time #x12c :mode #xb) + (new 'static 'hip-mole-event :min-time #x12c :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :max-time #x12c :mode #xa) + (new 'static 'hip-mole-event :min-time #x12c :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #xa) + (new 'static 'hip-mole-event :min-time #x10e :mode #x8) + (new 'static 'hip-mole-event :min-time #x10e :mode #xb) + (new 'static 'hip-mole-event :min-time #x10e :mode #x8) + (new 'static 'hip-mole-event :min-time #xf0 :mode #xa) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x8) + (new 'static 'hip-mole-event :min-time #xf0 :mode #xb) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x8) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x9) + (new 'static 'hip-mole-event :min-time #x10e :mode #xa) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x8) + (new 'static 'hip-mole-event :min-time #xf0 :mode #xb) + (new 'static 'hip-mole-event :min-time #xf0 :mode #xb) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x8) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x9) + (new 'static 'hip-mole-event :min-time #xd2 :mode #xa) + (new 'static 'hip-mole-event :min-time #xd2 :mode #x8) + (new 'static 'hip-mole-event :min-time #xd2 :mode #xb) + (new 'static 'hip-mole-event :min-time #x12c :mode #x8) + (new 'static 'hip-mole-event :min-time #xd2 :mode #x9) + (new 'static 'hip-mole-event :min-time #xd2 :mode #x8) + (new 'static 'hip-mole-event :min-time #xd2 :mode #x9) + (new 'static 'hip-mole-event :min-time #x12c :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #xa) + (new 'static 'hip-mole-event :min-time #x12c :mode #x9) + (new 'static 'hip-mole-event :min-time #x12c :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #x9) + (new 'static 'hip-mole-event :min-time #x12c :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #xb) + (new 'static 'hip-mole-event :min-time #x12c :mode #x9) + (new 'static 'hip-mole-event :min-time #x12c :mode #xa) + (new 'static 'hip-mole-event :min-time #x12c :mode #x8) + (new 'static 'hip-mole-event :min-time #xd2 :mode #x9) + (new 'static 'hip-mole-event :min-time #xd2 :mode #x8) + (new 'static 'hip-mole-event :min-time #xd2 :mode #xa) + (new 'static 'hip-mole-event :min-time #xd2 :mode #x9) + (new 'static 'hip-mole-event :min-time #xd2 :mode #x8) + (new 'static 'hip-mole-event :min-time #xd2 :mode #x9) + (new 'static 'hip-mole-event :min-time #xd2 :mode #xa) + (new 'static 'hip-mole-event :min-time #xd2 :mode #xa) + (new 'static 'hip-mole-event :min-time #xd2 :mode #x8) + (new 'static 'hip-mole-event :min-time #xd2 :mode #xb) + (new 'static 'hip-mole-event :min-time #xd2 :mode #x9) + (new 'static 'hip-mole-event :min-time #xd2 :mode #x8) + (new 'static 'hip-mole-event :min-time #xd2 :mode #x9) + (new 'static 'hip-mole-event :min-time #xd2 :mode #xa) + (new 'static 'hip-mole-event :min-time #xd2 :mode #xa) + (new 'static 'hip-mole-event :min-time #xd2 :mode #xa) + (new 'static 'hip-mole-event :min-time #xd2 :mode #x8) + (new 'static 'hip-mole-event :min-time #xd2 :mode #xb) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x9) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x8) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x9) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x8) + (new 'static 'hip-mole-event :min-time #xd2 :mode #xb) + (new 'static 'hip-mole-event :min-time #xd2 :mode #xa) + (new 'static 'hip-mole-event :min-time #xd2 :mode #x8) + (new 'static 'hip-mole-event :min-time #xd2 :mode #x9) + (new 'static 'hip-mole-event :min-time #xd2 :mode #x8) + (new 'static 'hip-mole-event :min-time #xd2 :mode #xa) + (new 'static 'hip-mole-event :min-time #xd2 :mode #x9) + (new 'static 'hip-mole-event :min-time #xd2 :mode #x8) + (new 'static 'hip-mole-event :min-time #xd2 :mode #x9) + (new 'static 'hip-mole-event :min-time #xd2 :mode #x8) + (new 'static 'hip-mole-event :min-time #xd2 :mode #xb) + (new 'static 'hip-mole-event :min-time #x12c :mode #x8) + (new 'static 'hip-mole-event :min-time #x384 :mode #x9) + (new 'static 'hip-mole-event :min-time #x384 :mode #xa) + (new 'static 'hip-mole-event :min-time #x384 :mode #xa) + (new 'static 'hip-mole-event :min-time #x384 :mode #x9) + (new 'static 'hip-mole-event :min-time #x384 :mode #xa) + (new 'static 'hip-mole-event :min-time #x384 :mode #xa) + (new 'static 'hip-mole-event :min-time #x384 :mode #xa) + (new 'static 'hip-mole-event :min-time #x384 :mode #x9) + (new 'static 'hip-mole-event :min-time #x41a :mode #x8) + (new 'static 'hip-mole-event :min-time #x384 :mode #xa) + (new 'static 'hip-mole-event :min-time #x384 :mode #x9) + (new 'static 'hip-mole-event :min-time #x384 :mode #xa) + (new 'static 'hip-mole-event :min-time #x384 :mode #xa) + (new 'static 'hip-mole-event :min-time #x384 :mode #xa) + (new 'static 'hip-mole-event :min-time #x384 :mode #xa) + (new 'static 'hip-mole-event :min-time #x384 :mode #x9) + (new 'static 'hip-mole-event :min-time #x384 :mode #xa) + ) + (new 'static 'boxed-array :type hip-mole-event + (new 'static 'hip-mole-event :min-time #x41a :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #x1) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #x2) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #x3) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #x4) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #x5) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #x6) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #x7) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #xa) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #xa) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x258 :mode #x7) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x258 :mode #x6) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x258 :mode #x5) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x258 :mode #x4) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x258 :mode #x3) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x258 :mode #x2) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x258 :mode #x1) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x258 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x258 :mode #x7) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x258) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x258 :mode #x1) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x258 :mode #x2) + (new 'static 'hip-mole-event :min-time #x12c :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x9) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x9) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xa) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x9) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x9) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xb) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xa) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x9) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xa) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xa) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xa) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x9) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x9) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xa) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x9) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xa) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x9) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xb) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xa) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x9) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x9) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xa) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xa) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x9) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xb) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xa) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x9) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xa) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x9) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x9) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x9) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xa) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xa) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xa) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x9) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x9) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xa) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x9) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x9) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xa) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x9) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #x8) + (new 'static 'hip-mole-event :min-time #x258 :mode #xa) + (new 'static 'hip-mole-event :min-time #x258 :mode #xa) + (new 'static 'hip-mole-event :min-time #x258 :mode #xa) + (new 'static 'hip-mole-event :min-time #x258 :mode #xa) + (new 'static 'hip-mole-event :min-time #x258 :mode #xa) + (new 'static 'hip-mole-event :min-time #x258 :mode #x9) + (new 'static 'hip-mole-event :min-time #x258 :mode #xa) + (new 'static 'hip-mole-event :min-time #x258 :mode #xa) + (new 'static 'hip-mole-event :min-time #x2ee :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #xa) + (new 'static 'hip-mole-event :min-time #x12c :mode #xa) + (new 'static 'hip-mole-event :min-time #x12c :mode #xa) + (new 'static 'hip-mole-event :min-time #x12c :mode #x9) + (new 'static 'hip-mole-event :min-time #x12c :mode #xa) + (new 'static 'hip-mole-event :min-time #x12c :mode #xa) + (new 'static 'hip-mole-event :min-time #x12c :mode #xa) + (new 'static 'hip-mole-event :min-time #x12c :mode #xa) + (new 'static 'hip-mole-event :min-time #x1c2 :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #xa) + (new 'static 'hip-mole-event :min-time #x12c :mode #xb) + (new 'static 'hip-mole-event :min-time #x12c :mode #xa) + (new 'static 'hip-mole-event :min-time #x12c :mode #xa) + (new 'static 'hip-mole-event :min-time #x12c :mode #xa) + (new 'static 'hip-mole-event :min-time #x12c :mode #xa) + (new 'static 'hip-mole-event :min-time #x12c :mode #xa) + (new 'static 'hip-mole-event :min-time #x12c :mode #xa) + ) + (new 'static 'boxed-array :type hip-mole-event + (new 'static 'hip-mole-event :min-time #x2ee :mode #x8) + (new 'static 'hip-mole-event :min-time #x1c2 :mode #x9) + (new 'static 'hip-mole-event :min-time #xe1 :mode #x8) + (new 'static 'hip-mole-event :min-time #x1c2 :mode #x9) + (new 'static 'hip-mole-event :min-time #xe1 :mode #x8) + (new 'static 'hip-mole-event :min-time #x1c2 :mode #x9) + (new 'static 'hip-mole-event :min-time #xe1 :mode #x8) + (new 'static 'hip-mole-event :min-time #x1c2 :mode #xa) + (new 'static 'hip-mole-event :min-time #xe1 :mode #x8) + (new 'static 'hip-mole-event :min-time #x1c2 :mode #x9) + (new 'static 'hip-mole-event :min-time #xe1 :mode #x8) + (new 'static 'hip-mole-event :min-time #x168 :mode #x9) + (new 'static 'hip-mole-event :min-time #xb4 :mode #x8) + (new 'static 'hip-mole-event :min-time #x168 :mode #x9) + (new 'static 'hip-mole-event :min-time #xb4 :mode #x8) + (new 'static 'hip-mole-event :min-time #x168 :mode #xa) + (new 'static 'hip-mole-event :min-time #xb4 :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #xb) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x1c2 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x1c2 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x1c2 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x1c2 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x1c2 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x1c2 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x1c2 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x1c2 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x1c2 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x1c2 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x1c2 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x1c2 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x1c2 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x1c2 :mode #x9) + (new 'static 'hip-mole-event :min-time #x1c2 :mode #x8) + ) + (new 'static 'boxed-array :type hip-mole-event + (new 'static 'hip-mole-event :min-time #x2ee :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #x3) + (new 'static 'hip-mole-event :min-time #x12c :mode #x1) + (new 'static 'hip-mole-event :min-time #x12c :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c) + (new 'static 'hip-mole-event :min-time #x12c :mode #x2) + (new 'static 'hip-mole-event :min-time #x12c :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #x7) + (new 'static 'hip-mole-event :min-time #x12c :mode #x5) + (new 'static 'hip-mole-event :min-time #x12c :mode #x8) + (new 'static 'hip-mole-event :min-time #x2ee) + (new 'static 'hip-mole-event :min-time #x2ee :mode #x4) + (new 'static 'hip-mole-event :min-time #x2ee :mode #xa) + (new 'static 'hip-mole-event :min-time #x2ee :mode #x2) + (new 'static 'hip-mole-event :min-time #x2ee :mode #x6) + (new 'static 'hip-mole-event :min-time #x2ee :mode #x8) + (new 'static 'hip-mole-event :min-time #x258 :mode #x3) + (new 'static 'hip-mole-event :min-time #x258 :mode #x1) + (new 'static 'hip-mole-event :min-time #x258 :mode #xa) + (new 'static 'hip-mole-event :min-time #x258 :mode #x7) + (new 'static 'hip-mole-event :min-time #x258 :mode #x5) + (new 'static 'hip-mole-event :min-time #x384 :mode #x8) + (new 'static 'hip-mole-event :min-time #x258 :mode #x9) + (new 'static 'hip-mole-event :min-time #x258 :mode #x9) + (new 'static 'hip-mole-event :min-time #x258 :mode #x9) + (new 'static 'hip-mole-event :min-time #x258 :mode #xa) + (new 'static 'hip-mole-event :min-time #x258 :mode #xa) + (new 'static 'hip-mole-event :min-time #x384 :mode #x8) + (new 'static 'hip-mole-event :min-time #x258 :mode #x9) + (new 'static 'hip-mole-event :min-time #x258 :mode #x9) + (new 'static 'hip-mole-event :min-time #x258 :mode #xa) + (new 'static 'hip-mole-event :min-time #x258 :mode #xa) + (new 'static 'hip-mole-event :min-time #x258 :mode #xa) + (new 'static 'hip-mole-event :min-time #x384 :mode #x8) + (new 'static 'hip-mole-event :min-time #x258 :mode #x9) + (new 'static 'hip-mole-event :min-time #x258 :mode #x9) + (new 'static 'hip-mole-event :min-time #x258 :mode #xa) + (new 'static 'hip-mole-event :min-time #x258 :mode #xa) + (new 'static 'hip-mole-event :min-time #x258 :mode #xa) + (new 'static 'hip-mole-event :min-time #x258 :mode #x9) + (new 'static 'hip-mole-event :min-time #x384 :mode #x8) + (new 'static 'hip-mole-event :min-time #x258 :mode #x9) + (new 'static 'hip-mole-event :min-time #x258 :mode #xa) + (new 'static 'hip-mole-event :min-time #x258 :mode #xa) + (new 'static 'hip-mole-event :min-time #x258 :mode #xa) + (new 'static 'hip-mole-event :min-time #x258 :mode #xa) + (new 'static 'hip-mole-event :min-time #x258 :mode #xb) + (new 'static 'hip-mole-event :min-time #x384 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xa) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xa) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xa) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xa) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xa) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xa) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xa) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xa) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xb) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xa) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xa) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xb) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xb) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xa) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xa) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xa) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x9) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xa) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xb) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xa) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xb) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xa) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xa) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xa) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x9) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xa) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xb) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xa) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #xa5 :mode #xa) + (new 'static 'hip-mole-event :min-time #xa5 :mode #x8) + (new 'static 'hip-mole-event :min-time #x4b0 :mode #xa) + (new 'static 'hip-mole-event :min-time #x4b0 :mode #xa) + (new 'static 'hip-mole-event :min-time #x4b0 :mode #xa) + (new 'static 'hip-mole-event :min-time #x4b0 :mode #xa) + (new 'static 'hip-mole-event :min-time #x4b0 :mode #xa) + (new 'static 'hip-mole-event :min-time #x4b0 :mode #xb) + (new 'static 'hip-mole-event :min-time #x4b0 :mode #x9) + (new 'static 'hip-mole-event :min-time #x546 :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #xb) + (new 'static 'hip-mole-event :min-time #x12c :mode #xb) + (new 'static 'hip-mole-event :min-time #x1c2 :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #xb) + (new 'static 'hip-mole-event :min-time #x12c :mode #xb) + (new 'static 'hip-mole-event :min-time #x1c2 :mode #x8) + (new 'static 'hip-mole-event :min-time #x96 :mode #xb) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x96 :mode #xb) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x96 :mode #xb) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x96 :mode #xb) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x96 :mode #xb) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x96 :mode #xb) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x96 :mode #xb) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x96 :mode #xb) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x96 :mode #xb) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + ) + (new 'static 'boxed-array :type hip-mole-event + (new 'static 'hip-mole-event :min-time #x2ee :mode #x8) + (new 'static 'hip-mole-event :min-time #x1c2 :mode #x9) + (new 'static 'hip-mole-event :min-time #xe1 :mode #x8) + (new 'static 'hip-mole-event :min-time #x1c2 :mode #x9) + (new 'static 'hip-mole-event :min-time #xe1 :mode #x8) + (new 'static 'hip-mole-event :min-time #x1c2 :mode #x9) + (new 'static 'hip-mole-event :min-time #xe1 :mode #x8) + (new 'static 'hip-mole-event :min-time #x1c2 :mode #xa) + (new 'static 'hip-mole-event :min-time #xe1 :mode #x8) + (new 'static 'hip-mole-event :min-time #x1c2 :mode #x9) + (new 'static 'hip-mole-event :min-time #xe1 :mode #x8) + (new 'static 'hip-mole-event :min-time #x168 :mode #x9) + (new 'static 'hip-mole-event :min-time #xb4 :mode #x8) + (new 'static 'hip-mole-event :min-time #x168 :mode #x9) + (new 'static 'hip-mole-event :min-time #xb4 :mode #x8) + (new 'static 'hip-mole-event :min-time #x168 :mode #xa) + (new 'static 'hip-mole-event :min-time #xb4 :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #xb) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x1c2 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x1c2 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x177 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x177 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x177 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x177 :mode #xa) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x14a :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x14a :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x14a :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #xa) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x12c :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #xf0 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #xd2 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #xd2 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #xd2 :mode #xa) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #xb4 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #xb4 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #xb4 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #xb4 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x96 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x96 :mode #xa) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x96 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x96 :mode #xa) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x96 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x96 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #xb4 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x96 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #xa) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x96 :mode #xa) + (new 'static 'hip-mole-event :min-time #x96 :mode #xa) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x96 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x96 :mode #xa) + (new 'static 'hip-mole-event :min-time #x96 :mode #xa) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x96 :mode #xa) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x96 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x96 :mode #xa) + (new 'static 'hip-mole-event :min-time #x96 :mode #xa) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x96 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x96 :mode #xa) + (new 'static 'hip-mole-event :min-time #x96 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x96 :mode #xa) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x96 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + (new 'static 'hip-mole-event :min-time #x96 :mode #x9) + (new 'static 'hip-mole-event :min-time #x96 :mode #x8) + ) + ) + ) + ) + +;; failed to figure out what this is: +(defskelgroup skel-hip-mole hip-mole hip-mole-lod0-jg hip-mole-up-ja + ((hip-mole-lod0-mg (meters 999999))) + :bounds (static-spherem 0 1 0 1.5) + :origin-joint-index 3 + ) + +;; failed to figure out what this is: +(defskelgroup skel-big-bopper big-bopper big-bopper-lod0-jg big-bopper-idle-ja + ((big-bopper-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2) + :origin-joint-index 3 + ) + +;; definition of type hip-mole +(deftype hip-mole (process-drawable) + ((cabinet handle :offset-assert 200) + (index int32 :offset-assert 208) + (mode uint8 :offset-assert 212) + (sound-id uint32 :offset-assert 216) + (abort? symbol :offset-assert 220) + ) + :heap-base #x60 + :method-count-assert 22 + :size-assert #xe0 + :flag-assert #x16006000e0 + (:methods + (idle () _type_ :state 20) + (active (time-frame uint) _type_ :state 21) + ) + ) + +;; definition for method 3 of type hip-mole +(defmethod inspect hip-mole ((obj hip-mole)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~2Tcabinet: ~D~%" (-> obj cabinet)) + (format #t "~2Tindex: ~D~%" (-> obj index)) + (format #t "~2Tmode: ~D~%" (-> obj mode)) + (format #t "~2Tsound-id: ~D~%" (-> obj sound-id)) + (format #t "~2Tabort?: ~A~%" (-> obj abort?)) + (label cfg-4) + obj + ) + +;; failed to figure out what this is: +(set! (-> *lightning-spec-id-table* 21) (new 'static 'lightning-spec + :name "lightning-hip-mole-deadly" + :flags (lightning-spec-flags lsf0) + :start-color (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80) + :end-color (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80) + :fade-to-color (new 'static 'rgba :r #xbf :b #x8f :a #x5) + :fade-start-factor 0.2 + :texture (new 'static 'texture-id :index #x83 :page #xc) + :reduction 0.5 + :num-points 32 + :box-size 2048.0 + :merge-factor 0.5 + :merge-count 2 + :radius 409.6 + :duration 30.0 + :sound (static-sound-spec "shock") + ) + ) + +;; failed to figure out what this is: +(defstate idle (hip-mole) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type + (('active) + (go-virtual active (the-as time-frame (-> event param 0)) (-> event param 1)) + ) + ) + ) + :code (behavior () + (setup-masks (-> self draw) 2 1) + (set-vector! (-> self draw color-mult) 1.0 1.0 1.0 1.0) + (ja-channel-push! 1 (seconds 0.05)) + (ja :group! (-> self draw art-group data 3) :num! min) + (sleep-code) + (none) + ) + :post (behavior () + (let* ((s5-0 (handle->process (-> self cabinet))) + (gp-0 (if (type? s5-0 process-drawable) + s5-0 + ) + ) + ) + (when gp-0 + (let* ((v1-4 (-> self index)) + (v1-5 (cond + ((zero? v1-4) + 4 + ) + ((= v1-4 1) + 5 + ) + ((= v1-4 2) + 6 + ) + ((= v1-4 3) + 7 + ) + ((= v1-4 4) + 8 + ) + ((= v1-4 5) + 9 + ) + ((= v1-4 6) + 10 + ) + (else + 11 + ) + ) + ) + ) + (vector<-cspace! (-> self root trans) (-> (the-as process-drawable gp-0) node-list data v1-5)) + ) + (quaternion-copy! (-> self root quat) (-> (the-as process-drawable gp-0) root quat)) + ) + ) + (ja-post) + (none) + ) + ) + +;; failed to figure out what this is: +(defstate active (hip-mole) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (case event-type + (('touch) + (case (-> self mode) + ((10) + (sound-play "whack-wrong") + 'die + ) + ((11) + (sound-play "whack-gold") + (go-virtual idle) + 'gold + ) + (else + (sound-play "whack-hit") + (go-virtual idle) + ) + ) + ) + (('abort) + (let ((v0-2 (the-as object #t))) + (set! (-> self abort?) (the-as symbol v0-2)) + v0-2 + ) + ) + ) + ) + :enter (behavior ((arg0 time-frame) (arg1 uint)) + (set! (-> self mode) arg1) + (case (-> self mode) + ((10) + (set-vector! (-> self draw color-mult) 1.0 0.0 0.0 1.0) + ) + ((11) + (setup-masks (-> self draw) 1 2) + ) + ) + (sound-play "whack-up") + (set! (-> self sound-id) (the-as uint (sound-play "whack-bounce"))) + (set! (-> self abort?) #f) + (none) + ) + :exit (behavior () + (sound-stop (the-as sound-id (-> self sound-id))) + (none) + ) + :trans (behavior () + (case (-> self mode) + ((10) + (when (rand-vu-percent? 0.4) + (let ((gp-0 (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 4))) + (s5-0 (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 4))) + ) + (+! (-> gp-0 x) (rand-vu-float-range -1638.4 819.2)) + (+! (-> s5-0 x) (rand-vu-float-range -1638.4 819.2)) + (+! (-> gp-0 y) (rand-vu-float-range -1228.8 1228.8)) + (+! (-> s5-0 y) (rand-vu-float-range -1228.8 1228.8)) + (+! (-> gp-0 z) (rand-vu-float-range -1638.4 819.2)) + (+! (-> s5-0 z) (rand-vu-float-range -1638.4 819.2)) + (process-spawn + lightning-tracker + :init lightning-tracker-init + (-> *lightning-spec-id-table* 21) + 0 + #f + #f + gp-0 + s5-0 + :to *entity-pool* + ) + ) + ) + ) + ) + (none) + ) + :code (behavior ((arg0 time-frame) (arg1 uint)) + (ja-no-eval :group! (-> self draw art-group data 3) + :num! (seek! (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 3)) frames num-frames) -1))) + :frame-num 0.0 + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + (ja-channel-push! 1 (seconds 0.05)) + (let ((s5-0 (-> self clock frame-counter))) + (while (and (< (- (-> self clock frame-counter) s5-0) arg0) (not (-> self abort?))) + (ja :group! (-> self draw art-group data 4) :num! (loop!)) + (suspend) + ) + ) + (ja-channel-push! 1 (seconds 0.05)) + (sound-play "whack-down") + (ja-no-eval :group! (-> self draw art-group data 5) + :num! (seek! (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 5)) frames num-frames) -1))) + :frame-num 0.0 + ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + ) + (when (not (-> self abort?)) + (case (-> self mode) + ((10) + ) + (else + (send-event (ppointer->process (-> self parent)) 'done) + ) + ) + ) + (go-virtual idle) + (none) + ) + :post (-> (method-of-type hip-mole idle) post) + ) + +;; definition for function hip-mole-init +;; WARN: Return type mismatch object vs none. +(defbehavior hip-mole-init hip-mole ((arg0 handle) (arg1 int)) + (set! (-> self index) arg1) + (set! (-> self cabinet) arg0) + (set! (-> self abort?) #f) + (set! (-> self level) (level-get *level* 'lwhack)) + (set! (-> self root) (new 'process 'trsqv)) + (initialize-skeleton + self + (the-as skeleton-group (art-group-get-by-name *level* "skel-hip-mole" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (setup-masks (-> self draw) 2 1) + (go-virtual idle) + (none) + ) + +;; definition of type whack-a-metal +(deftype whack-a-metal (process-drawable) + ((cabinet handle :offset-assert 200) + (bopper (pointer process) :offset-assert 208) + (mole (pointer hip-mole) 8 :offset-assert 212) + (score-part sparticle-launch-control 2 :offset-assert 244) + (wave int32 :offset-assert 252) + (event int32 :offset-assert 256) + (event-time time-frame :offset-assert 264) + (event-length time-frame :offset-assert 272) + (hud-score handle :offset-assert 280) + (hud-goal handle :offset-assert 288) + (score float :offset-assert 296) + (score-time time-frame :offset-assert 304) + (dizzy? symbol :offset-assert 312) + (miss-count int32 :offset-assert 316) + (air-attack-count int32 :offset-assert 320) + (slot-buffer int32 4 :offset-assert 324) + (speech-time time-frame :offset-assert 344) + (speech-count int32 :offset-assert 352) + (speech-last int32 4 :offset-assert 356) + ) + :heap-base #x100 + :method-count-assert 30 + :size-assert #x174 + :flag-assert #x1e01000174 + (:methods + (hide () _type_ :state 20) + (wait-for-start () _type_ :state 21) + (active (symbol int) _type_ :state 22) + (attack (int) _type_ :state 23) + (lose () _type_ :state 24) + (win () _type_ :state 25) + (whack-a-metal-method-26 (_type_) integer 26) + (whack-a-metal-method-27 (_type_) none 27) + (whack-a-metal-method-28 (_type_) none 28) + (whack-a-metal-method-29 (_type_ int int) int 29) + ) + ) + +;; definition for method 3 of type whack-a-metal +(defmethod inspect whack-a-metal ((obj whack-a-metal)) + (when (not obj) + (set! obj obj) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~2Tcabinet: ~D~%" (-> obj cabinet)) + (format #t "~2Tbopper: #x~X~%" (-> obj bopper)) + (format #t "~2Tmole[8] @ #x~X~%" (-> obj mole)) + (format #t "~2Tscore-part[2] @ #x~X~%" (-> obj score-part)) + (format #t "~2Twave: ~D~%" (-> obj wave)) + (format #t "~2Tevent: ~D~%" (-> obj event)) + (format #t "~2Tevent-time: ~D~%" (-> obj event-time)) + (format #t "~2Tevent-length: ~D~%" (-> obj event-length)) + (format #t "~2Thud-score: ~D~%" (-> obj hud-score)) + (format #t "~2Thud-goal: ~D~%" (-> obj hud-goal)) + (format #t "~2Tscore: ~f~%" (-> obj score)) + (format #t "~2Tscore-time: ~D~%" (-> obj score-time)) + (format #t "~2Tdizzy?: ~A~%" (-> obj dizzy?)) + (format #t "~2Tmiss-count: ~D~%" (-> obj miss-count)) + (format #t "~2Tair-attack-count: ~D~%" (-> obj air-attack-count)) + (format #t "~2Tslot-buffer[4] @ #x~X~%" (-> obj slot-buffer)) + (format #t "~2Tspeech-time: ~D~%" (-> obj speech-time)) + (format #t "~2Tspeech-count: ~D~%" (-> obj speech-count)) + (format #t "~2Tspeech-last[4] @ #x~X~%" (-> obj speech-last)) + (label cfg-4) + obj + ) + +;; definition for method 10 of type whack-a-metal +(defmethod deactivate whack-a-metal ((obj whack-a-metal)) + (dotimes (s5-0 2) + (if (nonzero? (-> obj score-part s5-0)) + (kill-and-free-particles (-> obj score-part s5-0)) + ) + ) + ((the-as (function process none) (find-parent-method whack-a-metal 10)) obj) + (none) + ) + +;; definition for method 7 of type whack-a-metal +;; WARN: Return type mismatch process-drawable vs whack-a-metal. +(defmethod relocate whack-a-metal ((obj whack-a-metal) (arg0 int)) + (dotimes (v1-0 2) + (if (nonzero? (-> obj score-part v1-0)) + (&+! (-> obj score-part v1-0) arg0) + ) + ) + (the-as + whack-a-metal + ((the-as (function process-drawable int process-drawable) (find-parent-method whack-a-metal 7)) obj arg0) + ) + ) + +;; definition for method 29 of type whack-a-metal +(defmethod whack-a-metal-method-29 whack-a-metal ((obj whack-a-metal) (arg0 int) (arg1 int)) + (let ((v0-1 (mod (+ (-> obj speech-last arg0) (rand-vu-int-range 1 2)) arg1))) + (set! (-> obj speech-last arg0) v0-1) + v0-1 + ) + ) + +;; definition for method 26 of type whack-a-metal +;; WARN: Return type mismatch int vs integer. +(defmethod whack-a-metal-method-26 whack-a-metal ((obj whack-a-metal)) + (if (or (-> obj dizzy?) (>= (-> obj miss-count) 20)) + (return (the-as integer -1)) + ) + (let ((v0-0 + (cond + ((logtest? (logior (logior (-> *cpad-list* cpads 0 button0-rel 0) (-> *cpad-list* cpads 0 button0-rel 1)) + (-> *cpad-list* cpads 0 button0-rel 2) + ) + (pad-buttons up) + ) + 0 + ) + ((logtest? (logior (logior (-> *cpad-list* cpads 0 button0-rel 0) (-> *cpad-list* cpads 0 button0-rel 1)) + (-> *cpad-list* cpads 0 button0-rel 2) + ) + (pad-buttons right) + ) + 1 + ) + ((logtest? (logior (logior (-> *cpad-list* cpads 0 button0-rel 0) (-> *cpad-list* cpads 0 button0-rel 1)) + (-> *cpad-list* cpads 0 button0-rel 2) + ) + (pad-buttons down) + ) + 2 + ) + ((logtest? (logior (logior (-> *cpad-list* cpads 0 button0-rel 0) (-> *cpad-list* cpads 0 button0-rel 1)) + (-> *cpad-list* cpads 0 button0-rel 2) + ) + (pad-buttons left) + ) + 3 + ) + ((logtest? (logior (logior (-> *cpad-list* cpads 0 button0-rel 0) (-> *cpad-list* cpads 0 button0-rel 1)) + (-> *cpad-list* cpads 0 button0-rel 2) + ) + (pad-buttons triangle) + ) + 4 + ) + ((logtest? (logior (logior (-> *cpad-list* cpads 0 button0-rel 0) (-> *cpad-list* cpads 0 button0-rel 1)) + (-> *cpad-list* cpads 0 button0-rel 2) + ) + (pad-buttons circle) + ) + 5 + ) + ((logtest? (logior (logior (-> *cpad-list* cpads 0 button0-rel 0) (-> *cpad-list* cpads 0 button0-rel 1)) + (-> *cpad-list* cpads 0 button0-rel 2) + ) + (pad-buttons x) + ) + 6 + ) + ((logtest? (logior (logior (-> *cpad-list* cpads 0 button0-rel 0) (-> *cpad-list* cpads 0 button0-rel 1)) + (-> *cpad-list* cpads 0 button0-rel 2) + ) + (pad-buttons square) + ) + 7 + ) + (else + -1 + ) + ) + ) + ) + (logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons up right down left triangle circle x square)) + (logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons up right down left triangle circle x square)) + (dotimes (v1-57 4) + (when (< (-> obj slot-buffer v1-57) 0) + (set! (-> obj slot-buffer v1-57) v0-0) + (goto cfg-30) + ) + ) + (label cfg-30) + (if (>= (-> obj slot-buffer 0) 0) + (return (the-as integer (-> obj slot-buffer 0))) + ) + v0-0 + ) + ) + +;; definition for method 27 of type whack-a-metal +;; WARN: Return type mismatch int vs none. +(defmethod whack-a-metal-method-27 whack-a-metal ((obj whack-a-metal)) + (with-pp + (let ((s4-0 (-> *mole-data* (-> obj wave) (-> obj event))) + (s5-0 #t) + ) + (when (zero? (-> obj event-length)) + (set! (-> obj event-length) + (rand-vu-int-range (the-as int (-> s4-0 min-time)) (the-as int (+ (-> s4-0 min-time) (-> s4-0 max-time)))) + ) + (set! (-> obj event-time) (-> pp clock frame-counter)) + ) + (let ((v1-8 (-> s4-0 mode))) + (cond + ((= v1-8 8) + (set! s5-0 (>= (- (-> pp clock frame-counter) (-> obj event-time)) (-> obj event-length))) + ) + ((or (= v1-8 9) (= v1-8 10) (= v1-8 11)) + (let ((v1-13 (rand-vu-int-range 0 7))) + (let ((s3-0 0)) + (while (let ((a0-20 (-> obj mole v1-13))) + (and (-> (the-as hip-mole (if a0-20 + (the-as hip-mole (-> a0-20 0 self)) + ) + ) + next-state + ) + (let ((a0-26 (-> obj mole v1-13))) + (= (-> (the-as hip-mole (if a0-26 + (the-as hip-mole (-> a0-26 0 self)) + ) + ) + next-state + name + ) + 'active + ) + ) + ) + ) + (set! v1-13 (rand-vu-int-range 0 7)) + (+! s3-0 1) + (if (< 100 s3-0) + (goto cfg-27) + ) + ) + ) + (send-event (ppointer->process (-> obj mole v1-13)) 'active (-> obj event-length) (-> s4-0 mode)) + ) + (label cfg-27) + ) + ((or (zero? v1-8) (= v1-8 1) (= v1-8 2) (= v1-8 3) (= v1-8 4) (= v1-8 5) (= v1-8 6) (= v1-8 7)) + (let ((v1-22 (the-as int (-> s4-0 mode)))) + (let ((s3-1 0)) + (while (let ((a0-49 (-> obj mole v1-22))) + (and (-> (the-as hip-mole (if a0-49 + (the-as hip-mole (-> a0-49 0 self)) + ) + ) + next-state + ) + (let ((a0-55 (-> obj mole v1-22))) + (= (-> (the-as hip-mole (if a0-55 + (the-as hip-mole (-> a0-55 0 self)) + ) + ) + next-state + name + ) + 'active + ) + ) + ) + ) + (set! v1-22 (rand-vu-int-range 0 7)) + (+! s3-1 1) + (if (< 100 s3-1) + (goto cfg-61) + ) + ) + ) + (send-event (ppointer->process (-> obj mole v1-22)) 'active (-> obj event-length) (-> s4-0 mode)) + ) + ) + ) + ) + (label cfg-61) + (when s5-0 + (set! (-> obj event-length) 0) + (+! (-> obj event) 1) + (when (>= (-> obj event) (-> *mole-data* (-> obj wave) length)) + (set! (-> obj event) 0) + (+! (-> obj wave) 1) + (if (>= (-> obj wave) (-> *mole-data* length)) + (set! (-> obj wave) (+ (-> *mole-data* length) -1)) + ) + ) + ) + ) + (when (>= (- (-> pp clock frame-counter) (-> obj speech-time)) (seconds 15)) + (if (nonzero? (cond + ((= (-> obj speech-count) 1) + 0 + ) + ((>= (-> obj score) 1300.0) + (set! (-> obj speech-count) 1) + (let ((v1-50 (whack-a-metal-method-29 obj 0 3))) + (cond + ((zero? v1-50) + (talker-spawn-func (-> *talker-speech* 430) *entity-pool* (target-pos 0) (the-as region #f)) + ) + ((= v1-50 1) + (talker-spawn-func (-> *talker-speech* 431) *entity-pool* (target-pos 0) (the-as region #f)) + ) + (else + (talker-spawn-func (-> *talker-speech* 432) *entity-pool* (target-pos 0) (the-as region #f)) + ) + ) + ) + ) + (else + (let ((v1-55 (whack-a-metal-method-29 obj 1 20))) + (cond + ((zero? v1-55) + (talker-spawn-func (-> *talker-speech* 395) *entity-pool* (target-pos 0) (the-as region #f)) + ) + ((= v1-55 1) + (talker-spawn-func (-> *talker-speech* 396) *entity-pool* (target-pos 0) (the-as region #f)) + ) + ((= v1-55 2) + (talker-spawn-func (-> *talker-speech* 397) *entity-pool* (target-pos 0) (the-as region #f)) + ) + ((= v1-55 3) + (talker-spawn-func (-> *talker-speech* 398) *entity-pool* (target-pos 0) (the-as region #f)) + ) + ((= v1-55 4) + (talker-spawn-func (-> *talker-speech* 401) *entity-pool* (target-pos 0) (the-as region #f)) + ) + ((= v1-55 5) + (talker-spawn-func (-> *talker-speech* 403) *entity-pool* (target-pos 0) (the-as region #f)) + ) + ((= v1-55 6) + (talker-spawn-func (-> *talker-speech* 404) *entity-pool* (target-pos 0) (the-as region #f)) + ) + ((= v1-55 7) + (talker-spawn-func (-> *talker-speech* 405) *entity-pool* (target-pos 0) (the-as region #f)) + ) + ((= v1-55 8) + (talker-spawn-func (-> *talker-speech* 406) *entity-pool* (target-pos 0) (the-as region #f)) + ) + ((= v1-55 9) + (talker-spawn-func (-> *talker-speech* 407) *entity-pool* (target-pos 0) (the-as region #f)) + ) + ((= v1-55 10) + (talker-spawn-func (-> *talker-speech* 408) *entity-pool* (target-pos 0) (the-as region #f)) + ) + ((= v1-55 11) + (talker-spawn-func (-> *talker-speech* 409) *entity-pool* (target-pos 0) (the-as region #f)) + ) + ((= v1-55 12) + (talker-spawn-func (-> *talker-speech* 410) *entity-pool* (target-pos 0) (the-as region #f)) + ) + ((= v1-55 13) + (talker-spawn-func (-> *talker-speech* 411) *entity-pool* (target-pos 0) (the-as region #f)) + ) + ((= v1-55 14) + (talker-spawn-func (-> *talker-speech* 412) *entity-pool* (target-pos 0) (the-as region #f)) + ) + ((= v1-55 15) + (talker-spawn-func (-> *talker-speech* 413) *entity-pool* (target-pos 0) (the-as region #f)) + ) + ((= v1-55 16) + (talker-spawn-func (-> *talker-speech* 414) *entity-pool* (target-pos 0) (the-as region #f)) + ) + ((= v1-55 17) + (talker-spawn-func (-> *talker-speech* 415) *entity-pool* (target-pos 0) (the-as region #f)) + ) + ((= v1-55 18) + (talker-spawn-func (-> *talker-speech* 416) *entity-pool* (target-pos 0) (the-as region #f)) + ) + (else + (talker-spawn-func (-> *talker-speech* 417) *entity-pool* (target-pos 0) (the-as region #f)) + ) + ) + ) + ) + ) + ) + (set! (-> obj speech-time) (-> pp clock frame-counter)) + ) + ) + (whack-a-metal-method-28 obj) + 0 + (none) + ) + ) + +;; definition for method 28 of type whack-a-metal +;; WARN: Return type mismatch int vs none. +(defmethod whack-a-metal-method-28 whack-a-metal ((obj whack-a-metal)) + (with-pp + (cond + ((>= (-> *game-info* score) (-> obj score)) + (set! (-> *game-info* score) (-> obj score)) + ) + ((and (< (-> *game-info* score) (-> obj score)) + (>= (- (-> pp clock frame-counter) (-> obj score-time)) (seconds 0.1)) + ) + (sound-play "whack-score") + (seek! (-> *game-info* score) (-> obj score) 2.0) + (set! (-> obj score-time) (-> pp clock frame-counter)) + ) + ) + (let ((s5-1 (handle->process (-> obj cabinet)))) + (when s5-1 + (spawn-with-matrix (-> obj score-part 1) (-> (the-as process-drawable s5-1) node-list data 13 bone transform)) + (spawn-with-matrix (-> obj score-part 0) (-> (the-as process-drawable s5-1) node-list data 12 bone transform)) + (dotimes (s4-1 (- 20 (-> obj miss-count))) + (set! (-> *part-id-table* 3336 init-specs 2 initial-valuef) (+ -1228.8 (* 614.4 (the float (mod s4-1 5))))) + (set! (-> *part-id-table* 3336 init-specs 2 random-rangef) 0.0) + (set! (-> *part-id-table* 3336 init-specs 3 initial-valuef) (- 921.6 (* 614.4 (the float (/ s4-1 5))))) + (set! (-> *part-id-table* 3336 init-specs 3 random-rangef) 0.0) + (sp-launch-particles-var + *sp-particle-system-3d* + (-> *part-id-table* 3336) + (-> (the-as process-drawable s5-1) node-list data 12 bone transform) + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) + 1.0 + ) + ) + ) + ) + 0 + (none) + ) + ) + +;; failed to figure out what this is: +(defstate hide (whack-a-metal) + :virtual #t + :code (behavior () + (ja-channel-set! 0) + (ja-post) + (sleep-code) + (none) + ) + ) + +;; failed to figure out what this is: +(defstate wait-for-start (whack-a-metal) + :virtual #t + :code (behavior () + (while (or (not *target*) (not (process-grab? *target* #f))) + (suspend) + ) + (let ((a1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-1 from) (process->ppointer self)) + (set! (-> a1-1 num-params) 1) + (set! (-> a1-1 message) 'draw) + (set! (-> a1-1 param 0) (the-as uint #f)) + (send-event-function *target* a1-1) + (go-virtual active #t (the-as int a1-1)) + ) + (none) + ) + ) + +;; failed to figure out what this is: +(defstate active (whack-a-metal) + :virtual #t + :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) + (the-as object (case event-type + (('done) + (let ((v0-0 (+ (-> self miss-count) 1))) + (set! (-> self miss-count) v0-0) + v0-0 + ) + ) + ) + ) + ) + :enter (behavior ((arg0 symbol) (arg1 int)) + (when arg0 + (set! (-> *game-info* score) 0.0) + (sound-play "whack-start") + (add-setting! 'music 'danger3 0 0) + (set-setting! 'entity-name (res-lump-struct (-> self entity) 'camera-name structure) 0 0) + (set! (-> self bopper) (process-spawn + manipy + :init manipy-init + (-> self root trans) + (entity-by-name "tess-npc-3") + (art-group-get-by-name *level* "skel-big-bopper" (the-as (pointer uint32) #f)) + #f + 0 + :name "big-bopper" + :to self + ) + ) + (send-event (ppointer->process (-> self bopper)) 'anim-mode 'clone-anim) + (set-setting! 'airlock #f 0 0) + (set-setting! 'borrow '((ctywide 1 lwidea #f) (hiphog 0 lwhack special)) 0 0) + (want-display-level *load-state* 'ctyport #f) + (want-display-level *load-state* 'ctywide #f) + (set! (-> self speech-time) (-> self clock frame-counter)) + (if (not (task-node-closed? (game-task-node city-whack-resolution))) + (set! (-> self hud-goal) (ppointer->handle (process-spawn hud-goal :init hud-init-by-other :to self))) + ) + ) + (none) + ) + :exit (behavior () + (when (not (and (-> self next-state) (let ((v1-3 (-> self next-state name))) + (or (= v1-3 'active) (= v1-3 'attack) (= v1-3 'win) (= v1-3 'lose)) + ) + ) + ) + (game-info-method-28 *game-info* (game-score whack) (-> self score)) + (remove-setting! 'music) + (let ((a0-7 (handle->process (-> self hud-score)))) + (if a0-7 + (deactivate a0-7) + ) + ) + (send-event (handle->process (-> self hud-goal)) 'hide-and-die) + (remove-setting! 'entity-name) + (if (and *target* (focus-test? *target* grabbed)) + (process-release? *target*) + ) + (send-event *target* 'draw #t) + (let ((v1-32 (-> self bopper))) + (if v1-32 + (deactivate (-> v1-32 0)) + ) + ) + (remove-setting! 'airlock) + (remove-setting! 'borrow) + (want-display-level *load-state* 'ctyport 'display) + (want-display-level *load-state* 'ctywide 'display) + ) + (none) + ) + :trans (behavior () + (cond + ((or (and *cheat-mode* (cpad-pressed? 0 l1)) (>= (-> self miss-count) 20)) + (go-virtual lose) + ) + ((or (and *cheat-mode* (cpad-pressed? 0 r1)) + (and (>= (-> self score) 1500.0) (not (task-node-closed? (game-task-node city-whack-resolution)))) + ) + (go-virtual win) + ) + ) + (let ((a0-10 (whack-a-metal-method-26 self))) + (if (>= (the-as int a0-10) 0) + (go-virtual attack (the-as int a0-10)) + ) + ) + (logclear! + (-> *cpad-list* cpads 0 button0-abs 0) + (pad-buttons up right down left l1 r1 triangle circle x square) + ) + (logclear! + (-> *cpad-list* cpads 0 button0-rel 0) + (pad-buttons up right down left l1 r1 triangle circle x square) + ) + (none) + ) + :code (behavior ((arg0 symbol) (arg1 int)) + (local-vars + (sv-48 whack-a-metal) + (sv-64 (function vector cspace vector)) + (sv-80 vector) + (sv-96 vector) + (sv-112 (function vector cspace vector)) + (sv-128 vector) + ) + (let ((gp-0 (cond + ((>= (-> self air-attack-count) 10) + (-> self draw art-group data 14) + ) + (#f + (-> self draw art-group data 13) + ) + (else + (-> self draw art-group data 4) + ) + ) + ) + ) + (set! (-> self air-attack-count) 0) + (when (-> self dizzy?) + (sound-play "whack-dizzy") + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! (-> self draw art-group data 16) + :num! (seek! (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 16)) frames num-frames) -1))) + :frame-num 0.0 + ) + (until (ja-done? 0) + (when (rand-vu-percent? 0.2) + (let* ((gp-2 (get-process *default-dead-pool* lightning-tracker #x4000)) + (v1-26 + (when gp-2 + (let ((t9-6 (method-of-type lightning-tracker activate))) + (t9-6 + (the-as lightning-tracker gp-2) + self + (symbol->string (-> lightning-tracker symbol)) + (the-as pointer #x70004000) + ) + ) + (let ((s5-1 run-function-in-process) + (s4-0 gp-2) + (s3-0 lightning-tracker-init) + (s2-0 (-> *lightning-spec-id-table* 21)) + (s1-0 0) + (s0-0 lightning-probe-callback) + ) + (set! sv-48 self) + (set! sv-64 vector<-cspace!) + (set! sv-80 (new 'stack-no-clear 'vector)) + (let ((a1-9 (-> self node-list data (rand-vu-int-range 3 (+ (-> self node-list length) -1))))) + (set! sv-96 (sv-64 sv-80 a1-9)) + ) + (set! sv-112 vector<-cspace!) + (set! sv-128 (new 'stack-no-clear 'vector)) + (let* ((a1-11 (-> self node-list data (rand-vu-int-range 3 (+ (-> self node-list length) -1)))) + (t3-0 (sv-112 sv-128 a1-11)) + ) + ((the-as (function object object object object object object object object none) s5-1) + s4-0 + s3-0 + s2-0 + s1-0 + s0-0 + sv-48 + sv-96 + t3-0 + ) + ) + ) + (-> gp-2 ppointer) + ) + ) + ) + (when v1-26 + (set! (-> (the-as lightning-tracker (-> v1-26 0)) user-time 0) 0) + 0 + ) + ) + ) + (+! (-> self event-time) (- (-> self clock frame-counter) (-> self clock old-frame-counter))) + (ja-blend-eval) + (suspend) + (ja :num! (seek!)) + ) + (process-spawn + part-tracker + :init part-tracker-init + (-> *part-group-id-table* 770) + 0 + #f + #f + self + 9 + :to *entity-pool* + ) + (ja-no-eval :group! (-> self draw art-group data 17) + :num! (seek! (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 17)) frames num-frames) -1))) + :frame-num 0.0 + ) + (until (ja-done? 0) + (+! (-> self event-time) (- (-> self clock frame-counter) (-> self clock old-frame-counter))) + (suspend) + (ja :num! (seek!)) + ) + (set! (-> self dizzy?) #f) + (dotimes (v1-85 4) + (set! (-> self slot-buffer v1-85) -1) + ) + (ja-no-eval :group! (-> self draw art-group data 18) + :num! (seek! (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 18)) frames num-frames) -1))) + :frame-num 0.0 + ) + (until (ja-done? 0) + (+! (-> self event-time) (- (-> self clock frame-counter) (-> self clock old-frame-counter))) + (suspend) + (ja :num! (seek!)) + ) + (set! gp-0 (-> self draw art-group data 15)) + ) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! gp-0 :num! (identity (ja-aframe 8.0 0))) + (until #f + (ja :group! gp-0 :num! (loop!)) + (ja-blend-eval) + (suspend) + ) + ) + #f + (none) + ) + :post (behavior () + (whack-a-metal-method-27 self) + (ja-post) + (none) + ) + ) + +;; failed to figure out what this is: +(defstate attack (whack-a-metal) + :virtual #t + :event (-> (method-of-type whack-a-metal active) event) + :exit (-> (method-of-type whack-a-metal active) exit) + :code (behavior ((arg0 int)) + (sound-play "whack-swish") + (set! (-> self state-time) (-> self clock frame-counter)) + (dotimes (v1-3 3) + (set! (-> self slot-buffer v1-3) (-> self slot-buffer (+ v1-3 1))) + ) + (set! (-> self slot-buffer 3) -1) + (+! (-> self air-attack-count) 1) + (let* ((v1-9 arg0) + (s5-1 (cond + ((zero? v1-9) + (-> self draw art-group data 5) + ) + ((= v1-9 1) + (-> self draw art-group data 7) + ) + ((= v1-9 2) + (-> self draw art-group data 8) + ) + ((= v1-9 3) + (-> self draw art-group data 6) + ) + ((= v1-9 4) + (-> self draw art-group data 9) + ) + ((= v1-9 5) + (-> self draw art-group data 11) + ) + ((= v1-9 6) + (-> self draw art-group data 12) + ) + (else + (-> self draw art-group data 10) + ) + ) + ) + (v1-28 (ja-group)) + (f30-0 (cond + ((and v1-28 (= v1-28 (-> self draw art-group data 4))) + 0.0 + ) + ((>= (ja-aframe-num 0) 22.0) + 0.0 + ) + (else + 6.0 + ) + ) + ) + ) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! s5-1 :num! (seek! (ja-aframe 10.0 0)) :frame-num (ja-aframe f30-0 0)) + ) + (until (ja-done? 0) + (ja-blend-eval) + (whack-a-metal-method-26 self) + (suspend) + (ja :num! (seek! (ja-aframe 10.0 0))) + ) + ((lambda :behavior whack-a-metal + ((arg0 int)) + (let ((gp-0 (matrix-rotate-y! (new 'stack-no-clear 'matrix) -26396.445))) + (let ((a1-2 (matrix-rotate-x! (new 'stack-no-clear 'matrix) 3640.889))) + (matrix*! gp-0 a1-2 gp-0) + ) + (set! (-> gp-0 trans quad) (-> self mole arg0 0 root trans quad)) + (let ((a1-3 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-3 from) (process->ppointer self)) + (set! (-> a1-3 num-params) 0) + (set! (-> a1-3 message) 'touch) + (case (send-event-function (ppointer->process (-> self mole arg0)) a1-3) + (('die) + (process-spawn + part-tracker + :init part-tracker-init + (-> *part-group-id-table* 769) + 0 + #f + #f + #f + gp-0 + :to *entity-pool* + ) + (dotimes (v1-15 4) + (set! (-> self slot-buffer v1-15) -1) + ) + (set! (-> self dizzy?) #t) + (+! (-> self miss-count) 2) + (let* ((a0-18 self) + (t9-7 (method-of-object a0-18 whack-a-metal-method-29)) + (a1-9 (the-as object 2)) + ) + (let ((v1-22 (t9-7 a0-18 (the-as int a1-9) 12))) + (cond + ((zero? v1-22) + (let ((gp-1 talker-spawn-func) + (s5-2 (-> *talker-speech* 418)) + ) + (set! a1-9 *entity-pool*) + (gp-1 s5-2 (the-as process-tree a1-9) (target-pos 0) (the-as region #f)) + ) + ) + ((= v1-22 1) + (let ((gp-2 talker-spawn-func) + (s5-3 (-> *talker-speech* 419)) + ) + (set! a1-9 *entity-pool*) + (gp-2 s5-3 (the-as process-tree a1-9) (target-pos 0) (the-as region #f)) + ) + ) + ((= v1-22 2) + (let ((gp-3 talker-spawn-func) + (s5-4 (-> *talker-speech* 420)) + ) + (set! a1-9 *entity-pool*) + (gp-3 s5-4 (the-as process-tree a1-9) (target-pos 0) (the-as region #f)) + ) + ) + ((= v1-22 3) + (let ((gp-4 talker-spawn-func) + (s5-5 (-> *talker-speech* 421)) + ) + (set! a1-9 *entity-pool*) + (gp-4 s5-5 (the-as process-tree a1-9) (target-pos 0) (the-as region #f)) + ) + ) + ((= v1-22 4) + (let ((gp-5 talker-spawn-func) + (s5-6 (-> *talker-speech* 422)) + ) + (set! a1-9 *entity-pool*) + (gp-5 s5-6 (the-as process-tree a1-9) (target-pos 0) (the-as region #f)) + ) + ) + ((= v1-22 5) + (let ((gp-6 talker-spawn-func) + (s5-7 (-> *talker-speech* 423)) + ) + (set! a1-9 *entity-pool*) + (gp-6 s5-7 (the-as process-tree a1-9) (target-pos 0) (the-as region #f)) + ) + ) + ((= v1-22 6) + (let ((gp-7 talker-spawn-func) + (s5-8 (-> *talker-speech* 424)) + ) + (set! a1-9 *entity-pool*) + (gp-7 s5-8 (the-as process-tree a1-9) (target-pos 0) (the-as region #f)) + ) + ) + ((= v1-22 7) + (let ((gp-8 talker-spawn-func) + (s5-9 (-> *talker-speech* 425)) + ) + (set! a1-9 *entity-pool*) + (gp-8 s5-9 (the-as process-tree a1-9) (target-pos 0) (the-as region #f)) + ) + ) + ((= v1-22 8) + (let ((gp-9 talker-spawn-func) + (s5-10 (-> *talker-speech* 426)) + ) + (set! a1-9 *entity-pool*) + (gp-9 s5-10 (the-as process-tree a1-9) (target-pos 0) (the-as region #f)) + ) + ) + ((= v1-22 9) + (let ((gp-10 talker-spawn-func) + (s5-11 (-> *talker-speech* 427)) + ) + (set! a1-9 *entity-pool*) + (gp-10 s5-11 (the-as process-tree a1-9) (target-pos 0) (the-as region #f)) + ) + ) + ((= v1-22 10) + (let ((gp-11 talker-spawn-func) + (s5-12 (-> *talker-speech* 428)) + ) + (set! a1-9 *entity-pool*) + (gp-11 s5-12 (the-as process-tree a1-9) (target-pos 0) (the-as region #f)) + ) + ) + ((= v1-22 11) + (let ((gp-12 talker-spawn-func) + (s5-13 (-> *talker-speech* 429)) + ) + (set! a1-9 *entity-pool*) + (gp-12 s5-13 (the-as process-tree a1-9) (target-pos 0) (the-as region #f)) + ) + ) + ) + ) + (dotimes (gp-13 8) + (set! a1-9 (new 'stack-no-clear 'event-message-block)) + (set! (-> (the-as event-message-block a1-9) from) (process->ppointer self)) + (set! (-> (the-as event-message-block a1-9) num-params) 0) + (set! (-> (the-as event-message-block a1-9) message) 'abort) + (send-event-function (ppointer->process (-> self mole gp-13)) (the-as event-message-block a1-9)) + ) + (go-virtual active #f (the-as int a1-9)) + ) + ) + ((#f) + (sound-play "whack-miss") + (process-spawn + part-tracker + :init part-tracker-init + (-> *part-group-id-table* 767) + 0 + #f + #f + #f + gp-0 + :to *entity-pool* + ) + ) + (('gold) + (process-spawn + part-tracker + :init part-tracker-init + (-> *part-group-id-table* 768) + 0 + #f + #f + #f + gp-0 + :to *entity-pool* + ) + (set! (-> self score) (+ 50.0 (-> self score))) + ) + (else + (when (>= (- (-> self clock frame-counter) (-> self speech-time)) (seconds 12)) + (let ((v1-78 (whack-a-metal-method-29 self 3 3))) + (cond + ((zero? v1-78) + (talker-spawn-func (-> *talker-speech* 399) *entity-pool* (target-pos 0) (the-as region #f)) + ) + ((= v1-78 1) + (talker-spawn-func (-> *talker-speech* 400) *entity-pool* (target-pos 0) (the-as region #f)) + ) + (else + (talker-spawn-func (-> *talker-speech* 402) *entity-pool* (target-pos 0) (the-as region #f)) + ) + ) + ) + (set! (-> self speech-time) (-> self clock frame-counter)) + ) + (process-spawn + part-tracker + :init part-tracker-init + (-> *part-group-id-table* 768) + 0 + #f + #f + #f + gp-0 + :to *entity-pool* + ) + (set! (-> self score) (+ 10.0 (-> self score))) + (if (>= (-> self score) 300.0) + (send-event (handle->process (-> self hud-goal)) 'hide-and-die) + ) + ) + ) + ) + ) + (none) + ) + arg0 + ) + (let ((a0-28 (-> self skel root-channel 0))) + (set! (-> a0-28 param 0) (the float (+ (-> a0-28 frame-group frames num-frames) -1))) + (set! (-> a0-28 param 1) 1.0) + (let ((t9-13 joint-control-channel-group!) + (a1-9 #f) + ) + (t9-13 a0-28 (the-as art-joint-anim a1-9) num-func-seek!) + (while (not (ja-done? 0)) + (let ((gp-1 (whack-a-metal-method-26 self))) + (when (>= (the-as int gp-1) 0) + (if (>= (ja-aframe-num 0) 12.0) + (go-virtual attack (the-as int gp-1)) + ) + ) + ) + (suspend) + (ja-eval) + ) + (go-virtual active #f (the-as int a1-9)) + ) + ) + (none) + ) + :post (-> (method-of-type whack-a-metal active) post) + ) + +;; failed to figure out what this is: +(defstate lose (whack-a-metal) + :virtual #t + :exit (-> (method-of-type whack-a-metal active) exit) + :code (behavior () + (auto-save-user) + (let ((v1-2 (ja-group))) + (when (not (and v1-2 (= v1-2 (-> self draw art-group data 14)))) + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! (-> self draw art-group data 14)) + ) + ) + (let* ((v1-9 (rand-vu-int-count 8)) + (gp-1 (cond + ((zero? v1-9) + (talker-spawn-func (-> *talker-speech* 441) *entity-pool* (target-pos 0) (the-as region #f)) + ) + ((= v1-9 1) + (talker-spawn-func (-> *talker-speech* 442) *entity-pool* (target-pos 0) (the-as region #f)) + ) + ((= v1-9 2) + (talker-spawn-func (-> *talker-speech* 443) *entity-pool* (target-pos 0) (the-as region #f)) + ) + ((= v1-9 3) + (talker-spawn-func (-> *talker-speech* 444) *entity-pool* (target-pos 0) (the-as region #f)) + ) + ((= v1-9 4) + (talker-spawn-func (-> *talker-speech* 445) *entity-pool* (target-pos 0) (the-as region #f)) + ) + ((= v1-9 5) + (talker-spawn-func (-> *talker-speech* 446) *entity-pool* (target-pos 0) (the-as region #f)) + ) + ((= v1-9 6) + (talker-spawn-func (-> *talker-speech* 447) *entity-pool* (target-pos 0) (the-as region #f)) + ) + (else + (talker-spawn-func (-> *talker-speech* 448) *entity-pool* (target-pos 0) (the-as region #f)) + ) + ) + ) + (s5-8 (-> self clock frame-counter)) + ) + (while (or (nonzero? (get-status *gui-control* (the-as sound-id gp-1))) + (< (- (-> self clock frame-counter) s5-8) (seconds 2)) + ) + (suspend) + (ja :num! (loop!)) + ) + ) + (let* ((v1-32 (-> *game-info* sub-task-list 226)) + (v1-34 (if (-> v1-32 info) + (-> v1-32 info manager) + (the-as handle #f) + ) + ) + ) + (cond + ((handle->process v1-34) + (send-event (handle->process v1-34) 'fail) + (sleep-code) + ) + (else + (ja-channel-set! 0) + (ja-post) + (set-blackout-frames (seconds 0.2)) + ) + ) + ) + (none) + ) + :post (behavior () + (whack-a-metal-method-28 self) + (ja-post) + (none) + ) + ) + +;; failed to figure out what this is: +(defstate win (whack-a-metal) + :virtual #t + :exit (-> (method-of-type whack-a-metal active) exit) + :code (behavior () + (let ((v1-2 (ja-group))) + (when (not (and v1-2 (= v1-2 (-> self draw art-group data 13)))) + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! (-> self draw art-group data 13)) + ) + ) + (let* ((v1-9 (rand-vu-int-count 8)) + (gp-1 (cond + ((zero? v1-9) + (talker-spawn-func (-> *talker-speech* 433) *entity-pool* (target-pos 0) (the-as region #f)) + ) + ((= v1-9 1) + (talker-spawn-func (-> *talker-speech* 434) *entity-pool* (target-pos 0) (the-as region #f)) + ) + ((= v1-9 2) + (talker-spawn-func (-> *talker-speech* 435) *entity-pool* (target-pos 0) (the-as region #f)) + ) + ((= v1-9 3) + (talker-spawn-func (-> *talker-speech* 436) *entity-pool* (target-pos 0) (the-as region #f)) + ) + ((= v1-9 4) + (talker-spawn-func (-> *talker-speech* 437) *entity-pool* (target-pos 0) (the-as region #f)) + ) + ((= v1-9 5) + (talker-spawn-func (-> *talker-speech* 438) *entity-pool* (target-pos 0) (the-as region #f)) + ) + ((= v1-9 6) + (talker-spawn-func (-> *talker-speech* 439) *entity-pool* (target-pos 0) (the-as region #f)) + ) + (else + (talker-spawn-func (-> *talker-speech* 440) *entity-pool* (target-pos 0) (the-as region #f)) + ) + ) + ) + (s5-8 (-> self clock frame-counter)) + ) + (while (or (nonzero? (get-status *gui-control* (the-as sound-id gp-1))) + (< (- (-> self clock frame-counter) s5-8) (seconds 2)) + ) + (suspend) + (ja :num! (loop!)) + ) + ) + (let ((a1-11 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-11 from) (process->ppointer self)) + (set! (-> a1-11 num-params) 0) + (set! (-> a1-11 message) 'complete) + (let ((t9-20 send-event-function) + (v1-34 (-> *game-info* sub-task-list 226)) + ) + (t9-20 + (handle->process (if (-> v1-34 info) + (-> v1-34 info manager) + (the-as handle #f) + ) + ) + a1-11 + ) + ) + ) + (ja-channel-set! 0) + (ja-post) + (set-blackout-frames (seconds 0.2)) + (none) + ) + :post (-> (method-of-type whack-a-metal lose) post) + ) + +;; definition for function whack-a-metal-init +;; WARN: Return type mismatch object vs none. +(defbehavior whack-a-metal-init whack-a-metal ((arg0 entity-actor)) + (set! (-> self entity) arg0) + (set! (-> self level) (level-get *level* 'hiphog)) + (set! (-> self root) (new 'process 'trsqv)) + (process-drawable-from-entity! self arg0) + (initialize-skeleton + self + (the-as skeleton-group (art-group-get-by-name *level* "skel-sidekick-highres" (the-as (pointer uint32) #f))) + (the-as pair 0) + ) + (logior! (-> self skel status) (joint-control-status blend-shape eye-anim)) + (set! (-> self hud-score) (the-as handle #f)) + (set! (-> self hud-goal) (the-as handle #f)) + (let ((a0-7 (-> arg0 extra process))) + (set! (-> self cabinet) (if a0-7 + (process->handle a0-7) + (the-as handle #f) + ) + ) + ) + (dotimes (gp-1 8) + (set! (-> self mole gp-1) (process-spawn hip-mole :init hip-mole-init (-> self cabinet) gp-1 :to self)) + ) + (set! (-> self dizzy?) #f) + (dotimes (v1-20 4) + (set! (-> self slot-buffer v1-20) -1) + ) + (set! (-> self score-part 0) (create-launch-control (-> *part-group-id-table* 765) self)) + (set! (-> self score-part 1) (create-launch-control (-> *part-group-id-table* 766) self)) + (set! (-> *game-info* goal) 1500.0) + (dotimes (v1-31 4) + (set! (-> self speech-last v1-31) 0) + ) + (go-virtual wait-for-start) + (none) + ) + +;; failed to figure out what this is: +(set-subtask-hook! + *game-info* + 226 + 0 + (lambda :behavior whack-a-metal () (let ((gp-0 (entity-by-name "hip-whack-a-metal-2"))) + (if gp-0 + (process-spawn whack-a-metal :init whack-a-metal-init gp-0 :to self) + ) + ) + ) + ) + + + + diff --git a/test/offline/config/jak2/config.jsonc b/test/offline/config/jak2/config.jsonc index 667d5449d7..d865a103cf 100644 --- a/test/offline/config/jak2/config.jsonc +++ b/test/offline/config/jak2/config.jsonc @@ -56,6 +56,7 @@ "DGO/LPROTECT.DGO", "DGO/LSACK.DGO", "DGO/LSHUTTLE.DGO", + "DGO/LWHACK.DGO", "DGO/MCN.DGO", "DGO/MTN.DGO", "DGO/NEB.DGO",